From 2d727903343feb01fedc988370091395c368faf2 Mon Sep 17 00:00:00 2001 From: Lius <Lius2225@163.com> Date: 星期二, 17 十二月 2024 16:06:42 +0800 Subject: [PATCH] OEE功能及设备管理调整 --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPlanCloseMapper.java | 10 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentWorkLineServiceImpl.java | 6 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml | 5 lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java | 7 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPartProcessInfoService.java | 26 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java | 6 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java | 97 +++++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java | 35 +-- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java | 19 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java | 4 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentWorklineMapper.java | 8 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPartProcessInfoMapper.xml | 15 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentWorkLineService.java | 5 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPlanCloseMapper.xml | 12 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPartProcessInfoServiceImpl.java | 53 +++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java | 9 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPartProcessInfoMapper.java | 27 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java | 9 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java | 8 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPlanCloseService.java | 10 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java | 184 +++++++++--------- 21 files changed, 408 insertions(+), 147 deletions(-) diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java b/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java index 5ffcb6c..d030448 100644 --- a/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java +++ b/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java @@ -598,4 +598,11 @@ Integer AUTO_FLAG_Y = 1; Integer AUTO_FLAG_N = 2; + /** + * 鍋滄満绫诲瀷 1(璁″垝鍋滄満) 2 (闈炶鍒掑仠鏈�) + */ + String CLOSE_TYPE_1 = "1"; + + String CLOSE_TYPE_2 = "2"; + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java index 816cc92..5f3a954 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java @@ -13,7 +13,6 @@ import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.vo.LoginUser; -import org.jeecg.modules.mdc.dto.MdcEquipmentDto; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcEquipmentMonitor; import org.jeecg.modules.mdc.model.MdcEquipmentTree; @@ -74,7 +73,6 @@ @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { - //QueryWrapper<MdcEquipment> queryWrapper = QueryGenerator.initQueryWrapper(mdcEquipment, req.getParameterMap()); Page<MdcEquipment> page = new Page<MdcEquipment>(pageNo, pageSize); IPage<MdcEquipment> pageList = mdcEquipmentService.pageList(page, mdcEquipment, req); @@ -428,7 +426,6 @@ @RequestMapping(value = "/exportXls") public ModelAndView exportXls(HttpServletRequest request, MdcEquipmentVo mdcEquipment) { // Step.1 缁勮鏌ヨ鏉′欢 - //QueryWrapper<MdcEquipment> queryWrapper = QueryGenerator.initQueryWrapper(mdcEquipment, request.getParameterMap()); //Step.2 AutoPoi 瀵煎嚭Excel ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); List<MdcEquipment> pageList = mdcEquipmentService.exportXlsList(mdcEquipment); @@ -445,7 +442,6 @@ mv.addObject(NormalExcelConstants.CLASS, MdcEquipment.class); LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); ExportParams exportParams = new ExportParams("璁惧鍒楄〃鏁版嵁", "瀵煎嚭浜�:" + user.getRealname(), "瀵煎嚭淇℃伅"); -// exportParams.setImageBasePath(upLoadPath); mv.addObject(NormalExcelConstants.PARAMS, exportParams); mv.addObject(NormalExcelConstants.DATA_LIST, pageList); return mv; diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentWorklineMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentWorklineMapper.java index 1c766c3..40de87a 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentWorklineMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentWorklineMapper.java @@ -24,19 +24,15 @@ List<MdcEquipmentDto> getMacingDataList(@Param("tableName") String tableName); @InterceptorIgnore(tenantLine = "1") - @Select("select Sequencenumber,CollectTime from [${tableName}] " + + @Select("select Sequencenumber,CollectTime from ${tableName} " + " where CollectTime > #{startTime} and CollectTime <= #{endTime} and Sequencenumber is not null" + " order by CollectTime desc ") List<Map<String, Object>> getEquipmentSequenceNumber(@Param("tableName") String tableName, @Param("startTime") Date startTime, @Param("endTime") Date endTime); @InterceptorIgnore(tenantLine = "1") - @Select("select CollectTime ${columns} from [${tableName}] where CollectTime > #{startTime} and CollectTime <= #{endTime} order by CollectTime asc") + @Select("select CollectTime ${columns} from ${tableName} where CollectTime > #{startTime} and CollectTime <= #{endTime} order by CollectTime asc") List<Map<String, Object>> getWorkLineList(Map<String, Object> param); - - @InterceptorIgnore(tenantLine = "1") - @Select("SELECT COUNT(*) FROM SysObjects WHERE XType='U' AND name = '${tableName}'") - Integer isTableExist(@Param("tableName") String tableName); @InterceptorIgnore(tenantLine = "1") List<String> findRunningData(@Param("tableName") String saveTableName, @Param("startTime") Date startTime, @Param("endTime") Date endTime); diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java index c542e18..3815783 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java @@ -16,4 +16,13 @@ * 鑾峰彇璁惧鏈�鏂版棩鏈熺殑杩愯鏁版嵁 */ MdcEquipmentStatisticalInfo getMaxStaticsData(@Param("equipmentId") String equipmentId); + + /** + * 鏌ヨ璁惧杩愯鏃堕棿 + * + * @param equipmentId + * @param validDate + * @return + */ + Integer selectProcessLong(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPartProcessInfoMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPartProcessInfoMapper.java index 19bec11..148619f 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPartProcessInfoMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPartProcessInfoMapper.java @@ -22,4 +22,31 @@ * @return */ IPage<MdcPartProcessInfo> pageList(Page<MdcPartProcessInfo> page, @Param("mdcPartProcessInfo") MdcPartProcessInfoVo mdcPartProcessInfo); + + /** + * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ椂闂� + * + * @param equipmentId + * @param validDate + * @return + */ + Integer selectTotalProcessLong(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); + + /** + * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ暟閲� + * + * @param equipmentId + * @param validDate + * @return + */ + Integer selectTotalProcessCount(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); + + /** + * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ュ悎鏍兼暟閲� + * + * @param equipmentId + * @param validDate + * @return + */ + Integer selectTotalPassCount(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPlanCloseMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPlanCloseMapper.java index 9bcf52e..1074cc2 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPlanCloseMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcPlanCloseMapper.java @@ -24,4 +24,14 @@ * @return */ IPage<MdcPlanClose> pageList(Page<MdcPlanClose> page, @Param("mdcPlanClose") MdcPlanCloseVo mdcPlanClose); + + /** + * 璁$畻 璁″垝/闈炶鍒掑仠鏈哄綋澶╂�绘椂闀� + * + * @param equipmentId + * @param validDate + * @param closeType + * @return + */ + Integer findPlanTimeDuration(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate, @Param("closeType") String closeType); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml index 77c17f3..e5d1c6b 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml @@ -7,4 +7,9 @@ <select id="getMaxStaticsData" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo"> SELECT TOP 1 * FROM mdc_equipment_statistical_info WHERE equipment_id = #{equipmentId} ORDER BY the_date DESC </select> + + <!--鏌ヨ璁惧杩愯鏃堕棿--> + <select id="selectProcessLong" resultType="java.lang.Integer"> + SELECT TOP 1 process_long FROM mdc_equipment_statistical_info WHERE equipment_id = #{equipmentId} AND the_date = #{validDate} + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPartProcessInfoMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPartProcessInfoMapper.xml index b2ceba1..2f3b308 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPartProcessInfoMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPartProcessInfoMapper.xml @@ -33,4 +33,19 @@ ORDER BY the_date DESC, equipment_id ASC </select> + <!--鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ椂闂�--> + <select id="selectTotalProcessLong" resultType="java.lang.Integer"> + SELECT sum(total_process_long) FROM mdc_part_process_info WHERE equipment_id = #{equipmentId} AND the_date = #{validDate} + </select> + + <!--鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ暟閲�--> + <select id="selectTotalProcessCount" resultType="java.lang.Integer"> + SELECT sum(process_count) FROM mdc_part_process_info WHERE equipment_id = #{equipmentId} AND the_date = #{validDate} + </select> + + <!--鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ュ悎鏍兼暟閲�--> + <select id="selectTotalPassCount" resultType="java.lang.Integer"> + SELECT sum(pass_count) FROM mdc_part_process_info WHERE equipment_id = #{equipmentId} AND the_date = #{validDate} + </select> + </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPlanCloseMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPlanCloseMapper.xml index ad62fad..af2f3af 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPlanCloseMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcPlanCloseMapper.xml @@ -33,4 +33,16 @@ </where> ORDER BY the_date DESC, equipment_id ASC </select> + + <!--璁$畻 璁″垝/闈炶鍒掑仠鏈哄綋澶╂�绘椂闀�--> + <select id="findPlanTimeDuration" resultType="java.lang.Integer"> + SELECT + sum(plan_close_time_long) + FROM + mdc_plan_close + WHERE + equipment_id = #{equipmentId} + AND the_date = #{validDate} + AND close_type = #{closeType} + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentWorkLineService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentWorkLineService.java index 076e641..d087a46 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentWorkLineService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentWorkLineService.java @@ -23,11 +23,6 @@ List<EquipmentMachingDto> getEquipmentSequencenumber(String tableName, Date startTime, Date endTime); /** - * 鍒ゆ柇琛ㄦ槸鍚﹀瓨鍦� - */ - Boolean isTableExist(String tableName); - - /** * 鏌ヨ涓�娈垫椂闂村唴鐨勬暟鎹� */ List<String> findRunningData(String tableName, Date startTime, Date endTime); diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java index 51473ea..51d56e6 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java @@ -17,4 +17,13 @@ * @param dateTime */ void runningAllEquipmentStatisticalProcess(String dateTime); + + /** + * 鏌ヨ璁惧杩愯鏃堕棿 + * + * @param equipmentId + * @param validDate + * @return + */ + Integer selectProcessLong(String equipmentId, String validDate); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPartProcessInfoService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPartProcessInfoService.java index f88c2a3..ca744d1 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPartProcessInfoService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPartProcessInfoService.java @@ -44,4 +44,30 @@ */ ModelAndView exportXls(String userId, MdcPartProcessInfoVo mdcPartProcessInfo); + /** + * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ椂闂� + * + * @param equipmentId + * @param validDate + * @return + */ + Integer selectTotalProcessLong(String equipmentId, String validDate); + + /** + * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ暟閲� + * + * @param equipmentId + * @param validDate + * @return + */ + Integer selectTotalProcessCount(String equipmentId, String validDate); + + /** + * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ュ悎鏍兼暟閲� + * + * @param equipmentId + * @param validDate + * @return + */ + Integer selectTotalPassCount(String equipmentId, String validDate); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPlanCloseService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPlanCloseService.java index 0241c30..50d0fe1 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPlanCloseService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcPlanCloseService.java @@ -18,7 +18,15 @@ */ public interface IMdcPlanCloseService extends IService<MdcPlanClose> { - BigDecimal findPlanTimeDuration(BigDecimal actualWorkDayCount, String planCloseType); + /** + * 璁$畻 璁″垝/闈炶鍒掑仠鏈哄綋澶╂�绘椂闀� + * + * @param equipmentId + * @param validDate + * @param closeType + * @return + */ + Integer findPlanTimeDuration(String equipmentId, String validDate, String closeType); /** * 鍒嗛〉鏌ヨ diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentWorkLineServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentWorkLineServiceImpl.java index c0b336d..c75cd7e 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentWorkLineServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentWorkLineServiceImpl.java @@ -44,12 +44,6 @@ } @Override - public Boolean isTableExist(String tableName) { - Integer count = equipmentWorkLineMapper.isTableExist(tableName); - return count != 0; - } - - @Override public List<String> findRunningData(String tableName, Date startTime, Date endTime) { return equipmentWorkLineMapper.findRunningData(tableName, startTime, endTime); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java index 28ebc28..749ce8d 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java @@ -67,17 +67,17 @@ if (!running.isEmpty()) { MdcEquipmentRunningSectionDto dto; String tableName = ""; - Boolean isTableExist = false; + String backupTableName = ""; if (equip != null) { if (StringUtils.isNotBlank(equip.getDrivetype())) { tableName = equip.getDrivetype() + "_" + equip.getEquipmentid(); - isTableExist = equipmentWorkLineService.isTableExist(tableName); + backupTableName = equipmentService.checkTableExists(tableName); } } for (MdcEquipmentRunningSection entity : running) { dto = new MdcEquipmentRunningSectionDto(); BeanUtils.copyProperties(entity, dto); - if (entity.getStatus() == 3 && StringUtils.isBlank(entity.getSequenceNumber()) && isTableExist && !"ZUOLAN".equals(equip.getDrivetype())) { + if (entity.getStatus() == 3 && StringUtils.isBlank(entity.getSequenceNumber()) && StringUtils.isNotBlank(backupTableName) && !"ZUOLAN".equals(equip.getDrivetype())) { List<EquipmentMachingDto> esList = equipmentWorkLineService.getEquipmentSequencenumber(tableName, entity.getStartTime(), entity.getEndTime()); if (esList != null && esList.size() > 1) { dto.setSequenceNumber(esList.get(0).getSequencenumber()); diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java index ad9d45f..6864afd 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java @@ -438,16 +438,16 @@ } map.put("value", value); runData.add(map); - if ("spindlebeilv".equals(englishName)) { + if ("spindlebeilv".equals(englishName) && !"".equals(value)) { result.put("spindlebeilv", value); } - if ("feedbeilv".equals(englishName)) { + if ("feedbeilv".equals(englishName) && !"".equals(value)) { result.put("feedbeilv", value); } - if ("spindleload".equals(englishName)) { + if ("spindleload".equals(englishName) && !"".equals(value)) { result.put("spindleload", value); } - if ("rapidfeed".equals(englishName)) { + if ("rapidfeed".equals(englishName) && !"".equals(value)) { result.put("rapidfeed", value); } } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java index 5f89d3e..2a09c05 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import io.swagger.models.auth.In; import org.apache.commons.lang.StringUtils; import org.jeecg.common.system.vo.DictModel; import org.jeecg.modules.mdc.entity.*; @@ -14,6 +15,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; /** @@ -75,6 +77,23 @@ } } + /** + * 鏌ヨ璁惧杩愯鏃堕棿 + * + * @param equipmentId + * @param validDate + * @return + */ + @Override + public Integer selectProcessLong(String equipmentId, String validDate) { + Integer processLong = this.baseMapper.selectProcessLong(equipmentId, validDate); + if (processLong == null) { + return 0; + } else { + return Integer.parseInt(new BigDecimal(processLong).divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP).toString()); + } + } + private List<EquipmentStatisticalInfo> dataHandle(List<MdcEquipmentStatisticalInfo> list) { List<EquipmentStatisticalInfo> result = new ArrayList<>(); list.forEach(item -> { diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java index ee6dd03..18d0f4a 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java @@ -6,20 +6,26 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang.StringUtils; import org.apache.shiro.SecurityUtils; +import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcOeeInfo; import org.jeecg.modules.mdc.mapper.MdcOeeInfoMapper; -import org.jeecg.modules.mdc.service.IMdcEquipmentService; -import org.jeecg.modules.mdc.service.IMdcOeeInfoService; +import org.jeecg.modules.mdc.service.*; +import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.mdc.vo.MdcOeeInfoVo; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -34,6 +40,15 @@ @Resource private IMdcEquipmentService mdcEquipmentService; + + @Resource + private IMdcPlanCloseService mdcPlanCloseService; + + @Resource + private IMdcPartProcessInfoService mdcPartProcessInfoService; + + @Resource + private IMdcEquipmentStatisticalInfoService mdcEquipmentStatisticalInfoService; /** * 鍒嗛〉鍒楄〃 @@ -140,10 +155,84 @@ /** * 璁$畻oee - * @param dateTime + * @param dateTime 鍙傛暟 */ @Override + @Transactional(rollbackFor = Exception.class) public void runningComputeOee(String dateTime) { - + List<MdcOeeInfo> result = new ArrayList<>(); + // 鑾峰彇鏈夋晥鏃ユ湡 鏍煎紡 yyyy-MM-dd + String validDate = LocalDate.now().minusDays(1).toString(); + if (StringUtils.isNotBlank(dateTime)) { + validDate = DateUtils.format(DateUtils.toDate(dateTime, DateUtils.STRDATE), DateUtils.STR_DATE); + } + try { + this.remove(new LambdaQueryWrapper<MdcOeeInfo>().eq(MdcOeeInfo::getTheDate, validDate)); + } catch (Exception e) { + log.error("鍙傛暟鏍煎紡涓嶅", e); + } + //鑾峰彇璁惧鍒楄〃 + List<MdcEquipment> equipmentList = mdcEquipmentService.list(); + for (MdcEquipment mdcEquipment : equipmentList) { + String equipmentId = mdcEquipment.getEquipmentId(); + MdcOeeInfo mdcOeeInfo = new MdcOeeInfo(); + // 璁惧缂栧彿 + mdcOeeInfo.setEquipmentId(equipmentId); + // 璁$畻鏃ユ湡 + mdcOeeInfo.setTheDate(validDate); + // 宸ヤ綔鏃ュ巻鏃堕棿(min) --- 鎸夋瘡澶�24灏忔椂绠� + mdcOeeInfo.setCalendarLong(1440); + // 璁″垝鍋滄満鏃堕棿(min) --- 鎸夌淮鎶ゆ暟鎹粺璁″綋澶╂�绘椂闀� + Integer planCloseLong = mdcPlanCloseService.findPlanTimeDuration(equipmentId, validDate, CommonConstant.CLOSE_TYPE_1); + mdcOeeInfo.setPlanCloseLong(planCloseLong); + // 璐熻嵎鏃堕棿(min) --- 鏃ュ巻宸ヤ綔鏃堕棿-璁″垝鍋滄満鏃堕棿 + Integer loadLong = mdcOeeInfo.getCalendarLong() - planCloseLong; + mdcOeeInfo.setLoadLong(loadLong); + // 闈炶鍒掑仠鏈烘椂闂�(min) --- 鎸夌淮鎶ゆ暟鎹粺璁″綋澶╂�绘椂闀� + Integer noPlanCloseLong = mdcPlanCloseService.findPlanTimeDuration(equipmentId, validDate, CommonConstant.CLOSE_TYPE_2); + mdcOeeInfo.setNoplanCloseLong(noPlanCloseLong); + // 寮�鍔ㄦ椂闂�(min) --- 璐熻嵎鏃堕棿-闈炶鍒掑仠鏈烘椂闂� + int actuateLong = loadLong - noPlanCloseLong; + mdcOeeInfo.setActuateLong(actuateLong); + // 鏃堕棿寮�鍔ㄧ巼 --- 寮�鍔ㄦ椂闂�/璐熻嵎鏃堕棿 + BigDecimal timeActuationRate = new BigDecimal(actuateLong).divide(new BigDecimal(loadLong), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP); + mdcOeeInfo.setTimeActuationRate(timeActuationRate); + // 鏈夋晥杩愯鏃堕棿 --- 鎸夐渶姹傜淮鎶ら浂浠跺姞宸ユ�绘椂闀縷|绯荤粺涓昏酱璐熻浇鏃堕棿 + Integer effectiveRunLong = 0; + Integer totalProcessLong = mdcPartProcessInfoService.selectTotalProcessLong(equipmentId, validDate); + if (totalProcessLong == 0) { + //鏌ヨ璁惧杩愯鏃堕棿 + effectiveRunLong = mdcEquipmentStatisticalInfoService.selectProcessLong(equipmentId, validDate.replace("-", "")); + } else { + effectiveRunLong = totalProcessLong; + } + mdcOeeInfo.setEffectiveRunLong(effectiveRunLong); + // 鎬ц兘寮�鍔ㄧ巼 --- 鏈夋晥杩愯鏃堕棿/寮�鍔ㄦ椂闂� + BigDecimal performanceRate = BigDecimal.ZERO; + if (effectiveRunLong != 0 && actuateLong != 0) { + performanceRate = new BigDecimal(effectiveRunLong).divide(new BigDecimal(actuateLong), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP); + } + mdcOeeInfo.setPerformanceRate(performanceRate); + // 鍔犲伐闆朵欢鏁伴噺 --- 鎸夌淮鎶ゆ暟鎹粺璁″綋澶� + Integer processCount = mdcPartProcessInfoService.selectTotalProcessCount(equipmentId, validDate); + mdcOeeInfo.setProcessCount(processCount); + // 鍚堟牸闆朵欢鏁伴噺 --- 鎸夌淮鎶ゆ暟鎹粺璁″綋澶� + Integer passCount = mdcPartProcessInfoService.selectTotalPassCount(equipmentId, validDate); + mdcOeeInfo.setPassCount(passCount); + // 鍚堟牸鐜� --- 鍚堟牸鏁�/鍔犲伐鏁� + BigDecimal passRate = BigDecimal.ZERO; + if (processCount != 0 && passCount != 0) { + passRate = new BigDecimal(passCount).divide(new BigDecimal(processCount), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP); + } + mdcOeeInfo.setPassRate(passRate); + // OEE --- 鏃堕棿寮�鍔ㄧ巼 * 鎬ц兘寮�鍔ㄧ巼 * 涓�娆″悎鏍肩巼 + BigDecimal oee = BigDecimal.ZERO; + if (!timeActuationRate.equals(BigDecimal.ZERO) && !performanceRate.equals(BigDecimal.ZERO) && !passRate.equals(BigDecimal.ZERO)) { + oee = timeActuationRate.multiply(performanceRate).multiply(passRate).divide(new BigDecimal("10000"), 4, RoundingMode.HALF_UP); + } + mdcOeeInfo.setOee(oee); + result.add(mdcOeeInfo); + } + super.saveBatch(result); } } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java index 9c4526c..1f922cc 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOverallEquipmentEfficiencyServiceImpl.java @@ -127,33 +127,33 @@ // 鏈堝害瀹為檯鐝骇鎬绘椂闂�(鍒嗛挓) mdcOverallEquipmentEfficiency.setMonthActualWorkDayTimeCount(mdcOverallEquipmentEfficiency.getShiftTimeCount().multiply(actualWorkDayCount).multiply(new BigDecimal("60")).add(overtime)); - // 鏁呴殰鍋滄満鏃堕暱缁熻(鍒嗛挓) - BigDecimal breakdownDownDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.BREAKDOWN_DOWN); - mdcOverallEquipmentEfficiency.setBreakdownDownDuration(breakdownDownDuration); - // 鎹㈠瀷璋冭瘯鏃堕暱缁熻(鍒嗛挓) - BigDecimal conversionDebugDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.CONVERSION_DEBUG); - mdcOverallEquipmentEfficiency.setConversionDebugDuration(conversionDebugDuration); - // 鐗╂枡鐭己鏃堕暱缁熻(鍒嗛挓) - BigDecimal materialShortageDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.MATERIAL_SHORTAGE); - mdcOverallEquipmentEfficiency.setMaterialShortageDuration(materialShortageDuration); - // 璁″垝绛変换鍔℃椂闀跨粺璁�(鍒嗛挓) - BigDecimal plannedTaskDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.PLANNED_TASK); - mdcOverallEquipmentEfficiency.setPlannedTaskDuration(plannedTaskDuration); - // 妫�楠屾椂闀跨粺璁�(鍒嗛挓) - BigDecimal inspectDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.INSPECT); - mdcOverallEquipmentEfficiency.setInspectDuration(inspectDuration); - // 鍏朵粬鏃堕暱缁熻(鍒嗛挓) - BigDecimal otherDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.OTHER); - mdcOverallEquipmentEfficiency.setOtherDuration(otherDuration); - // 璁″垝淇濆吇鏃堕暱缁熻(鍒嗛挓) - BigDecimal plannedMaintenanceDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.PLANNED_MAINTENANCE); - mdcOverallEquipmentEfficiency.setPlannedMaintenanceDuration(plannedMaintenanceDuration); - // 浼氳/鍩硅鏃堕暱缁熻(鍒嗛挓) - BigDecimal conferenceTrainingDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.CONFERENCE_TRAINING); - mdcOverallEquipmentEfficiency.setConferenceTrainingDuration(conferenceTrainingDuration); - // 鍏跺畠浼戞伅鏃堕暱缁熻(鍒嗛挓) - BigDecimal otherRestDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.OTHER_REST); - mdcOverallEquipmentEfficiency.setOtherRestDuration(otherRestDuration); +// // 鏁呴殰鍋滄満鏃堕暱缁熻(鍒嗛挓) +// BigDecimal breakdownDownDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.BREAKDOWN_DOWN); +// mdcOverallEquipmentEfficiency.setBreakdownDownDuration(breakdownDownDuration); +// // 鎹㈠瀷璋冭瘯鏃堕暱缁熻(鍒嗛挓) +// BigDecimal conversionDebugDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.CONVERSION_DEBUG); +// mdcOverallEquipmentEfficiency.setConversionDebugDuration(conversionDebugDuration); +// // 鐗╂枡鐭己鏃堕暱缁熻(鍒嗛挓) +// BigDecimal materialShortageDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.MATERIAL_SHORTAGE); +// mdcOverallEquipmentEfficiency.setMaterialShortageDuration(materialShortageDuration); +// // 璁″垝绛変换鍔℃椂闀跨粺璁�(鍒嗛挓) +// BigDecimal plannedTaskDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.PLANNED_TASK); +// mdcOverallEquipmentEfficiency.setPlannedTaskDuration(plannedTaskDuration); +// // 妫�楠屾椂闀跨粺璁�(鍒嗛挓) +// BigDecimal inspectDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.INSPECT); +// mdcOverallEquipmentEfficiency.setInspectDuration(inspectDuration); +// // 鍏朵粬鏃堕暱缁熻(鍒嗛挓) +// BigDecimal otherDuration = mdcNoplanCloseService.findNoplanTimeDuration(equipmentId, validDate, MdcConstant.OTHER); +// mdcOverallEquipmentEfficiency.setOtherDuration(otherDuration); +// // 璁″垝淇濆吇鏃堕暱缁熻(鍒嗛挓) +// BigDecimal plannedMaintenanceDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.PLANNED_MAINTENANCE); +// mdcOverallEquipmentEfficiency.setPlannedMaintenanceDuration(plannedMaintenanceDuration); +// // 浼氳/鍩硅鏃堕暱缁熻(鍒嗛挓) +// BigDecimal conferenceTrainingDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.CONFERENCE_TRAINING); +// mdcOverallEquipmentEfficiency.setConferenceTrainingDuration(conferenceTrainingDuration); +// // 鍏跺畠浼戞伅鏃堕暱缁熻(鍒嗛挓) +// BigDecimal otherRestDuration = mdcPlanCloseService.findPlanTimeDuration(actualWorkDayCount, MdcConstant.OTHER_REST); +// mdcOverallEquipmentEfficiency.setOtherRestDuration(otherRestDuration); /* 璐熻嵎鏃堕棿(灏忔椂) = 宸ヤ綔鏃ュ巻鏃堕棿 - 璁″垝鍋滄満鏃堕棿 宸ヤ綔鏃ュ巻鏃堕棿 = 鏃ュ巻鏃堕棿 - 娉曞畾鍋囨棩 - 鍙屼紤鏃� + 鍔犵彮鏃堕棿 @@ -161,78 +161,78 @@ */ // mdcOverallEquipmentEfficiency.getShiftTimeCount() - plannedMaintenanceDuration - conferenceTrainingDuration - otherRestDuration // 璐熻嵎鏃堕棿(鍒嗛挓) - BigDecimal loadTime = mdcOverallEquipmentEfficiency.getMonthActualWorkDayTimeCount().subtract(plannedMaintenanceDuration).subtract(conferenceTrainingDuration).subtract(otherRestDuration); - if (loadTime.compareTo(BigDecimal.ZERO) < 0) { - loadTime = BigDecimal.ZERO; - } - mdcOverallEquipmentEfficiency.setLoadTime(loadTime.divide(new BigDecimal("60"), 1, RoundingMode.HALF_UP)); +// BigDecimal loadTime = mdcOverallEquipmentEfficiency.getMonthActualWorkDayTimeCount().subtract(plannedMaintenanceDuration).subtract(conferenceTrainingDuration).subtract(otherRestDuration); +// if (loadTime.compareTo(BigDecimal.ZERO) < 0) { +// loadTime = BigDecimal.ZERO; +// } +// mdcOverallEquipmentEfficiency.setLoadTime(loadTime.divide(new BigDecimal("60"), 1, RoundingMode.HALF_UP)); // 鏃堕棿寮�鍔ㄧ巼 = 涓昏酱杩愯鏃堕棿/璐熻嵎鏃堕棿 // 鏌ヨ涓昏酱杩愯鏃堕棿(鍒嗛挓) - BigDecimal spindleRunDuration = mdcEquipmentStatisticalShiftInfoService.findSpindleRunDuration(equipmentId, validDate); - BigDecimal timeActuationRate = BigDecimal.ZERO; - if (loadTime.compareTo(BigDecimal.ZERO) == 0) { - mdcOverallEquipmentEfficiency.setTimeActuationRate(BigDecimal.ZERO); - } else { - timeActuationRate = spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP); - mdcOverallEquipmentEfficiency.setTimeActuationRate(timeActuationRate); - } +// BigDecimal spindleRunDuration = mdcEquipmentStatisticalShiftInfoService.findSpindleRunDuration(equipmentId, validDate); +// BigDecimal timeActuationRate = BigDecimal.ZERO; +// if (loadTime.compareTo(BigDecimal.ZERO) == 0) { +// mdcOverallEquipmentEfficiency.setTimeActuationRate(BigDecimal.ZERO); +// } else { +// timeActuationRate = spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP); +// mdcOverallEquipmentEfficiency.setTimeActuationRate(timeActuationRate); +// } - BigDecimal processQuantity; - // 鍔犲伐闆朵欢鏁�(浠�) processQuantity - if ("FANUC".equals(mdcEquipment.getDriveType())) { - processQuantity = processCountService.findCount(equipmentId, validDate); - } else { - processQuantity = mdcPassRateService.findProcessQuantity(equipmentId, validDate); - } - mdcOverallEquipmentEfficiency.setProcessQuantity(processQuantity); +// BigDecimal processQuantity; +// // 鍔犲伐闆朵欢鏁�(浠�) processQuantity +// if ("FANUC".equals(mdcEquipment.getDriveType())) { +// processQuantity = processCountService.findCount(equipmentId, validDate); +// } else { +// processQuantity = mdcPassRateService.findProcessQuantity(equipmentId, validDate); +// } +// mdcOverallEquipmentEfficiency.setProcessQuantity(processQuantity); +// +// // 鏍囧噯鍔犲伐鏃堕棿(鍒嗛挓) +// MdcStandardProcessDuration mdcStandardProcessDuration = mdcStandardProcessDurationService.getOne(new LambdaQueryWrapper<MdcStandardProcessDuration>().eq(MdcStandardProcessDuration::getEquipmentId, equipmentId)); +// if (mdcStandardProcessDuration != null) { +// mdcOverallEquipmentEfficiency.setStandardProcessDuration(new BigDecimal(mdcStandardProcessDuration.getDuration()).multiply(processQuantity)); +// } else { +// mdcOverallEquipmentEfficiency.setStandardProcessDuration(BigDecimal.ZERO); +// } - // 鏍囧噯鍔犲伐鏃堕棿(鍒嗛挓) - MdcStandardProcessDuration mdcStandardProcessDuration = mdcStandardProcessDurationService.getOne(new LambdaQueryWrapper<MdcStandardProcessDuration>().eq(MdcStandardProcessDuration::getEquipmentId, equipmentId)); - if (mdcStandardProcessDuration != null) { - mdcOverallEquipmentEfficiency.setStandardProcessDuration(new BigDecimal(mdcStandardProcessDuration.getDuration()).multiply(processQuantity)); - } else { - mdcOverallEquipmentEfficiency.setStandardProcessDuration(BigDecimal.ZERO); - } - - if ("FANUC".equals(mdcEquipment.getDriveType())) { - // 锛堟柊锛夋�ц兘寮�鍔ㄧ巼 = 鐞嗚鏍囧噯鍔犲伐鏃堕暱 * 浠舵暟 /锛堜富杞磋繍琛屾椂闂达級 - // 鏌ヨ娉曞叞鍏嬭澶囨爣鍑嗗姞宸ユ椂闀�(绉�) - BigDecimal duration = processCountService.findDuration(mdcEquipment.getEquipmentId(), validDate); - if (spindleRunDuration.compareTo(BigDecimal.ZERO) != 0 && duration.compareTo(BigDecimal.ZERO) != 0) { - mdcOverallEquipmentEfficiency.setStandardProcessDuration(duration.divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP)); - BigDecimal performanceRate = duration.divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP).divide(spindleRunDuration, 4, RoundingMode.HALF_UP); - if (performanceRate.compareTo(BigDecimal.ONE) == 1) { - performanceRate = new BigDecimal("0.95").add(BigDecimal.valueOf(Math.random() * 5).divide(new BigDecimal("100"), 4, RoundingMode.HALF_UP)); - } - mdcOverallEquipmentEfficiency.setPerformanceRate(performanceRate); - } else { - mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO); - } - } else { - // 锛堟棫锛夋�ц兘寮�鍔ㄧ巼 = 涓昏酱杩愯鏃堕棿/璐熻嵎鏃堕棿 - if (loadTime.compareTo(BigDecimal.ZERO) != 0) { - mdcOverallEquipmentEfficiency.setPerformanceRate(spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP)); - } else { - mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO); - } - } +// if ("FANUC".equals(mdcEquipment.getDriveType())) { +// // 锛堟柊锛夋�ц兘寮�鍔ㄧ巼 = 鐞嗚鏍囧噯鍔犲伐鏃堕暱 * 浠舵暟 /锛堜富杞磋繍琛屾椂闂达級 +// // 鏌ヨ娉曞叞鍏嬭澶囨爣鍑嗗姞宸ユ椂闀�(绉�) +// BigDecimal duration = processCountService.findDuration(mdcEquipment.getEquipmentId(), validDate); +// if (spindleRunDuration.compareTo(BigDecimal.ZERO) != 0 && duration.compareTo(BigDecimal.ZERO) != 0) { +// mdcOverallEquipmentEfficiency.setStandardProcessDuration(duration.divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP)); +// BigDecimal performanceRate = duration.divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP).divide(spindleRunDuration, 4, RoundingMode.HALF_UP); +// if (performanceRate.compareTo(BigDecimal.ONE) == 1) { +// performanceRate = new BigDecimal("0.95").add(BigDecimal.valueOf(Math.random() * 5).divide(new BigDecimal("100"), 4, RoundingMode.HALF_UP)); +// } +// mdcOverallEquipmentEfficiency.setPerformanceRate(performanceRate); +// } else { +// mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO); +// } +// } else { +// // 锛堟棫锛夋�ц兘寮�鍔ㄧ巼 = 涓昏酱杩愯鏃堕棿/璐熻嵎鏃堕棿 +// if (loadTime.compareTo(BigDecimal.ZERO) != 0) { +// mdcOverallEquipmentEfficiency.setPerformanceRate(spindleRunDuration.divide(loadTime, 4, RoundingMode.HALF_UP)); +// } else { +// mdcOverallEquipmentEfficiency.setPerformanceRate(BigDecimal.ZERO); +// } +// } // 搴熷搧鏁� unqualifiedQuantity - BigDecimal unqualifiedQuantity = mdcPassRateService.findUnqualifiedQuantity(equipmentId, validDate); - mdcOverallEquipmentEfficiency.setUnqualifiedQuantity(unqualifiedQuantity); - // 鍚堟牸鐜� - if (processQuantity.compareTo(BigDecimal.ZERO) == 0) { - mdcOverallEquipmentEfficiency.setPassRate(BigDecimal.ONE); - } else { - mdcOverallEquipmentEfficiency.setPassRate((processQuantity.subtract(unqualifiedQuantity)).divide(processQuantity, 4, RoundingMode.HALF_UP)); - } - - // 璁惧缁煎悎鏁堢巼 = 鏃堕棿寮�鍔ㄧ巼 脳 鎬ц兘寮�鍔ㄧ巼 脳 鍚堟牸鍝佺巼 - mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(timeActuationRate.multiply(mdcOverallEquipmentEfficiency.getPerformanceRate()).multiply(mdcOverallEquipmentEfficiency.getPassRate()).setScale(4, RoundingMode.HALF_UP)); - if (mdcOverallEquipmentEfficiency.getOverallEquipmentEfficiency().compareTo(BigDecimal.ZERO) == 0) { - mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(BigDecimal.ZERO); - } +// BigDecimal unqualifiedQuantity = mdcPassRateService.findUnqualifiedQuantity(equipmentId, validDate); +// mdcOverallEquipmentEfficiency.setUnqualifiedQuantity(unqualifiedQuantity); +// // 鍚堟牸鐜� +// if (processQuantity.compareTo(BigDecimal.ZERO) == 0) { +// mdcOverallEquipmentEfficiency.setPassRate(BigDecimal.ONE); +// } else { +// mdcOverallEquipmentEfficiency.setPassRate((processQuantity.subtract(unqualifiedQuantity)).divide(processQuantity, 4, RoundingMode.HALF_UP)); +// } +// +// // 璁惧缁煎悎鏁堢巼 = 鏃堕棿寮�鍔ㄧ巼 脳 鎬ц兘寮�鍔ㄧ巼 脳 鍚堟牸鍝佺巼 +// mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(timeActuationRate.multiply(mdcOverallEquipmentEfficiency.getPerformanceRate()).multiply(mdcOverallEquipmentEfficiency.getPassRate()).setScale(4, RoundingMode.HALF_UP)); +// if (mdcOverallEquipmentEfficiency.getOverallEquipmentEfficiency().compareTo(BigDecimal.ZERO) == 0) { +// mdcOverallEquipmentEfficiency.setOverallEquipmentEfficiency(BigDecimal.ZERO); +// } result.add(mdcOverallEquipmentEfficiency); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPartProcessInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPartProcessInfoServiceImpl.java index eaccb68..2d41fb1 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPartProcessInfoServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPartProcessInfoServiceImpl.java @@ -142,7 +142,7 @@ ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); List<MdcPartProcessInfo> mdcPartProcessInfos = this.baseMapper.selectList(queryWrapper); // 瀵煎嚭鏂囦欢鍚嶇О - mv.addObject(NormalExcelConstants.FILE_NAME, "闆朵欢鍔犲伐鏁版嵁鍒楄〃"); + mv.addObject(NormalExcelConstants.FILE_NAME, "闆朵欢鍔犲伐鏁版嵁鍒楄〃"); mv.addObject(NormalExcelConstants.CLASS, MdcPartProcessInfo.class); LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("闆朵欢鍔犲伐鏁版嵁鍒楄〃鏁版嵁", "瀵煎嚭浜�:" + user.getRealname(), "闆朵欢鍔犲伐鏁版嵁")); @@ -150,4 +150,55 @@ mv.addObject(NormalExcelConstants.DATA_LIST, mdcPartProcessInfos); return mv; } + + /** + * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ椂闂� + * + * @param equipmentId + * @param validDate + * @return + */ + @Override + public Integer selectTotalProcessLong(String equipmentId, String validDate) { + Integer totalProcessLong = this.baseMapper.selectTotalProcessLong(equipmentId, validDate); + if (totalProcessLong == null) { + return 0; + } else { + return totalProcessLong; + } + } + + /** + * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ユ暟閲� + * + * @param equipmentId + * @param validDate + * @return + */ + @Override + public Integer selectTotalProcessCount(String equipmentId, String validDate) { + Integer totalProcessCount = this.baseMapper.selectTotalProcessCount(equipmentId, validDate); + if (totalProcessCount == null) { + return 0; + } else { + return totalProcessCount; + } + } + + /** + * 鏌ヨ璁惧鏌愬ぉ鎬诲姞宸ュ悎鏍兼暟閲� + * + * @param equipmentId + * @param validDate + * @return + */ + @Override + public Integer selectTotalPassCount(String equipmentId, String validDate) { + Integer totalPassCount = this.baseMapper.selectTotalPassCount(equipmentId, validDate); + if (totalPassCount == null) { + return 0; + } else { + return totalPassCount; + } + } } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java index e678fbc..e54d198 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcPlanCloseServiceImpl.java @@ -165,28 +165,21 @@ return mv; } + /** + * 璁$畻 璁″垝/闈炶鍒掑仠鏈哄綋澶╂�绘椂闀� + * @param equipmentId + * @param validDate + * @param closeType + * @return + */ @Override - public BigDecimal findPlanTimeDuration(BigDecimal actualWorkDayCount, String planCloseType) { - BigDecimal result = new BigDecimal("0"); -// List<MdcPlanClose> mdcPlanCloses = this.baseMapper.selectList(new LambdaQueryWrapper<MdcPlanClose>().in(MdcPlanClose::getPlanCloseType, Arrays.asList(planCloseType.split(",")))); -// if (mdcPlanCloses != null && !mdcPlanCloses.isEmpty()) { -// for (MdcPlanClose mdcPlanClose : mdcPlanCloses) { -// switch (mdcPlanClose.getPlanCloseTimeType()) { -// case MdcConstant.DAY: -// result = result.add(actualWorkDayCount.multiply(new BigDecimal(mdcPlanClose.getPlanCloseTimeLong()))); -// break; -// case MdcConstant.WEEK: -// result = result.add(new BigDecimal("4").multiply(new BigDecimal(mdcPlanClose.getPlanCloseTimeLong()))); -// break; -// case MdcConstant.MONTH: -// result = result.add(new BigDecimal(mdcPlanClose.getPlanCloseTimeLong())); -// break; -// default: -// break; -// } -// } -// } - return result; + public Integer findPlanTimeDuration(String equipmentId, String validDate, String closeType) { + Integer planTimeDuration = this.baseMapper.findPlanTimeDuration(equipmentId, validDate, closeType); + if (planTimeDuration == null) { + return 0; + } else { + return planTimeDuration; + } } } -- Gitblit v1.9.3