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 ace2d864b..b69feb899 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 @@ -19,6 +19,7 @@ import com.op.common.core.utils.poi.ExcelMapUtil; import com.op.common.core.utils.poi.ExcelReportMapUtil; import com.op.common.core.web.domain.AjaxResult; import com.op.quality.domain.*; +import com.op.quality.domain.query.QcHWXCPBZTitleQuery; import com.op.system.api.domain.mes.ProLineDTO; import com.op.system.api.domain.quality.ChartDTO; import com.op.system.api.domain.quality.ChartSeriesDTO; @@ -1089,14 +1090,18 @@ public class QcStaticTableController extends BaseController { } } - @Log(title = "黑蚊香成品分类汇总--表头", businessType = BusinessType.QUERY) @GetMapping("/getCpDateTitle") public List getCpDateTitle(QcStaticTable qcStaticTable) { return qcStaticTableService.getCpDateTitle(qcStaticTable); } - @Log(title = "黑蚊香成品分类汇总--数据", businessType = BusinessType.QUERY) + @GetMapping("/getCpDefectDate") public List> getCpDefectDate(QcStaticTable qcStaticTable) { return qcStaticTableService.getCpDefectDate(qcStaticTable); } + + @GetMapping("/getHWXCPBZTitle") + public Map getHWXCPBZTitle(QcHWXCPBZTitleQuery qcHWXCPBZTitleQuery) { + return qcStaticTableService.getHWXCPBZTitle(qcHWXCPBZTitleQuery); + } } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/query/QcHWXCPBZTitleQuery.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/query/QcHWXCPBZTitleQuery.java new file mode 100644 index 000000000..311a6099e --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/query/QcHWXCPBZTitleQuery.java @@ -0,0 +1,13 @@ +package com.op.quality.domain.query; + +public class QcHWXCPBZTitleQuery { + private String yearMonth; + + public String getYearMonth() { + return yearMonth; + } + + public void setYearMonth(String yearMonth) { + this.yearMonth = yearMonth; + } +} 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 3918806a3..afa132524 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 @@ -1,5 +1,6 @@ package com.op.quality.mapper; +import java.math.BigDecimal; import java.util.List; import java.util.Map; @@ -165,4 +166,8 @@ public interface QcStaticTableMapper { List getBPDefectMothMapV2(QcStaticTable qcStaticTable); List getBPDefectMothPCMapV2(QcStaticTable qcStaticTable); + + List classNameMapTotal(QcStaticTable qcStaticTable); + + BigDecimal getCpDefectTypeMapabcMapsNoOkQty(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 4927ae051..881cffe68 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 @@ -5,6 +5,7 @@ import java.util.List; import java.util.Map; import com.op.quality.domain.*; +import com.op.quality.domain.query.QcHWXCPBZTitleQuery; import com.op.system.api.domain.mes.ProLineDTO; import com.op.system.api.domain.quality.ChartSeriesDTO; import com.op.system.api.domain.quality.FactoryDto; @@ -109,5 +110,5 @@ public interface IQcStaticTableService { List> getDefectItemDataV2(QcStaticTable qcStaticTable); - + Map getHWXCPBZTitle(QcHWXCPBZTitleQuery qcHWXCPBZTitleQuery); } 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 4ba3bed2f..5d90b8128 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 @@ -4,6 +4,7 @@ import java.math.BigDecimal; import java.math.BigInteger; import java.math.RoundingMode; import java.text.DateFormat; +import java.text.NumberFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; @@ -17,6 +18,7 @@ import com.alibaba.fastjson2.JSONArray; import com.baomidou.dynamic.datasource.annotation.DS; import com.op.common.core.utils.StringUtils; import com.op.quality.domain.*; +import com.op.quality.domain.query.QcHWXCPBZTitleQuery; import com.op.quality.mapper.QMSFileMapper; import com.op.system.api.domain.mes.ProLineDTO; import com.op.system.api.domain.quality.ChartDTO; @@ -2469,8 +2471,89 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { return dateList; } - public static void main(String args[]){ - String ymd = "1、0.4016"; - System.out.println(ymd.substring(2)); + @Override + @DS("#header.poolName") + public Map getHWXCPBZTitle(QcHWXCPBZTitleQuery qcHWXCPBZTitleQuery) { + Map map=new HashMap(); + map.put("ProductName","黑蚊香"); + map.put("workCenter","黑蚊香车间"); + QcStaticTable qcStaticTable =new QcStaticTable(); + qcStaticTable.setYearMonth(qcHWXCPBZTitleQuery.getYearMonth()); + //抽样总数map + Map sampMaps = qcStaticTableMapper.getCpSampMap(qcStaticTable); + BigDecimal totalQty = sampMaps.values().stream() + .map(table -> new BigDecimal(table.getSampleQty())) + .reduce(BigDecimal.ZERO, BigDecimal::add); + //不良品详细 + Map abcMaps = qcStaticTableMapper.getCpDefectTypeMap(qcStaticTable); + //不良数 = SUM(A类*1+B类*0.65+C类*0.35) + BigDecimal abcMapsNoOkQty = qcStaticTableMapper.getCpDefectTypeMapabcMapsNoOkQty(qcStaticTable); + //不良率 = (A类*1+B类*0.65+C类*0.35)/抽样总数 + BigDecimal resultabc = abcMapsNoOkQty.divide(totalQty, 4, BigDecimal.ROUND_HALF_UP); + BigDecimal OKresultabc = new BigDecimal("1").subtract(resultabc); + // 100剪掉将其转换为合格率 + // 使用NumberFormat进行格式化,保留两位小数并显示为百分比形式 + NumberFormat percentFormat = NumberFormat.getPercentInstance(); + percentFormat.setMaximumFractionDigits(2); + String percentageStr = percentFormat.format(resultabc.doubleValue()); + String OKresultabcRate = percentFormat.format(OKresultabc.doubleValue()); + //不良品总数 + BigDecimal noOKQtyTotal = abcMaps.values().stream() + .map(table -> new BigDecimal(table.getNoOkQty())) + .reduce(BigDecimal.ZERO, BigDecimal::add); + //不良品总数 + List classNameMap = qcStaticTableMapper.classNameMapTotal(qcStaticTable); + //所有不良品类 + qcStaticTable.setCheckType("checkTypeCPPC"); +// List titles = qcStaticTableMapper.getCpDefects(qcStaticTable); +// // 确保 classNameMap 不为 null +// if (classNameMap == null) { +// classNameMap = new ArrayList<>(); +// } +// +// List tempList = new ArrayList<>(); // 临时存储新增元素 + +// for (String s : titles) { +// if (s == null) { +// continue; // 跳过 null 标题 +// } +// boolean exists = false; + for (Map ma : classNameMap) { + // 安全获取 class_name(避免 null) + Object classNameObj = ma.get("class_name"); + String className = (classNameObj != null) ? classNameObj.toString() : ""; +// if (s.equals(className)) { +// exists = true; +// 1. 安全获取被除数(noOk_quality)并转为BigDecimal + BigDecimal noOkQuality = new BigDecimal(String.valueOf(ma.get("noOk_quality"))); +// 2. 确保除数(totalQty)为BigDecimal类型(假设totalQty为数值类型,如int/double) + BigDecimal totalQtyBig = new BigDecimal(String.valueOf(noOKQtyTotal)); +// 3. 执行除法(示例保留4位小数,四舍五入) + BigDecimal result = noOkQuality.divide(totalQtyBig, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"));; + ma.put("rate",result); +// break; +// } + } +// if (!exists) { +// Map newMap = new HashMap(); +// newMap.put("class_name", s); +// newMap.put("noOk_quality", new BigDecimal("0.00")); +// newMap.put("rate",new BigDecimal("0.00")); +// tempList.add(newMap); +// } +// } + +// classNameMap.addAll(tempList); // 合并新增元素 + + //抽样数、不良品数、不良率、合格率 + //不良率 = (A类*1+B类*0.65+C类*0.35)/抽样总数 + map.put("sampleQty",totalQty); + map.put("noOKQtyTotal",noOKQtyTotal); + map.put("classNameMap",classNameMap); + map.put("noOkNumRate",percentageStr); + map.put("noOkNumRate",percentageStr); + map.put("okNumRate",OKresultabcRate); + return map; } + } 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 08d737d29..43a18fbae 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 @@ -1486,5 +1486,41 @@ GROUP BY t.defectSubclass + + +