lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcHomeController.java
@@ -10,6 +10,7 @@ import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.modules.mdc.constant.MdcConstant; import org.jeecg.modules.mdc.entity.MdcOverallEquipmentEfficiency; import org.jeecg.modules.mdc.service.IMdcEquipmentService; import org.jeecg.modules.mdc.service.IMdcHomeService; import org.jeecg.modules.mdc.vo.MdcCommonVo; @@ -64,6 +65,9 @@ } else if (userType.equals(MdcConstant.USER_TYPE_3)) { //ååº key = mdcProductionService.findFirstProduction(userId, mdcProduction.getId()); } else if (userType.equals(MdcConstant.USER_TYPE_2)) { //工段 æ¥è¯¢ç¨æ·æ¥æç工段æé key = mdcProductionService.findThreeProductionId(userId); } } List<MdcCommonVo> resultMap = mdcHomeService.getEquipmentStatusStatistics(userId, key); @@ -150,4 +154,42 @@ Map<String, Object> result = mdcHomeService.getEquipmentMonthStatistics(userId, key); return Result.OK(result); } @ApiOperation(value = "MDCé¦é¡µæ¥å£-工段级åä¸å¤©å©ç¨çæçº¿å¾", notes = "MDCé¦é¡µæ¥å£-工段级åä¸å¤©å©ç¨çæçº¿å¾") @GetMapping("/equipmentDayUtilizationStatistics") public Result<?> equipmentDayUtilizationStatistics(String productionCode) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); String key = ""; if (StringUtils.isNotBlank(productionCode)) { //ååº MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getProductionCode, productionCode).eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString())); key = mdcProduction.getId(); } else { //工段 æ¥è¯¢ç¨æ·æ¥æç工段æé key = mdcProductionService.findThreeProductionId(userId); } Map<String, Object> result = mdcHomeService.getEquipmentDayUtilizationStatistics(userId, key); return Result.OK(result); } @ApiOperation(value = "MDCé¦é¡µæ¥å£-䏿å设å¤OEEç»è®¡", notes = "MDCé¦é¡µæ¥å£-䏿å设å¤OEEç»è®¡") @GetMapping("/equipmentOEEMonthStatistics") public Result<?> equipmentOEEMonthStatistics(String productionCode) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); String key = ""; if (StringUtils.isNotBlank(productionCode)) { //ååº MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getProductionCode, productionCode).eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString())); key = mdcProduction.getId(); } else { //工段 æ¥è¯¢ç¨æ·æ¥æç工段æé key = mdcProductionService.findThreeProductionId(userId); } List<MdcOverallEquipmentEfficiency> result = mdcHomeService.getEquipmentOEEMonthStatistics(userId, key); return Result.OK(result); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcHomeMapper.java
@@ -2,6 +2,8 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo; import org.jeecg.modules.mdc.entity.MdcOverallEquipmentEfficiency; import org.jeecg.modules.system.entity.MdcProduction; import org.springframework.stereotype.Repository; @@ -52,4 +54,23 @@ * @return */ Map<String, Object> getUtilizationByMonth(@Param("equipmentIdList") List<String> equipmentIdList, @Param("date") String date); /** * æ¥è¯¢åä¸å¤©å©ç¨ç * * @param equipmentIdList * @param dateList * @return */ List<MdcEquipmentStatisticalInfo> getEquipmentDayUtilizationStatistics(@Param("equipmentIdList") List<String> equipmentIdList, @Param("dateList") List<String> dateList); /** * æ¥è¯¢OEE * * @param validDate * @param equipmentIdList * @return */ List<MdcOverallEquipmentEfficiency> getEquipmentOEEMonthStatistics(@Param("validDate") String validDate, @Param("equipmentIdList") List<String> equipmentIdList); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcHomeMapper.xml
@@ -61,4 +61,45 @@ </where> </select> <select id="getEquipmentDayUtilizationStatistics" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo"> SELECT the_date, SUM ( process_long ) processLong, SUM ( open_long ) openLong FROM mdc_equipment_statistical_info <where> <if test="equipmentIdList != null and equipmentIdList.size() > 0 "> AND equipment_id IN <foreach collection="equipmentIdList" index="index" item="id" open="(" separator="," close=")"> #{id} </foreach> </if> <if test="dateList != null and dateList.size() > 0 "> AND the_date IN <foreach collection="dateList" index="index" item="date" open="(" separator="," close=")"> #{date} </foreach> </if> </where> GROUP BY the_date </select> <select id="getEquipmentOEEMonthStatistics" resultType="org.jeecg.modules.mdc.entity.MdcOverallEquipmentEfficiency"> SELECT * FROM mdc_overall_equipment_efficiency <where> AND valid_date = #{validDate} <if test="equipmentIdList != null and equipmentIdList.size() > 0 "> AND equipment_id IN <foreach collection="equipmentIdList" index="index" item="id" open="(" separator="," close=")"> #{id} </foreach> </if> </where> </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcHomeService.java
@@ -1,5 +1,6 @@ package org.jeecg.modules.mdc.service; import org.jeecg.modules.mdc.entity.MdcOverallEquipmentEfficiency; import org.jeecg.modules.mdc.vo.MdcCommonVo; import java.util.List; @@ -30,4 +31,14 @@ * 设å¤OEEåå©ç¨çç»è®¡æ±ç¶å¾ */ Map<String, Object> getEquipmentMonthStatistics(String userId, String key); /** * 工段级åä¸å¤©å©ç¨çæçº¿å¾ */ Map<String, Object> getEquipmentDayUtilizationStatistics(String userId, String key); /** * æ¥è¯¢è®¾å¤ä¸æOEE */ List<MdcOverallEquipmentEfficiency> getEquipmentOEEMonthStatistics(String userId, String key); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/IMdcHomeServiceImpl.java
@@ -2,11 +2,14 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils; import org.jeecg.modules.mdc.entity.EquipmentLog; import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo; import org.jeecg.modules.mdc.entity.MdcOverallEquipmentEfficiency; import org.jeecg.modules.mdc.mapper.MdcHomeMapper; import org.jeecg.modules.mdc.service.IEquipmentLogService; import org.jeecg.modules.mdc.service.IMdcEquipmentService; import org.jeecg.modules.mdc.service.IMdcHomeService; import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.mdc.vo.EquipmentDayUtilizationVo; import org.jeecg.modules.mdc.vo.MdcCommonVo; import org.jeecg.modules.mdc.vo.MdcEquipmentStatusVo; import org.jeecg.modules.system.entity.MdcProduction; @@ -229,4 +232,77 @@ result.put("oeeList", oeeList); return result; } /** * 工段级åä¸å¤©å©ç¨çæçº¿å¾ */ @Override public Map<String, Object> getEquipmentDayUtilizationStatistics(String userId, String key) { Map<String, Object> result = new HashMap<>(); List<String> equipmentIdList = mdcEquipmentService.getEquipmentIdsProduction(userId, key); //è·ååä¸å¤©æ¥æéå Date start = DateUtils.toDate(LocalDate.now().plusDays(-7).toString(), DateUtils.STR_DATE); Date end = DateUtils.toDate(LocalDate.now().plusDays(-1).toString(), DateUtils.STR_DATE); List<String> dayBetween = DateUtils.getDatesStringList2(start, end); List<String> dateList = new ArrayList<>(); List<EquipmentDayUtilizationVo> dataList = new ArrayList<>(); for (String date : dayBetween) { EquipmentDayUtilizationVo equipmentDayUtilizationVo = new EquipmentDayUtilizationVo(); String item = date.substring(4); if (item.startsWith("0")) { item = item.substring(1); String sub = item.substring(1); if (sub.startsWith("0")) { item = item.substring(0, 1) + "æ" + sub.substring(1) + "æ¥"; } else { item = item.substring(0, 1) + "æ" + item.substring(1) + "æ¥"; } } else { String sub = item.substring(2); if (sub.startsWith("0")) { item = item.substring(0, 2) + "æ" + sub.substring(2) + "æ¥"; } else { item = item.substring(0, 2) + "æ" + item.substring(2) + "æ¥"; } } dateList.add(item); equipmentDayUtilizationVo.setDate(item); if (equipmentIdList != null && !equipmentIdList.isEmpty()) { //è·ååä¸å¤©å©ç¨çæ°æ® List<MdcEquipmentStatisticalInfo> mdcEquipmentStatisticalInfos = mdcHomeMapper.getEquipmentDayUtilizationStatistics(equipmentIdList, dayBetween); if (mdcEquipmentStatisticalInfos != null && !mdcEquipmentStatisticalInfos.isEmpty()) { for (MdcEquipmentStatisticalInfo mdcEquipmentStatisticalInfo : mdcEquipmentStatisticalInfos) { if (mdcEquipmentStatisticalInfo.getTheDate().equals(date)) { equipmentDayUtilizationVo.setUtilizationRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(new BigDecimal("864"), 4, RoundingMode.HALF_UP).divide(new BigDecimal(equipmentIdList.size()), 4, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP)); if (BigDecimal.ZERO.compareTo(mdcEquipmentStatisticalInfo.getOpenLong()) == -1) { equipmentDayUtilizationVo.setOpenRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(mdcEquipmentStatisticalInfo.getOpenLong(), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP)); equipmentDayUtilizationVo.setStartRate(mdcEquipmentStatisticalInfo.getOpenLong().divide(new BigDecimal("864"), 4, RoundingMode.HALF_UP).divide(new BigDecimal(equipmentIdList.size()), 4, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP)); } } } } else { dataList.add(equipmentDayUtilizationVo); } } else { dataList.add(equipmentDayUtilizationVo); } } result.put("dateList", dateList); result.put("dataList", dataList); return result; } /** * æ¥è¯¢è®¾å¤ä¸æOEE */ @Override public List<MdcOverallEquipmentEfficiency> getEquipmentOEEMonthStatistics(String userId, String key) { List<MdcOverallEquipmentEfficiency> result = new ArrayList<>(); List<String> equipmentIdList = mdcEquipmentService.getEquipmentIdsProduction(userId, key); if (equipmentIdList != null && !equipmentIdList.isEmpty()) { String validDate = DateUtils.format(DateUtils.toDate(LocalDate.now().plusMonths(-1).toString(), DateUtils.STR_DATE), DateUtils.STR_YEAR_MONTH); result = mdcHomeMapper.getEquipmentOEEMonthStatistics(validDate, equipmentIdList); } return result; } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentWorkLineServiceImpl.java
@@ -135,7 +135,7 @@ //å¾ ä¼å if ("FANUC".equals(mdcWorkChartVo.getDriveType()) || "SIEMENS840D".equals(mdcWorkChartVo.getDriveType())) { Map<String, Object> param = new HashMap<>(); param.put("columns", ",spindlespeed,spindleload,spindlebeilv,feedrate,feedbeilv"); param.put("columns", ",spindlespeed,spindleload,spindlebeilv,feedrate,feedbeilv,actualfeedrate,actualspindlespeed"); param.put("tableName", saveTableName); param.put("startTime", startTime); param.put("endTime", endTime); @@ -188,40 +188,16 @@ case "feedbeilv": ei.setFeedbeilv(map.get(collentParams.get(i - 1).getEnglishName()) == null ? null : map.get(collentParams.get(i - 1).getEnglishName()).toString()); break; case "actualfeedrate": ei.setActualfeedrate(map.get(collentParams.get(i - 1).getEnglishName()) == null ? null : map.get(collentParams.get(i - 1).getEnglishName()).toString()); break; case "actualspindlespeed": ei.setActualspindlespeed(map.get(collentParams.get(i - 1).getEnglishName()) == null ? null : map.get(collentParams.get(i - 1).getEnglishName()).toString()); break; } } catch (Exception e) { e.printStackTrace(); } // try { // switch (i) { // case 1: // ei.setDataLine1(map.get(collentParams.get(i - 1).getEnglishName()) == null ? null : map.get(collentParams.get(i - 1).getEnglishName()).toString()); // break; // case 2: // ei.setDataLine2(map.get(collentParams.get(i - 1).getEnglishName()) == null ? null : map.get(collentParams.get(i - 1).getEnglishName()).toString()); // break; // case 3: // ei.setDataLine3(map.get(collentParams.get(i - 1).getEnglishName()) == null ? null : map.get(collentParams.get(i - 1).getEnglishName()).toString()); // break; // case 4: // ei.setDataLine4(map.get(collentParams.get(i - 1).getEnglishName()) == null ? null : map.get(collentParams.get(i - 1).getEnglishName()).toString()); // break; // case 5: // ei.setDataLine5(map.get(collentParams.get(i - 1).getEnglishName()) == null ? null : map.get(collentParams.get(i - 1).getEnglishName()).toString()); // break; // case 6: // ei.setDataLine6(map.get(collentParams.get(i - 1).getEnglishName()) == null ? null : map.get(collentParams.get(i - 1).getEnglishName()).toString()); // break; // case 7: // ei.setDataLine7(map.get(collentParams.get(i - 1).getEnglishName()) == null ? null : map.get(collentParams.get(i - 1).getEnglishName()).toString()); // break; // case 8: // ei.setDataLine8(map.get(collentParams.get(i - 1).getEnglishName()) == null ? null : map.get(collentParams.get(i - 1).getEnglishName()).toString()); // break; // } // } catch (Exception e) { // e.printStackTrace(); // } } dto.add(ei); } @@ -253,6 +229,8 @@ ei.setSequencenumber(map.get("Sequencenumber") == null ? null : map.get("Sequencenumber").toString()); ei.setExecutingcode(map.get("executingcode") == null ? null : map.get("executingcode").toString()); ei.setProductName(map.get("ProductName") == null ? null : map.get("ProductName").toString()); ei.setActualfeedrate(map.get("actualfeedrate") == null ? null : map.get("actualfeedrate").toString()); ei.setActualspindlespeed(map.get("actualspindlespeed") == null ? null : map.get("actualspindlespeed").toString()); dto.add(ei); } if (dto.isEmpty()) { lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java
@@ -107,7 +107,6 @@ mdcOverallEquipmentEfficiency.setShift(shift); } // BigDecimal shiftTimeCount = mdcDeviceCalendarService.computeShiftTimeCount(equipmentId, validDate); if (StringUtils.isEmpty(mdcOverallEquipmentEfficiency.getShift())) { mdcOverallEquipmentEfficiency.setShiftTimeCount(BigDecimal.ZERO); } else { @@ -159,7 +158,7 @@ */ // mdcOverallEquipmentEfficiency.getShiftTimeCount() - plannedMaintenanceDuration - conferenceTrainingDuration - otherRestDuration // è´è·æ¶é´(åé) BigDecimal loadTime = mdcOverallEquipmentEfficiency.getShiftTimeCount().subtract(plannedMaintenanceDuration).subtract(conferenceTrainingDuration).subtract(otherRestDuration); BigDecimal loadTime = mdcOverallEquipmentEfficiency.getMonthActualWorkDayTimeCount().subtract(plannedMaintenanceDuration).subtract(conferenceTrainingDuration).subtract(otherRestDuration); if (loadTime.compareTo(BigDecimal.ZERO) < 0) { loadTime = BigDecimal.ZERO; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/EquipmentDayUtilizationVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ package org.jeecg.modules.mdc.vo; import lombok.Data; import java.math.BigDecimal; /** * @author Lius * @date 2024/3/29 11:25 */ @Data public class EquipmentDayUtilizationVo { /** * æ¥æ */ private String date; /** * å©ç¨ç */ private BigDecimal utilizationRate = BigDecimal.ZERO; /** * å¼å¨ç */ private BigDecimal startRate = BigDecimal.ZERO; /** * 弿ºç */ private BigDecimal openRate = BigDecimal.ZERO; } lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcProductionMapper.java
@@ -34,4 +34,11 @@ * @return */ String findFirstProduction(@Param("userId") String userId, @Param("productionId") String productionId); /** * æ ¹æ®ç¨æ·idæ¥è¯¢ç¨æ·å·¥æ®µæé * @param userId * @return */ String findThreeProductionId(@Param("userId") String userId); } lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcProductionMapper.xml
@@ -26,4 +26,9 @@ <select id="findFirstProduction" resultType="java.lang.String"> SELECT TOP 1 t2.id FROM mdc_user_production t1 LEFT JOIN mdc_production t2 ON t1.pro_id = t2.id WHERE t1.user_id = #{ userId } AND t2.parent_id = #{productionId} </select> <!--æ ¹æ®ç¨æ·idæ¥è¯¢ç¨æ·å·¥æ®µæé--> <select id="findThreeProductionId" resultType="java.lang.String"> SELECT TOP 1 t2.id id FROM mdc_user_production t1 LEFT JOIN mdc_production t2 ON t1.pro_id = t2.id WHERE t1.user_id = #{userId} AND t2.org_type = '3' </select> </mapper> lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcProductionService.java
@@ -72,10 +72,15 @@ /** * æ ¹æ®ç¨æ·idå车é´idè·åç¨æ·æ¥æç车é´id * * @param userId * @param productionId * @return */ String findFirstProduction(String userId, String productionId); /** * æ ¹æ®ç¨æ·idæ¥è¯¢ç¨æ·å·¥æ®µæé */ String findThreeProductionId(String userId); } lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java
@@ -236,6 +236,14 @@ } /** * æ ¹æ®ç¨æ·idæ¥è¯¢ç¨æ·å·¥æ®µæé */ @Override public String findThreeProductionId(String userId) { return this.baseMapper.findThreeProductionId(userId); } /** * delete æ¹æ³è°ç¨ é彿¥æ¾åéid */ private void checkChildrenExists(String id, List<String> idList) {