生产日报表相关

master
zhaoxiaolin 11 months ago
parent 37735eb68f
commit 379c784213

@ -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 {

@ -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;
}

@ -108,6 +108,7 @@
<if test="productName != null">product_name,</if>
<if test="useMan != null">use_man,</if>
<if test="efficiency != null">efficiency,</if>
<if test="hourEfficiency != null">hour_efficiency,</if>
<if test="attr1 != null">attr1,</if>
<if test="attr2 != null">attr2,</if>
<if test="attr3 != null">attr3,</if>
@ -126,6 +127,7 @@
<if test="productName != null">#{productName},</if>
<if test="useMan != null">#{useMan},</if>
<if test="efficiency != null">#{efficiency},</if>
<if test="hourEfficiency != null">#{hourEfficiency},</if>
<if test="attr1 != null">#{attr1},</if>
<if test="attr2 != null">#{attr2},</if>
<if test="attr3 != null">#{attr3},</if>
@ -146,6 +148,7 @@
<if test="useMan != null">use_man = #{useMan},</if>
<if test="efficiency != null">efficiency = #{efficiency},</if>
<if test="hourEfficiency != null">hour_efficiency= #{hourEfficiency},</if>
<if test="attr1 != null">attr1 = #{attr1},</if>
<if test="attr2 != null">attr2 = #{attr2},</if>
<if test="attr3 != null">attr3 = #{attr3},</if>
@ -164,6 +167,7 @@
<trim prefix="SET" suffixOverrides=",">
<if test="useMan != null">use_man = #{useMan},</if>
<if test="efficiency != null">efficiency = #{efficiency},</if>
<if test="hourEfficiency != null">hour_efficiency= #{hourEfficiency},</if>
<if test="attr1 != null">attr1 = #{attr1},</if>
<if test="attr2 != null">attr2 = #{attr2},</if>
<if test="attr3 != null">attr3 = #{attr3},</if>

@ -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,

@ -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<QcInterface> getCheckProjectsPieLL(@RequestBody QcInterface qcInterface) {
return qcInterfaceService.getCheckProjectsPieLL(qcInterface);
}
/**
* --
*

@ -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<QcStaticTable> 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<QcStaticTable> getIncomeChartList(@RequestBody QcStaticTable qcStaticTable) {
if (StringUtils.isNotBlank(qcStaticTable.getSupplierCode())) {
List<String> 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<QcStaticTable> list = qcStaticTableService.getIncomeChartList(qcStaticTable);
return list;
}
@RequiresPermissions("quality:qcTableIncome:list")
@ -506,4 +529,16 @@ public class QcStaticTableController extends BaseController {
public List<QcStaticTable> getTableHzNoOkData(@RequestBody QcStaticTable qcStaticTable) {
return qcStaticTableService.getTableHzNoOkData(qcStaticTable);
}
/**
* --
**/
@PostMapping("/getTableHzDataSC")
public List<HashMap> getTableHzDataSC(@RequestBody QcStaticTable qcStaticTable) {
return qcStaticTableService.getTableHzDataSC(qcStaticTable);
}
@PostMapping("/getTableHzNoOkDataSC")
public List<QcStaticTable> getTableHzNoOkDataSC(@RequestBody QcStaticTable qcStaticTable) {
return qcStaticTableService.getTableHzNoOkDataSC(qcStaticTable);
}
}

@ -53,6 +53,15 @@ public class QcInterface extends BaseEntity {
private List<String> dataBarArrays;
private List<String> 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;

@ -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<String> columns1;
private List<String> columns2;
public Double getNoOkBatchRateVal() {
return noOkBatchRateVal;
}
public void setNoOkBatchRateVal(Double noOkBatchRateVal) {
this.noOkBatchRateVal = noOkBatchRateVal;
}
public String getYmdUntype() {
return ymdUntype;
}

@ -51,4 +51,6 @@ public interface QcInterfaceMapper {
Map<String, QcInterface> getLineChartsDatas(QcInterface qcInterface);
QcInterface getProduceHz1(QcInterface qcInterface);
List<QcInterface> getCheckProjectsPieLL(QcInterface qcInterface);
}

@ -93,4 +93,10 @@ public interface QcStaticTableMapper {
List<QcStaticTable> getTableHzNoOkData(QcStaticTable qcStaticTable);
@MapKey("ymdms")
Map<String, QcStaticTable> getNoOkRatioNum(QcStaticTable qcStaticTable);
@MapKey("ymdms")
Map<String, QcStaticTable> getSamplesPCNum(QcStaticTable qcStaticTable);
@MapKey("ymdUntype")
Map<String, QcStaticTable> getNoOkPCNum(QcStaticTable qcStaticTable);
List<QcStaticTable> getTableHzNoOkDataSC(QcStaticTable qcStaticTable);
}

@ -38,4 +38,5 @@ public interface IQcInterfaceService {
QcLineChartDto getLineQcData(QcInterface qcInterface);
List<QcInterface> getCheckProjectsPieLL(QcInterface qcInterface);
}

@ -56,4 +56,10 @@ public interface IQcStaticTableService {
List<HashMap> getTableHzData(QcStaticTable qcStaticTable);
List<QcStaticTable> getTableHzNoOkData(QcStaticTable qcStaticTable);
List<HashMap> getTableHzDataSC(QcStaticTable qcStaticTable);
List<QcStaticTable> getTableHzNoOkDataSC(QcStaticTable qcStaticTable);
List<QcStaticTable> getIncomeChartList(QcStaticTable qcStaticTable);
}

@ -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<QcInterface> getDictData(QcInterface qcInterface) {
@ -42,37 +45,47 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
//发布会
// List<QcInterface> 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<QcInterface> 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<QcInterface> 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<QcInterface> getCheckProjectsPieLL(QcInterface qcInterface) {
DynamicDataSourceContextHolder.push(qcInterface.getFactoryCode());
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
qcInterface.setCheckType("checkTypeLL");
List<QcInterface> dtos = qcInterfaceMapper.getCheckProjectsPieLL(qcInterface);
return dtos;
}
@Override
public List<QcInterface> getSupplierBadTOP5(QcInterface qcInterface) {
DynamicDataSourceContextHolder.push(qcInterface.getFactoryCode());
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
qcInterface.setCheckType("checkTypeLL");
List<QcInterface> 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<String> 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<String> 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);

@ -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<QcStaticTable> getIncomeChartList(QcStaticTable qcStaticTable) {
qcStaticTable.setTypeCode("material");
/**base_supplier**供应商**/
List<QcStaticTable> tabledtos = qcStaticTableMapper.selectQcStaticTableList(qcStaticTable);
if (CollectionUtils.isEmpty(tabledtos)) {
return null;
}
/**qc_check_task**总批数**/
Map<String, QcStaticTable> pcMap = qcStaticTableMapper.selectPcMap(qcStaticTable, tabledtos);
if (pcMap == null) {
return null;
}
/**qc_check_task**不合格批次数**/
qcStaticTable.setCheckResult("N");
Map<String, QcStaticTable> 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<String> cols1 = qcStaticTableMapper.getTableHzTitle(qcStaticTable);
if(CollectionUtils.isEmpty(cols1)){
return dto;
}
dto.setColumns1(cols1);
// List<String> 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<HashMap> getTableHzData(QcStaticTable qcStaticTable) {
@ -935,7 +986,6 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService {
return dtos;
}
@Override
@DS("#header.poolName")
public List<QcStaticTable> getTableHzNoOkData(QcStaticTable qcStaticTable) {
@ -956,7 +1006,75 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService {
}
return dtos;
}
/**首检**/
@Override
@DS("#header.poolName")
public List<HashMap> getTableHzDataSC(QcStaticTable qcStaticTable) {
List<HashMap> dtos = new ArrayList<>();
qcStaticTable.setRemark(qcStaticTable.getCheckType());
List<String> noOkTyps = qcStaticTableMapper.getTableHzTitle(qcStaticTable);
//第一列日期
List<String> days = this.getHzDays(qcStaticTable.getIncomeTimeStr(),qcStaticTable.getYmdms());
//抽样批次数、不合格数
Map<String,QcStaticTable> 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<String,QcStaticTable> 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<QcStaticTable> getTableHzNoOkDataSC(QcStaticTable qcStaticTable) {
//不良数
List<QcStaticTable> 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<String> getHzDays(String timeStr,String ymd) {
// 返回的日期集合

@ -12,35 +12,43 @@
where dict_type = #{dictType} and status = '0'
</select>
<select id="getOverallInfo" resultType="com.op.quality.domain.QcInterface">
select count(0) quality,'all' ymdTypeName
from wms_raw_order_in
where active_flag = '1'
<if test='ymdType=="yyyy"'>
and CONVERT(varchar(4),receipt_time, 120) = SUBSTRING(#{ymd},0,5)
<if test="ymdType == 'yyyy'">
select SUM(CASE WHEN check_result = 'N' THEN 1 ELSE 0 END) noOkQuality,
count(0) quality
FROM(
select check_result
from qc_check_task qct
where check_type = #{typeCode} and check_status = '2'
and CONVERT(varchar(4),qct.create_time, 120) = SUBSTRING(#{ymd},0,5)
and del_flag = '0'
) t
</if>
<if test='ymdType=="mm"'>
and CONVERT(varchar(7),receipt_time, 120) =SUBSTRING(#{ymd},0,8)
<if test="ymdType == 'mm'">
select SUM(CASE WHEN check_result = 'N' THEN 1 ELSE 0 END) noOkQuality,
count(0) quality
FROM(
select check_result
from qc_check_task qct
where check_type = #{typeCode} and check_status = '2'
and CONVERT(varchar(7),qct.create_time, 120) = SUBSTRING(#{ymd},0,8)
and del_flag = '0'
) t
</if>
<if test='ymdType=="dd"'>
and CONVERT(varchar(10),receipt_time, 120) = SUBSTRING(#{ymd},0,11)
</if>
union ALL
select count(0),'unOk'
from qc_check_unqualified qcu
left join qc_check_type qct on qcu.type = qct.order_code
where qct.type_code = #{typeCode} and qcu.del_flag = '0'
<if test='ymdType=="yyyy"'>
and CONVERT(varchar(4),qcu.create_time, 120) = SUBSTRING(#{ymd},0,5)
</if>
<if test='ymdType=="mm"'>
and CONVERT(varchar(7),qcu.create_time, 120) = SUBSTRING(#{ymd},0,8)
</if>
<if test='ymdType=="dd"'>
and CONVERT(varchar(10),qcu.create_time, 120) = SUBSTRING(#{ymd},0,11)
<if test="ymdType == 'dd'">
select SUM(CASE WHEN check_result = 'N' THEN 1 ELSE 0 END) noOkQuality,
count(0) quality
FROM(
select check_result
from qc_check_task qct
where check_type = #{typeCode} and check_status = '2'
and CONVERT(varchar(10),qct.create_time, 120) = SUBSTRING(#{ymd},0,11)
and del_flag = '0'
) t
</if>
</select>
<select id="getCheckProjectsPie" resultType="com.op.quality.domain.QcInterface">
<!--
select count(0) quality,
qctd.project_no,
qctd.rule_name projectName
@ -56,63 +64,81 @@
<if test='ymdType=="dd"'>
and CONVERT(varchar(10),qcu.update_time, 120) = SUBSTRING(#{ymd},0,11)
</if>
group by qctd.project_no,qctd.rule_name
<!--
select qct.remark projectName,
count(0) quality
group by qctd.project_no,qctd.rule_name-->
<if test="ymdType == 'yyyy'">
select sum(noOk_quality) quality,
class_name projectName
FROM(
select
qctd.noOk_quality,
qdtc.class_name
from qc_check_task qct
where qct.type_code = 'produce' and qct.check_result = 'N' and qct.remark is not null
<if test='ymdType=="yyyy"'>
and CONVERT(varchar(4),qct.check_time, 120) = SUBSTRING(#{ymd},0,5)
</if>
<if test='ymdType=="mm"'>
and CONVERT(varchar(7),qct.check_time, 120) = SUBSTRING(#{ymd},0,8)
</if>
<if test='ymdType=="dd"'>
and CONVERT(varchar(10),qct.check_time, 120) = SUBSTRING(#{ymd},0,11)
</if>
group by qct.remark-->
left join qc_check_task_defect qctd on qctd.belong_to = qct.record_id
left join qc_defect_type_class qdtc on qctd.class_id = qdtc.id
where qct.check_type = 'checkTypeSCXJ' and qct.check_status = '2'
and CONVERT(varchar(4),qct.create_time, 120) = SUBSTRING(#{ymd},0,5)
and qdtc.del_flag = '0' and qctd.del_flag = '0'
) t
group by class_name
</if>
<if test="ymdType == 'mm'">
select sum(noOk_quality) quality,
class_name projectName
FROM(
select
qctd.noOk_quality,
qdtc.class_name
from qc_check_task qct
left join qc_check_task_defect qctd on qctd.belong_to = qct.record_id
left join qc_defect_type_class qdtc on qctd.class_id = qdtc.id
where qct.check_type = 'checkTypeSCXJ' and qct.check_status = '2'
and CONVERT(varchar(7),qct.create_time, 120) = SUBSTRING(#{ymd},0,8)
and qdtc.del_flag = '0' and qctd.del_flag = '0'
) t
group by class_name
</if>
<if test="ymdType == 'dd'">
select sum(noOk_quality) quality,
class_name projectName
FROM(
select
qctd.noOk_quality,
qdtc.class_name
from qc_check_task qct
left join qc_check_task_defect qctd on qctd.belong_to = qct.record_id
left join qc_defect_type_class qdtc on qctd.class_id = qdtc.id
where qct.check_type = 'checkTypeSCXJ' and qct.check_status = '2'
and CONVERT(varchar(10),qct.create_time, 120) = SUBSTRING(#{ymd},0,11)
and qdtc.del_flag = '0' and qctd.del_flag = '0'
) t
group by class_name
</if>
</select>
<select id="getSupplierBadTOP5" resultType="com.op.quality.domain.QcInterface">
select top 5 * from(
select
concat(t1.supplier_name,'-',t1.material_name) supplierName,
ROUND(t2.noOkNum*100.00/t1.allNum, 2) quality
from (
select count(0) allNum,
qct.supplier_code,qct.supplier_name,qct.material_code,qct.material_name
from qc_check_task qct
where qct.type_code = #{typeCode}
<if test='ymdType=="yyyy"'>
and CONVERT(varchar(4),qct.income_time, 120) = SUBSTRING(#{ymd},0,5)
</if>
<if test='ymdType=="mm"'>
and CONVERT(varchar(7),qct.income_time, 120) = SUBSTRING(#{ymd},0,8)
</if>
<if test='ymdType=="dd"'>
and CONVERT(varchar(10),qct.income_time, 120) = SUBSTRING(#{ymd},0,11)
</if>
group by
qct.supplier_code,qct.supplier_name,qct.material_code,qct.material_name
) t1
left join (
select
count(0) noOkNum,qct.supplier_code,qct.supplier_name,qct.material_code,qct.material_name
from qc_check_task qct
where qct.type_code = #{typeCode} and qct.check_result = 'N'
<if test='ymdType=="yyyy"'>
and CONVERT(varchar(4),qct.income_time, 120) = SUBSTRING(#{ymd},0,5)
</if>
<if test='ymdType=="mm"'>
and CONVERT(varchar(7),qct.income_time, 120) = SUBSTRING(#{ymd},0,8)
</if>
<if test='ymdType=="dd"'>
and CONVERT(varchar(10),qct.income_time, 120) = SUBSTRING(#{ymd},0,11)
</if>
group by
qct.supplier_code,qct.supplier_name,qct.material_code,qct.material_name
) t2 on t1.supplier_code = t2.supplier_code and t1.material_code = t2.material_code
) t order by t.quality desc
select top 5 t.* from (
select t0.noOkQuality*100/t0.batchs quality,t0.supplierName from(
SELECT
qct.supplier_code supplierCode,qct.supplier_name supplierName,
count(0) batchs,
SUM(CASE WHEN qct.check_result = 'N' THEN 1 ELSE 0 END) noOkQuality
from qc_check_task qct
where qct.check_type = #{checkType}
and qct.del_flag = '0'
<if test='ymdType=="yyyy"'>
and CONVERT(varchar(4),qct.income_time, 120) = SUBSTRING(#{ymd},0,5)
</if>
<if test='ymdType=="mm"'>
and CONVERT(varchar(7),qct.income_time, 120) = SUBSTRING(#{ymd},0,8)
</if>
<if test='ymdType=="dd"'>
and CONVERT(varchar(10),qct.income_time, 120) = SUBSTRING(#{ymd},0,11)
</if>
and qct.check_status = '2'
group by qct.supplier_code,qct.supplier_name
) t0
where t0.noOkQuality != 0
) t order by t.quality desc
</select>
<select id="getSupplierTaskList" resultType="com.op.quality.domain.QcInterface">
select
@ -251,10 +277,10 @@
sum(t.noOk_quality) noOkQuality
from(
select CONVERT(varchar(7),qct.income_time, 120) ymd,
qct.quality,
qct.sample_quality quality,
qct.noOk_quality
from qc_check_task qct
where qct.type_code = #{typeCode}
where qct.check_type = 'checkTypeSCXJ'
and qct.del_flag='0'
and CONVERT(varchar(4),qct.income_time, 120) in (${ymd})
) t
@ -297,4 +323,50 @@
and CONVERT(varchar(10),mrw.create_time, 120) = CONVERT(varchar(10),GETDATE(), 120)
</if>
</select>
<select id="getCheckProjectsPieLL" resultType="com.op.quality.domain.QcInterface">
<if test="ymdType == 'yyyy'">
select count(0) quality,
class_name projectName
FROM(
select
qct.remark_code,
qdtc.class_name
from qc_check_task qct
left join qc_defect_type_class qdtc on qct.remark_code = qdtc.id
where qct.check_type = #{checkType} and qct.check_status = '2'
and CONVERT(varchar(4),qct.create_time, 120) = SUBSTRING(#{ymd},0,5)
and qdtc.del_flag = '0' and qct.del_flag = '0'
) t
group by class_name
</if>
<if test="ymdType == 'mm'">
select count(0) quality,
class_name projectName
FROM(
select
qct.remark_code,
qdtc.class_name
from qc_check_task qct
left join qc_defect_type_class qdtc on qct.remark_code = qdtc.id
where qct.check_type = #{checkType} and qct.check_status = '2'
and CONVERT(varchar(7),qct.create_time, 120) = SUBSTRING(#{ymd},0,8)
and qdtc.del_flag = '0' and qct.del_flag = '0'
) t
group by class_name
</if>
<if test="ymdType == 'dd'">
select count(0) quality,
class_name projectName
FROM(
select qct.remark_code,
qdtc.class_name
from qc_check_task qct
left join qc_defect_type_class qdtc on qct.remark_code = qdtc.id
where qct.check_type = #{checkType} and qct.check_status = '2'
and CONVERT(varchar(10),qct.create_time, 120) = SUBSTRING(#{ymd},0,11)
and qdtc.del_flag = '0' and qct.del_flag = '0'
) t
group by class_name
</if>
</select>
</mapper>

@ -690,4 +690,111 @@
group by t.class_name
) t0 order by noOkQuality desc
</select>
<select id="getSamplesPCNum" resultType="com.op.quality.domain.QcStaticTable">
<if test="ymdms == 'yyyy'">
select SUM(CASE WHEN check_result = 'N' THEN 1 ELSE 0 END) noOkQuality,
count(0) sampleQuality,
ymdms
FROM(
select CONVERT(varchar(7),qct.create_time, 120) AS ymdms, qct.sample_quality
from qc_check_task qct
where check_type = #{checkType}
and CONVERT(varchar(4),qct.create_time, 120) = #{incomeTimeStr}
and del_flag = '0'
) t
group by ymdms
</if>
<if test="ymdms == 'mm'">
select SUM(CASE WHEN check_result = 'N' THEN 1 ELSE 0 END) noOkQuality,
count(0) sampleQuality,
ymdms
FROM(
select CONVERT(varchar(10),qct.create_time, 120) AS ymdms, check_result
from qc_check_task qct
where check_type = #{checkType}
and CONVERT(varchar(7),qct.create_time, 120) = #{incomeTimeStr}
and del_flag = '0'
) t
group by ymdms
</if>
<if test="ymdms == 'dd'">
select SUM(CASE WHEN check_result = 'N' THEN 1 ELSE 0 END) noOkQuality,
count(0) sampleQuality,
RIGHT('00' + CAST(ymdms AS VARCHAR(2)), 2) ymdms
FROM(
select DATEPART(HOUR, qct.create_time) AS ymdms,check_result
from qc_check_task qct
where check_type = #{checkType}
and CONVERT(varchar(10),qct.create_time, 120) = #{incomeTimeStr}
and del_flag = '0'
) t
group by ymdms
</if>
</select>
<select id="getNoOkPCNum" resultType="com.op.quality.domain.QcStaticTable">
<if test="ymdms == 'yyyy'">
select count(0) noOkQuality,
concat(hourName,class_name) ymdUntype
FROM(
select CONVERT(varchar(7),qct.create_time, 120) AS hourName,
qct.remark_code,
qdtc.class_name
from qc_check_task qct
left join qc_defect_type_class qdtc on qct.remark_code = qdtc.id
where qct.check_type = #{checkType} and qct.check_status = '2'
and CONVERT(varchar(4),qct.create_time, 120) = #{incomeTimeStr}
and qdtc.del_flag = '0' and qct.del_flag = '0'
) t
group by hourName,class_name
</if>
<if test="ymdms == 'mm'">
select count(0) noOkQuality,
concat(hourName,class_name) ymdUntype
FROM(
select CONVERT(varchar(10),qct.create_time, 120) AS hourName,
qct.remark_code,
qdtc.class_name
from qc_check_task qct
left join qc_defect_type_class qdtc on qct.remark_code = qdtc.id
where qct.check_type = #{checkType} and qct.check_status = '2'
and CONVERT(varchar(7),qct.create_time, 120) = #{incomeTimeStr}
and qdtc.del_flag = '0' and qct.del_flag = '0'
) t
group by hourName,class_name
</if>
<if test="ymdms == 'dd'">
select count(0) noOkQuality,
concat(hourName,class_name) ymdUntype
FROM(
select RIGHT('00' + CAST(DATEPART(HOUR, qct.create_time) AS VARCHAR(2)), 2) AS hourName,
qct.remark_code,
qdtc.class_name
from qc_check_task qct
left join qc_defect_type_class qdtc on qct.remark_code = qdtc.id
where qct.check_type = #{checkType} and qct.check_status = '2'
and CONVERT(varchar(10),qct.create_time, 120) = #{incomeTimeStr}
and qdtc.del_flag = '0' and qct.del_flag = '0'
) t
group by hourName,class_name
</if>
</select>
<select id="getTableHzNoOkDataSC" resultType="com.op.quality.domain.QcStaticTable">
select * from (
select count(t.remark_code) noOkQuality,
t.class_name dataType
FROM(
select
qct.remark_code,
qdtc.class_name
from qc_check_task qct
left join qc_defect_type_class qdtc on qct.remark_code = qdtc.id
where qct.check_type = #{checkType} and qct.check_status = '2'
<if test="ymdms == 'yyyy'">and CONVERT(varchar(4),qct.create_time, 120) = #{incomeTimeStr}</if>
<if test="ymdms == 'mm'">and CONVERT(varchar(7),qct.create_time, 120) = #{incomeTimeStr}</if>
<if test="ymdms == 'dd'"> and CONVERT(varchar(10),qct.create_time, 120) = #{incomeTimeStr}</if>
and qct.del_flag = '0' and qdtc.del_flag = '0'
) t
group by t.class_name
) t0 order by noOkQuality desc
</select>
</mapper>

Loading…
Cancel
Save