From 5d5675fd6b6521c3d3e5887017a090c60897f6cd Mon Sep 17 00:00:00 2001 From: Lius <Lius2225@163.com> Date: 星期四, 15 五月 2025 14:18:40 +0800 Subject: [PATCH] bug修复 --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcBoardServiceImpl.java | 273 +++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 208 insertions(+), 65 deletions(-) diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcBoardServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcBoardServiceImpl.java index a3bb917..b3513a9 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcBoardServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcBoardServiceImpl.java @@ -2,24 +2,34 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.sun.org.apache.bcel.internal.generic.NEW; +import org.jeecg.common.api.CommonAPI; import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.util.TranslateDictTextUtils; +import org.jeecg.modules.eam.constant.EquipmentMaintenanceStatus; +import org.jeecg.modules.eam.constant.EquipmentOperationTagEnum; +import org.jeecg.modules.eam.constant.EquipmentRepairStatus; +import org.jeecg.modules.eam.constant.MaintenanceCategoryEnum; import org.jeecg.modules.mdc.constant.MdcConstant; -import org.jeecg.modules.mdc.entity.Equipment; -import org.jeecg.modules.mdc.entity.MdcEquipment; -import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo; +import org.jeecg.modules.mdc.dto.EamEquipmentExtendDto; +import org.jeecg.modules.mdc.entity.*; +import org.jeecg.modules.mdc.mapper.MdcBoardMapper; import org.jeecg.modules.mdc.service.*; import org.jeecg.modules.mdc.util.DateUtils; +import org.jeecg.modules.mdc.vo.MdcBoardEquRealTImeVo; import org.jeecg.modules.mdc.vo.MdcBoardRateVo; import org.jeecg.modules.mdc.vo.MdcEquipmentStatusVo; import org.jeecg.modules.mdcJc.service.IMdcJcRcJobreportService; import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.service.IMdcProductionService; +import org.joda.time.LocalDateTime; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -49,6 +59,21 @@ @Resource private IMdcJcRcJobreportService mdcJcRcJobreportService; + @Resource + private CommonAPI commonAPI; + + @Resource + private IEquipmentLogService equipmentLogService; + + @Resource + private IEquipmentWorkLineService equipmentWorkLineService; + + @Resource + private MdcBoardMapper mdcBoardMapper; + + @Resource + private IMdcDeviceCalendarService mdcDeviceCalendarService; + /** * 璁惧鐘舵�� */ @@ -58,10 +83,6 @@ if (StringUtils.isBlank(productionId)) { MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getParentId, "")); productionId = mdcProduction.getId(); - result.put("productionName", mdcProduction.getProductionName()); - } else { - MdcProduction mdcProduction = mdcProductionService.getById(productionId); - result.put("productionName", mdcProduction.getProductionName()); } List<String> proIds = mdcProductionService.findChildByProId(productionId); if (proIds == null || proIds.isEmpty()) { @@ -132,29 +153,50 @@ LocalDate now = LocalDate.now(); Date startDate = DateUtils.toDate(now.plusDays(-15).toString(), DateUtils.STR_DATE); Date endDate = DateUtils.toDate(now.plusDays(-1).toString(), DateUtils.STR_DATE); + String start = DateUtils.format(startDate, DateUtils.STR_DATE); + String end = DateUtils.format(endDate, DateUtils.STR_DATE); List<String> dateList = DateUtils.getDatesStringList(startDate, endDate); - List<String> dates = new ArrayList<>(); - List<MdcBoardRateVo> dataList = new ArrayList<>(); - for (String date : dateList) { - MdcBoardRateVo mdcBoardRateVo = new MdcBoardRateVo(); - String s = date.substring(5, 10); - dates.add(s); - mdcBoardRateVo.setDate(s); - // TEEP 寮�鏈虹巼 寮�鍔ㄧ巼 - MdcEquipmentStatisticalInfo mdcEquipmentStatisticalInfo = mdcEquipmentStatisticalInfoService.findByEquipmentAndDate(equipmentIdList, date.replaceAll("-", "")); - mdcBoardRateVo.setUtilizationRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(new BigDecimal("864"), 2, RoundingMode.HALF_UP)); - mdcBoardRateVo.setOpenRate(mdcEquipmentStatisticalInfo.getOpenLong().divide(new BigDecimal("864"), 2, RoundingMode.HALF_UP)); - if (mdcEquipmentStatisticalInfo.getOpenLong().compareTo(BigDecimal.ZERO) > 0) { - mdcBoardRateVo.setStartRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(mdcEquipmentStatisticalInfo.getOpenLong(), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100"))); - } - // OEE - BigDecimal oee = mdcOeeInfoService.findByEquIdsAndDate(equipmentIdList, date); - if (oee != null) { - mdcBoardRateVo.setOee(oee.setScale(2, RoundingMode.HALF_UP)); - } - dataList.add(mdcBoardRateVo); - } + List<String> dates = dateList.stream().map(date -> date.substring(5, 10)).collect(Collectors.toList()); result.put("dateList", dates); + Map<String, MdcBoardRateVo> statisticsMap = new LinkedHashMap<>(); + dateList.forEach(date -> { + statisticsMap.put(date, new MdcBoardRateVo(date.substring(5, 10))); + }); + + // TEEP 寮�鏈虹巼 寮�鍔ㄧ巼 + List<MdcEquipmentStatisticalInfo> mdcEquipmentStatisticalInfo = mdcEquipmentStatisticalInfoService.findByEquipmentAndDate(equipmentIdList, start.replaceAll("-", ""), end.replaceAll("-", "")); + if (mdcEquipmentStatisticalInfo != null && !mdcEquipmentStatisticalInfo.isEmpty()) { + mdcEquipmentStatisticalInfo.forEach(equipmentStatisticalInfo -> { + String date = DateUtils.format(DateUtils.toDate(equipmentStatisticalInfo.getTheDate(), DateUtils.STRDATE), DateUtils.STR_DATE); + if (statisticsMap.containsKey(date)) { + MdcBoardRateVo mdcBoardRateVo = statisticsMap.get(date); + if (equipmentStatisticalInfo.getProcessLong().compareTo(BigDecimal.ZERO) > 0) { + mdcBoardRateVo.setUtilizationRate(equipmentStatisticalInfo.getProcessLong().divide(new BigDecimal("864"), 2, RoundingMode.HALF_UP)); + } + if (equipmentStatisticalInfo.getOpenLong().compareTo(BigDecimal.ZERO) > 0) { + mdcBoardRateVo.setOpenRate(equipmentStatisticalInfo.getOpenLong().divide(new BigDecimal("864"), 2, RoundingMode.HALF_UP)); + } + if (equipmentStatisticalInfo.getOpenLong().compareTo(BigDecimal.ZERO) > 0) { + mdcBoardRateVo.setStartRate(equipmentStatisticalInfo.getProcessLong().multiply(new BigDecimal("100")).divide(equipmentStatisticalInfo.getOpenLong(), 2, RoundingMode.HALF_UP)); + } + statisticsMap.put(date, mdcBoardRateVo); + } + }); + } + // OEE + List<MdcOeeInfo> oeeInfo = mdcOeeInfoService.findByEquIdsAndDate(equipmentIdList, start, end); + if (oeeInfo != null && !oeeInfo.isEmpty()) { + oeeInfo.forEach(mdcOeeInfo -> { + if (statisticsMap.containsKey(mdcOeeInfo.getTheDate())) { + MdcBoardRateVo mdcBoardRateVo = statisticsMap.get(mdcOeeInfo.getTheDate()); + if (mdcOeeInfo.getOee().compareTo(BigDecimal.ZERO) > 0) { + mdcBoardRateVo.setOee(mdcOeeInfo.getOee().setScale(2, RoundingMode.HALF_UP)); + } + statisticsMap.put(mdcOeeInfo.getTheDate(), mdcBoardRateVo); + } + }); + } + List<MdcBoardRateVo> dataList = new ArrayList<>(statisticsMap.values()); result.put("dataList", dataList); return result; } @@ -180,25 +222,44 @@ LocalDate now = LocalDate.now(); Date startDate = DateUtils.toDate(now.plusDays(-7).toString(), DateUtils.STR_DATE); Date endDate = DateUtils.toDate(now.plusDays(-1).toString(), DateUtils.STR_DATE); + String start = DateUtils.format(startDate, DateUtils.STR_DATE); + String end = DateUtils.format(endDate, DateUtils.STR_DATE); List<String> dayBetween = DateUtils.getDatesStringList(startDate, endDate); - List<String> dateList = new ArrayList<>(); - List<MdcBoardRateVo> dataList = new ArrayList<>(); - for (String date : dayBetween) { - MdcBoardRateVo mdcBoardRateVo = new MdcBoardRateVo(); - String s = date.substring(5, 10); - dateList.add(s); - mdcBoardRateVo.setDate(s); - // TEEP - MdcEquipmentStatisticalInfo mdcEquipmentStatisticalInfo = mdcEquipmentStatisticalInfoService.findByEquIdAndDate(equipmentId, date.replaceAll("-", "")); - mdcBoardRateVo.setUtilizationRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(new BigDecimal("864"), 2, RoundingMode.HALF_UP)); - // OEE - BigDecimal oee = mdcOeeInfoService.findByEquIdAndDate(equipmentId, date); - if (oee != null) { - mdcBoardRateVo.setOee(oee.setScale(2, RoundingMode.HALF_UP)); - } - dataList.add(mdcBoardRateVo); - } + List<String> dateList = dayBetween.stream().map(date -> date.substring(5, 10)).collect(Collectors.toList()); result.put("dateList", dateList); + Map<String, MdcBoardRateVo> statisticsMap = new LinkedHashMap<>(); + dayBetween.forEach(date -> { + statisticsMap.put(date, new MdcBoardRateVo(date.substring(5, 10))); + }); + // TEEP + List<MdcEquipmentStatisticalInfo> mdcEquipmentStatisticalInfo = mdcEquipmentStatisticalInfoService.findByEquIdAndDate(equipmentId, start.replaceAll("-", ""), end.replaceAll("-", "")); + if (mdcEquipmentStatisticalInfo != null && !mdcEquipmentStatisticalInfo.isEmpty()) { + mdcEquipmentStatisticalInfo.forEach(equipmentStatisticalInfo -> { + String date = DateUtils.format(DateUtils.toDate(equipmentStatisticalInfo.getTheDate(), DateUtils.STRDATE), DateUtils.STR_DATE); + if (statisticsMap.containsKey(date)) { + MdcBoardRateVo mdcBoardRateVo = statisticsMap.get(date); + if (equipmentStatisticalInfo.getProcessLong().compareTo(BigDecimal.ZERO) > 0) { + mdcBoardRateVo.setUtilizationRate(equipmentStatisticalInfo.getProcessLong().divide(new BigDecimal("864"), 2, RoundingMode.HALF_UP)); + } + statisticsMap.put(date, mdcBoardRateVo); + } + }); + } + // OEE + List<MdcOeeInfo> oeeInfo = mdcOeeInfoService.findByEquIdAndDate(equipmentId, start, end); + if (oeeInfo != null && !oeeInfo.isEmpty()) { + oeeInfo.forEach(mdcOeeInfo -> { + if (statisticsMap.containsKey(mdcOeeInfo.getTheDate())) { + MdcBoardRateVo mdcBoardRateVo = statisticsMap.get(mdcOeeInfo.getTheDate()); + if (mdcOeeInfo.getOee().compareTo(BigDecimal.ZERO) > 0) { + mdcBoardRateVo.setOee(mdcOeeInfo.getOee().setScale(2, RoundingMode.HALF_UP)); + } + statisticsMap.put(mdcOeeInfo.getTheDate(), mdcBoardRateVo); + } + }); + } + + List<MdcBoardRateVo> dataList = new ArrayList<>(statisticsMap.values()); result.put("dataList", dataList); return result; } @@ -242,24 +303,106 @@ return result; } -// /** -// * 璁惧浜у搧鍚堟牸鐜� -// */ -// @Override -// public Map<String, Object> passRate(String equipmentId) { -// Map<String, Object> result = new HashMap<>(); -// LocalDate now = LocalDate.now(); -// Date start = DateUtils.toDate(now.plusMonths(-6).toString(), DateUtils.STR_DATE); -// Date end = DateUtils.toDate(now.plusMonths(-1).toString(), DateUtils.STR_DATE); -// List<String> monthBetween = DateUtils.getMonthBetween(start, end); -// List<String> dateList = new ArrayList<>(); -// for (String month : monthBetween) { -// String name = month.substring(month.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "鏈�"; -// dateList.add(name); -// MdcBoardRateVo mdcBoardRateVo = new MdcBoardRateVo(); -// // 鍚堟牸鐜� -// -// } -// return result; -// } + /** + * 璁惧瀹炴椂淇℃伅 + */ + @Override + public MdcBoardEquRealTImeVo equipmentRealTimeDetail(String equipmentId) { + MdcBoardEquRealTImeVo mdcBoardEquRealTImeVo = mdcEquipmentService.getByEquipmentId(equipmentId); + if (mdcBoardEquRealTImeVo == null) { + return new MdcBoardEquRealTImeVo(); + } + //璁惧绠$悊鍛樼炕璇� + String realName = commonAPI.translateDictFromTable("sys_user", "realname", "username", mdcBoardEquRealTImeVo.getEquipmentManager()); + mdcBoardEquRealTImeVo.setEquipmentManager(realName); + mdcBoardEquRealTImeVo.setAlarm("鏃�"); + if (mdcBoardEquRealTImeVo.getOperation() != null) { + switch (mdcBoardEquRealTImeVo.getOperation()) { + case 1: + case 2: + mdcBoardEquRealTImeVo.setOporationDict("寰呮満"); + break; + case 3: + mdcBoardEquRealTImeVo.setOporationDict("杩愯"); + break; + case 22: + mdcBoardEquRealTImeVo.setOporationDict("鎶ヨ"); + // 鏌ヨ鎶ヨ鍙� + EquipmentLog equipmentLog = equipmentLogService.findAlarmByEquId(equipmentId); + if (equipmentLog != null && StringUtils.isNotBlank(equipmentLog.getAlarm())) { + mdcBoardEquRealTImeVo.setAlarm(equipmentLog.getAlarm()); + } + break; + default: + mdcBoardEquRealTImeVo.setOporationDict("鍏虫満"); + break; + } + } else { + mdcBoardEquRealTImeVo.setOporationDict("鍏虫満"); + mdcBoardEquRealTImeVo.setOperation(0); + } + //璁惧杩愯鏁版嵁 + Map<String, Object> mapData = equipmentWorkLineService.getDataList(mdcBoardEquRealTImeVo.getSaveTableName()); + if (mapData != null) { + if (mapData.containsKey("Sequencenumber")) { + Object object = mapData.get("Sequencenumber"); + mdcBoardEquRealTImeVo.setSequenceNumber(object == null ? "" : object.toString()); + } + if (mapData.containsKey("spindlespeed")) { + Object object = mapData.get("spindlespeed"); + mdcBoardEquRealTImeVo.setSpindleSpeed(object == null ? "" : object.toString()); + } + if (mapData.containsKey("spindleload")) { + Object object = mapData.get("spindleload"); + mdcBoardEquRealTImeVo.setSpindleLoad(object == null ? "" : object.toString()); + } + if (mapData.containsKey("spindlebeilv")) { + Object object = mapData.get("spindlebeilv"); + mdcBoardEquRealTImeVo.setSpindlebeilv(object == null ? "" : object.toString()); + } + if (mapData.containsKey("feedbeilv")) { + Object object = mapData.get("feedbeilv"); + mdcBoardEquRealTImeVo.setFeedbeilv(object == null ? "" : object.toString()); + } + } + // 缁翠繚鐘舵�� + EamEquipmentExtendDto eamEquipmentExtendDto = mdcBoardMapper.findEquExtend(equipmentId); + mdcBoardEquRealTImeVo.setMaintenanceStatus("姝e父"); + mdcBoardEquRealTImeVo.setReportRepairStatus("鏃�"); + if (eamEquipmentExtendDto != null) { + if (!EquipmentRepairStatus.NORMAL.name().equals(eamEquipmentExtendDto.getRepairStatus())) { + mdcBoardEquRealTImeVo.setMaintenanceStatus("缁翠慨"); + } else { + if (EquipmentMaintenanceStatus.UNDER_INSPECTION.name().equals(eamEquipmentExtendDto.getMaintenanceStatus()) || EquipmentMaintenanceStatus.INSPECTION_CONFIRM.name().equals(eamEquipmentExtendDto.getMaintenanceStatus())) { + mdcBoardEquRealTImeVo.setMaintenanceStatus("鐐规"); + } else if (EquipmentMaintenanceStatus.UNDER_MAINTENANCE.name().equals(eamEquipmentExtendDto.getMaintenanceStatus()) || EquipmentMaintenanceStatus.WAIT_CONFIRM.name().equals(eamEquipmentExtendDto.getMaintenanceStatus())) { + mdcBoardEquRealTImeVo.setMaintenanceStatus("鍛ㄦ姤"); + } + } + } + // 鎶ヤ慨鎯呭喌 + String repairStatus = mdcBoardMapper.findReportRepairStatus(equipmentId); + if (repairStatus != null) { + String reportRepair = commonAPI.translateDict("report_repair_status", repairStatus); + mdcBoardEquRealTImeVo.setReportRepairStatus(reportRepair); + } else { + mdcBoardEquRealTImeVo.setReportRepairStatus("鏃�"); + } + // 鐝 + String shift = mdcDeviceCalendarService.findShiftByEquId(equipmentId); + if (StringUtils.isNotBlank(shift)) { + mdcBoardEquRealTImeVo.setShift(shift); + } + // 鐐规 淇濆吇 + Date nextInspection = mdcBoardMapper.findInsOrMain(equipmentId, MaintenanceCategoryEnum.POINT_INSPECTION.name()); + if (nextInspection != null) { + mdcBoardEquRealTImeVo.setNextInspection(nextInspection); + } + Date nextMaintenance = mdcBoardMapper.findInsOrMain(equipmentId, MaintenanceCategoryEnum.WEEK_MAINTENANCE.name()); + if (nextMaintenance != null) { + mdcBoardEquRealTImeVo.setNextMaintenance(nextMaintenance); + } + return mdcBoardEquRealTImeVo; + } + } -- Gitblit v1.9.3