| | |
| | | * @Description: 设备加班时长算法统计 |
| | | * @date 2024/1/24 17:12 |
| | | */ |
| | | @PersistJobDataAfterExecution |
| | | @DisallowConcurrentExecution |
| | | @Slf4j |
| | | public class RunningOvertimeDurationJob implements Job { |
| | | |
| | |
| | | quartzLog.setParams(this.parameter); |
| | | log.info(String.format("定时统计设备加班时长任务 param: %s RunningOvertimeDurationJob start! 时间:" + DateUtils.getNow(), this.parameter)); |
| | | long startTime = System.currentTimeMillis(); |
| | | String date = ""; |
| | | try { |
| | | String date = ""; |
| | | if (StringUtils.isNotBlank(this.parameter)) { |
| | | date = DateUtils.format(DateUtils.toDate(this.parameter, DateUtils.STRDATE), DateUtils.STR_DATE); |
| | | Date initDate = DateUtils.toDate(this.parameter, DateUtils.STRDATE); |
| | |
| | | } else { |
| | | date = DateUtils.format(DateUtils.getNow(), DateUtils.STR_DATE); |
| | | } |
| | | List<MdcEquipment> equipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<>()); |
| | | List<MdcEquipment> equipmentList = mdcEquipmentService.list(); |
| | | MdcSystemParameters mdcSystemParameters = mdcSystemParametersService.getOne(new LambdaQueryWrapper<MdcSystemParameters>().eq(MdcSystemParameters::getCode, "equip_log_statis_time")); |
| | | if (mdcSystemParameters == null) { |
| | | throw new JobExecutionException("mdc_system_parameters 表中数据缺失"); |
| | |
| | | List<MdcEquipmentOvertime> result = new ArrayList<>(); |
| | | for (MdcEquipment mdcEquipment : equipmentList) { |
| | | // 获取设备工作日历 |
| | | List<MdcDeviceCalendarVo> mdcDeviceCalendarVos = mdcDeviceCalendarService.listByEquipmentIdAndDate(mdcEquipment.getEquipmentId(), this.parameter); |
| | | List<MdcDeviceCalendarVo> mdcDeviceCalendarVos = mdcDeviceCalendarService.listByEquipmentIdAndDate(mdcEquipment.getEquipmentId(), DateUtils.format(DateUtils.toDate(date, DateUtils.STR_DATE),DateUtils.STRDATE)); |
| | | if (mdcDeviceCalendarVos != null && !mdcDeviceCalendarVos.isEmpty()) { |
| | | //获取最后一个班次结束时间 |
| | | Date startDate = this.getCalendarEndDate(mdcDeviceCalendarVos, date); |
| | |
| | | mdcEquipmentOvertime.setEquipmentId(mdcEquipment.getEquipmentId()); |
| | | mdcEquipmentOvertime.setDuration(duration); |
| | | mdcEquipmentOvertime.setAutoFlag(CommonConstant.AUTO_FLAG_Y); |
| | | mdcEquipmentOvertime.setTheDate(this.parameter); |
| | | mdcEquipmentOvertime.setTheDate(DateUtils.format(DateUtils.toDate(date, DateUtils.STR_DATE),DateUtils.STRDATE)); |
| | | result.add(mdcEquipmentOvertime); |
| | | } |
| | | |
| | | } else { |
| | | // 没有班次配置,计算全天的设备加工状态 |
| | | Date startDate = DateUtils.toDate(date + " " + value, DateUtils.STR_DATE_TIME_SMALL); |
| | | Date endDate = DateUtils.plusTime(startDate, 1); |
| | | Date endDate = DateUtils.plusTime(startDate, 1); |
| | | List<MdcEquipmentRunningSection> equipmentRunningSectionList = mdcEquipmentRunningSectionService.selectRunningData(mdcEquipment.getEquipmentId(), startDate, endDate); |
| | | if (equipmentRunningSectionList != null && !equipmentRunningSectionList.isEmpty()) { |
| | | // 时间修正 |
| | |
| | | mdcEquipmentOvertime.setEquipmentId(mdcEquipment.getEquipmentId()); |
| | | mdcEquipmentOvertime.setDuration(duration); |
| | | mdcEquipmentOvertime.setAutoFlag(CommonConstant.AUTO_FLAG_Y); |
| | | mdcEquipmentOvertime.setTheDate(this.parameter); |
| | | mdcEquipmentOvertime.setTheDate(DateUtils.format(DateUtils.toDate(date, DateUtils.STR_DATE),DateUtils.STRDATE)); |
| | | result.add(mdcEquipmentOvertime); |
| | | } |
| | | |