From b60e0118f30b39784de9255e743d08967956c905 Mon Sep 17 00:00:00 2001 From: Lius <Lius2225@163.com> Date: 星期三, 21 五月 2025 10:57:47 +0800 Subject: [PATCH] 设备异常反馈 --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java | 373 +++++++++++++++++++++++++++-------------------------- 1 files changed, 191 insertions(+), 182 deletions(-) diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java index 50fee45..b948630 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java @@ -3,19 +3,25 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang.StringUtils; -import org.jeecg.modules.mdc.entity.*; +import org.jeecg.modules.mdc.dto.MdcEquipmentDto; +import org.jeecg.modules.mdc.dto.MdcProcessCountDto; +import org.jeecg.modules.mdc.entity.MdcEquipment; +import org.jeecg.modules.mdc.entity.MdcEquipmentRunningSection; +import org.jeecg.modules.mdc.entity.MdcProcessCount; import org.jeecg.modules.mdc.mapper.MdcProcessCountMapper; import org.jeecg.modules.mdc.service.*; import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.mdc.util.TimeFieldUtils; +import org.jeecg.modules.mdc.vo.MdcDateVo; import org.jeecg.modules.mdc.vo.MdcDeviceCalendarVo; -import org.jeecg.modules.mdc.vo.MdcShiftDateVo; +import org.jeecg.modules.mdc.vo.MdcProcessCountVo; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.text.ParseException; -import java.text.SimpleDateFormat; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.time.LocalDate; import java.util.*; /** @@ -47,7 +53,8 @@ @Transactional(rollbackFor = {Exception.class}) public void runningProcessCount() { // 鑾峰彇鎵�鏈夎澶� - List<MdcEquipment> mdcEquipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, "2140244")); + //List<MdcEquipment> mdcEquipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, "2140198")); + List<MdcEquipment> mdcEquipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getDriveType, "FANUC")); List<MdcProcessCount> result = new ArrayList<>(); for (MdcEquipment mdcEquipment : mdcEquipmentList) { List<MdcProcessCount> mdcProcessCountList = processCount(mdcEquipment); @@ -60,21 +67,72 @@ } } - @Transactional(readOnly = true) + /** + * 鍒嗛〉鏌ヨ + * + * @param userId + * @param page + * @param mdcProcessCountVo + * @param req + * @return + */ + @Override + public List<MdcProcessCountDto> pageList(String userId, MdcProcessCountVo mdcProcessCountVo, HttpServletRequest req) { + List<String> equipmentIds = new ArrayList<>(); + if (StringUtils.isNotEmpty(mdcProcessCountVo.getParentId()) && StringUtils.isEmpty(mdcProcessCountVo.getEquipmentId())) { + if ("2".equals(mdcProcessCountVo.getTypeTree())) { + //閮ㄩ棬灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, mdcProcessCountVo.getParentId()); + } else { + //浜х嚎灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, mdcProcessCountVo.getParentId()); + } + } else if (StringUtils.isNotEmpty(mdcProcessCountVo.getEquipmentId())) { + //鍗曞彴璁惧淇℃伅 + mdcProcessCountVo.setMdcSectionIds(Collections.singletonList(mdcProcessCountVo.getEquipmentId())); + } else { + //鏌ヨ鐢ㄦ埛鎷ユ湁鐨勬墍鏈夎澶囦俊鎭� + if ("2".equals(mdcProcessCountVo.getTypeTree())) { + //閮ㄩ棬灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null); + } else { + //浜х嚎灞傜骇 + equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null); + } + } + if (mdcProcessCountVo.getMdcSectionIds() == null || mdcProcessCountVo.getMdcSectionIds().isEmpty()) { + mdcProcessCountVo.setMdcSectionIds(equipmentIds); + } + + if (mdcProcessCountVo.getMdcSectionIds() == null || mdcProcessCountVo.getMdcSectionIds().isEmpty()) { + return null; + } + return this.baseMapper.pageList(mdcProcessCountVo); + } + + @Override + public BigDecimal findDuration(String equipmentId, String validDate) { + BigDecimal result = this.baseMapper.findDuration(equipmentId, validDate.replaceAll("-", "")); + return result == null ? BigDecimal.ZERO : result; + } + + @Override + public BigDecimal findCount(String equipmentId, String validDate) { + BigDecimal result = this.baseMapper.findCount(equipmentId, validDate.replaceAll("-", "")); + return result == null ? BigDecimal.ZERO : result; + } + List<MdcProcessCount> processCount(MdcEquipment mdcEquipment) { Date initDate = null; //鍙栨渶鍚庣殑缁熻鏁版嵁 MdcProcessCount lastData = this.baseMapper.getLastData(mdcEquipment.getEquipmentId()); - Boolean flag = true; if (lastData != null) { initDate = DateUtils.toDate(lastData.getTheDate(), DateUtils.STRDATE); initDate = DateUtils.plusTime(initDate, 1); } else { - //鍒濇鍙栧�� 鍙栨渶鏃╂椂闂� - MdcDeviceCalendar mdcDeviceCalendar = mdcDeviceCalendarService.getFirstData(mdcEquipment.getEquipmentId()); - if (mdcDeviceCalendar != null) { - initDate = DateUtils.toDate(mdcDeviceCalendar.getEffectiveDate(), DateUtils.STRDATE); - } + //鍒濇鍙栧�� 鍙栧綋鍓嶆椂闂村線鍓嶆帹涓�涓湀鏃堕棿 +// MdcDeviceCalendar mdcDeviceCalendar = mdcDeviceCalendarService.getFirstData(mdcEquipment.getEquipmentId()); + initDate = DateUtils.toDate(LocalDate.now().plusMonths(-1).toString(), DateUtils.STR_DATE); } if (initDate == null) { return null; @@ -90,202 +148,153 @@ } // 鑾峰彇璁惧鐝淇℃伅 Map<String, List<MdcDeviceCalendarVo>> listMap = this.mdcDeviceCalendarMap(mdcEquipment.getEquipmentId(), stringDates); - if (listMap.isEmpty()) { - listMap = new HashMap<>(); + if (listMap == null || listMap.isEmpty()) { + return null; } List<MdcProcessCount> resultList = new ArrayList<>(); for (String stringDate : stringDates) { if (listMap.containsKey(stringDate)) { List<MdcDeviceCalendarVo> mdcDeviceCalendarVos = listMap.get(stringDate); - for (MdcDeviceCalendarVo mdcDeviceCalendarVo : mdcDeviceCalendarVos) { - // 澶勭悊鐝埗鐝鏃堕棿 - List<MdcShiftDateVo> datesListByMdcDeviceCalendarVo = this.getDatesListByMdcDeviceCalendarVo(mdcDeviceCalendarVo); - if (datesListByMdcDeviceCalendarVo == null || datesListByMdcDeviceCalendarVo.isEmpty()) { - break; - } - for (MdcShiftDateVo mdcShiftDateVo : datesListByMdcDeviceCalendarVo) { - Date startDate = null; - //澶勭悊鏁版嵁 - //List<MdcProcessCount> result = new ArrayList<>(); - // 鏌ヨ鐝鍐呰澶囪繍琛岀姸鎬佹椂闂存 - List<MdcEquipmentRunningSection> equipmentRunningSectionList = mdcEquipmentRunningSectionService.selectRunningData(mdcEquipment.getEquipmentId(), mdcShiftDateVo.getStartDate(), mdcShiftDateVo.getEndDate()); - if (equipmentRunningSectionList != null && !equipmentRunningSectionList.isEmpty()) { - // 鏃堕棿淇 - equipmentRunningSectionList.get(0).setStartTime(mdcShiftDateVo.getStartDate()); - if (equipmentRunningSectionList.size() > 1) { - equipmentRunningSectionList.get(equipmentRunningSectionList.size() - 1).setEndTime(mdcShiftDateVo.getEndDate()); - } else { - equipmentRunningSectionList.get(0).setEndTime(mdcShiftDateVo.getEndDate()); - } - if (!"FANUC".equals(mdcEquipment.getDriveType())) { - MdcEquipmentOverFlag equipmentOverFlag = mdcEquipmentOverFlagService.getOne(new LambdaQueryWrapper<MdcEquipmentOverFlag>().eq(MdcEquipmentOverFlag::getDriveType, mdcEquipment.getDriveType())); - if (equipmentOverFlag == null) { - return null; - } - } + // 澶勭悊鐝埗鐝鏃堕棿 + MdcDateVo mdcDateVo = this.handleDeviceCalendar(mdcDeviceCalendarVos); + // 鏌ユ壘璁惧鍗曡〃杩愯鏁版嵁 + List<String> productCountList = new ArrayList<>(); + try { + productCountList = equipmentWorkLineService.findRunningData(mdcEquipment.getSaveTableName(), mdcDateVo.getStartTime(), mdcDateVo.getEndTime()); + } catch (Exception e) { + continue; + } - for (int j = 0; j < equipmentRunningSectionList.size(); j++) { - MdcEquipmentRunningSection mdcEquipmentRunningSection = equipmentRunningSectionList.get(j); - // 鏌ユ壘璁惧鍗曡〃杩愯鏁版嵁 - List<Map<String, Object>> mdcEquipmentDtoList = equipmentWorkLineService.findRunningData(mdcEquipment.getSaveTableName(), mdcEquipmentRunningSection.getStartTime(), mdcEquipmentRunningSection.getEndTime()); - if (mdcEquipmentDtoList == null || mdcEquipmentDtoList.isEmpty()) { - continue; - } - MdcProcessCount mdcProcessCount = new MdcProcessCount(); - mdcProcessCount.setEquipmentId(mdcEquipment.getEquipmentId()); - mdcProcessCount.setEquipmentName(mdcEquipment.getEquipmentName()); - mdcProcessCount.setTheDate(mdcShiftDateVo.getDay()); - if (lastData != null && flag) { - mdcProcessCount.setStartTime(lastData.getEndTime()); - startDate = mdcProcessCount.getStartTime(); - flag = false; - } else if (startDate == null) { - mdcProcessCount.setStartTime(mdcEquipmentRunningSection.getStartTime()); - startDate = mdcProcessCount.getStartTime(); - } else { - mdcProcessCount.setStartTime(startDate); - } - if ("FANUC".equals(mdcEquipment.getDriveType())) { - // 娉曞叞鍏嬭澶囨牴鎹甈roductCount瀛楁鍒ゆ柇 - String productCount = mdcEquipmentDtoList.get(0).get("ProductCount").toString(); - for (int i = 0; i < mdcEquipmentDtoList.size(); i++) { - if (!productCount.equals(mdcEquipmentDtoList.get(i).get("ProductCount").toString())) { - productCount = mdcEquipmentDtoList.get(i).get("ProductCount").toString(); - if (mdcEquipmentDtoList.get(i - 1).get("CollectTime") != null) { - mdcProcessCount.setEndTime(DateUtils.toDate(mdcEquipmentDtoList.get(i - 1).get("CollectTime").toString(), DateUtils.STR_DATE_TIME)); - mdcProcessCount.setDuration(TimeFieldUtils.duration(mdcProcessCount.getStartTime(), mdcProcessCount.getEndTime())); - mdcProcessCount.setSequenceNumber(mdcEquipmentDtoList.get(i - 1).get("Sequencenumber").toString()); - resultList.add(mdcProcessCount); - if (TimeFieldUtils.duration(mdcProcessCount.getEndTime(), mdcEquipmentRunningSection.getEndTime()) > 60) { - //mdcProcessCount.setStartTime(mdcProcessCount.getEndTime()); - startDate = mdcProcessCount.getEndTime(); - } else if (j + 1 < equipmentRunningSectionList.size()) { - //mdcProcessCount.setStartTime(equipmentRunningSectionList.get(j + 1).getStartTime()); - startDate = equipmentRunningSectionList.get(j + 1).getStartTime(); - } else { - startDate = null; - } - } - } - } - } + if (productCountList == null || productCountList.isEmpty()) { + continue; + } +/* Map<String, Object> firstMap = new HashMap<>(mdcEquipmentDtoList.get(0)); + Map<String, Object> mdcEquipmentDtoMap = mdcEquipmentDtoList.get(0); + for (int i = 1; i < mdcEquipmentDtoList.size(); i++) { + String productCount1 = mdcEquipmentDtoList.get(i).get("ProductCount").toString(); + if (!mdcEquipmentDtoMap.get("ProductCount").equals(productCount1)) { + Date start; + Date end; + String sequenceNumber; + if (firstMap.get("ProductCount").toString().equals(mdcEquipmentDtoList.get(i - 1).get("ProductCount").toString())) { + //缁撴潫鏃堕棿 + end = DateUtils.toDate(mdcEquipmentDtoList.get(i - 1).get("CollectTime").toString(), DateUtils.STR_DATE_TIME); + //鏍规嵁productCount鍊兼煡璇㈠紑濮嬫椂闂� + String productCount = mdcEquipmentDtoList.get(i - 1).get("ProductCount").toString(); + MdcEquipmentDto mdcEquipmentDto = equipmentWorkLineService.findProductCountStartTime(mdcEquipment.getSaveTableName(), productCount); + if (mdcEquipmentDto == null) { + continue; } + start = mdcEquipmentDto.getCollectTime(); + //绋嬪簭鍙� + sequenceNumber = mdcEquipmentDtoList.get(i - 1).get("Sequencenumber").toString(); + } else { + start = DateUtils.toDate(mdcEquipmentDtoMap.get("CollectTime").toString(), DateUtils.STR_DATE_TIME); + end = DateUtils.toDate(mdcEquipmentDtoList.get(i - 1).get("CollectTime").toString(), DateUtils.STR_DATE_TIME); + sequenceNumber = mdcEquipmentDtoList.get(i - 1).get("Sequencenumber").toString(); + } + mdcEquipmentDtoMap.put("ProductCount", mdcEquipmentDtoList.get(i).get("ProductCount").toString()); + mdcEquipmentDtoMap.put("CollectTime", mdcEquipmentDtoList.get(i).get("CollectTime").toString()); + } + }*/ + for (String productCount : productCountList) { + MdcEquipmentDto mdcEquipmentDtoFirst = equipmentWorkLineService.findProductCountStartTime(mdcEquipment.getSaveTableName(), productCount, mdcDateVo.getStartTime(), mdcDateVo.getEndTime()); + if (mdcEquipmentDtoFirst == null) { + continue; + } + Date start = mdcEquipmentDtoFirst.getCollectTime(); + MdcEquipmentDto mdcEquipmentDtoLast = equipmentWorkLineService.findProductCountEndTime(mdcEquipment.getSaveTableName(), productCount, mdcDateVo.getStartTime(), mdcDateVo.getEndTime()); + if (mdcEquipmentDtoLast == null) { + continue; + } + Date end = mdcEquipmentDtoLast.getCollectTime(); + List<MdcEquipmentRunningSection> equipmentRunningSectionList = mdcEquipmentRunningSectionService.selectRunningData(mdcEquipment.getEquipmentId(), start, end); + if (equipmentRunningSectionList != null && !equipmentRunningSectionList.isEmpty()) { + //鏃堕棿淇 + if (equipmentRunningSectionList.get(0).getStartTime().before(start)) { + equipmentRunningSectionList.get(0).setStartTime(start); + } + if (equipmentRunningSectionList.size() > 1) { + if (equipmentRunningSectionList.get(equipmentRunningSectionList.size() - 1).getEndTime().after(end)) { + equipmentRunningSectionList.get(equipmentRunningSectionList.size() - 1).setEndTime(end); + } + } else { + if (equipmentRunningSectionList.get(0).getEndTime().after(end)) { + equipmentRunningSectionList.get(0).setEndTime(end); + } + } + //璁$畻鍔犲伐鏃堕暱 + long duration = this.handleProcessDuration(equipmentRunningSectionList); + if (duration != 0 && duration < 100000) { + MdcProcessCount mdcProcessCount = new MdcProcessCount(); + mdcProcessCount.setEquipmentId(mdcEquipment.getEquipmentId()); + mdcProcessCount.setEquipmentName(mdcEquipment.getEquipmentName()); + if (StringUtils.isBlank(mdcEquipmentDtoFirst.getSequencenumber())) { + mdcProcessCount.setSequenceNumber(mdcEquipmentDtoLast.getSequencenumber()); + } else { + mdcProcessCount.setSequenceNumber(mdcEquipmentDtoFirst.getSequencenumber()); + } + mdcProcessCount.setDuration(duration); + mdcProcessCount.setTheDate(stringDate); + resultList.add(mdcProcessCount); } } } + + } } return resultList; } + /** + * 璁$畻鍔犲伐宸ヤ欢鏃堕暱 + * @param equipmentRunningSectionList + * @return + */ + private long handleProcessDuration(List<MdcEquipmentRunningSection> equipmentRunningSectionList) { + long result = 0; + for (MdcEquipmentRunningSection mdcEquipmentRunningSection : equipmentRunningSectionList) { + result += TimeFieldUtils.duration(mdcEquipmentRunningSection.getStartTime(), mdcEquipmentRunningSection.getEndTime()); + } + return result; + } - private List<MdcShiftDateVo> getDatesListByMdcDeviceCalendarVo(MdcDeviceCalendarVo temp) { - List<MdcShiftDateVo> result = new ArrayList<>(); - String startDateStr = temp.getStartDate(); - String endDateStr = temp.getEndDate(); - String sleepStartDateStr = temp.getSleepStartDate(); - String sleepEndDateStr = temp.getSleepEndDate(); - String effectiveDateStr = temp.getEffectiveDate(); - String overtimeStartTime = temp.getOvertimeStartTime(); - String overtimeEndTime = temp.getOvertimeEndTime(); - String eff = DateUtils.format(DateUtils.toDate(effectiveDateStr, DateUtils.STRDATE), DateUtils.STR_DATE); - try { - Date effectiveDate = new SimpleDateFormat("yyyyMMdd").parse(effectiveDateStr); - long startDate = getLongDate(effectiveDate, startDateStr, "false"); - long endDate = getLongDate(effectiveDate, endDateStr, temp.getIsDaySpan()); - //澶勭悊鏈�鍚庣殑鏃堕棿闂 鏄惁瓒呰繃褰撳墠鏃堕棿 濡傛灉瓒呰繃涓嶅垪鍏ヨ绠� BUG - Date endTime = null; - if ("true".equals(temp.getIsDaySpan())) { - Date day = DateUtils.toDate(effectiveDateStr, DateUtils.STRDATE); - day = DateUtils.plusTime(day, 1); - String dayTime = DateUtils.format(day, DateUtils.STR_DATE); - endTime = DateUtils.toDate(dayTime + " " + temp.getEndDate(), DateUtils.STR_DATE_TIME_SMALL); - } else { - Date day = DateUtils.toDate(effectiveDateStr, DateUtils.STRDATE); - String dayTime = DateUtils.format(day, DateUtils.STR_DATE); - endTime = DateUtils.toDate(dayTime + " " + temp.getEndDate(), DateUtils.STR_DATE_TIME_SMALL); + private MdcDateVo handleDeviceCalendar(List<MdcDeviceCalendarVo> mdcDeviceCalendarVos) { + MdcDateVo result = new MdcDateVo(); + List<Date> dateList = new ArrayList<>(); + for (MdcDeviceCalendarVo mdcDeviceCalendarVo : mdcDeviceCalendarVos) { + String startDateStr = mdcDeviceCalendarVo.getStartDate(); + String endDateStr = mdcDeviceCalendarVo.getEndDate(); + String overtimeEndTime = mdcDeviceCalendarVo.getOvertimeEndTime(); + String effectiveDateStr = DateUtils.format(DateUtils.toDate(mdcDeviceCalendarVo.getEffectiveDate(), DateUtils.STRDATE), DateUtils.STR_DATE); + Date start = DateUtils.getFormatDate(effectiveDateStr + " " + startDateStr, DateUtils.STR_DATE_TIME_SMALL); + dateList.add(start); + Date end = DateUtils.getFormatDate(effectiveDateStr + " " + endDateStr, DateUtils.STR_DATE_TIME_SMALL); + if ("true".equals(mdcDeviceCalendarVo.getIsDaySpan())) { + end = DateUtils.addDays(end, 1); } - if (endTime.getTime() > DateUtils.getNow().getTime()) { - return null; - } - if (StringUtils.isNotEmpty(sleepStartDateStr)) { - long sleepStartDate = getLongDate(effectiveDate, sleepStartDateStr, "false"); - long sleepEndDate = getLongDate(effectiveDate, sleepEndDateStr, "false"); - Date start1 = DateUtils.getFormatDate(eff + " " + startDateStr, DateUtils.STR_DATE_TIME_SMALL); - Date end1 = DateUtils.getFormatDate(eff + " " + sleepStartDateStr, DateUtils.STR_DATE_TIME_SMALL); - Date start2 = DateUtils.getFormatDate(eff + " " + sleepEndDateStr, DateUtils.STR_DATE_TIME_SMALL); - Date end2 = DateUtils.getFormatDate(eff + " " + endDateStr, DateUtils.STR_DATE_TIME_SMALL); - if ("true".equals(temp.getIsDaySpan())) { - //璺ㄥぉ 鍒ゆ柇鐝寮�濮嬫椂闂村拰缁撴潫鏃堕棿鏄惁璺ㄥぉ - if (startDateStr.compareTo(endDateStr) < 0) { - //鐝寮�濮嬫椂闂村拰缁撴潫鏃堕棿閮借法澶� - startDate = getLongDate(effectiveDate, startDateStr, temp.getIsDaySpan()); - start1 = DateUtils.addDays(start1, 1); - end2 = DateUtils.addDays(end2, 1); - //鐝寮�濮嬫椂闂村拰缁撴潫鏃堕棿閮借法澶� 浼戞伅寮�濮嬫椂闂村拰缁撴潫鏃堕棿涔熶竴瀹氳法澶� - sleepStartDate = getLongDate(effectiveDate, sleepStartDateStr, temp.getIsDaySpan()); - end1 = DateUtils.addDays(end1, 1); - sleepEndDate = getLongDate(effectiveDate, sleepEndDateStr, temp.getIsDaySpan()); - start2 = DateUtils.addDays(start2, 1); - } else { - //鐝寮�濮嬫椂闂翠笉璺ㄥぉ锛� 缁撴潫鏃堕棿璺ㄥぉ - end2 = DateUtils.addDays(end2, 1); - //鍒ゆ柇浼戞伅寮�濮嬫椂闂存槸鍚﹁法澶� - if (startDateStr.compareTo(sleepStartDateStr) > 0) { - //寮�濮嬩紤鎭椂闂磋法澶╋紝 缁撴潫浼戞伅鏃堕棿涔熶竴瀹氳法澶� - sleepStartDate = getLongDate(effectiveDate, sleepStartDateStr, temp.getIsDaySpan()); - end1 = DateUtils.addDays(end1, 1); - sleepEndDate = getLongDate(effectiveDate, sleepEndDateStr, temp.getIsDaySpan()); - start2 = DateUtils.addDays(start2, 1); - } else { - //浼戞伅寮�濮嬫椂闂翠笉璺ㄥぉ, 鍒ゆ柇浼戞伅缁撴潫鏃堕棿鏄惁璺ㄥぉ - if (sleepStartDateStr.compareTo(sleepEndDateStr) > 0) { - //浼戞伅缁撴潫鏃堕棿璺ㄥぉ - sleepEndDate = getLongDate(effectiveDate, sleepEndDateStr, temp.getIsDaySpan()); - start2 = DateUtils.addDays(start2, 1); - } - } - } - - } - MdcShiftDateVo dates1 = new MdcShiftDateVo(temp.getShiftId(), temp.getShiftSubId(), startDate, sleepStartDate, effectiveDateStr, endTime, start1, end1); - result.add(dates1); - MdcShiftDateVo dates2 = new MdcShiftDateVo(temp.getShiftId(), temp.getShiftSubId(), sleepEndDate, endDate, effectiveDateStr, endTime, start2, end2); - result.add(dates2); - } else { - /*鑾峰彇鐝鐨勫紑濮嬫椂闂寸粨鏉熸椂闂�*/ - Date start = DateUtils.getFormatDate(eff + " " + startDateStr, DateUtils.STR_DATE_TIME_SMALL); - Date end = DateUtils.getFormatDate(eff + " " + endDateStr, DateUtils.STR_DATE_TIME_SMALL); - if ("true".equals(temp.getIsDaySpan())) { - if (startDateStr.compareTo(endDateStr) < 0) { - startDate = getLongDate(effectiveDate, startDateStr, temp.getIsDaySpan()); - start = DateUtils.addDays(start, 1); - } - end = DateUtils.addDays(end, 1); - } - MdcShiftDateVo dates = new MdcShiftDateVo(temp.getShiftId(), temp.getShiftSubId(), startDate, endDate, effectiveDateStr, endTime, start, end); - result.add(dates); - } + dateList.add(end); // 澶勭悊鍔犵彮鏃堕棿 - if (StringUtils.isNotEmpty(overtimeStartTime)) { - Date start = DateUtils.getFormatDate(eff + " " + overtimeStartTime, DateUtils.STR_DATE_TIME_SMALL); - Date end = DateUtils.getFormatDate(eff + " " + overtimeEndTime, DateUtils.STR_DATE_TIME_SMALL); - if ("true".equals(temp.getIsDaySpan())) { - start = DateUtils.addDays(start, 1); - end = DateUtils.addDays(end, 1); + if (StringUtils.isNotEmpty(overtimeEndTime)) { + Date overtimeEnd = DateUtils.getFormatDate(effectiveDateStr + " " + overtimeEndTime, DateUtils.STR_DATE_TIME_SMALL); + if ("true".equals(mdcDeviceCalendarVo.getIsDaySpan())) { + overtimeEnd = DateUtils.addDays(overtimeEnd, 1); } - MdcShiftDateVo dates = new MdcShiftDateVo(temp.getShiftId(), temp.getShiftSubId(), startDate, endDate, effectiveDateStr, endTime, start, end); - result.add(dates); + dateList.add(overtimeEnd); } - } catch (ParseException e) { - e.printStackTrace(); + } + if (!dateList.isEmpty()) { + dateList.sort(Date::compareTo); + result.setStartTime(dateList.get(0)); + result.setEndTime(dateList.get(dateList.size() - 1)); } return result; } private Map<String, List<MdcDeviceCalendarVo>> mdcDeviceCalendarMap(String equipmentId, List<String> stringDates) { List<MdcDeviceCalendarVo> mdcDeviceCalendarVos = mdcDeviceCalendarService.listByEquipmentAndDate(equipmentId, stringDates); - if (mdcDeviceCalendarVos.isEmpty()) { + if (mdcDeviceCalendarVos == null || mdcDeviceCalendarVos.isEmpty()) { return null; } Map<String, List<MdcDeviceCalendarVo>> map = new HashMap<>(); -- Gitblit v1.9.3