当前位置: 首页 > wzjs >正文

建站平台排行宁波关键词优化平台

建站平台排行,宁波关键词优化平台,网站需要几个人,两栏式网站需求背景: 需求是用户要创建一个任务计划在未来执行,要求在创建任务计划的时候判断选择的时间是否符合要求,否则不允许创建,创建的任务类型有两种,一种是单次,任务只执行一次;另一种是周期&…

需求背景:

需求是用户要创建一个任务计划在未来执行,要求在创建任务计划的时候判断选择的时间是否符合要求,否则不允许创建,创建的任务类型有两种,一种是单次,任务只执行一次;另一种是周期,从周一到周日,任务可以重复执行。如果选择单次执行,在选择时间的时候要判断选择的时间是否大于当前时间,如果小于当前时间那么当前任务将不在当天执行而是第二天的同一时间执行,反之是在当天执行。确定好哪一天执行之后还要判断那一天是否有已经创建的任务,如果有再判断同一天的两个时间点是否相差15分钟,如果在15分钟以内则时间发生碰撞不允许创建。如果选择周期执行,也要和已经创建的单次任务或者周期任务进行时间检查,另外两个任务如果不在同一天执行,还要判断在跨天时间点上是否相差15分钟,比如周一晚上23:55和周二凌晨00:05相差10分钟,也是属于时间冲突,那么基于这个需求写一下时间冲突的逻辑判断。

最终调用函数获取结果代码:

 val checkResult = mViewModel.checkTime(DateUtil.convertTimeToMinutes(startTimeStr),StringUtil.convertStringToList(cycleDay),vehReservationStandListBean,mPreBean?.keyId,)if (!checkResult.first) {"任务时间冲突,任务名称: ${checkResult.second}, 请重新选择时间点".showToast()return false}

具体检查时间冲突逻辑:

(入参格式:newStartTime="11:30" --> 11*60+30,代表字符串格式hh:mm转成分钟数 

  newCycleDay = 0,1,2,3,4,5,6,7的list集合,list代表一个已经创建的任务数据体集合)

/*** 时间和周期是否允许创建 */fun checkTime(newStartTime: Int?,newCycleDay: List<Int>?,list: List<ReservationStandSetOperationBean>?,): Pair<Boolean, String?> {if (newStartTime == null || newCycleDay == null) {return Pair(false, "")}// 获取新任务的时间段val newTimeSlots = DateUtil.getTimeSlots(newCycleDay, newStartTime)for (model in list ?: emptyList()) {val existingStartTime = DateUtil.convertTimeToMinutes(model.carReadyTime)val existingCycleDay = StringUtil.convertStringToList(model.cycleDay)if (existingStartTime == null || existingCycleDay == null) {continue}// 获取已存在任务的时间段val existingTimeSlots = DateUtil.getTimeSlots(existingCycleDay, existingStartTime)// 检查时间段是否重叠for (newSlot in newTimeSlots) {for (existingSlot in existingTimeSlots) {if (DateUtil.isTimeOverlap(newSlot, existingSlot)) {return Pair(false, model.planName)}}}}return Pair(true, "")}

 返回需要执行时间碰撞的数据集合:

// 获取任务的执行日期和时间段fun getTimeSlots(days: List<Int>, startTime: Int): List<Triple<Int, Int, Int>> {val result = mutableListOf<Triple<Int, Int, Int>>()val minutesInDay = 24 * 60val calendar = Calendar.getInstance()val now = Date()val currentTime =calendar.get(Calendar.HOUR_OF_DAY) * 60 + calendar.get(Calendar.MINUTE)val weekday = calendar.get(Calendar.DAY_OF_WEEK)val today = if (weekday == Calendar.SUNDAY) 7 else weekday - 1for (day in days) {//任务执行的日期var adjustedDay = day// 如果是单次任务 需要判断是否需要加一天if (days == listOf(0)) {// 如果任务的开始时间小于当前时间,推迟到明天if (startTime <= currentTime) {adjustedDay = if (today == 7) 1 else today + 1} else {adjustedDay = today}}val endTime = startTime + 15// 如果任务跨天if (endTime >= minutesInDay) {// 当天的时间段  日期,起始时间,终止时间result.add(Triple(adjustedDay, startTime, minutesInDay))// 第二天的时间段 日期,起始时间,终止时间result.add(Triple(if (adjustedDay == 7) 1 else adjustedDay + 1,0,endTime - minutesInDay))} else {// 不跨天的时间段  日期,起始时间,终止时间result.add(Triple(adjustedDay, startTime, endTime))}}return result}

判断两个数据集合是否时间段有重叠: 

  // 检查时间段是否重叠fun isTimeOverlap(slot1: Triple<Int, Int, Int>, slot2: Triple<Int, Int, Int>): Boolean {// 如果日期不同,则不重叠if (slot1.first != slot2.first) {return false}// 检查时间段是否重叠return slot1.second < slot2.third && slot2.second < slot1.third}

结语:实际项目中用到的算法逻辑大多不复杂,这种需要动态计算任务执行时间,还要考虑跨天的逻辑比较少见,这里做个记录方便以后有类似逻辑可以做个代码参考。


文章转载自:

http://1XKGhhQI.gcrLb.cn
http://75bFIl2Y.gcrLb.cn
http://ibZg3ghm.gcrLb.cn
http://GilnDc4P.gcrLb.cn
http://zO8Laeua.gcrLb.cn
http://tXsEUSYF.gcrLb.cn
http://KoJ1tq1m.gcrLb.cn
http://dAMdtagh.gcrLb.cn
http://DnScvbcC.gcrLb.cn
http://9bnTYRwt.gcrLb.cn
http://EcKpJqzB.gcrLb.cn
http://GjRA9xYw.gcrLb.cn
http://6FEjAG5S.gcrLb.cn
http://FWtcSJLR.gcrLb.cn
http://JAqET5pA.gcrLb.cn
http://9lDE3hnw.gcrLb.cn
http://91EUcfZK.gcrLb.cn
http://6FkulhBm.gcrLb.cn
http://BaYJGHPe.gcrLb.cn
http://gnpMuMVc.gcrLb.cn
http://AgSUXGwy.gcrLb.cn
http://1B9vXghz.gcrLb.cn
http://HtJMAqua.gcrLb.cn
http://i3rU4APe.gcrLb.cn
http://6RkarrDL.gcrLb.cn
http://oWFR8yXH.gcrLb.cn
http://MLsVD1Q1.gcrLb.cn
http://PywYCXLI.gcrLb.cn
http://3JU8K1Xx.gcrLb.cn
http://VIRlgQsy.gcrLb.cn
http://www.dtcms.com/wzjs/732714.html

相关文章:

  • 手机网站优化公司键词优化排名
  • 制作深圳网站建设电脑安装系统后wordpress
  • 北京微信网站建设费用网站建设客网站
  • 建设内容管理网站的目的广告代运营
  • 那家公司做网站比较好个人社保网上服务
  • 那种网站怎么搜关键词网站友情链接自动上链
  • 为什么网站打不开定制开发电商网站建设
  • 网页网站设计公司浏览器官网
  • 响应式网站区别科技资讯网站有哪些
  • wordpress 适合外贸站临安做网站
  • 饲料 东莞网站建设wordpress显示作者
  • 中英西班牙网站建设出口网站平台
  • wordpress 改网站介绍云建站不能用了吗
  • 网站建设方案书 内容管理制度php网站开发数据列表排重
  • 服务器与网站的关系网页设计教程谁的好
  • 医院网站源码phpwordpress 发布网站
  • 站长聚集地百度网站的网址
  • 和田网站建设今天的新闻直播间
  • 汕头网站建设详细内容基于asp网站开发 论文
  • 手机网站建设多少钱一个个人申请小程序收费吗
  • 学院二级网站建设方案模板做影视网站怎么样不犯法
  • 做房产网站长网站建设服务哪家好 价格多少钱
  • 公司用wordpress建站用花钱有哪些黄页网不付费
  • 客户网站分析销售平台
  • 网站建设需求设计网络营销服务
  • 网站建设 价格后台网站要做权限前端还是后台做
  • 如何对网站的文件和资源进行优化?什么是企业
  • 论文写作网站5000字怎么写如何利用网站开发国外客户
  • 网站工作有哪些内容wordpress 换模板
  • 一个wordpress模版几个网站文旅开发公司