diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesLineController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesLineController.java index a36a6e880..fc4e81ad4 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesLineController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesLineController.java @@ -139,6 +139,7 @@ public class MesLineController extends BaseController { excelCols.add(new ExcelCol("标准用人", "useMan", 20)); excelCols.add(new ExcelCol("标准效率", "efficiency", 20)); excelCols.add(new ExcelCol("标准工时", "attr1", 20)); + excelCols.add(new ExcelCol("标准效率(PC/H)", "hourEfficiency", 20)); String titleName = "线体产品信息导入"; SXSSFWorkbook workbook = null; try { diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesLine.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesLine.java index 96a59ba92..97ae9ce69 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesLine.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesLine.java @@ -47,7 +47,8 @@ public class MesLine extends BaseEntity { */ @Excel(name = "标准效率") private BigDecimal efficiency; - + @Excel(name = "标准效率(PC/H)") + private BigDecimal hourEfficiency; /** * 检验工具 */ @@ -83,6 +84,14 @@ public class MesLine extends BaseEntity { private BigDecimal standarXl;//标准效率 private BigDecimal actXl;//实际效率 + public BigDecimal getHourEfficiency() { + return hourEfficiency; + } + + public void setHourEfficiency(BigDecimal hourEfficiency) { + this.hourEfficiency = hourEfficiency; + } + public String getProductCode() { return productCode; } diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesLineMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesLineMapper.xml index 6815cce65..1159895cf 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesLineMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesLineMapper.xml @@ -108,6 +108,7 @@ product_name, use_man, efficiency, + hour_efficiency, attr1, attr2, attr3, @@ -126,6 +127,7 @@ #{productName}, #{useMan}, #{efficiency}, + #{hourEfficiency}, #{attr1}, #{attr2}, #{attr3}, @@ -146,6 +148,7 @@ use_man = #{useMan}, efficiency = #{efficiency}, + hour_efficiency= #{hourEfficiency}, attr1 = #{attr1}, attr2 = #{attr2}, attr3 = #{attr3}, @@ -164,6 +167,7 @@ use_man = #{useMan}, efficiency = #{efficiency}, + hour_efficiency= #{hourEfficiency}, attr1 = #{attr1}, attr2 = #{attr2}, attr3 = #{attr3}, diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml index 2129a115d..ba186b9d0 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml @@ -681,7 +681,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" pow.quantity_split quantitySplit, pow.attr3 teamLeaderName, mlp.use_man manStandard, - mlp.efficiency efficiency, + mlp.hour_efficiency efficiency, mlp.attr1 unitWorkingHours, pow.workorder_code workorderCode, pow.workorder_name workorderName, diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcInterfaceController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcInterfaceController.java index 0a7b00e23..80bcf72e2 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcInterfaceController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcInterfaceController.java @@ -46,7 +46,7 @@ public class QcInterfaceController { } /** - * 来料--异常分布 + * 巡检--异常分布 * * @param qcInterface * @return @@ -56,6 +56,17 @@ public class QcInterfaceController { return qcInterfaceService.getCheckProjectsPie(qcInterface); } + /** + * 来料--异常分布 + * + * @param qcInterface + * @return + */ + @PostMapping("/getCheckProjectsPieLL") + public List getCheckProjectsPieLL(@RequestBody QcInterface qcInterface) { + return qcInterfaceService.getCheckProjectsPieLL(qcInterface); + } + /** * 来料--供应商来料订单批次不良详情 * 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 1a3bb13ed..130dfc2cf 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 @@ -22,6 +22,7 @@ import com.op.system.api.domain.quality.FactoryDto; import org.apache.commons.lang.StringUtils; import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; @@ -72,7 +73,29 @@ public class QcStaticTableController extends BaseController { } startPage(); List list = qcStaticTableService.selectQcStaticTableList(qcStaticTable); - return getDataTable(list); + if(!CollectionUtils.isEmpty(list)){ + return getDataTable(list); + } + return null; + } + + @PostMapping("/getIncomeChartList") + @Log(title = "供应商质量统计图表", businessType = BusinessType.QUERY) + public List getIncomeChartList(@RequestBody QcStaticTable qcStaticTable) { + if (StringUtils.isNotBlank(qcStaticTable.getSupplierCode())) { + List codes = Arrays.asList(qcStaticTable.getSupplierCode().split(",")); + qcStaticTable.setSupplierCodes(codes); + } + //默认时间范围T 00:00:00~T+1 00:00:00 + if (StringUtils.isEmpty(qcStaticTable.getYearMonth())) { + LocalDate date = LocalDate.now(); + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM"); + String ymStr = dtf.format(date); + qcStaticTable.setYearMonth(ymStr);//end + } + startPage(); + List list = qcStaticTableService.getIncomeChartList(qcStaticTable); + return list; } @RequiresPermissions("quality:qcTableIncome:list") @@ -506,4 +529,16 @@ public class QcStaticTableController extends BaseController { public List getTableHzNoOkData(@RequestBody QcStaticTable qcStaticTable) { return qcStaticTableService.getTableHzNoOkData(qcStaticTable); } + /** + * 检验分析报表--首检不良趋势图 + **/ + + @PostMapping("/getTableHzDataSC") + public List getTableHzDataSC(@RequestBody QcStaticTable qcStaticTable) { + return qcStaticTableService.getTableHzDataSC(qcStaticTable); + } + @PostMapping("/getTableHzNoOkDataSC") + public List getTableHzNoOkDataSC(@RequestBody QcStaticTable qcStaticTable) { + return qcStaticTableService.getTableHzNoOkDataSC(qcStaticTable); + } } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcInterface.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcInterface.java index 908cfe8f1..828514934 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcInterface.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcInterface.java @@ -53,6 +53,15 @@ public class QcInterface extends BaseEntity { private List dataBarArrays; private List dataLineArrays; private String equipmentTypeCode; + private String checkType; + + public String getCheckType() { + return checkType; + } + + public void setCheckType(String checkType) { + this.checkType = checkType; + } public String getEquipmentTypeCode() { return equipmentTypeCode; 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 ac22c1fe4..aa3f91bbc 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 @@ -41,6 +41,7 @@ public class QcStaticTable extends BaseEntity { private String typeCode; private String checkResult; private String noOkBatchRate; + private Double noOkBatchRateVal; private String shiftId; private String ymArrayStart; private String ymArrayEnd; @@ -114,6 +115,14 @@ public class QcStaticTable extends BaseEntity { private List columns1; private List columns2; + public Double getNoOkBatchRateVal() { + return noOkBatchRateVal; + } + + public void setNoOkBatchRateVal(Double noOkBatchRateVal) { + this.noOkBatchRateVal = noOkBatchRateVal; + } + public String getYmdUntype() { return ymdUntype; } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcInterfaceMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcInterfaceMapper.java index a125d650c..6121e3e04 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcInterfaceMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcInterfaceMapper.java @@ -51,4 +51,6 @@ public interface QcInterfaceMapper { Map getLineChartsDatas(QcInterface qcInterface); QcInterface getProduceHz1(QcInterface qcInterface); + + List getCheckProjectsPieLL(QcInterface qcInterface); } 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 02e1b577c..7c39eb6db 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 @@ -93,4 +93,10 @@ public interface QcStaticTableMapper { List getTableHzNoOkData(QcStaticTable qcStaticTable); @MapKey("ymdms") Map getNoOkRatioNum(QcStaticTable qcStaticTable); + @MapKey("ymdms") + Map getSamplesPCNum(QcStaticTable qcStaticTable); + @MapKey("ymdUntype") + Map getNoOkPCNum(QcStaticTable qcStaticTable); + + List getTableHzNoOkDataSC(QcStaticTable qcStaticTable); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcInterfaceService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcInterfaceService.java index ddf9d41ce..7059b0ef0 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcInterfaceService.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcInterfaceService.java @@ -38,4 +38,5 @@ public interface IQcInterfaceService { QcLineChartDto getLineQcData(QcInterface qcInterface); + List getCheckProjectsPieLL(QcInterface qcInterface); } 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 b9134bf62..e72c34567 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 @@ -56,4 +56,10 @@ public interface IQcStaticTableService { List getTableHzData(QcStaticTable qcStaticTable); List getTableHzNoOkData(QcStaticTable qcStaticTable); + + List getTableHzDataSC(QcStaticTable qcStaticTable); + + List getTableHzNoOkDataSC(QcStaticTable qcStaticTable); + + List getIncomeChartList(QcStaticTable qcStaticTable); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcInterfaceServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcInterfaceServiceImpl.java index 321d0a739..114426714 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcInterfaceServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcInterfaceServiceImpl.java @@ -3,10 +3,11 @@ package com.op.quality.service.impl; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.StringUtils; import com.op.quality.domain.*; import com.op.quality.mapper.QcInterfaceMapper; +import com.op.quality.mapper.QcStaticTableMapper; import com.op.quality.service.IQcInterfaceService; -import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -29,6 +30,8 @@ import java.util.*; public class QcInterfaceServiceImpl implements IQcInterfaceService { @Autowired private QcInterfaceMapper qcInterfaceMapper; + @Autowired + private QcStaticTableMapper qcStaticTableMapper; @Override public List getDictData(QcInterface qcInterface) { @@ -42,37 +45,47 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService { String nowYMD = DateUtils.getDate(); qcInterface.setYmd(nowYMD); -//发布会 -// List dtos = qcInterfaceMapper.getOverallInfo(qcInterface); -// if (!CollectionUtils.isEmpty(dtos) && dtos.size() == 2) { -// QcInterface qif = new QcInterface(); -// qif.setYmdTypeName("okRate"); -// if (dtos.get(1).getQuality().equals("0")) { -// qif.setQuality("100%"); -// } else { -// BigDecimal okRate = (new BigDecimal(dtos.get(0).getQuality()) -// .subtract(new BigDecimal(dtos.get(1).getQuality()))) -// .multiply(new BigDecimal("100")) -// .divide(new BigDecimal(dtos.get(0).getQuality()), 2, RoundingMode.HALF_UP); -// qif.setQuality(okRate.toString() + "%"); -// } -// dtos.add(qif); -// } - /**质量看板测试开始**/ - List dtos = new ArrayList<>(); - QcInterface qi0 = new QcInterface(); - qi0.setYmdTypeName("all"); - qi0.setQuality("33"); - dtos.add(qi0); - QcInterface qi1 = new QcInterface(); - qi1.setYmdTypeName("unOk"); - qi1.setQuality("0"); - dtos.add(qi1); - QcInterface qi2 = new QcInterface(); - qi2.setYmdTypeName("okRate"); - qi2.setQuality("100%"); - dtos.add(qi2); - /**质量看板测试结束**/ + qcInterface.setTypeCode("checkTypeLL"); + List dtos = qcInterfaceMapper.getOverallInfo(qcInterface); + if (!CollectionUtils.isEmpty(dtos)) { + QcInterface qi0 = new QcInterface(); + qi0.setYmdTypeName("all"); + qi0.setQuality(dtos.get(0).getQuality()); + dtos.add(qi0); + QcInterface qi1 = new QcInterface(); + qi1.setYmdTypeName("unOk"); + qi1.setQuality(dtos.get(0).getNoOkQuality()); + dtos.add(qi1); + QcInterface qif = new QcInterface(); + qif.setYmdTypeName("okRate"); + if (dtos.get(0).getNoOkQuality().equals("0.00")) { + qif.setQuality("100%"); + } else { + BigDecimal okRate = (new BigDecimal(dtos.get(0).getQuality()) + .subtract(new BigDecimal(dtos.get(0).getNoOkQuality()))) + .multiply(new BigDecimal("100")) + .divide(new BigDecimal(dtos.get(0).getQuality()), 2, RoundingMode.HALF_UP); + qif.setQuality(okRate.toString() + "%"); + } + dtos.add(qif); + dtos.remove(0); + }else{ + + } +// /**质量看板测试开始**/ +// QcInterface qi0 = new QcInterface(); +// qi0.setYmdTypeName("all"); +// qi0.setQuality("0"); +// dtos.add(qi0); +// QcInterface qi1 = new QcInterface(); +// qi1.setYmdTypeName("unOk"); +// qi1.setQuality("0"); +// dtos.add(qi1); +// QcInterface qi2 = new QcInterface(); +// qi2.setYmdTypeName("okRate"); +// qi2.setQuality("0.00%"); +// dtos.add(qi2); +// /**质量看板测试结束**/ return dtos; } @@ -86,12 +99,24 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService { return dtos; } + @Override + public List getCheckProjectsPieLL(QcInterface qcInterface) { + DynamicDataSourceContextHolder.push(qcInterface.getFactoryCode()); + + String nowYMD = DateUtils.getDate(); + qcInterface.setYmd(nowYMD); + qcInterface.setCheckType("checkTypeLL"); + List dtos = qcInterfaceMapper.getCheckProjectsPieLL(qcInterface); + return dtos; + } + @Override public List getSupplierBadTOP5(QcInterface qcInterface) { DynamicDataSourceContextHolder.push(qcInterface.getFactoryCode()); String nowYMD = DateUtils.getDate(); qcInterface.setYmd(nowYMD); + qcInterface.setCheckType("checkTypeLL"); List dtos = qcInterfaceMapper.getSupplierBadTOP5(qcInterface); return dtos; } @@ -138,68 +163,6 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService { dto.setCheckStatus("0".equals(dto.getCheckStatus()) ? "待检测" : "检测完成"); dto.setCheckResult("Y".equals(dto.getCheckResult()) ? "合格" : "不合格"); } -// /**质量看板测试开始**/ -// QcInterface q0 = new QcInterface(); -// q0.setCheckNo("20240305001"); -// q0.setIncomeBatchNo("20270122LJ20240123BBBA0G"); -// q0.setOrderNo("000800000083-1"); -// q0.setMaterialName("10小时无烟型黑蚊香(繁体)纸盒"); -// q0.setQuality("19000"); -// q0.setUnit("个"); -// q0.setSupplierName("中山市粤华包装有限公司"); -// q0.setIncomeTime("2024-03-05 00:00:00"); -// q0.setCheckTime("2024-03-05 11:32:00"); -// q0.setCheckResult("合格"); -// q0.setCheckManName("马娥章"); -// q0.setCheckName("来料检验"); -// dtos.add(q0); -// -// QcInterface q1 = new QcInterface(); -// q1.setCheckNo("20240306002"); -// q1.setIncomeBatchNo("20270122LJ20240123BCCA0F"); -// q1.setOrderNo("0008000001093-1"); -// q1.setMaterialName("依素猫狗(黄色)气雾盖"); -// q1.setQuality("5000"); -// q1.setUnit("个"); -// q1.setSupplierName("广州盛盈环保科技有限公司"); -// q1.setIncomeTime("2024-03-05 00:00:00"); -// q1.setCheckTime("2024-03-05 13:32:00"); -// q1.setCheckResult("合格"); -// q1.setCheckManName("马娥章"); -// q1.setCheckName("来料检验"); -// dtos.add(q1); -// -// QcInterface q2 = new QcInterface(); -// q2.setCheckNo("20240307002"); -// q2.setIncomeBatchNo("20270122LJ20240456BCCA0D"); -// q2.setOrderNo("0008000001193-1"); -// q2.setMaterialName("King Brand蚊片(450装)纸箱"); -// q2.setQuality("5800"); -// q2.setUnit("个"); -// q2.setSupplierName("广州市网能产品设计有限公司"); -// q2.setIncomeTime("2024-08-06 00:00:00"); -// q2.setCheckTime("2024-08-06 13:42:00"); -// q2.setCheckResult("合格"); -// q2.setCheckManName("马娥章"); -// q2.setCheckName("来料检验"); -// dtos.add(q2); -// -// QcInterface q3 = new QcInterface(); -// q3.setCheckNo("20240308001"); -// q3.setIncomeBatchNo("20270122LJ20240456BCBB0D"); -// q3.setOrderNo("0008000001203-1"); -// q3.setMaterialName("榄菊牌清香型蚊液(空白)纸箱"); -// q3.setQuality("7800"); -// q3.setUnit("个"); -// q3.setSupplierName("广州市网能产品设计有限公司"); -// q3.setCheckTime("2024-03-05 13:50:00"); -// q3.setIncomeTime("2024-08-06 00:00:00"); -// q3.setCheckResult("合格"); -// q3.setCheckManName("马娥章"); -// q3.setCheckName("来料检验"); -// dtos.add(q3); -// -// /**质量看板测试结束**/ return dtos; } @@ -398,7 +361,7 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService { List dataLine0 = new ArrayList<>();//不合格率 for (String day0 : daystr0) { QcInterface last = noOkNum.get(day0); - if (last != null) { + if (last != null&& !"0.00".equals(last.getQuality())) { dataBar0.add(last.getNoOkQuality()); BigDecimal norate0 = new BigDecimal(last.getNoOkQuality()).multiply(new BigDecimal(100)) .divide(new BigDecimal(last.getQuality()), 2, RoundingMode.HALF_UP); @@ -413,7 +376,7 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService { List dataLine1 = new ArrayList<>();//不合格率 for (String day1 : daystr1) { QcInterface now = noOkNum.get(day1); - if (now != null) { + if (now != null && !"0.00".equals(now.getQuality())) { dataBar1.add(now.getNoOkQuality()); BigDecimal norate0 = new BigDecimal(now.getNoOkQuality()).multiply(new BigDecimal(100)) .divide(new BigDecimal(now.getQuality()), 2, RoundingMode.HALF_UP); 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 9e0b332b4..0a893699a 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 @@ -118,9 +118,65 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { } } return tabledtos; -// return tabledtos.stream() -// .filter(obj -> obj.getBatchs() != 0) -// .collect(Collectors.toList()); + } + + @Override + @DS("#header.poolName") + public List getIncomeChartList(QcStaticTable qcStaticTable) { + qcStaticTable.setTypeCode("material"); + /**base_supplier**供应商**/ + List tabledtos = qcStaticTableMapper.selectQcStaticTableList(qcStaticTable); + if (CollectionUtils.isEmpty(tabledtos)) { + return null; + } + /**qc_check_task**总批数**/ + Map pcMap = qcStaticTableMapper.selectPcMap(qcStaticTable, tabledtos); + if (pcMap == null) { + return null; + } + /**qc_check_task**不合格批次数**/ + qcStaticTable.setCheckResult("N"); + Map noOkPcMap = qcStaticTableMapper.selectPcMap(qcStaticTable, tabledtos); + + + for (QcStaticTable tabledto : tabledtos) { + QcStaticTable pcdto = pcMap.get(tabledto.getSupplierCode()); + QcStaticTable numdto = noOkPcMap.get(tabledto.getSupplierCode()); + if (pcdto != null) { + //总批次 + tabledto.setBatchs(pcdto.getBatchs()); + //总数量 + tabledto.setNums(pcdto.getNums()); + } else { + tabledto.setBatchs(0); + tabledto.setNums(0); + } + if (numdto != null) { + //不合格批次 + tabledto.setNoOkBatchs(numdto.getBatchs()); + } else { + tabledto.setNoOkBatchs(0); + } + //合格批次 + int okBatchs = tabledto.getBatchs() - tabledto.getNoOkBatchs(); + tabledto.setOkBatchs(okBatchs); + //批次不良率 + if (tabledto.getBatchs() != 0) { + BigDecimal noOkBatchRate = new BigDecimal(tabledto.getNoOkBatchs()).multiply(new BigDecimal("100.00")) + .divide(new BigDecimal(tabledto.getBatchs()), BigDecimal.ROUND_CEILING) + .setScale(2, BigDecimal.ROUND_HALF_UP); + tabledto.setNoOkBatchRate(noOkBatchRate.toString() + "%"); + tabledto.setNoOkBatchRateVal(noOkBatchRate.doubleValue()); + } else { + tabledto.setNoOkBatchRate("0.00%"); + tabledto.setNoOkBatchRateVal(0.00); + } + } + tabledtos = tabledtos.stream() + .filter(pieData -> !pieData.getNoOkBatchRate().equals("0.00%")) + .sorted(Comparator.comparingDouble(QcStaticTable::getNoOkBatchRateVal).reversed()) + .collect(java.util.stream.Collectors.toList()); + return tabledtos; } /** @@ -795,15 +851,10 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { //qcStaticTable.setDataType("unqualified_remark"); qcStaticTable.setRemark(qcStaticTable.getCheckType()); List cols1 = qcStaticTableMapper.getTableHzTitle(qcStaticTable); - if(CollectionUtils.isEmpty(cols1)){ return dto; } - dto.setColumns1(cols1); -// List cols2 = qcStaticTableMapper.getTableHzTitle2(qcStaticTable); -// -// dto.setColumns2(cols2); return dto; } @@ -882,7 +933,7 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { } return days; } - + /**巡检**/ @Override @DS("#header.poolName") public List getTableHzData(QcStaticTable qcStaticTable) { @@ -935,7 +986,6 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { return dtos; } - @Override @DS("#header.poolName") public List getTableHzNoOkData(QcStaticTable qcStaticTable) { @@ -956,7 +1006,75 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { } return dtos; } + /**首检**/ + @Override + @DS("#header.poolName") + public List getTableHzDataSC(QcStaticTable qcStaticTable) { + List dtos = new ArrayList<>(); + qcStaticTable.setRemark(qcStaticTable.getCheckType()); + List noOkTyps = qcStaticTableMapper.getTableHzTitle(qcStaticTable); + //第一列日期 + List days = this.getHzDays(qcStaticTable.getIncomeTimeStr(),qcStaticTable.getYmdms()); + //抽样批次数、不合格数 + Map samples = qcStaticTableMapper.getSamplesPCNum(qcStaticTable); + if(samples.isEmpty()){ + return dtos; + } + HashMap colMap = null; + for(String col:days){ + colMap = new HashMap(); + colMap.put("timeCol",col); + String samKey = col; + QcStaticTable sampl = samples.get(samKey); + if(sampl!=null&&!sampl.getSampleQuality().equals("0.00")){ + colMap.put("sampleQuality",sampl.getSampleQuality().replaceAll("\\..*", "")); + BigDecimal noOkRate = new BigDecimal(sampl.getNoOkQuality()).multiply(new BigDecimal("100.00")) + .divide(new BigDecimal(sampl.getSampleQuality()),2, BigDecimal.ROUND_HALF_UP); + colMap.put("noOkRate",noOkRate); + }else{ + colMap.put("sampleQuality","0"); + colMap.put("noOkRate","0"); + } + //不良数(不折算) + Map noOks = qcStaticTableMapper.getNoOkPCNum(qcStaticTable); + //缺陷不良 + for(int i=0;i< noOkTyps.size();i++){ + String noOkTyp = noOkTyps.get(i); + String noOkTypeKey = col+noOkTyp; + QcStaticTable noOk = noOks.get(noOkTypeKey); + if(noOk!=null&&noOk.getNoOkQuality()!=null) { + colMap.put("col"+i, noOk.getNoOkQuality().replaceAll("\\..*", "")); + }else{ + colMap.put("col"+i, "0"); + } + } + + dtos.add(colMap); + } + + return dtos; + } + @Override + @DS("#header.poolName") + public List getTableHzNoOkDataSC(QcStaticTable qcStaticTable) { + //不良数 + List dtos = qcStaticTableMapper.getTableHzNoOkDataSC(qcStaticTable); + + BigDecimal totalNoOkQuality = BigDecimal.ZERO; + //求不良数和 + for (QcStaticTable dto : dtos) { + totalNoOkQuality = totalNoOkQuality.add(new BigDecimal(dto.getNoOkQuality())); + } + //求占比 + for (QcStaticTable dto : dtos) { + BigDecimal noOkratio = new BigDecimal(dto.getNoOkQuality()) + .divide(totalNoOkQuality,2, BigDecimal.ROUND_HALF_UP); + dto.setNoOkNumRate(noOkratio.toString()); + dto.setNoOkQuality(dto.getNoOkQuality().replaceAll("\\..*", "")); + } + return dtos; + } /****/ public List getHzDays(String timeStr,String ymd) { // 返回的日期集合 diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcInterfaceMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcInterfaceMapper.xml index 072c12706..dbe8ce651 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcInterfaceMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcInterfaceMapper.xml @@ -12,35 +12,43 @@ where dict_type = #{dictType} and status = '0' + 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 7bbeff110..99524e471 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 @@ -690,4 +690,111 @@ group by t.class_name ) t0 order by noOkQuality desc + + +