lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEfficiencyShiftListDto.java
@@ -36,5 +36,5 @@ /** * å©ç¨çæ°æ® */ private List<MdcEfficiencyResultDto> dataList; private List<MdcEfficiencyShiftResultDto> dataList; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEfficiencyShiftResultDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,49 @@ package org.jeecg.modules.mdc.dto; import lombok.Data; import java.math.BigDecimal; /** * @author: LiuS * @create: 2023-07-26 16:04 */ @Data public class MdcEfficiencyShiftResultDto { /** * æææ¥æ */ private String theDate; /** * å å·¥æ¶é¿ */ private BigDecimal processLong; /** * å©ç¨ç */ private BigDecimal utilizationRate; /** * å¼å¨ç */ private BigDecimal startRate; /** * 弿ºç */ private BigDecimal openRate; /** * 弿ºæ¶é¿ */ private BigDecimal openLong; /** * å¾ æºæ¶é¿ */ private BigDecimal waitLong; /** * å ³æºæ¶é¿ */ private BigDecimal closeLong; /** * é¢è² */ private String color; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentStatisticalShiftInfo.java
@@ -76,6 +76,11 @@ @ApiModelProperty(value = "æ¥è¦æ¶é¿") private BigDecimal errorLong = new BigDecimal("0"); /** * æææ»æ¶é¿ */ @ApiModelProperty(value = "æææ»æ¶é¿") private BigDecimal totalLong = new BigDecimal("0"); /** * æææ¥æ */ @ApiModelProperty(value = "æææ¥æ") lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEfficiencyReportMapper.java
@@ -2,7 +2,9 @@ import org.apache.ibatis.annotations.Param; import org.jeecg.modules.mdc.dto.MdcEfficiencyDto; import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo; import org.jeecg.modules.mdc.vo.MdcEfficiencyReportQueryVo; import org.jeecg.modules.mdc.vo.MdcEfficiencyReportShiftQueryVo; import java.util.List; @@ -27,4 +29,12 @@ * @return */ List<MdcEfficiencyDto> efficiencyPOList(@Param("vo") MdcEfficiencyReportQueryVo vo); /** * å¾å°ææçæ¬¡æ°æ®ä¹å * * @param vo * @return */ List<MdcEquipmentStatisticalShiftInfo> efficiencyShiftSumList(@Param("vo") MdcEfficiencyReportShiftQueryVo vo); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentRepairMapper.java
@@ -5,6 +5,9 @@ import org.apache.ibatis.annotations.Param; import org.jeecg.modules.mdc.entity.MdcEquipmentRepair; import java.util.Date; import java.util.List; /** * @Description: 设å¤ç»´ä¿®ä¼ç @@ -21,4 +24,5 @@ */ IPage<MdcEquipmentRepair> pageList(IPage<MdcEquipmentRepair> pageData, @Param("repair") MdcEquipmentRepair repair); List<MdcEquipmentRepair> selectByIdAndTime(@Param("equipmentId") String equipmentid, @Param("startDate") Date startDate, @Param("endDate") Date endDate); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentRunningSectionMapper.java
@@ -39,4 +39,14 @@ * 计ç®ä¸æ®µæ¶é´å çæ°æ® */ List<MdcEquipmentRunningSection> listEquipmentRunningSection(@Param("equipmentId") String equipmentid, @Param("startLong") long start, @Param("endLong") long end); /** * 计ç®ä¸æ®µæ¶é´å çè¿è¡æ°æ® */ List<MdcEquipmentRunningSection> listEquipmentRunningSectionRun(@Param("equipmentId") String equipmentid, @Param("startLong") long start, @Param("endLong") long end); /** * 计ç®ä¸æ®µæ¶é´å çæ éæ°æ® */ List<MdcEquipmentRunningSection> listEquipmentRunningSectionError(@Param("equipmentId") String equipmentid, @Param("startLong") long start, @Param("endLong") long end); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml
@@ -68,4 +68,47 @@ </if> ORDER BY t1.the_date </select> <!--å¾å°ææçæ¬¡æ°æ®ä¹å--> <select id="efficiencyShiftSumList" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo"> SELECT t2.equipment_id equipmentId, t2.equipment_name equipmentName, t2.equipment_type equipmentType, t1.the_date theDate, t1.shift_id shiftId, t1.shift_sub_id shiftSubId, SUM ( t1.process_long ) processLong, SUM ( t1.open_long ) openLong, SUM ( t1.wait_long ) waitLong, SUM ( t1.close_long ) closeLong FROM mdc_equipment t2 LEFT JOIN mdc_equipment_statistical_shift_info t1 ON t1.equipment_id = t2.equipment_id <where> AND t1.the_date <= #{ endTime } AND t1.the_date >= #{ startTime } <if test="vo.equipmentIdList != null and vo.equipmentIdList.size() > 0 "> AND t2.equipment_id IN <foreach collection="vo.equipmentIdList" item="id" index="index" open="(" close=")" separator=","> #{ id } </foreach> </if> <if test="vo.shiftId != null and vo.shiftId != ''"> AND t1.shift_id = #{ vo.shiftId } </if> <if test="vo.shiftSubId != null and vo.shiftSubId != ''"> AND t1.shift_sub_id = #{ vo.shiftSubId } </if> </where> GROUP BY t2.equipment_id, t2.equipment_name, t2.equipment_type, t1.the_date, t1.shift_id, t1.shift_sub_id ORDER BY t1.the_date </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRepairMapper.xml
@@ -31,4 +31,26 @@ ORDER BY START_TIME ASC </select> <!--æ¥è¯¢ææ®µæ¶é´å æ¯å¦æç»´ä¿®ä¼çæ°æ®--> <select id="selectByIdAndTime" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentRepair"> SELECT * FROM mdc_equipment_repair <where> <if test="equipmentId != null and equipmentId!= ''"> AND equipment_id = #{ equipmentId } </if> <if test="startTime != null and endTime!= null"> AND ( ( START_TIME <![CDATA[ >= ]]> #{ startTime } AND START_TIME <![CDATA[ <= ]]> #{ endTime } ) OR ( START_TIME <![CDATA[ <= ]]> #{ startTime } AND END_TIME <![CDATA[ >= ]]> #{ endTime }) OR ( END_TIME <![CDATA[ >= ]]> #{ startTime } AND END_TIME <![CDATA[ <= ]]> #{ endTime } ) OR ( START_TIME <![CDATA[ <= ]]> #{ startTime } AND END_TIME <![CDATA[ >= ]]> #{ endTime } ) ) </if> </where> ORDER BY start_time ASC </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRunningSectionMapper.xml
@@ -43,5 +43,33 @@ start_time </select> <!--计ç®ä¸æ®µæ¶é´å çè¿è¡æ°æ®--> <select id="listEquipmentRunningSectionRun" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentRunningSection"> SELECT * FROM mdc_equipment_running_section WHERE equipment_id = #{ equipmentId } AND status <![CDATA[ <> ]]> '22' AND (start_long <= #{ endLong } AND end_long >= #{ startLong }) ORDER BY start_time </select> <!--计ç®ä¸æ®µæ¶é´å çæ éæ°æ®--> <select id="listEquipmentRunningSectionError" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentRunningSection"> SELECT * FROM mdc_equipment_running_section WHERE equipment_id = #{ equipmentId } AND status = '22' AND (start_long <= #{ endLong } AND end_long >= #{ startLong }) ORDER BY start_time </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentRepairService.java
@@ -28,6 +28,7 @@ /** * å页æ¥è¯¢ * * @param userId * @param page * @param repair @@ -43,4 +44,14 @@ * @return */ boolean updateMdcRepair(MdcEquipmentRepair repair); /** * æ¥è¯¢ææ®µæ¶é´å æ¯å¦æç»´ä¿®ä¼çæ°æ® * * @param equipmentid * @param startDate * @param endDate * @return */ List<MdcEquipmentRepair> mdcRepairListDate(String equipmentid, Date startDate, Date endDate); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentRunningSectionService.java
@@ -51,4 +51,14 @@ * æ¥è¯¢æä¸ªè®¾å¤ä¸æ®µæ¶é´å çæ°æ® */ List<MdcEquipmentRunningSection> listRunningSectionFromLog(String equipmentid, long start, long end); /** * æ¥è¯¢æ¸ä¸ªè®¾å¤ä¸æ®µæ¶é´å çè¿è¡æ°æ® */ List<MdcEquipmentRunningSection> listEquipmentRunningSectionRun(String equipmentid, long start, long end); /** * æ¥è¯¢æ¸ä¸ªè®¾å¤ä¸æ®µæ¶é´å çæ éæ°æ® */ List<MdcEquipmentRunningSection> listEquipmentRunningSectionError(String equipmentid, long start, long end); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java
@@ -6,9 +6,12 @@ import org.jeecg.common.exception.JeecgBootException; import org.jeecg.modules.mdc.dto.*; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo; import org.jeecg.modules.mdc.entity.MdcShiftSub; import org.jeecg.modules.mdc.entity.MdcUtilizationRate; import org.jeecg.modules.mdc.mapper.MdcEfficiencyReportMapper; import org.jeecg.modules.mdc.service.IMdcEquipmentService; import org.jeecg.modules.mdc.service.IMdcShiftSubService; import org.jeecg.modules.mdc.service.IMdcUtilizationRateService; import org.jeecg.modules.mdc.service.MdcEfficiencyReportService; import org.jeecg.modules.mdc.util.DateUtils; @@ -22,6 +25,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; /** * @author: LiuS @@ -44,6 +48,9 @@ @Resource private IMdcProductionService mdcProductionService; @Resource private IMdcShiftSubService mdcShiftSubService; /** * å©ç¨çæ¥è¡¨ @@ -449,10 +456,244 @@ result.setMdcEfficiencyList(listDtos); } else { // çæ¬¡å©ç¨çç级 List<MdcUtilizationRate> mdcUtilizationRateList = mdcUtilizationRateService.listByType("kdl"); List<MdcUtilizationRate> mdcUtilizationRateList = mdcUtilizationRateService.listByType("bclyl"); // çæ¬¡å©ç¨çæ°æ® List<MdcEquipmentStatisticalShiftInfo> mdcEquipmentStatisticalShiftInfoList = mdcEfficiencyReportMapper.efficiencyShiftSumList(vo); // å°è£ ç»æ if ("2".equals(vo.getTypeTree())) { // é¨é¨å±çº§ List<MdcEquDepDto> equipmentList = mdcEquipmentService.findEquDepList(vo.getEquipmentIdList()); // æ¥è¯¢ææé¨é¨ä¿¡æ¯ List<SysDepart> departList = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString())); // çæ¬¡åç§°æ¾ç¤ºå¤ç String shiftSubName = ""; if (StringUtils.isBlank(vo.getShiftId())) { // åå¹¶è®¾å¤æ¯å¤©ææçæ¬¡çæ°æ® shiftSubName = "å ¨é¨"; } else { List<MdcShiftSub> mdcShiftSubList = new ArrayList<>(); if (StringUtils.isBlank(vo.getShiftSubId())) { // æ¼æ¥æéçå¶ä¸çææç次åç§° mdcShiftSubList = mdcShiftSubService.list(new LambdaQueryWrapper<MdcShiftSub>().eq(MdcShiftSub::getShiftId, vo.getShiftId()).eq(MdcShiftSub::getShiftSubStatus, "1")); mdcEquipmentStatisticalShiftInfoList = mdcEquipmentStatisticalShiftInfoList.stream().filter(mdcEquipmentShiftRateVo -> mdcEquipmentShiftRateVo.getShiftId().equals(vo.getShiftId())).collect(Collectors.toList()); } else { // 设置å½åéæ©ççæ¬¡åç§° mdcShiftSubList = mdcShiftSubService.list(new LambdaQueryWrapper<MdcShiftSub>().eq(MdcShiftSub::getId, vo.getShiftSubId()).eq(MdcShiftSub::getShiftSubStatus, "1")); mdcEquipmentStatisticalShiftInfoList = mdcEquipmentStatisticalShiftInfoList.stream().filter(mdcEquipmentShiftRateVo -> mdcEquipmentShiftRateVo.getShiftId().equals(vo.getShiftId()) && mdcEquipmentShiftRateVo.getShiftSubId().equals(vo.getShiftSubId())).collect(Collectors.toList()); } List<String> shiftSubNames = mdcShiftSubList.stream().map(MdcShiftSub::getShiftSubName).collect(Collectors.toList()); shiftSubName = String.join(",", shiftSubNames); } // åå¹¶åä¸å¤©å¤çæ¬¡æ°æ® mdcEquipmentStatisticalShiftInfoList = this.handleEfficiencyShiftList(mdcEquipmentStatisticalShiftInfoList); for (MdcEquDepDto mdcEquDepDto : equipmentList) { MdcEfficiencyShiftListDto mdcEfficiencyShiftListDto = new MdcEfficiencyShiftListDto(); mdcEfficiencyShiftListDto.setEquipmentId(mdcEquDepDto.getEquipmentId()); mdcEfficiencyShiftListDto.setEquipmentName(mdcEquDepDto.getEquipmentName()); mdcEfficiencyShiftListDto.setEquipmentType(mdcEquDepDto.getEquipmentType()); mdcEfficiencyShiftListDto.setShiftSubName(shiftSubName); switch (mdcEquDepDto.getOrgType()) { case "1": mdcEfficiencyShiftListDto.setLevel1(mdcEquDepDto.getDepartName()); break; case "2": mdcEfficiencyShiftListDto.setLevel2(mdcEquDepDto.getDepartName()); break; case "3": mdcEfficiencyShiftListDto.setLevel3(mdcEquDepDto.getDepartName()); break; default: } SysDepart sysDepart = departList.stream().filter(depart -> depart.getId().equals(mdcEquDepDto.getParentId())).findAny().orElse(null); if (sysDepart != null) { switch (sysDepart.getOrgType()) { case "1": mdcEfficiencyShiftListDto.setLevel1(sysDepart.getDepartName()); break; case "2": mdcEfficiencyShiftListDto.setLevel2(sysDepart.getDepartName()); break; case "3": mdcEfficiencyShiftListDto.setLevel3(sysDepart.getDepartName()); break; default: } if (StringUtils.isNotEmpty(sysDepart.getParentId())) { departList.stream().filter(depart -> depart.getId().equals(sysDepart.getParentId())).findAny().ifPresent(depart1 -> { switch (depart1.getOrgType()) { case "1": mdcEfficiencyShiftListDto.setLevel1(depart1.getDepartName()); break; case "2": mdcEfficiencyShiftListDto.setLevel2(depart1.getDepartName()); break; case "3": mdcEfficiencyShiftListDto.setLevel3(depart1.getDepartName()); break; default: } }); } } List<MdcEfficiencyShiftResultDto> list = new ArrayList<>(); for (String date : dates) { list.add(this.efficiencyShiftRate(mdcEquipmentStatisticalShiftInfoList, date, mdcEquDepDto.getEquipmentId(), mdcUtilizationRateList)); } mdcEfficiencyShiftListDto.setDataList(list); listDtos.add(mdcEfficiencyShiftListDto); } } else { // 产线å±çº§ List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(vo.getEquipmentIdList()); // æ¥è¯¢ææäº§çº¿ä¿¡æ¯ List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString())); // çæ¬¡åç§°æ¾ç¤ºå¤ç String shiftSubName = ""; if (StringUtils.isBlank(vo.getShiftId())) { // åå¹¶è®¾å¤æ¯å¤©ææçæ¬¡çæ°æ® shiftSubName = "å ¨é¨"; } else { List<MdcShiftSub> mdcShiftSubList = new ArrayList<>(); if (StringUtils.isBlank(vo.getShiftSubId())) { // æ¼æ¥æéçå¶ä¸çææç次åç§° mdcShiftSubList = mdcShiftSubService.list(new LambdaQueryWrapper<MdcShiftSub>().eq(MdcShiftSub::getShiftId, vo.getShiftId()).eq(MdcShiftSub::getShiftSubStatus, "1")); mdcEquipmentStatisticalShiftInfoList = mdcEquipmentStatisticalShiftInfoList.stream().filter(mdcEquipmentShiftRateVo -> mdcEquipmentShiftRateVo.getShiftId().equals(vo.getShiftId())).collect(Collectors.toList()); } else { // 设置å½åéæ©ççæ¬¡åç§° mdcShiftSubList = mdcShiftSubService.list(new LambdaQueryWrapper<MdcShiftSub>().eq(MdcShiftSub::getId, vo.getShiftSubId()).eq(MdcShiftSub::getShiftSubStatus, "1")); mdcEquipmentStatisticalShiftInfoList = mdcEquipmentStatisticalShiftInfoList.stream().filter(mdcEquipmentShiftRateVo -> mdcEquipmentShiftRateVo.getShiftId().equals(vo.getShiftId()) && mdcEquipmentShiftRateVo.getShiftSubId().equals(vo.getShiftSubId())).collect(Collectors.toList()); } List<String> shiftSubNames = mdcShiftSubList.stream().map(MdcShiftSub::getShiftSubName).collect(Collectors.toList()); shiftSubName = String.join(",", shiftSubNames); } // åå¹¶åä¸å¤©å¤çæ¬¡æ°æ® mdcEquipmentStatisticalShiftInfoList = this.handleEfficiencyShiftList(mdcEquipmentStatisticalShiftInfoList); for (MdcEquProDto mdcEquProDto : equipmentList) { MdcEfficiencyShiftListDto mdcEfficiencyShiftListDto = new MdcEfficiencyShiftListDto(); mdcEfficiencyShiftListDto.setEquipmentId(mdcEquProDto.getEquipmentId()); mdcEfficiencyShiftListDto.setEquipmentName(mdcEquProDto.getEquipmentName()); mdcEfficiencyShiftListDto.setEquipmentType(mdcEquProDto.getEquipmentType()); mdcEfficiencyShiftListDto.setShiftSubName(shiftSubName); switch (mdcEquProDto.getOrgType()) { case "1": mdcEfficiencyShiftListDto.setLevel1(mdcEquProDto.getProductionName()); break; case "2": mdcEfficiencyShiftListDto.setLevel2(mdcEquProDto.getProductionName()); break; case "3": mdcEfficiencyShiftListDto.setLevel3(mdcEquProDto.getProductionName()); break; default: } MdcProduction mdcProduction = productionList.stream().filter(production -> production.getId().equals(mdcEquProDto.getParentId())).findAny().orElse(null); if (mdcProduction != null) { switch (mdcProduction.getOrgType()) { case "1": mdcEfficiencyShiftListDto.setLevel1(mdcProduction.getProductionName()); break; case "2": mdcEfficiencyShiftListDto.setLevel2(mdcProduction.getProductionName()); break; case "3": mdcEfficiencyShiftListDto.setLevel3(mdcProduction.getProductionName()); break; default: } if (StringUtils.isNotEmpty(mdcProduction.getParentId())) { productionList.stream().filter(production -> production.getId().equals(mdcProduction.getParentId())).findAny().ifPresent(production1 -> { switch (production1.getOrgType()) { case "1": mdcEfficiencyShiftListDto.setLevel1(production1.getProductionName()); break; case "2": mdcEfficiencyShiftListDto.setLevel2(production1.getProductionName()); break; case "3": mdcEfficiencyShiftListDto.setLevel3(production1.getProductionName()); break; default: } }); } } List<MdcEfficiencyShiftResultDto> list = new ArrayList<>(); for (String date : dates) { list.add(this.efficiencyShiftRate(mdcEquipmentStatisticalShiftInfoList, date, mdcEquProDto.getEquipmentId(), mdcUtilizationRateList)); } mdcEfficiencyShiftListDto.setDataList(list); listDtos.add(mdcEfficiencyShiftListDto); } } result.setMdcEfficiencyList(listDtos); } return result; } private MdcEfficiencyShiftResultDto efficiencyShiftRate(List<MdcEquipmentStatisticalShiftInfo> mdcEquipmentStatisticalShiftInfoList, String date, String equipmentId, List<MdcUtilizationRate> mdcUtilizationRateList) { MdcEfficiencyShiftResultDto mdcEfficiencyShiftResultDto = new MdcEfficiencyShiftResultDto(); if (mdcEquipmentStatisticalShiftInfoList != null && !mdcEquipmentStatisticalShiftInfoList.isEmpty()) { for (MdcEquipmentStatisticalShiftInfo equipmentStatisticalShiftInfo : mdcEquipmentStatisticalShiftInfoList) { if (date.equals(equipmentStatisticalShiftInfo.getTheDate()) && equipmentStatisticalShiftInfo.getEquipmentId().equals(equipmentId)) { mdcEfficiencyShiftResultDto.setTheDate(equipmentStatisticalShiftInfo.getTheDate()); mdcEfficiencyShiftResultDto.setProcessLong(equipmentStatisticalShiftInfo.getProcessLong()); mdcEfficiencyShiftResultDto.setUtilizationRate(equipmentStatisticalShiftInfo.getProcessLong().divide(equipmentStatisticalShiftInfo.getTotalLong(), 6, BigDecimal.ROUND_HALF_UP)); mdcEfficiencyShiftResultDto.setCloseLong(equipmentStatisticalShiftInfo.getCloseLong()); mdcEfficiencyShiftResultDto.setOpenLong(equipmentStatisticalShiftInfo.getOpenLong()); mdcEfficiencyShiftResultDto.setWaitLong(equipmentStatisticalShiftInfo.getWaitLong()); mdcEfficiencyShiftResultDto.setOpenRate(equipmentStatisticalShiftInfo.getOpenLong().divide(equipmentStatisticalShiftInfo.getTotalLong(), 6, BigDecimal.ROUND_HALF_UP)); for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { if (mdcEfficiencyShiftResultDto.getUtilizationRate().longValue() * 100 >= mdcUtilizationRate.getMinimumRange() && mdcEfficiencyShiftResultDto.getUtilizationRate().longValue() * 100 < mdcUtilizationRate.getMaximumRange()) { mdcEfficiencyShiftResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); } } } } } else { mdcEfficiencyShiftResultDto.setTheDate(date); mdcEfficiencyShiftResultDto.setProcessLong(new BigDecimal("0")); mdcEfficiencyShiftResultDto.setUtilizationRate(new BigDecimal("0")); mdcEfficiencyShiftResultDto.setStartRate(new BigDecimal("0")); mdcEfficiencyShiftResultDto.setOpenRate(new BigDecimal("0")); mdcEfficiencyShiftResultDto.setOpenLong(new BigDecimal("0")); mdcEfficiencyShiftResultDto.setWaitLong(new BigDecimal("0")); mdcEfficiencyShiftResultDto.setCloseLong(new BigDecimal("0")); for (MdcUtilizationRate mdcUtilizationRate : mdcUtilizationRateList) { if (0 >= mdcUtilizationRate.getMinimumRange() && 0 < mdcUtilizationRate.getMaximumRange()) { mdcEfficiencyShiftResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); } } } return mdcEfficiencyShiftResultDto; } /** * åå¹¶åä¸å¤©åçæ¬¡æ°æ® * * @param mdcEquipmentStatisticalShiftInfoList * @return */ private List<MdcEquipmentStatisticalShiftInfo> handleEfficiencyShiftList(List<MdcEquipmentStatisticalShiftInfo> mdcEquipmentStatisticalShiftInfoList) { List<MdcEquipmentStatisticalShiftInfo> result = new ArrayList<>(); Map<String, MdcEquipmentStatisticalShiftInfo> map = new HashMap<>(); for (MdcEquipmentStatisticalShiftInfo equipmentStatisticalShiftInfo : mdcEquipmentStatisticalShiftInfoList) { if (map.containsKey(equipmentStatisticalShiftInfo.getEquipmentId() + "_" + equipmentStatisticalShiftInfo.getTheDate())) { MdcEquipmentStatisticalShiftInfo vo = map.get(equipmentStatisticalShiftInfo.getEquipmentId() + "_" + equipmentStatisticalShiftInfo.getTheDate()); vo.setProcessLong(vo.getProcessLong().add(equipmentStatisticalShiftInfo.getProcessLong())); vo.setOpenLong(vo.getOpenLong().add(equipmentStatisticalShiftInfo.getOpenLong())); vo.setWaitLong(vo.getWaitLong().add(equipmentStatisticalShiftInfo.getWaitLong())); vo.setCloseLong(vo.getCloseLong().add(equipmentStatisticalShiftInfo.getCloseLong())); } else { map.put(equipmentStatisticalShiftInfo.getEquipmentId() + "_" + equipmentStatisticalShiftInfo.getTheDate(), equipmentStatisticalShiftInfo); } } for (String s : map.keySet()) { result.add(map.get(s)); } return result; } @@ -548,7 +789,6 @@ mdcEfficiencyResultDto.setColor(mdcUtilizationRate.getRateParameterColor()); } } } } } else { lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRepairServiceImpl.java
@@ -239,4 +239,9 @@ return result; } @Override public List<MdcEquipmentRepair> mdcRepairListDate(String equipmentid, Date startDate, Date endDate) { return this.baseMapper.selectByIdAndTime(equipmentid, startDate, endDate); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java
@@ -579,6 +579,16 @@ return running; } @Override public List<MdcEquipmentRunningSection> listEquipmentRunningSectionRun(String equipmentid, long start, long end) { return this.baseMapper.listEquipmentRunningSectionRun(equipmentid, start, end); } @Override public List<MdcEquipmentRunningSection> listEquipmentRunningSectionError(String equipmentid, long start, long end) { return this.baseMapper.listEquipmentRunningSectionError(equipmentid, start, end); } private Map<String, List<MdcEquipmentRunningSectionDto>> logCharts(MdcEquipmentRunningSectionVo equipmentRunningSectionVo, String date) { Map<String, List<MdcEquipmentRunningSectionDto>> map = new HashMap<>(); List<MdcEquipmentRunningSectionDto> normal = new ArrayList<>(); lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java
@@ -4,14 +4,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang.StringUtils; import org.jeecg.modules.mdc.entity.Equipment; import org.jeecg.modules.mdc.entity.MdcEquipmentRepair; import org.jeecg.modules.mdc.entity.MdcEquipmentRunningSection; import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo; import org.jeecg.modules.mdc.mapper.MdcEquipmentStatisticalShiftInfoMapper; import org.jeecg.modules.mdc.service.IEquipmentService; import org.jeecg.modules.mdc.service.IMdcDeviceCalendarService; import org.jeecg.modules.mdc.service.IMdcEquipmentRunningSectionService; import org.jeecg.modules.mdc.service.IMdcEquipmentStatisticalShiftInfoService; import org.jeecg.modules.mdc.service.*; import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.mdc.vo.MdcDateVo; import org.jeecg.modules.mdc.vo.MdcDeviceCalendarVo; import org.jeecg.modules.mdc.vo.MdcShiftDateVo; import org.springframework.stereotype.Service; @@ -22,6 +21,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; /** * @Description: 设å¤åæ¥ç次è¿è¡æ°æ®è¡¨ @@ -39,6 +39,9 @@ @Resource private IMdcDeviceCalendarService mdcDeviceCalendarService; @Resource private IMdcEquipmentRepairService mdcEquipmentRepairService; /** * 计ç®è®¾å¤åæ¥ç次è¿è¡æ°æ® @@ -141,6 +144,7 @@ equipmentStatisticalShiftInfo.setOpenLong(equipmentStatisticalShiftInfo.getOpenLong().add(shiftInfo.getOpenLong())); equipmentStatisticalShiftInfo.setErrorLong(equipmentStatisticalShiftInfo.getErrorLong().add(shiftInfo.getErrorLong())); } resultList.add(equipmentStatisticalShiftInfo); } } } @@ -158,79 +162,423 @@ if (dates == null || StringUtils.isBlank(equipmentid)) { return null; } //ä¸è¿æ»¤ä¼çåç»´ä¿® //è·åçæ¬¡æ¶é´æ®µå æ°æ® List<MdcEquipmentRunningSection> sectionList = mdcEquipmentRunningSectionService.listEquipmentRunningSection(equipmentid, dates.getStart(), dates.getEnd()); //æ¥è¯¢æ æ°æ®éè¦EquipmentLogè§£æ if (sectionList.isEmpty()) { sectionList = mdcEquipmentRunningSectionService.listRunningSectionFromLog(equipmentid, dates.getStart(), dates.getEnd()); } if (sectionList == null || sectionList.isEmpty()) { sectionList = new ArrayList<>(); } //å¤çæ°æ® long datesStart = dates.getStart(); long datesEnd = dates.getEnd(); for (int i = 0; i < sectionList.size(); i++) { MdcEquipmentRunningSection equipmentRunningSection = sectionList.get(i); long start = equipmentRunningSection.getStartTime().getTime(); long end = equipmentRunningSection.getEndTime().getTime(); if (datesStart <= start) { equipmentRunningSection.setStartTime(equipmentRunningSection.getStartTime()); //æ¥è¯¢æ¯å¦éè¦ç»´ä¿®çè®¾å¤ List<MdcEquipmentRepair> repairs = mdcEquipmentRepairService.mdcRepairListDate(equipmentid, dates.getStartDate(), dates.getEndDate()); //å¶åº¦æ¶é´æ®µå çä¼çåç»´ä¿®æ¶é´æ®µçé List<MdcEquipmentRepair> repairList = this.findSubRepairs(repairs, dates); List<MdcDateVo> dateList = new ArrayList<>(); if (repairList == null || repairList.isEmpty()) { //å¶åº¦æ¶é´æ®µå 没æç»´ä¿®åä¼çæ¶é´æ®µ MdcEquipmentStatisticalShiftInfo shiftInfo = mdcRateEquipment(equipmentid, dates.getStartDate(), dates.getEndDate()); return shiftInfo; } else { if (repairList.size() == 1 ) { long start = repairList.get(0).getStartTime().getTime(); long end = repairList.get(0).getEndTime().getTime(); if ( start > dates.getStart() && end < dates.getEnd() ) { MdcDateVo d1 = new MdcDateVo(); d1.setStartTime(dates.getStartDate()); d1.setEndTime(repairList.get(0).getStartTime()); dateList.add(d1); MdcDateVo d2 = new MdcDateVo(); d2.setStartTime(repairList.get(0).getEndTime()); d2.setEndTime(dates.getEndDate()); dateList.add(d2); } else if (start == dates.getStart() && end < dates.getEnd()){ MdcDateVo d2 = new MdcDateVo(); d2.setStartTime(repairList.get(0).getEndTime()); d2.setEndTime(dates.getEndDate()); dateList.add(d2); } else if (start > dates.getStart() && end == dates.getEnd()) { MdcDateVo d1 = new MdcDateVo(); d1.setStartTime(dates.getStartDate()); d1.setEndTime(repairList.get(0).getStartTime()); dateList.add(d1); } else { //ä¼ç MdcEquipmentStatisticalShiftInfo vo = new MdcEquipmentStatisticalShiftInfo(); vo.setTotalLong(BigDecimal.ZERO); vo.setErrorLong(BigDecimal.ZERO); vo.setProcessLong(BigDecimal.ZERO); vo.setWaitLong(BigDecimal.ZERO); vo.setCloseLong(BigDecimal.ZERO); vo.setOpenLong(BigDecimal.ZERO); return vo; } } else { equipmentRunningSection.setStartTime(dates.getStartDate()); } if (datesEnd >= end) { equipmentRunningSection.setEndTime(equipmentRunningSection.getEndTime()); } else { equipmentRunningSection.setEndTime(dates.getEndDate()); } Long sen = DateUtils.differentSecond(equipmentRunningSection.getStartTime(), equipmentRunningSection.getEndTime()); if (sen <= 0) { sectionList.remove(i); i--; } else { equipmentRunningSection.setDuration(sen); equipmentRunningSection.setStartLong(equipmentRunningSection.getStartTime().getTime()); equipmentRunningSection.setEndLong(equipmentRunningSection.getEndTime().getTime()); long s = dates.getStartDate().getTime(); for (int i = 0 ; i < repairList.size(); i ++) { long start = repairList.get(i).getStartTime().getTime(); long end = repairList.get(i).getEndTime().getTime(); if (start > s ) { MdcDateVo d = new MdcDateVo(); d.setStartTime(dates.getStartDate()); d.setEndTime(repairList.get(i).getStartTime()); if (d.getEndTime().getTime() != d.getStartTime().getTime()) { dateList.add(d); } dates.setStartDate(repairList.get(i).getEndTime()); } else if (start == s) { dates.setStartDate(repairList.get(i).getEndTime()); } if(i == repairList.size() -1 ) { if(dates.getStartDate().getTime() >= end) { MdcDateVo d = new MdcDateVo(); d.setStartTime(repairList.get(i).getEndTime()); d.setEndTime(dates.getEndDate()); if (d.getEndTime().getTime() != d.getStartTime().getTime()) { dateList.add(d); } } } } } } MdcEquipmentStatisticalShiftInfo shiftInfo = new MdcEquipmentStatisticalShiftInfo(); shiftInfo.setEquipmentId(equipmentid); shiftInfo.setShiftId(dates.getShiftId()); shiftInfo.setShiftSubId(dates.getShiftSubId()); shiftInfo.setTheDate(dates.getDay()); long waitLong = 0L; long processLong = 0L; long closeLong = 0L; long errorLong = 0L; for (MdcEquipmentRunningSection equipmentRunningSection : sectionList) { Long duration = equipmentRunningSection.getDuration(); int status = equipmentRunningSection.getStatus(); if (status == 2) { waitLong += duration; for (MdcDateVo date : dateList) { MdcEquipmentStatisticalShiftInfo v = mdcRateEquipment(equipmentid, date.getStartTime(), date.getEndTime()); shiftInfo.setTotalLong(v.getTotalLong().add(shiftInfo.getTotalLong())); shiftInfo.setOpenLong(v.getOpenLong().add(shiftInfo.getOpenLong())); shiftInfo.setCloseLong(v.getCloseLong().add(shiftInfo.getCloseLong())); shiftInfo.setWaitLong(v.getWaitLong().add(shiftInfo.getWaitLong())); shiftInfo.setProcessLong(v.getProcessLong().add(shiftInfo.getProcessLong())); shiftInfo.setErrorLong(v.getErrorLong().add(shiftInfo.getErrorLong())); } return shiftInfo; } private MdcEquipmentStatisticalShiftInfo mdcRateEquipment(String equipmentid, Date startDate, Date endDate) { MdcDateVo date = new MdcDateVo(); date.setStartTime(startDate); date.setEndTime(endDate); List<MdcEquipmentRunningSection> runningSections = new ArrayList<>(); runningSections = mdcEquipmentRunningSectionService.listEquipmentRunningSectionRun(equipmentid, startDate.getTime(), endDate.getTime()); //æ¥è¯¢å¦ææ æ°æ®éè¦ EquipmentLog è§£æ if (runningSections == null || runningSections.isEmpty()) { runningSections = mdcEquipmentRunningSectionService.listRunningSectionFromLog(equipmentid, startDate.getTime(), endDate.getTime()); } if(runningSections == null || runningSections.isEmpty()) { runningSections = new ArrayList<>(); } List<MdcEquipmentRunningSection> sectionErrors = mdcEquipmentRunningSectionService.listEquipmentRunningSectionError(equipmentid, startDate.getTime(), endDate.getTime()); // æé¤åºç¡é ç½®æ¥è¦å·ï¼åºç¡é ç½®æ¥è¦å·çä¸ç®æ¥è¦ï¼ //sectionErrors = filterSectionErrors(equipmentId, sectionErrors); MdcEquipmentStatisticalShiftInfo shiftInfo = new MdcEquipmentStatisticalShiftInfo(); BigDecimal totalLongRairs = new BigDecimal("0"); List<MdcEquipmentRunningSection> sectionList = findStatsEquipment(null, runningSections, date, sectionErrors); if (sectionList == null || sectionList.isEmpty()) { shiftInfo.setEquipmentId(equipmentid); return shiftInfo; } List<MdcEquipmentRunningSection> runs = new ArrayList<>(); List<MdcEquipmentRunningSection> errs = new ArrayList<>(); for (MdcEquipmentRunningSection section : sectionList) { if (section.getStatus() == 22 || section.getStatus() == 0) { errs.add(section); } if (status == 3) { processLong += duration; } if (status == 0) { closeLong += duration; } if (status == 22) { errorLong += duration; if (section.getStatus() == 3) { runs.add(section); } } shiftInfo.setWaitLong(new BigDecimal(waitLong)); shiftInfo.setProcessLong(new BigDecimal(processLong)); shiftInfo.setCloseLong(new BigDecimal(closeLong)); //弿ºæ¶é´è®¡ç®ä¸º æææ¶é¿ - å ³æºæ¶é¿ shiftInfo.setOpenLong(new BigDecimal((datesEnd - datesStart) / 1000).subtract(shiftInfo.getCloseLong())); shiftInfo.setErrorLong(new BigDecimal(errorLong)); // åæ»å·¥æ¶ => æææ¶é¿å BigDecimal totalLong = new BigDecimal(DateUtils.getSeconds(startDate, endDate)).subtract(totalLongRairs); // 计ç®å å·¥ BigDecimal processLong = new BigDecimal("0"); if (runs != null && !runs.isEmpty()) { processLong = processLongInfo(runs); } // å ³æºæ°æ® List<MdcEquipmentRunningSection> closes = errs.stream().filter(section -> section.getStatus() != 22).collect(Collectors.toList()); // å ³æºæ¶é¿ BigDecimal closeLong = new BigDecimal("0"); closeLong = closeLong(closes); /*æ éæ¶é´ errs => å ³æºæ°æ® + æ¥è¦æ°æ® */ BigDecimal faultLong = new BigDecimal("0"); faultLong = faultLongInfo(errs); //æ¥è¦æ°æ® List<MdcEquipmentRunningSection> alarms = errs.stream().filter(section -> section.getStatus() == 22).collect(Collectors.toList()); //æ¥è¦æ¶é¿ BigDecimal alarmLong = new BigDecimal("0"); alarmLong = alarmLong(alarms); //å¾ æºæ¶é¿ => æææ¶é¿ - è¿è¡æ¶é¿ - æ¥è¦æ¶é¿ BigDecimal waitLong = totalLong.subtract(processLong).subtract(alarmLong); if (waitLong.compareTo(BigDecimal.ZERO) < 0) { waitLong = new BigDecimal("0"); } // 弿ºæ¶é¿ => æææ¶é¿ - å ³æºæ¶é¿ BigDecimal openLong = totalLong.subtract(closeLong); if (openLong.compareTo(BigDecimal.ZERO) < 0) { openLong = new BigDecimal("0"); } shiftInfo.setProcessLong(processLong); shiftInfo.setTotalLong(totalLong); shiftInfo.setWaitLong(waitLong); shiftInfo.setErrorLong(alarmLong); shiftInfo.setCloseLong(closeLong); shiftInfo.setOpenLong(openLong); return shiftInfo; } /** * ç»è®¡å ³æºæ¶é¿ */ private BigDecimal closeLong(List<MdcEquipmentRunningSection> closes) { BigDecimal closeLong = new BigDecimal("0"); for (MdcEquipmentRunningSection alarm : closes) { closeLong = closeLong.add(new BigDecimal(alarm.getDuration())); } return closeLong; } /** * ç»è®¡æ¥è¦æ¶é¿ */ private BigDecimal alarmLong(List<MdcEquipmentRunningSection> alarms) { BigDecimal alarmLong = new BigDecimal("0"); for (MdcEquipmentRunningSection alarm : alarms) { alarmLong = alarmLong.add(new BigDecimal(alarm.getDuration())); } return alarmLong; } /** * ç»è®¡æ éæ¶é¿ */ private BigDecimal faultLongInfo(List<MdcEquipmentRunningSection> errs) { BigDecimal faultLong = new BigDecimal("0"); for (MdcEquipmentRunningSection e : errs) { faultLong = faultLong.add(new BigDecimal(e.getDuration())); } return faultLong; } /** * ç»è®¡å å·¥æ¶é¿ */ private BigDecimal processLongInfo(List<MdcEquipmentRunningSection> runs) { BigDecimal processLong = new BigDecimal("0"); for (MdcEquipmentRunningSection se : runs) { if (se.getStatus() == 3) { processLong = processLong.add(new BigDecimal(se.getDuration())); } } return processLong; } private List<MdcEquipmentRunningSection> findStatsEquipment(List<MdcEquipmentRepair> repairs, List<MdcEquipmentRunningSection> sRun, MdcDateVo mdcDate, List<MdcEquipmentRunningSection> errors) { if (sRun == null || sRun.isEmpty()) { //æ æ°æ®å¤ç //TODO return null; } Long startMdc = mdcDate.getStartTime().getTime(); Long endMdc = mdcDate.getEndTime().getTime(); if (sRun != null && !sRun.isEmpty()) { for (int i = 0 ; i < sRun.size() ; i ++) { Long start = sRun.get(i).getStartTime().getTime(); Long end = sRun.get(i).getEndTime().getTime(); if (startMdc <= start ) { sRun.get(i).setStartTime( sRun.get(i).getStartTime()); } else { sRun.get(i).setStartTime(mdcDate.getStartTime()); } if (endMdc >= end) { sRun.get(i).setEndTime( sRun.get(i).getEndTime()); } else { sRun.get(i).setEndTime(mdcDate.getEndTime()); } Long sen = DateUtils.differentSecond( sRun.get(i).getStartTime(), sRun.get(i).getEndTime()); if (sen <= 0) { sRun.remove(i); i--; } else { sRun.get(i).setDuration(sen); sRun.get(i).setStartLong( sRun.get(i).getStartTime().getTime()); sRun.get(i).setEndLong( sRun.get(i).getEndTime().getTime()); } } } //é¨åæ°æ®æ¯ç»´ä¿® 1ãè¿è¡ç¶æä¸æ¥è¦æ åµ List<MdcEquipmentRunningSection> faultRun = new ArrayList<>(); //å¶åº¦æ¶é´æ®µå æ¥è¦æ°æ® if (errors != null && !errors.isEmpty() ) { for (int i = 0 ; i < errors.size() ; i ++) { Long start = errors.get(i).getStartTime().getTime(); Long end = errors.get(i).getEndTime().getTime(); if (startMdc <= start ) { errors.get(i).setStartTime( errors.get(i).getStartTime()); } else { errors.get(i).setStartTime(mdcDate.getStartTime()); } if (endMdc >= end) { errors.get(i).setEndTime( errors.get(i).getEndTime()); } else { errors.get(i).setEndTime(mdcDate.getEndTime()); } Long sen = DateUtils.differentSecond( errors.get(i).getStartTime(), errors.get(i).getEndTime()); if (sen <= 0) { errors.remove(i); i--; } else { errors.get(i).setDuration(sen); errors.get(i).setStartLong( errors.get(i).getStartTime().getTime()); errors.get(i).setEndLong( errors.get(i).getEndTime().getTime()); } } //æè¿è¡ä¸åå¨çæ¥è¦å餿 for (MdcEquipmentRunningSection se : sRun) { long runStart = se.getStartTime().getTime(); long runEnd = se.getEndTime().getTime(); if (se.getStatus() == 3) { if (errors != null && !errors.isEmpty() ) { //å¤çæ¥è¦æ°æ® for (int i = 0 ; i < errors.size(); i ++ ) { long errStart = errors.get(i).getStartTime().getTime(); long errEnd = errors.get(i).getEndTime().getTime(); // æ¥è¦å¼å§ å°äº è¿è¡å¼å§ æ¥è¦ç»æ å°äºè¿è¡ç»æ æ¥è¦ç»æ å¤§äº è¿è¡å¼å§ if ( errStart < runStart && errEnd <= runEnd && errEnd > runStart ) { errors.get(i).setEndTime(se.getStartTime()); Long sen = DateUtils.differentSecond(errors.get(i).getStartTime(), errors.get(i).getEndTime()); errors.get(i).setDuration(sen); errors.get(i).setStartLong(errors.get(i).getStartTime().getTime()); errors.get(i).setEndLong(errors.get(i).getEndTime().getTime()); } // æ¥è¦å¼å§ å¤§äº è¿è¡å¼å§ ï¼ æ¥è¦å¼å§ å°äº è¿è¡ç»æ ï¼æ¥è¦ç»æ å¤§äº è¿è¡ç»æ else if (errStart >= runStart && errStart < runEnd && errEnd > runEnd ) { errors.get(i).setStartTime(se.getEndTime()); Long sen = DateUtils.differentSecond(errors.get(i).getStartTime(), errors.get(i).getEndTime()); errors.get(i).setDuration(sen); errors.get(i).setStartLong(errors.get(i).getStartTime().getTime()); errors.get(i).setEndLong(errors.get(i).getEndTime().getTime()); } // æ¥è¦å¼å§ å¤§äº è¿è¡å¼å§ ï¼ æ¥è¦å¼å§ å°äº è¿è¡ç»æ ï¼æ¥è¦ç»æ å¤§äº è¿è¡å¼å§ï¼æ¥è¦ç»æ å°äº è¿è¡ç»æ else if (errStart >= runStart && errStart < runEnd && errEnd > runStart && errEnd <= runEnd ){ errors.remove(i); i--; } //å¦æè¶ åºèå´ else if (errStart <= runStart && errStart < runEnd && errEnd > runStart && errEnd >= runEnd ) { MdcEquipmentRunningSection errOne = new MdcEquipmentRunningSection(); errOne.setEndTime(errors.get(i).getEndTime()); errors.get(i).setStartTime(errors.get(i).getStartTime()); errors.get(i).setEndTime(se.getStartTime()); Long sen = DateUtils.differentSecond(errors.get(i).getStartTime(), errors.get(i).getEndTime()); // //TODO errOne.setStatus(22); errOne.setEquipmentId(errors.get(i).getEquipmentId()); errOne.setStartTime(se.getEndTime()); errors.get(i).setDuration(sen); errors.get(i).setStartLong(errors.get(i).getStartTime().getTime()); errors.get(i).setEndLong(errors.get(i).getEndTime().getTime()); Long one = DateUtils.differentSecond(errOne.getStartTime(), errOne.getEndTime()); errOne.setDuration(one); errOne.setStartLong(errOne.getStartTime().getTime()); errOne.setEndLong(errOne.getEndTime().getTime()); if (sen <= 0) { errors.remove(i); errors.add(i,errOne); } else { errors.add(i+1,errOne); i++; } } else { continue; } } } } } } //å¤çæ¥è¦æ°æ® List<MdcEquipmentRunningSection> sectionList = new ArrayList<>(); if (sRun != null && !sRun.isEmpty()) { for (MdcEquipmentRunningSection se : sRun) { sectionList.add(se); } } //æ¥è¦åé¤è¿è¡æ¥è¦ if (errors != null && !errors.isEmpty()) { sectionList.addAll(errors); } //å ³æºå¤ç为æ éæ¥è¦ if (faultRun != null && !faultRun.isEmpty()) { sectionList.addAll(faultRun); } return sectionList; } private List<MdcEquipmentRepair> findSubRepairs(List<MdcEquipmentRepair> repairs, MdcShiftDateVo dates) { if (repairs == null || repairs.isEmpty() || dates == null) { return null; } for (MdcEquipmentRepair repair : repairs) { //è°æ´ Date start = null; Date end = null; long dStart = dates.getStartDate().getTime(); long dEnd = dates.getEndDate().getTime(); long rStart = repair.getStartTime().getTime(); long rEnd = repair.getEndTime().getTime(); if (rStart <= dStart && rEnd >= dStart && rEnd <= dEnd) { start = dates.getStartDate(); end = repair.getEndTime(); } else if (rStart >= dStart && rEnd <= dEnd) { start = repair.getStartTime(); end = repair.getEndTime(); } else if (rStart >= dStart && rStart <= dEnd && rEnd >= dEnd) { start = repair.getStartTime(); end = dates.getEndDate(); } else if (rStart <= dStart && rEnd >= dEnd) { start = dates.getStartDate(); end = dates.getEndDate(); } repair.setStartTime(start); repair.setEndTime(end); //å¤çå¼å¸¸æ°æ® if (start == null || end == null) { repair.setSecondLong(0); } else { try { repair.setSecondLong(DateUtils.getSeconds(start, end)); } catch (Exception e) { repair.setSecondLong(0); } } } for (int i = 0; i < repairs.size(); i++) { if (repairs.get(i).getStartTime() == null || repairs.get(i).getEndTime() == null || repairs.get(i).getSecondLong() == 0) { repairs.remove(i); i--; } } return repairs; } /** * æ¶é´é®é¢å¤ç 妿å½å¤©ææ«å°¾æ¶é´å¤§äºå½åæ¶é´ è¿å0 * * @param temp lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcDateVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package org.jeecg.modules.mdc.vo; import lombok.Data; import java.util.Date; /** * @author: LiuS * @create: 2023-07-27 09:58 */ @Data public class MdcDateVo { private Date startTime; private Date endTime; private Long start; private Long end; }