lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/EquipmentMachingDto.java
@@ -77,6 +77,7 @@ private String ALRMstate; //工件名称 private String ProductName; private String ProductCount; //机床X轴坐标 private String Xmachine; //机床Y轴坐标 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOvertimeDurationJob.java
@@ -128,7 +128,7 @@ } 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()) { // 时间修正 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentWorklineMapper.java
@@ -39,11 +39,14 @@ Integer isTableExist(@Param("tableName") String tableName); @InterceptorIgnore(tenantLine = "1") List<Map<String, Object>> findRunningData(@Param("tableName") String saveTableName, @Param("startTime") Date startTime, @Param("endTime") Date endTime); List<String> findRunningData(@Param("tableName") String saveTableName, @Param("startTime") Date startTime, @Param("endTime") Date endTime); @InterceptorIgnore(tenantLine = "1") List<EquipmentMachingDto> getEquipProgramNum(@Param("tableName") String saveTableName, @Param("startTime") Date startTime, @Param("endTime") Date endTime); @InterceptorIgnore(tenantLine = "1") List<MdcEquipmentDto> findProductCountStartTime(@Param("tableName") String saveTableName, @Param("productCount") String productCount); MdcEquipmentDto findProductCountStartTime(@Param("tableName") String saveTableName, @Param("productCount") String productCount, @Param("startTime") Date startTime, @Param("endTime") Date endTime); @InterceptorIgnore(tenantLine = "1") MdcEquipmentDto findProductCountEndTime(@Param("tableName") String saveTableName, @Param("productCount") String productCount, @Param("startTime") Date startTime, @Param("endTime") Date endTime); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDeviceCalendarMapper.java
@@ -31,4 +31,6 @@ MdcDeviceCalendar getFirstData(@Param("equipmentId") String equipmentId); List<MdcDeviceCalendarVo> listByEquipmentAndDates(@Param("equipmentId") String equipmentId, @Param("stringDates") List<String> stringDates); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentWorklineMapper.xml
@@ -6,8 +6,8 @@ select top 1 [${tableName}].* from [${tableName}] order by CollectTime desc </select> <select id="findRunningData" resultType="java.util.Map"> select [${tableName}].* from [${tableName}] where ProductCount <> '' AND CollectTime between #{ startTime } AND #{ endTime } order by CollectTime asc <select id="findRunningData" resultType="java.lang.String"> SELECT ProductCount FROM [${tableName}] WHERE CollectTime BETWEEN #{ startTime } AND #{ endTime } GROUP BY ProductCount ORDER BY ProductCount </select> <select id="getEquipProgramNum" resultType="org.jeecg.modules.mdc.dto.EquipmentMachingDto"> @@ -15,6 +15,10 @@ </select> <select id="findProductCountStartTime" resultType="org.jeecg.modules.mdc.dto.MdcEquipmentDto"> SELECT TOP 1 [${tableName}].* FROM [${tableName}] WHERE ProductCount = #{ productCount } ORDER BY CollectTime ASC SELECT TOP 1 [${tableName}].* FROM [${tableName}] WHERE ProductCount = #{ productCount } AND CollectTime BETWEEN #{ startTime } AND #{ endTime } ORDER BY CollectTime ASC </select> <select id="findProductCountEndTime" resultType="org.jeecg.modules.mdc.dto.MdcEquipmentDto"> SELECT TOP 1 [${tableName}].* FROM [${tableName}] WHERE ProductCount = #{ productCount } AND CollectTime BETWEEN #{ startTime } AND #{ endTime } ORDER BY CollectTime DESC </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml
@@ -121,4 +121,35 @@ SELECT TOP 1 * FROM mdc_device_calendar WHERE equipment_id = #{ equipmentId } ORDER BY effective_date ASC </select> <select id="listByEquipmentAndDates" resultType="org.jeecg.modules.mdc.vo.MdcDeviceCalendarVo"> SELECT t1.*, t2.shift_name, t3.shift_sub_name, t3.start_date, t3.end_date, t3.sleep_start_date, t3.sleep_end_date, t3.is_day_span, t4.equipment_name FROM mdc_device_calendar t1 LEFT JOIN mdc_shift t2 ON t1.shift_id = t2.id LEFT JOIN mdc_shift_sub t3 ON t1.shift_sub_id = t3.id LEFT JOIN mdc_equipment t4 ON t1.equipment_id = t4.equipment_id <where> <if test="equipmentId != null and equipmentId != ''"> AND t4.equipment_id = #{ equipmentId } </if> <if test="stringDates != null and stringDates.size() > 0 "> AND t1.effective_date IN <foreach collection="stringDates" item="stringDate" index="index" open="(" close=")" separator=","> #{ stringDate } </foreach> </if> </where> ORDER BY t1.effective_date ASC </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentWorkLineService.java
@@ -1,11 +1,10 @@ package org.jeecg.modules.mdc.service; import org.jeecg.modules.mdc.dto.MdcEquipmentDto; import org.jeecg.modules.mdc.dto.EquipmentMachingDto; import org.jeecg.modules.mdc.dto.MdcEquipmentDto; import java.util.Date; import java.util.List; import java.util.Map; /** * @author: LiuS @@ -30,7 +29,7 @@ /** * 查询一段时间内的数据 */ List<Map<String, Object>> findRunningData(String tableName, Date startTime, Date endTime); List<String> findRunningData(String tableName, Date startTime, Date endTime); /** * 查找法兰克设备运行的程序号 @@ -48,5 +47,13 @@ * @param productCount * @return */ MdcEquipmentDto findProductCountStartTime(String saveTableName, String productCount); MdcEquipmentDto findProductCountStartTime(String saveTableName, String productCount, Date startTime, Date endTime); /** * 查询法拉克设备加工工件结束时间 * @param saveTableName * @param productCount * @return */ MdcEquipmentDto findProductCountEndTime(String saveTableName, String productCount, Date startTime, Date endTime); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentWorkLineServiceImpl.java
@@ -46,7 +46,7 @@ } @Override public List<Map<String, Object>> findRunningData(String tableName, Date startTime, Date endTime) { public List<String> findRunningData(String tableName, Date startTime, Date endTime) { return equipmentWorkLineMapper.findRunningData(tableName, startTime, endTime); } @@ -56,10 +56,18 @@ } @Override public MdcEquipmentDto findProductCountStartTime(String saveTableName, String productCount) { public MdcEquipmentDto findProductCountStartTime(String saveTableName, String productCount, Date startTime, Date endTime) { try { List<MdcEquipmentDto> macingDataList = equipmentWorkLineMapper.findProductCountStartTime(saveTableName, productCount); return !macingDataList.isEmpty() ? macingDataList.get(0) : null; return equipmentWorkLineMapper.findProductCountStartTime(saveTableName, productCount, startTime, endTime); } catch (Exception e) { return null; } } @Override public MdcEquipmentDto findProductCountEndTime(String saveTableName, String productCount, Date startTime, Date endTime) { try { return equipmentWorkLineMapper.findProductCountEndTime(saveTableName, productCount, startTime, endTime); } catch (Exception e) { return null; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java
@@ -114,19 +114,16 @@ */ @Override public List<MdcDeviceCalendarVo> listByEquipmentAndDate(String equipmentId, List<String> stringDates) { List<MdcDeviceCalendarVo> result = new ArrayList<>(); try { for (String stringDate : stringDates) { List<MdcDeviceCalendarVo> mdcDeviceCalendarVos = this.baseMapper.listByEquipmentAndDate(equipmentId, stringDate); if (mdcDeviceCalendarVos != null && !mdcDeviceCalendarVos.isEmpty()) { result.addAll(mdcDeviceCalendarVos); } List<MdcDeviceCalendarVo> mdcDeviceCalendarVos = this.baseMapper.listByEquipmentAndDates(equipmentId, stringDates); if (mdcDeviceCalendarVos != null && !mdcDeviceCalendarVos.isEmpty()) { return mdcDeviceCalendarVos; } else { return null; } } catch (Exception e) { e.printStackTrace(); return null; } return result; } /** lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java
@@ -704,7 +704,7 @@ */ 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<>(); lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java
@@ -1,10 +1,10 @@ package org.jeecg.modules.mdc.service.impl; 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.dto.MdcEquipmentDto; import org.jeecg.modules.mdc.dto.MdcProcessCountDto; import org.jeecg.modules.mdc.entity.MdcDeviceCalendar; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcEquipmentRunningSection; import org.jeecg.modules.mdc.entity.MdcProcessCount; @@ -21,6 +21,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.time.LocalDate; import java.util.*; /** @@ -53,14 +54,12 @@ public void runningProcessCount() { // 获取所有设备 //List<MdcEquipment> mdcEquipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, "2140198")); List<MdcEquipment> mdcEquipmentList = mdcEquipmentService.list(); List<MdcEquipment> mdcEquipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getDriveType, "FANUC")); List<MdcProcessCount> result = new ArrayList<>(); for (MdcEquipment mdcEquipment : mdcEquipmentList) { if ("FANUC".equals(mdcEquipment.getDriveType())) { List<MdcProcessCount> mdcProcessCountList = processCount(mdcEquipment); if (mdcProcessCountList != null && !mdcProcessCountList.isEmpty()) { result.addAll(mdcProcessCountList); } List<MdcProcessCount> mdcProcessCountList = processCount(mdcEquipment); if (mdcProcessCountList != null && !mdcProcessCountList.isEmpty()) { result.addAll(mdcProcessCountList); } } if (!result.isEmpty()) { @@ -123,7 +122,6 @@ return result == null ? BigDecimal.ZERO : result; } // @Transactional(readOnly = true) List<MdcProcessCount> processCount(MdcEquipment mdcEquipment) { Date initDate = null; //取最后的统计数据 @@ -132,11 +130,9 @@ 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; @@ -153,7 +149,7 @@ // 获取设备班次信息 Map<String, List<MdcDeviceCalendarVo>> listMap = this.mdcDeviceCalendarMap(mdcEquipment.getEquipmentId(), stringDates); if (listMap == null || listMap.isEmpty()) { listMap = new HashMap<>(); return null; } List<MdcProcessCount> resultList = new ArrayList<>(); for (String stringDate : stringDates) { @@ -162,11 +158,17 @@ // 处理班制班次时间 MdcDateVo mdcDateVo = this.handleDeviceCalendar(mdcDeviceCalendarVos); // 查找设备单表运行数据 List<Map<String, Object>> mdcEquipmentDtoList = equipmentWorkLineService.findRunningData(mdcEquipment.getSaveTableName(), mdcDateVo.getStartTime(), mdcDateVo.getEndTime()); if (mdcEquipmentDtoList == null || mdcEquipmentDtoList.isEmpty()) { List<String> productCountList = new ArrayList<>(); try { productCountList = equipmentWorkLineService.findRunningData(mdcEquipment.getSaveTableName(), mdcDateVo.getStartTime(), mdcDateVo.getEndTime()); } catch (Exception e) { continue; } Map<String, Object> firstMap = new HashMap<>(mdcEquipmentDtoList.get(0)); 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(); @@ -180,6 +182,9 @@ //根据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(); @@ -190,36 +195,53 @@ } mdcEquipmentDtoMap.put("ProductCount", mdcEquipmentDtoList.get(i).get("ProductCount").toString()); mdcEquipmentDtoMap.put("CollectTime", mdcEquipmentDtoList.get(i).get("CollectTime").toString()); 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); } }*/ 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); } 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 { if (equipmentRunningSectionList.get(0).getEndTime().after(end)) { equipmentRunningSectionList.get(0).setEndTime(end); } mdcProcessCount.setSequenceNumber(mdcEquipmentDtoFirst.getSequencenumber()); } //计算加工时长 long duration = this.handleProcessDuration(equipmentRunningSectionList); if (duration != 0 && duration < 100000) { MdcProcessCount mdcProcessCount = new MdcProcessCount(); mdcProcessCount.setEquipmentId(mdcEquipment.getEquipmentId()); mdcProcessCount.setEquipmentName(mdcEquipment.getEquipmentName()); mdcProcessCount.setSequenceNumber(sequenceNumber); mdcProcessCount.setDuration(duration); mdcProcessCount.setTheDate(stringDate); resultList.add(mdcProcessCount); } mdcProcessCount.setDuration(duration); mdcProcessCount.setTheDate(stringDate); resultList.add(mdcProcessCount); } } } } } return resultList; @@ -272,7 +294,7 @@ 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<>();