From ec3a22b30b051bec8933d52ba720452ace0cbc0d Mon Sep 17 00:00:00 2001 From: Yangwl <1726150332@qq.com> Date: Tue, 1 Jul 2025 16:12:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=A7=E7=BA=BF=E5=A4=A7?= =?UTF-8?q?=E5=B1=8F=E4=BA=A7=E7=BA=BF=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/op/mes/mapper/MesMapper.java | 2 + .../mes/service/impl/MesBoradServiceImpl.java | 286 ++++++++++-------- .../main/resources/mapper/mes/MesMapper.xml | 10 +- 3 files changed, 164 insertions(+), 134 deletions(-) diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java index b6857862b..a3661b9f6 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java @@ -120,4 +120,6 @@ public interface MesMapper { Map getProductionNumberPLC(BoardDTO mesBoard); + + List getproductLineList(); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesBoradServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesBoradServiceImpl.java index 1cc6dd759..d6204d340 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesBoradServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesBoradServiceImpl.java @@ -55,6 +55,15 @@ public class MesBoradServiceImpl implements IMesBoradService { try { boardDTO.setEquipmentTypeCode("equ_type_bzx"); List lineList = mesMapper.getLineList(boardDTO); + if (boardDTO.getIsqua()!=null){ + //查询当天生产的产线 + List productLineList = mesMapper.getproductLineList(); + // 使用Stream过滤lineList,只保留equCode在productLineList中的数据 + lineList = lineList.stream() + .filter(item -> productLineList.contains(item.getEquCode())) + .collect(Collectors.toList()); + } + return lineList; }finally { DynamicDataSourceContextHolder.poll(); @@ -65,157 +74,180 @@ public class MesBoradServiceImpl implements IMesBoradService { @Override public BoardDTO getProduction15Days(BoardDTO boardDTO) { DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode()); - BoardDTO dto = new BoardDTO(); + try { + BoardDTO dto = new BoardDTO(); - String nowDate = DateUtils.getDate(); + String nowDate = DateUtils.getDate(); - List days = this.getDays(15); - //days - dto.setDays(days); - boardDTO.setStartTime(days.get(0)); - boardDTO.setEndTime(days.get(days.size()-1)); - Map pros15Plan = mesMapper.getProduction15Days(boardDTO); - Map pros15Act = mesMapper.getProduction15DaysAct(boardDTO); - MesReportWork todayPlandto = pros15Plan.get(nowDate); - MesReportWork todayActdto = pros15Act.get(nowDate); - if(todayPlandto != null){ - dto.setPlanProduction(todayPlandto.getQuantity().toString().replace(".00","")); - }else{ - dto.setPlanProduction("0"); - } - if(todayActdto != null){ - dto.setActProduction(todayActdto.getQuantityFeedback().toString().replace(".00","")); - }else{ - dto.setActProduction("0"); - } - //plans; - List plans = new ArrayList<>(); - List acts = new ArrayList<>(); - //acts; - for(String dayStr:days){ - MesReportWork workPlanR = pros15Plan.get(dayStr); - MesReportWork workActR = pros15Act.get(dayStr); - if(workPlanR != null){ - plans.add(workPlanR.getQuantity().toString()); + List days = this.getDays(15); + //days + dto.setDays(days); + boardDTO.setStartTime(days.get(0)); + boardDTO.setEndTime(days.get(days.size()-1)); + Map pros15Plan = mesMapper.getProduction15Days(boardDTO); + Map pros15Act = mesMapper.getProduction15DaysAct(boardDTO); + MesReportWork todayPlandto = pros15Plan.get(nowDate); + MesReportWork todayActdto = pros15Act.get(nowDate); + if(todayPlandto != null){ + dto.setPlanProduction(todayPlandto.getQuantity().toString().replace(".00","")); }else{ - plans.add("0"); + dto.setPlanProduction("0"); } - if(workActR != null){ - acts.add(workActR.getQuantityFeedback().toString()); + if(todayActdto != null){ + dto.setActProduction(todayActdto.getQuantityFeedback().toString().replace(".00","")); }else{ - acts.add("0"); + dto.setActProduction("0"); } + //plans; + List plans = new ArrayList<>(); + List acts = new ArrayList<>(); + //acts; + for(String dayStr:days){ + MesReportWork workPlanR = pros15Plan.get(dayStr); + MesReportWork workActR = pros15Act.get(dayStr); + if(workPlanR != null){ + plans.add(workPlanR.getQuantity().toString()); + }else{ + plans.add("0"); + } + if(workActR != null){ + acts.add(workActR.getQuantityFeedback().toString()); + }else{ + acts.add("0"); + } + } + dto.setPlans(plans); + dto.setActs(acts); + return dto; + }finally { + DynamicDataSourceContextHolder.poll(); } - dto.setPlans(plans); - dto.setActs(acts); - return dto; + } @Override public Map getProductionLineInfo(BoardDTO boardDTO) { DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode()); - Map dtoMap = new HashMap<>(); - //当前工单信息 - BoardDTO workOrder = mesMapper.getWorkOrder(boardDTO); + try { + Map dtoMap = new HashMap<>(); + //当前工单信息 + BoardDTO workOrder = mesMapper.getWorkOrder(boardDTO); + + if(workOrder == null || StringUtils.isEmpty(workOrder.getWorkorderCode())){ + return dtoMap; + } + + boardDTO.setWorkorderCode(workOrder.getWorkorderCode()); + boardDTO.setProductCode(workOrder.getProductCode()); + MesLine meslineInfo = mesMapper.getMesLineInfo(boardDTO); + + QuantityDto quantityDto = new QuantityDto(); + quantityDto.setWorkorderCode(boardDTO.getWorkorderCode()); + quantityDto.setMachineCode(boardDTO.getEquCode()); + quantityDto.setBoard("1"); + QuantityDto parentMesReport = mesReportWorkMapper.getRealQuantity(quantityDto); + QuantityDto sonMesReport = mesReportWorkMapper.getSumQuantity(quantityDto); + if(sonMesReport == null){//单层工单的情况 + sonMesReport = mesReportWorkMapper.getSumQuantityOne(quantityDto); + } + if(sonMesReport != null){//实际用人 + workOrder.setActMan(sonMesReport.getUseMan()); + }else{ + workOrder.setActMan(new BigDecimal("0")); + } + if(parentMesReport!=null){//实际效率 = 实际母单产量/子总工时 + BigDecimal manAvgActual = new BigDecimal(parentMesReport.getQuantityFeedbackSum()) + .divide(sonMesReport.getWorkTime(),2,BigDecimal.ROUND_HALF_UP); + workOrder.setActXl(manAvgActual); + }else{ + workOrder.setActXl(new BigDecimal("0")); + } + + if(meslineInfo != null){ + workOrder.setStandarMan(meslineInfo.getStandarMan()); + workOrder.setStandarXl(meslineInfo.getStandarXl()); + }else{ + workOrder.setStandarMan(new BigDecimal("0")); + workOrder.setStandarXl(new BigDecimal("0")); + } + + dtoMap.put("workOrder",workOrder); + + QcCheckTaskDTO taskDTO = mesMapper.getTaskInfo(boardDTO); + BoardDTO task2 = new BoardDTO(); + if(taskDTO.getQuality() != null){ + task2.setTaskNum(taskDTO.getQuality().toString()); + }else{ + task2.setTaskNum("0"); + } + dtoMap.put("taskNum",task2);//巡检次数 + + BoardDTO task3 = new BoardDTO(); + if(taskDTO.getSampleQuality() != null){ + task3.setTaskSampleNum(taskDTO.getSampleQuality().toString()); + }else{ + task3.setTaskSampleNum("0"); + } + dtoMap.put("taskSampleNum",task3);//巡检抽样数量 + + BoardDTO task4 = new BoardDTO(); + List checkList = mesMapper.getCheckList(boardDTO); + if(!CollectionUtils.isEmpty(checkList)){ + task4.setCheckList(checkList); + } + dtoMap.put("piedata",task4);//巡检结果 - if(workOrder == null || StringUtils.isEmpty(workOrder.getWorkorderCode())){ return dtoMap; + }finally { + DynamicDataSourceContextHolder.poll(); } - boardDTO.setWorkorderCode(workOrder.getWorkorderCode()); - boardDTO.setProductCode(workOrder.getProductCode()); - MesLine meslineInfo = mesMapper.getMesLineInfo(boardDTO); - - QuantityDto quantityDto = new QuantityDto(); - quantityDto.setWorkorderCode(boardDTO.getWorkorderCode()); - quantityDto.setMachineCode(boardDTO.getEquCode()); - quantityDto.setBoard("1"); - QuantityDto parentMesReport = mesReportWorkMapper.getRealQuantity(quantityDto); - QuantityDto sonMesReport = mesReportWorkMapper.getSumQuantity(quantityDto); - if(sonMesReport == null){//单层工单的情况 - sonMesReport = mesReportWorkMapper.getSumQuantityOne(quantityDto); - } - if(sonMesReport != null){//实际用人 - workOrder.setActMan(sonMesReport.getUseMan()); - }else{ - workOrder.setActMan(new BigDecimal("0")); - } - if(parentMesReport!=null){//实际效率 = 实际母单产量/子总工时 - BigDecimal manAvgActual = new BigDecimal(parentMesReport.getQuantityFeedbackSum()) - .divide(sonMesReport.getWorkTime(),2,BigDecimal.ROUND_HALF_UP); - workOrder.setActXl(manAvgActual); - }else{ - workOrder.setActXl(new BigDecimal("0")); - } - - if(meslineInfo != null){ - workOrder.setStandarMan(meslineInfo.getStandarMan()); - workOrder.setStandarXl(meslineInfo.getStandarXl()); - }else{ - workOrder.setStandarMan(new BigDecimal("0")); - workOrder.setStandarXl(new BigDecimal("0")); - } - - dtoMap.put("workOrder",workOrder); - - QcCheckTaskDTO taskDTO = mesMapper.getTaskInfo(boardDTO); - BoardDTO task2 = new BoardDTO(); - if(taskDTO.getQuality() != null){ - task2.setTaskNum(taskDTO.getQuality().toString()); - }else{ - task2.setTaskNum("0"); - } - dtoMap.put("taskNum",task2);//巡检次数 - - BoardDTO task3 = new BoardDTO(); - if(taskDTO.getSampleQuality() != null){ - task3.setTaskSampleNum(taskDTO.getSampleQuality().toString()); - }else{ - task3.setTaskSampleNum("0"); - } - dtoMap.put("taskSampleNum",task3);//巡检抽样数量 - - BoardDTO task4 = new BoardDTO(); - List checkList = mesMapper.getCheckList(boardDTO); - if(!CollectionUtils.isEmpty(checkList)){ - task4.setCheckList(checkList); - } - dtoMap.put("piedata",task4);//巡检结果 - - return dtoMap; } @Override public List getPorOrderList(BoardDTO boardDTO) { DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode()); - List dtos = mesMapper.getPorOrderList(boardDTO); - return dtos; + try{ + List dtos = mesMapper.getPorOrderList(boardDTO); + return dtos; + }finally { + DynamicDataSourceContextHolder.poll(); + } } @Override public List getHFProInfo(BoardDTO boardDTO) { DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode()); - List dtos = mesMapper.getHFProInfo(boardDTO); - return dtos; + try { + List dtos = mesMapper.getHFProInfo(boardDTO); + return dtos; + }finally { + DynamicDataSourceContextHolder.poll(); + } } @Override public List getHFQcInfo(BoardDTO boardDTO) { DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode()); - List dtos = mesMapper.getHFQcInfo(boardDTO); -// if(!CollectionUtils.isEmpty(dtos)){ -// //不合格 -// List isquas = dtos.stream().filter(a -> a.getIsqua().equals("0")).collect(Collectors.toList()); -// dtos.get(0).setTaskNum(isquas.size()+""); -// } - return dtos; + try { + List dtos = mesMapper.getHFQcInfo(boardDTO); + return dtos; + }finally { + DynamicDataSourceContextHolder.poll(); + } + } @Override public List getHFxlInfo(BoardDTO boardDTO) { DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode()); - List dtos = mesMapper.getHFxlInfo(boardDTO); - return dtos; + try { + List dtos = mesMapper.getHFxlInfo(boardDTO); + return dtos; + }finally { + DynamicDataSourceContextHolder.poll(); + } + } @@ -240,24 +272,12 @@ public class MesBoradServiceImpl implements IMesBoradService { @Override public Map getProductionNumberPLC(BoardDTO mesBoard) { DynamicDataSourceContextHolder.push(mesBoard.getFactoryCode()); - Map mapList = mesMapper.getProductionNumberPLC(mesBoard); - return mapList; - } - - public static void main(String[] args){ - List days = new ArrayList<>(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - - Calendar cal = Calendar.getInstance(); - //获取前面的时间用-负号 - Date date = new Date(); - for(int num=0;num<15;num++){ - cal.setTime(date); - cal.add(Calendar.DAY_OF_MONTH, -num); - days.add(sdf.format(cal.getTime())); + try { + Map mapList = mesMapper.getProductionNumberPLC(mesBoard); + return mapList; + }finally { + DynamicDataSourceContextHolder.poll(); } - Collections.reverse(days); - - System.out.println(JSONObject.toJSONString(days)); } + } diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml index 3054cc29f..87788053c 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml @@ -387,7 +387,7 @@ and del_flag = '0' group by workorder_code,batch )t on t0.workorderCode = t.workorder_code and t0.batchCode = t.batch - order by t0.batchCode + order by t0.workorderCodeSap ASC,t0.batchCode +