From 31cbf06fad6221aad9adc98dc0548e273493f5f5 Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Fri, 28 Mar 2025 18:00:12 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BD=E5=9D=AF=E4=B8=8D=E8=89=AF=E3=80=81?= =?UTF-8?q?=E8=BF=94=E5=B7=A5=E3=80=81=E7=BC=BA=E7=BA=BF=E5=88=86=E5=B8=83?= =?UTF-8?q?=E7=AD=89=E6=8A=A5=E8=A1=A8=E5=BC=80=E5=8F=91=EF=BC=9B=E6=A3=80?= =?UTF-8?q?=E9=AA=8C=E4=BB=BB=E5=8A=A1=E4=BA=8C=E6=AC=A1=E6=8F=90=E9=86=92?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../op/common/core/constant/HttpStatus.java | 4 +- .../src/main/java/com/op/job/task/RyTask.java | 4 +- .../impl/MesLineAssistantQtyServiceImpl.java | 64 +++-- .../controller/QcStaticTableController.java | 31 ++ .../com/op/quality/domain/QcProCheck.java | 27 +- .../com/op/quality/domain/QcStaticTable.java | 18 ++ .../quality/mapper/QcStaticTableMapper.java | 16 ++ .../service/IQcStaticTableService.java | 9 + .../impl/QcCheckTaskDetailServiceImpl.java | 16 +- .../impl/QcStaticTableServiceImpl.java | 264 ++++++++++++++++++ .../quality/QcCheckTaskDetailMapper.xml | 5 +- .../mapper/quality/QcProCheckMapper.xml | 5 + .../mapper/quality/QcStaticTableMapper.xml | 156 +++++++++++ 13 files changed, 571 insertions(+), 48 deletions(-) diff --git a/op-common/op-common-core/src/main/java/com/op/common/core/constant/HttpStatus.java b/op-common/op-common-core/src/main/java/com/op/common/core/constant/HttpStatus.java index 96e6b8887..0c5aed4f5 100644 --- a/op-common/op-common-core/src/main/java/com/op/common/core/constant/HttpStatus.java +++ b/op-common/op-common-core/src/main/java/com/op/common/core/constant/HttpStatus.java @@ -2,7 +2,7 @@ package com.op.common.core.constant; /** * 返回状态码 - * + * * @author OP */ public class HttpStatus { @@ -91,3 +91,5 @@ public class HttpStatus { */ public static final int WARN = 601; } + + diff --git a/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java b/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java index 797dd8ba7..163409d9d 100644 --- a/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java +++ b/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java @@ -190,9 +190,9 @@ public class RyTask { remoteQualityService.createCPBatchTask(); } - //质量检验任务没有检查的,一小时后重新发送微信提醒,三分钟一次 + //质量检验任务没有检查的,2小时后重新发送微信提醒一次(除成品检验外) public void resendWXTask(){ - logger.info("++质量管理系统+检验任务一小时后重新发送微信提醒+开始++resendWXTask+++++"); + logger.info("++质量管理系统+检验任务2小时后重新发送微信提醒一次(成品检验除外)+开始++resendWXTask+++++"); remoteQualityService.resendWXTask(); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesLineAssistantQtyServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesLineAssistantQtyServiceImpl.java index 615fd4bb5..1f7f79281 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesLineAssistantQtyServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesLineAssistantQtyServiceImpl.java @@ -162,49 +162,61 @@ public class MesLineAssistantQtyServiceImpl implements IMesLineAssistantQtyServi MesLineAssistantQty manQty = assistMaps.get(mesLineAssistant.getProductDateStr()); if(manQty!=null){ //班长用人=当日人数*工时占比 - assistdto.setMonitorQty(new BigDecimal(manQty.getMonitorQty()) + assistdto.setMonitorQty(new BigDecimal(manQty.getMonitorQty()==null?0L:manQty.getMonitorQty()) .multiply(new BigDecimal(assistdto.getHourRatio().replace("%",""))) + .multiply(new BigDecimal("0.01")) .toString() ); //班长工时=当日考勤小时数*工时占比 assistdto.setMonitorHour( - monitorHour.multiply( - new BigDecimal(assistdto.getHourRatio().replace("%",""))).toString()); + monitorHour.multiply(new BigDecimal(assistdto.getHourRatio().replace("%",""))) + .multiply(new BigDecimal("0.01")) + .toString()); //组长用人=当日人数*工时占比 - assistdto.setGroupleaderQty(new BigDecimal(manQty.getGroupleaderQty()) + assistdto.setGroupleaderQty(new BigDecimal(manQty.getGroupleaderQty()==null?0L:manQty.getGroupleaderQty()) .multiply(new BigDecimal(assistdto.getHourRatio().replace("%",""))) + .multiply(new BigDecimal("0.01")) .toString() ); //组长工时=当日考勤小时数*工时占比 assistdto.setGroupLeaderHour( - groupleadeHour.multiply( - new BigDecimal(assistdto.getHourRatio().replace("%",""))).toString()); + groupleadeHour.multiply(new BigDecimal(assistdto.getHourRatio().replace("%",""))) + .multiply(new BigDecimal("0.01")) + .toString() + ); //物料员用人=当日人数*工时占比 - assistdto.setMaterialQty(new BigDecimal(manQty.getMaterialQty()) + assistdto.setMaterialQty(new BigDecimal(manQty.getMaterialQty()==null?0L:manQty.getMaterialQty()) .multiply(new BigDecimal(assistdto.getHourRatio().replace("%",""))) + .multiply(new BigDecimal("0.01")) .toString() ); //物料员工时=当日考勤小时数*工时占比 assistdto.setMaterialHour( - materialHour.multiply( - new BigDecimal(assistdto.getHourRatio().replace("%",""))).toString()); + materialHour.multiply(new BigDecimal(assistdto.getHourRatio().replace("%",""))) + .multiply(new BigDecimal("0.01")) + .toString()); //药管员用人=当日人数*工时占比 - assistdto.setPillMgrQty(new BigDecimal(manQty.getPillMgrQty()) + assistdto.setPillMgrQty(new BigDecimal(manQty.getPillMgrQty()==null?0L:manQty.getPillMgrQty()) .multiply(new BigDecimal(assistdto.getHourRatio().replace("%",""))) + .multiply(new BigDecimal("0.01")) .toString() ); //药管员工时=当日考勤小时数*工时占比 assistdto.setPillMgrHour( - pillMgrHour.multiply(new BigDecimal(assistdto.getHourRatio().replace("%",""))).toString()); + pillMgrHour.multiply(new BigDecimal(assistdto.getHourRatio().replace("%",""))) + .multiply(new BigDecimal("0.01")) + .toString()); //配药员用人=当日人数*工时占比 - assistdto.setPillDisQty(new BigDecimal(manQty.getPillDisQty()) + assistdto.setPillDisQty(new BigDecimal(manQty.getPillDisQty()==null?0L:manQty.getPillDisQty()) .multiply(new BigDecimal(assistdto.getHourRatio().replace("%",""))) + .multiply(new BigDecimal("0.01")) .toString() ); - //配药员工时=当日考勤小时数/线体数 + //配药员工时=当日考勤小时数*工时占比 assistdto.setPillDisHour( - pillDisHour.multiply( - new BigDecimal(assistdto.getHourRatio().replace("%",""))).toString()); + pillDisHour.multiply(new BigDecimal(assistdto.getHourRatio().replace("%",""))) + .multiply(new BigDecimal("0.01")) + .toString()); } } } @@ -225,7 +237,7 @@ public class MesLineAssistantQtyServiceImpl implements IMesLineAssistantQtyServi .toString() ); } - + //最后一行 MesLineAssistantQtyVo assistdto0 = new MesLineAssistantQtyVo(); //assistdto0.setProductDate(dtos.get(0).getProductDate()); //assistdto0.setFactoryCode(dtos.get(0).getFactoryCode()); @@ -238,16 +250,16 @@ public class MesLineAssistantQtyServiceImpl implements IMesLineAssistantQtyServi monitorHour.add(groupleadeHour).add(materialHour).add(pillMgrHour).add(pillDisHour).toString() ); MesLineAssistantQty manQty = assistMaps.get(mesLineAssistant.getProductDateStr()); - assistdto0.setMonitorQty(manQty.getMonitorQty().toString()); - assistdto0.setMonitorHour(monitorHour.toString()); - assistdto0.setGroupleaderQty(manQty.getGroupleaderQty().toString()); - assistdto0.setGroupLeaderHour(groupleadeHour.toString()); - assistdto0.setMaterialQty(manQty.getMaterialQty().toString()); - assistdto0.setMaterialHour(materialHour.toString()); - assistdto0.setPillMgrQty(manQty.getPillMgrQty().toString()); - assistdto0.setPillMgrHour(pillMgrHour.toString()); - assistdto0.setPillDisQty(manQty.getPillDisQty().toString()); - assistdto0.setPillDisHour(pillDisHour.toString()); + assistdto0.setMonitorQty(manQty.getMonitorQty()==null?"0":manQty.getMonitorQty().toString()); + assistdto0.setMonitorHour(monitorHour==null?"0":monitorHour.toString()); + assistdto0.setGroupleaderQty(manQty.getGroupleaderQty()==null?"0":manQty.getGroupleaderQty().toString()); + assistdto0.setGroupLeaderHour(groupleadeHour==null?"0":groupleadeHour.toString()); + assistdto0.setMaterialQty(manQty.getMaterialQty()==null?"0":manQty.getMaterialQty().toString()); + assistdto0.setMaterialHour(materialHour==null?"0":materialHour.toString()); + assistdto0.setPillMgrQty(manQty.getPillMgrQty()==null?"0":manQty.getPillMgrQty().toString()); + assistdto0.setPillMgrHour(pillMgrHour==null?"0":pillMgrHour.toString()); + assistdto0.setPillDisQty(manQty.getPillDisQty()==null?"0":manQty.getPillDisQty().toString()); + assistdto0.setPillDisHour(pillDisHour==null?"0":pillDisHour.toString()); dtos.add(assistdto0); if(StringUtils.isNotBlank(mesLineAssistant.getLineCode())){ dtos = dtos.stream().filter(dto ->(dto.getLineCode().equals(mesLineAssistant.getLineCode()))) diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java index 707bd226a..6a52c0147 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java @@ -5,6 +5,7 @@ import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; +import java.time.YearMonth; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -864,4 +865,34 @@ public class QcStaticTableController extends BaseController { } } } + @Log(title = "白坯不良率报表--表头", businessType = BusinessType.QUERY) + @GetMapping("/getMonthOfDateTitle") + public List getMonthOfDateTitle(QcStaticTable qcStaticTable) { + return qcStaticTableService.getDaysOfMonth(qcStaticTable); + } + @Log(title = "白坯不良率报表--数表", businessType = BusinessType.QUERY) + @GetMapping("/getMonthOfData") + public List> getMonthOfData(QcStaticTable qcStaticTable) { + return qcStaticTableService.getMonthOfData(qcStaticTable); + } + @Log(title = "白坯不良率报表--图表", businessType = BusinessType.QUERY) + @GetMapping("/getMonthOfLine") + public List getMonthOfLine(QcStaticTable qcStaticTable) { + return qcStaticTableService.getMonthOfLine(qcStaticTable); + } + @Log(title = "白坯返工率报表--数表", businessType = BusinessType.QUERY) + @GetMapping("/getMonthOfDataRework") + public List> getMonthOfDataRework(QcStaticTable qcStaticTable) { + return qcStaticTableService.getMonthOfDataRework(qcStaticTable); + } + @Log(title = "白坯返工率报表--图表", businessType = BusinessType.QUERY) + @GetMapping("/getMonthOfLineRework") + public List getMonthOfLineRework(QcStaticTable qcStaticTable) { + return qcStaticTableService.getMonthOfLineRework(qcStaticTable); + } + @Log(title = "白坯缺陷排列报表--数表", businessType = BusinessType.QUERY) + @GetMapping("/getMonthOfDataDefect") + public List> getMonthOfDataDefect(QcStaticTable qcStaticTable) { + return qcStaticTableService.getMonthOfDataDefect(qcStaticTable); + } } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcProCheck.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcProCheck.java index 78086ded2..022c09c69 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcProCheck.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcProCheck.java @@ -86,9 +86,26 @@ public class QcProCheck extends BaseEntity { private String passRate; private String chartType; - private String quality; private String okQuality; private String shiftId; + private String quality; + private int qualityNook; + + public String getQuality() { + return quality; + } + + public void setQuality(String quality) { + this.quality = quality; + } + + public int getQualityNook() { + return qualityNook; + } + + public void setQualityNook(int qualityNook) { + this.qualityNook = qualityNook; + } public String getShiftId() { return shiftId; @@ -106,14 +123,6 @@ public class QcProCheck extends BaseEntity { this.okQuality = okQuality; } - public String getQuality() { - return quality; - } - - public void setQuality(String quality) { - this.quality = quality; - } - public String getChartType() { return chartType; } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcStaticTable.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcStaticTable.java index c35490f02..d8f534655 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcStaticTable.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcStaticTable.java @@ -121,6 +121,24 @@ public class QcStaticTable extends BaseEntity { private String lineCode; private String lineName; private String checkTypeName; + private String sampleQty; + private String noOkQty; + + public String getSampleQty() { + return sampleQty; + } + + public void setSampleQty(String sampleQty) { + this.sampleQty = sampleQty; + } + + public String getNoOkQty() { + return noOkQty; + } + + public void setNoOkQty(String noOkQty) { + this.noOkQty = noOkQty; + } public String getCheckTypeName() { return checkTypeName; diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcStaticTableMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcStaticTableMapper.java index c7ecf8dee..26640e90c 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcStaticTableMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcStaticTableMapper.java @@ -119,4 +119,20 @@ public interface QcStaticTableMapper { Map getDLDataDay(QcCPKInfo qcCPKInfo); List getXJCheckTableDetailList(QcStaticTable qcStaticTable); + + List getBPpMaterials(QcStaticTable qcStaticTable); + @MapKey("ymdms") + Map getBPNoOkMap(QcStaticTable qcStaticTable); + @MapKey("ymdms") + Map getBPSumNoOkMap(QcStaticTable qcStaticTable); + @MapKey("ymdms") + Map getBPReworkMap(QcStaticTable qcStaticTable); + @MapKey("ymdms") + Map getBPSumReworkMap(QcStaticTable qcStaticTable); + + List getBpDefects(QcStaticTable qcStaticTable); + @MapKey("ymdms") + Map getBPDefectMap(QcStaticTable qcStaticTable); + @MapKey("ymdms") + Map getSampMap(QcStaticTable qcStaticTable); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcStaticTableService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcStaticTableService.java index cadb129cb..9c375f1c5 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcStaticTableService.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcStaticTableService.java @@ -77,4 +77,13 @@ public interface IQcStaticTableService { List getProdLineList(); List getXJCheckTableDetailList(QcStaticTable qcStaticTable); + + List getDaysOfMonth(QcStaticTable qcStaticTable); + List> getMonthOfData(QcStaticTable qcStaticTable); + List getMonthOfLine(QcStaticTable qcStaticTable); + + List> getMonthOfDataRework(QcStaticTable qcStaticTable); + List getMonthOfLineRework(QcStaticTable qcStaticTable); + + List> getMonthOfDataDefect(QcStaticTable qcStaticTable); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskDetailServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskDetailServiceImpl.java index cc3d825ae..7b0f9b28f 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskDetailServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskDetailServiceImpl.java @@ -138,7 +138,7 @@ public class QcCheckTaskDetailServiceImpl implements IQcCheckTaskDetailService { return qcCheckTaskDetailMapper.deleteQcCheckTaskDetailByRecordId(recordId); } - /**质量检验任务提醒,一小时后微信二次发送**/ + /**质量检验任务提醒,2小时后微信再发送一次提醒未检验(成品检验除外)**/ @Override public AjaxResult resendWXTask() { @@ -154,7 +154,7 @@ public class QcCheckTaskDetailServiceImpl implements IQcCheckTaskDetailService { new LinkedBlockingQueue()); try { dateSources.forEach(dateSource -> { - logger.info("++++++++++++" + dateSource.get("poolName") + "++++质量检验任务提醒,一小时后微信二次发送开始++++++++++"); + logger.info("++++++++++++" + dateSource.get("poolName") + "++++质量检验任务二次提醒,2小时后微信二次发送开始++++++++++"); Runnable run = () -> resendWXFunc(dateSource.get("poolName")); executorService.execute(run); }); @@ -173,8 +173,8 @@ public class QcCheckTaskDetailServiceImpl implements IQcCheckTaskDetailService { //发企业微信--------------------开始 SysNoticeGroup noticeQo = new SysNoticeGroup(); //筛选成品检验 id 7 - List noCheckListCP = noCheckList.stream().filter(condition -> condition.getCheckType().equals("checkTypeCP")).collect(Collectors.toList()); - String CP = StringUtils.join(noCheckListCP.stream().map(QcCheckReportIncome::getCheckNo).collect(Collectors.toList()).toArray(),","); +// List noCheckListCP = noCheckList.stream().filter(condition -> condition.getCheckType().equals("checkTypeCP")).collect(Collectors.toList()); +// String CP = StringUtils.join(noCheckListCP.stream().map(QcCheckReportIncome::getCheckNo).collect(Collectors.toList()).toArray(),","); //批次成品检验 id 12 List noCheckListCPPC = noCheckList.stream().filter(condition -> condition.getCheckType().equals("checkTypeCPPC")).collect(Collectors.toList()); String CPPC = StringUtils.join(noCheckListCPPC.stream().map(QcCheckReportIncome::getCheckNo).collect(Collectors.toList()).toArray(),","); @@ -188,10 +188,10 @@ public class QcCheckTaskDetailServiceImpl implements IQcCheckTaskDetailService { List noCheckListSC = noCheckList.stream().filter(condition -> condition.getCheckType().equals("checkTypeSC")).collect(Collectors.toList()); String SC = StringUtils.join(noCheckListSC.stream().map(QcCheckReportIncome::getCheckNo).collect(Collectors.toList()).toArray(),","); - if(noCheckListCP != null || noCheckListCP.size() > 0) { - noticeQo.setNoticeId(7L); - sendWeChartMessage(noticeQo,CP,noCheckListCP.size()+"个成品检验",noCheckListCP); - } +// if(noCheckListCP != null || noCheckListCP.size() > 0) { +// noticeQo.setNoticeId(7L); +// sendWeChartMessage(noticeQo,CP,noCheckListCP.size()+"个成品检验",noCheckListCP); +// } if(noCheckListCPPC != null || noCheckListCPPC.size() > 0){ noticeQo.setNoticeId(12L); sendWeChartMessage(noticeQo,CPPC,noCheckListCPPC.size()+"个批次成品检验",noCheckListCPPC); diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java index 4d3819493..5aef17828 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java @@ -1,6 +1,7 @@ package com.op.quality.service.impl; import java.math.BigDecimal; +import java.math.BigInteger; import java.math.RoundingMode; import java.text.DateFormat; import java.text.ParseException; @@ -1393,6 +1394,268 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { return qcStaticTableMapper.getXJCheckTableDetailList(qcStaticTable); } + @Override + public List getDaysOfMonth(QcStaticTable qcStaticTable) { + return getDaysOfMonth(Integer.parseInt(qcStaticTable.getYearMonth().split("-")[0]), + Integer.parseInt(qcStaticTable.getYearMonth().split("-")[1]) + ); + } + @Override + @DS("#header.poolName") + public List> getMonthOfData(QcStaticTable qcStaticTable) { + List> dtos = new ArrayList<>(); + //获取白坯种类 + List bpMaterials = qcStaticTableMapper.getBPpMaterials(qcStaticTable); + Map sampMaps = qcStaticTableMapper.getBPNoOkMap(qcStaticTable); + List days = getDaysOfMonth(Integer.parseInt(qcStaticTable.getYearMonth().split("-")[0]), + Integer.parseInt(qcStaticTable.getYearMonth().split("-")[1])); + //List itemNames = new ArrayList(Arrays.asList("抽检数","不良品数","不良率%")); + Map dto1,dto2,dto3 = null; + for(QcStaticTable bpMaterial:bpMaterials){ + dto1 = new HashMap<>(); + dto1.put("materialName",bpMaterial.getMaterialName()); + dto1.put("dataType","抽检数"); + for(int m=0;m(); + dto2.put("materialName",bpMaterial.getMaterialName()); + dto2.put("dataType","不良品数"); + for(int m=0;m(); + dto3.put("materialName",bpMaterial.getMaterialName()); + dto3.put("dataType","不良率%"); + for(int m=0;m getMonthOfLine(QcStaticTable qcStaticTable) { + List dtos = new ArrayList<>(); + Map sampMaps = qcStaticTableMapper.getBPSumNoOkMap(qcStaticTable); + List days = getDaysOfMonth(Integer.parseInt(qcStaticTable.getYearMonth().split("-")[0]), + Integer.parseInt(qcStaticTable.getYearMonth().split("-")[1])); + QcStaticTable dto = null; + for(int m=0;m> getMonthOfDataRework(QcStaticTable qcStaticTable) { + List> dtos = new ArrayList<>(); + //获取白坯种类 + List bpMaterials = qcStaticTableMapper.getBPpMaterials(qcStaticTable); + Map sampMaps = qcStaticTableMapper.getBPReworkMap(qcStaticTable); + List days = getDaysOfMonth(Integer.parseInt(qcStaticTable.getYearMonth().split("-")[0]), + Integer.parseInt(qcStaticTable.getYearMonth().split("-")[1])); + //List itemNames = new ArrayList(Arrays.asList("抽检数","不良品数","不良率%")); + Map dto1,dto2,dto3 = null; + for(QcStaticTable bpMaterial:bpMaterials){ + dto1 = new HashMap<>(); + dto1.put("materialName",bpMaterial.getMaterialName()); + dto1.put("dataType","抽检次数"); + for(int m=0;m(); + dto2.put("materialName",bpMaterial.getMaterialName()); + dto2.put("dataType","返工次数"); + for(int m=0;m(); + dto3.put("materialName",bpMaterial.getMaterialName()); + dto3.put("dataType","返工率%"); + for(int m=0;m getMonthOfLineRework(QcStaticTable qcStaticTable) { + List dtos = new ArrayList<>(); + Map sampMaps = qcStaticTableMapper.getBPSumReworkMap(qcStaticTable); + List days = getDaysOfMonth(Integer.parseInt(qcStaticTable.getYearMonth().split("-")[0]), + Integer.parseInt(qcStaticTable.getYearMonth().split("-")[1])); + QcStaticTable dto = null; + for(int m=0;m> getMonthOfDataDefect(QcStaticTable qcStaticTable) { + List> dtos = new ArrayList<>(); + //获取不良种类 + List bpDefects = qcStaticTableMapper.getBpDefects(qcStaticTable); + Map defectMaps = qcStaticTableMapper.getBPDefectMap(qcStaticTable); + List days = getDaysOfMonth(Integer.parseInt(qcStaticTable.getYearMonth().split("-")[0]), + Integer.parseInt(qcStaticTable.getYearMonth().split("-")[1])); + Map dto1 = null; + for(String defectName:bpDefects){ + dto1 = new HashMap<>(); + dto1.put("dataType",defectName); + BigDecimal rowSum= BigDecimal.ZERO; + for(int m=0;m dto2 = this.getHJRow(dtos,days.size()); + dtos.add(dto2); + } + //抽样数行 + Map sampMaps = qcStaticTableMapper.getSampMap(qcStaticTable); + Map dto3 = this.getSampRow(days,sampMaps); + dtos.add(dto3); + return dtos; + } + protected Map getHJRow(List> dtos,int days){ + Map dto2 = new HashMap<>(); + dto2.put("dataType","合计"); + for(int day=1;day<=days;day++){ + int daym =day; + dto2.put("monthNum"+day,dtos.stream() + .map(map -> map.get("monthNum"+daym)) + .filter(numStr -> numStr != null) + .mapToDouble(numStr -> { + try { + return Double.parseDouble(numStr); + } catch (NumberFormatException e) { + System.err.println("无法将 " + numStr + " 转换为数字,跳过该元素。"); + return 0; + } + }) + .sum()+""); + } + dto2.put("rowSum",dtos.stream() + .map(map -> map.get("rowSum")) + .filter(numStr -> numStr != null) + .mapToDouble(numStr -> { + try { + return Double.parseDouble(numStr); + } catch (NumberFormatException e) { + System.err.println("无法将 " + numStr + " 转换为数字,跳过该元素。"); + return 0; + } + }) + .sum()+""); + return dto2; + } + protected Map getSampRow(List days,Map sampMaps){ + Map dto3 = new HashMap<>(); + dto3.put("dataType","抽样数"); + BigDecimal rowSum= BigDecimal.ZERO; + for(int m=0;m getMonthByMonth(String startM,String endM){ YearMonth start = YearMonth.of(Integer.parseInt(startM.split("-")[0]), Integer.parseInt(startM.split("-")[1])); @@ -1425,6 +1688,7 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { return dateList; } + public static void main(String args[]){ String ymd = "1、0.4016"; System.out.println(ymd.substring(2)); diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDetailMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDetailMapper.xml index 69bf93505..f8692804e 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDetailMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDetailMapper.xml @@ -208,8 +208,9 @@ confirm_time as confirmTime from qc_check_task where del_flag = '0' - and check_status = '0' - and datediff( hour, create_time,CONVERT(varchar(10),GETDATE())) > 1 + and check_status = '0' and check_type != 'checkTypeCC' + and datediff( hour, create_time,CONVERT(varchar(10),GETDATE())) >= 2 + and create_time > DATEADD(DAY, -1, CAST(GETDATE() AS DATE)) and confirm_time is null diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcProCheckMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcProCheckMapper.xml index 168564995..651c6065f 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcProCheckMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcProCheckMapper.xml @@ -131,6 +131,9 @@ isqua, file_id, + quality, + quality_nook, + #{rfid}, @@ -160,6 +163,8 @@ #{updateTime}, #{isqua}, #{fileId}, + #{quality}, + #{qualityNook}, diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcStaticTableMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcStaticTableMapper.xml index d67118ca1..fbac3aaba 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcStaticTableMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcStaticTableMapper.xml @@ -1035,5 +1035,161 @@ and #{incomeTimeEnd} > CONVERT(varchar(30),qct.income_time, 120) order by qct.order_no,qct.income_batch_no,pow.product_date desc + + + + + + + + +