From 4f6b7c2990439d8721690e222dd4eaf2dc3d535d Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Sat, 3 Aug 2024 07:35:13 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=A8=E9=87=8F=E6=8A=A5=E8=A1=A8=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/plan/ProOrderWorkorderMapper.xml | 5 +- .../controller/QcStaticTableController.java | 162 +++++++++++++----- .../com/op/quality/domain/QcStaticTable.java | 18 ++ .../service/impl/QcDefectTypeServiceImpl.java | 18 +- .../impl/QcStaticTableServiceImpl.java | 90 ++++++---- .../quality/QcCheckTaskInventoryMapper.xml | 4 +- .../mapper/quality/QcStaticTableMapper.xml | 94 ++++++++-- 7 files changed, 294 insertions(+), 97 deletions(-) diff --git a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml index 1b34d814..8a3d93ba 100644 --- a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml +++ b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml @@ -131,8 +131,9 @@ and pow.prod_type = #{prodType} and pow.factory_code = #{factoryCode} and pow.end_flag = #{endFlag} - and CONVERT(varchar(10),pow.product_date, 120) >= - '${productDateStart}' + and CONVERT(varchar(10),pow.product_date, 120) >= '${productDateStart}' + + and pow.prod_line_code like concat('%', #{prodLineCode},'%') and '${productDateEnd}' >= CONVERT(varchar(10),pow.product_date, 120) and pow.parent_order = #{parentOrder} 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 11aa1cbf..16fd477a 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 @@ -124,11 +124,6 @@ public class QcStaticTableController extends BaseController { } - List serieDTOs = qcStaticTableService.getProduceNames(qcStaticTable); - //legendData - List pnames = serieDTOs.stream().map(u -> u.getMaterialName()).collect(Collectors.toList()); - resultdto.setLegendData(pnames); - Map seriesdtos = null; if ("ymd".equals(qcStaticTable.getDataType())) {//ymd //code->materialCode+yyyy-mm-dd @@ -139,46 +134,131 @@ public class QcStaticTableController extends BaseController { } List seriesChart = new ArrayList<>(); - for (QcStaticTable serieDTO : serieDTOs) { - ChartDTO chartDTO = new ChartDTO(); - chartDTO.setName(serieDTO.getMaterialName()); - chartDTO.setType("line"); - String keyPre = serieDTO.getMaterialCode(); - List datas = new ArrayList<>(); - for (String ymd : resultdto.getxAxis()) { - String key = keyPre + ymd; - QcStaticTable mdata = seriesdtos.get(key); - if (mdata != null) { - if (mdata.getaNoOkquality() == null) { - mdata.setaNoOkquality(new BigDecimal("0")); - } - if (mdata.getbNoOkquality() == null) { - mdata.setbNoOkquality(new BigDecimal("0")); - } - if (mdata.getcNoOkquality() == null) { - mdata.setcNoOkquality(new BigDecimal("0")); - } - if (!"0.00".equals(mdata.getSampleQuality())) { - BigDecimal defectRate = (mdata.getaNoOkquality().add(mdata.getbNoOkquality()).multiply(new BigDecimal("0.65")) - .add(mdata.getcNoOkquality()).multiply(new BigDecimal(0.35))) - .divide(new BigDecimal(mdata.getSampleQuality())) - .setScale(2, BigDecimal.ROUND_HALF_UP); - datas.add(defectRate.doubleValue()); - } else { - datas.add(0.00); - } + ChartDTO chartDTO = new ChartDTO(); + List datas = new ArrayList<>(); + for (String ymd : resultdto.getxAxis()) { + String key = ymd; + QcStaticTable mdata = seriesdtos.get(key); + if (mdata != null) { + if (mdata.getaNoOkquality() == null) { + mdata.setaNoOkquality(new BigDecimal("0")); + } + if (mdata.getbNoOkquality() == null) { + mdata.setbNoOkquality(new BigDecimal("0")); + } + if (mdata.getcNoOkquality() == null) { + mdata.setcNoOkquality(new BigDecimal("0")); + } + if (!"0.00".equals(mdata.getSampleQuality())) { + BigDecimal defectRate = (mdata.getaNoOkquality().add(mdata.getbNoOkquality()).add(mdata.getcNoOkquality())) + .divide(new BigDecimal(mdata.getSampleQuality()),2,BigDecimal.ROUND_HALF_UP) + .multiply(new BigDecimal("100.00")); + datas.add(defectRate.doubleValue()); } else { datas.add(0.00); } + + } else { + datas.add(0.00); } - chartDTO.setData(datas); - seriesChart.add(chartDTO); } + chartDTO.setData(datas); + seriesChart.add(chartDTO); resultdto.setSeries(seriesChart); return resultdto; } + /**精确到每个产品**/ +// public QcStaticTable getProduceChartData(QcStaticTable qcStaticTable) { +// QcStaticTable resultdto = new QcStaticTable(); +// //默认时间范围T 00:00:00~T+1 00:00:00 +// if (StringUtils.isEmpty(qcStaticTable.getYmArrayStart())) { +// LocalDate date = LocalDate.now(); +// DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM"); +// String ymStr = dtf.format(date); +// qcStaticTable.setYmArrayStart(ymStr); +// qcStaticTable.setYmArrayEnd(ymStr); +// } +// if (StringUtils.isNotBlank(qcStaticTable.getMaterialCode())) { +// qcStaticTable.setMaterialCode("'" + qcStaticTable.getMaterialCode().replace(",", "','") + "'"); +// } +// //xAxis; +// if (qcStaticTable.getYmArrayStart().equals(qcStaticTable.getYmArrayEnd())) { +// /**月内每日**/ +// List days = this.getXNames(qcStaticTable.getYmArrayStart() + "-01", +// qcStaticTable.getYmArrayEnd() + "-01", "ymd"); +// resultdto.setxAxis(days); +// +// qcStaticTable.setDataType("ymd"); +// qcStaticTable.setYmArrayStart(days.get(0)); +// qcStaticTable.setYmArrayEnd(days.get(days.size() - 1)); +// } else { +// /**年内各月**/ +// List months = this.getXNames(qcStaticTable.getYmArrayStart(), qcStaticTable.getYmArrayEnd(), "ym"); +// resultdto.setxAxis(months); +// +// qcStaticTable.setDataType("ym"); +// qcStaticTable.setYmArrayStart(months.get(0)); +// qcStaticTable.setYmArrayEnd(months.get(months.size() - 1)); +// } +// +// +// List serieDTOs = qcStaticTableService.getProduceNames(qcStaticTable); +// //legendData +// List pnames = serieDTOs.stream().map(u -> u.getMaterialName()).collect(Collectors.toList()); +// resultdto.setLegendData(pnames); +// +// Map seriesdtos = null; +// if ("ymd".equals(qcStaticTable.getDataType())) {//ymd +// //code->materialCode+yyyy-mm-dd +// seriesdtos = qcStaticTableService.getProduceChartData(qcStaticTable); +// } else {//ym +// //code->materialCode+yyyy-mm-dd +// seriesdtos = qcStaticTableService.getProduceChartDataYM(qcStaticTable); +// } +// +// List seriesChart = new ArrayList<>(); +// for (QcStaticTable serieDTO : serieDTOs) { +// ChartDTO chartDTO = new ChartDTO(); +// chartDTO.setName(serieDTO.getMaterialName()); +// chartDTO.setType("line"); +// String keyPre = serieDTO.getMaterialCode(); +// List datas = new ArrayList<>(); +// for (String ymd : resultdto.getxAxis()) { +// String key = keyPre + ymd; +// QcStaticTable mdata = seriesdtos.get(key); +// if (mdata != null) { +// if (mdata.getaNoOkquality() == null) { +// mdata.setaNoOkquality(new BigDecimal("0")); +// } +// if (mdata.getbNoOkquality() == null) { +// mdata.setbNoOkquality(new BigDecimal("0")); +// } +// if (mdata.getcNoOkquality() == null) { +// mdata.setcNoOkquality(new BigDecimal("0")); +// } +// if (!"0.00".equals(mdata.getSampleQuality())) { +// BigDecimal defectRate = (mdata.getaNoOkquality().add(mdata.getbNoOkquality()).multiply(new BigDecimal("0.65")) +// .add(mdata.getcNoOkquality()).multiply(new BigDecimal(0.35))) +// .divide(new BigDecimal(mdata.getSampleQuality())) +// .setScale(2, BigDecimal.ROUND_HALF_UP); +// datas.add(defectRate.doubleValue()); +// } else { +// datas.add(0.00); +// } +// +// } else { +// datas.add(0.00); +// } +// } +// chartDTO.setData(datas); +// seriesChart.add(chartDTO); +// } +// resultdto.setSeries(seriesChart); +// +// return resultdto; +// } public List getXNames(String startMonth, String endMonth, String type) { // 返回的日期集合 @@ -262,12 +342,12 @@ public class QcStaticTableController extends BaseController { public TableDataInfo getXJCheckTableList(QcStaticTable qcStaticTable) { //默认时间范围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 - } +// 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.getXJCheckTableList(qcStaticTable); return getDataTable(list); 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 554cafdf..a3618395 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 @@ -61,6 +61,7 @@ public class QcStaticTable extends BaseEntity { private String unit; @Excel(name = "抽样数量") private String sampleQuality; + private String noOkQuality; @Excel(name = "不良数量") private int noOkNums; @Excel(name = "不良比例") @@ -79,6 +80,7 @@ public class QcStaticTable extends BaseEntity { @JsonFormat(pattern = "yyyy-MM-dd") private Date incomeTime; + private String incomeTimeStr; private String checkManCode; private String checkManName; private String ruleName; @@ -109,6 +111,22 @@ public class QcStaticTable extends BaseEntity { private BigDecimal upperDiff; private BigDecimal downDiff; + public String getIncomeTimeStr() { + return incomeTimeStr; + } + + public void setIncomeTimeStr(String incomeTimeStr) { + this.incomeTimeStr = incomeTimeStr; + } + + public String getNoOkQuality() { + return noOkQuality; + } + + public void setNoOkQuality(String noOkQuality) { + this.noOkQuality = noOkQuality; + } + public String getDetailId() { return detailId; } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcDefectTypeServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcDefectTypeServiceImpl.java index aefa8f02..ea07ae0d 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcDefectTypeServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcDefectTypeServiceImpl.java @@ -126,15 +126,15 @@ public class QcDefectTypeServiceImpl implements IQcDefectTypeService { public AjaxResult updateQcDefectType(QcDefectType qcDefectType) { // 检验 - QcDefectType checkQuery = new QcDefectType(); - checkQuery.setDefectType(qcDefectType.getDefectType()); - checkQuery.setDefectSubclass(qcDefectType.getDefectSubclass()); - List check = qcDefectTypeMapper.selectQcDefectTypeList(checkQuery); - if (check.size() > 0) { - if (!check.get(0).equals(qcDefectType.getDefectCode())) { - return error(500, "不良子类已存在!修改失败!"); - } - } +// QcDefectType checkQuery = new QcDefectType(); +// checkQuery.setDefectType(qcDefectType.getDefectType()); +// checkQuery.setDefectSubclass(qcDefectType.getDefectSubclass()); +// List check = qcDefectTypeMapper.selectQcDefectTypeList(checkQuery); +// if (check.size() > 0) { +// if (!check.get(0).equals(qcDefectType.getDefectCode())) { +// return error(500, "不良子类已存在!修改失败!"); +// } +// } qcDefectType.setUpdateBy(SecurityContextHolder.getUserName()); qcDefectType.setUpdateTime(DateUtils.getNowDate()); // 插入数据库 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 61b0197b..96f0e9eb 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 @@ -85,7 +85,7 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { //合格批次 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) @@ -464,15 +464,7 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { @DS("#header.poolName") public ChartSeriesDTO getXJChartData(QcStaticTable qcStaticTable) { ChartSeriesDTO seriesDTO = new ChartSeriesDTO(); - //获取当天参与生产的车间 - List legends = qcStaticTableMapper.getLegendData(qcStaticTable); - List legendData = new ArrayList<>(); - if (!CollectionUtils.isEmpty(legends)) { - legendData = legends.stream().map(QcStaticTable::getSupplierName).collect(Collectors.toList()); - } else { - return null; - } - seriesDTO.setLegendData(legendData); + //横轴时间 qcStaticTable.setStartDateStr(qcStaticTable.getYmdms() + " 08:00:00"); qcStaticTable.setEndDateStr(qcStaticTable.getYmdms() + " 08:00:00"); @@ -482,31 +474,71 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { Map dataMap = qcStaticTableMapper.getXJMapData(qcStaticTable); List series = new ArrayList<>(); - ChartDTO serie = null; - for (QcStaticTable legend : legends) { - serie = new ChartDTO(); - serie.setName(legend.getSupplierName()); - List data = new ArrayList<>(); - for (String houreName : xAxisData) { - String key = legend.getSupplierCode() + houreName.replace("时", ""); - QcStaticTable qt = dataMap.get(key); - if (qt != null && StringUtils.isNotBlank(qt.getSampleQuality())) { - BigDecimal noOkRate = new BigDecimal(qt.getNoOkNums()) - .multiply(new BigDecimal(100)) - .divide(new BigDecimal(qt.getSampleQuality()), 2, BigDecimal.ROUND_HALF_UP); - data.add(noOkRate.doubleValue()); - } else { - data.add(0.00); - } - serie.setData(data); + ChartDTO serie = new ChartDTO(); + List data = new ArrayList<>(); + for (String houreName : xAxisData) { + String key = houreName.replace("时", ""); + QcStaticTable qt = dataMap.get(key); + if (qt != null && StringUtils.isNotBlank(qt.getSampleQuality())) { + BigDecimal noOkRate = new BigDecimal(qt.getNoOkNums()) + .multiply(new BigDecimal(100)) + .divide(new BigDecimal(qt.getSampleQuality()), 2, BigDecimal.ROUND_HALF_UP); + data.add(noOkRate.doubleValue()); + } else { + data.add(0.00); } serie.setData(data); - series.add(serie); } + serie.setData(data); + series.add(serie); seriesDTO.setSeries(series); - return seriesDTO; } +// public ChartSeriesDTO getXJChartData(QcStaticTable qcStaticTable) { +// ChartSeriesDTO seriesDTO = new ChartSeriesDTO(); +// //获取当天参与生产的车间 +// List legends = qcStaticTableMapper.getLegendData(qcStaticTable); +// List legendData = new ArrayList<>(); +// if (!CollectionUtils.isEmpty(legends)) { +// legendData = legends.stream().map(QcStaticTable::getSupplierName).collect(Collectors.toList()); +// } else { +// return null; +// } +// seriesDTO.setLegendData(legendData); +// //横轴时间 +// qcStaticTable.setStartDateStr(qcStaticTable.getYmdms() + " 08:00:00"); +// qcStaticTable.setEndDateStr(qcStaticTable.getYmdms() + " 08:00:00"); +// List xAxisData = this.getHourProductionTitle(qcStaticTable); +// seriesDTO.setxAxisData(xAxisData); +// //数据 +// Map dataMap = qcStaticTableMapper.getXJMapData(qcStaticTable); +// +// List series = new ArrayList<>(); +// ChartDTO serie = null; +// for (QcStaticTable legend : legends) { +// serie = new ChartDTO(); +// serie.setName(legend.getSupplierName()); +// List data = new ArrayList<>(); +// for (String houreName : xAxisData) { +// String key = legend.getSupplierCode() + houreName.replace("时", ""); +// QcStaticTable qt = dataMap.get(key); +// if (qt != null && StringUtils.isNotBlank(qt.getSampleQuality())) { +// BigDecimal noOkRate = new BigDecimal(qt.getNoOkNums()) +// .multiply(new BigDecimal(100)) +// .divide(new BigDecimal(qt.getSampleQuality()), 2, BigDecimal.ROUND_HALF_UP); +// data.add(noOkRate.doubleValue()); +// } else { +// data.add(0.00); +// } +// serie.setData(data); +// } +// serie.setData(data); +// series.add(serie); +// } +// seriesDTO.setSeries(series); +// +// return seriesDTO; +// } @Override @DS("#header.poolName") diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskInventoryMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskInventoryMapper.xml index 5e2ad6b3..58372c0c 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskInventoryMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskInventoryMapper.xml @@ -87,8 +87,8 @@ and qct.factory_code = #{factoryCode} and CONVERT(varchar(30),qct.income_time, 120) >= #{incomeTimeStart} and #{incomeTimeEnd} > CONVERT(varchar(30),qct.income_time, 120) - and CONVERT(varchar(30),qct.check_time, 120) >= #{checkTimeStart} - and #{checkTimeEnd} > CONVERT(varchar(30),qct.check_time, 120) + and CONVERT(varchar(30),qct.create_time, 120) >= #{checkTimeStart} + and #{checkTimeEnd} > CONVERT(varchar(30),qct.create_time, 120) and qct.check_type = #{checkType} and q.type_code = #{typeCode} 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 7757c56b..eed07247 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 @@ -56,6 +56,7 @@ group by qct.supplier_code,qct.supplier_name