|
|
|
@ -3881,13 +3881,215 @@ public class QcServiceImpl implements QcService { |
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public void iqcRecordOverLoad(QcFAIRecordData data) { |
|
|
|
for (QcFAIRecordData qcData : data.getSubmitList()){ |
|
|
|
// 新建对象存放主记录 |
|
|
|
QcFAIRecordData qcFAIRecordData = new QcFAIRecordData(); |
|
|
|
for (QcFAIRecordData recordData : data.getSubmitList()) { |
|
|
|
// 删除明细记录信息 |
|
|
|
qcMapper.deleteIQCDetailedRecord(qcData); |
|
|
|
qcMapper.deleteIQCDetailedRecord(recordData); |
|
|
|
// 删除子明细记录信息 |
|
|
|
qcMapper.deleteIQCSubDetailedRecord(qcData); |
|
|
|
// 修改detailFlag字段为N |
|
|
|
qcMapper.updateIQCDetailFlag(qcData); |
|
|
|
qcMapper.deleteIQCSubDetailedRecord(recordData); |
|
|
|
// // 修改detailFlag字段为N |
|
|
|
// qcMapper.updateIQCDetailFlag(qcData); |
|
|
|
// 拿到供应商编码 |
|
|
|
String supplierNo = ""; |
|
|
|
if (StringUtils.isNotBlank(recordData.getSupplierNo())) { |
|
|
|
supplierNo = recordData.getSupplierNo(); |
|
|
|
} |
|
|
|
// 主记录信息赋值 |
|
|
|
qcFAIRecordData.setSite(recordData.getSite()); |
|
|
|
qcFAIRecordData.setBuNo(recordData.getBuNo()); |
|
|
|
qcFAIRecordData.setInspectionNo(recordData.getInspectionNo()); // 检验单号 |
|
|
|
qcFAIRecordData.setInspectionTypeNo("105"); // 检验类型编码 |
|
|
|
qcFAIRecordData.setPartDesc(recordData.getPartDesc()); |
|
|
|
qcFAIRecordData.setRollQty(recordData.getRollQty()); |
|
|
|
// 明细记录信息赋值 |
|
|
|
String partNo = recordData.getPartNo(); |
|
|
|
String attributeType1 = "A"; |
|
|
|
// 获取该物料属性下维护的IQC检验模板 |
|
|
|
List<QcFAIRecordData> partAttribute = qcMapper.selectPartAttributeByPartNo(recordData.getSite(), recordData.getBuNo(), partNo, attributeType1, qcFAIRecordData.getInspectionTypeNo(), supplierNo); |
|
|
|
if (!partAttribute.isEmpty()) { |
|
|
|
// 检验周期 |
|
|
|
if (partAttribute.get(0).getInspectionCycle() != null) { |
|
|
|
qcFAIRecordData.setInspectionCycle(partAttribute.get(0).getInspectionCycle()); |
|
|
|
} |
|
|
|
// 获取抽样数量 |
|
|
|
// 如果该检验模板有维护抽样方案 |
|
|
|
if (StringUtils.isNotBlank(partAttribute.get(0).getSamplingProgrammeNo())) { |
|
|
|
QcSamplingInspectionProgrammeData samplingInspectionProgrammeData = new QcSamplingInspectionProgrammeData(); |
|
|
|
samplingInspectionProgrammeData.setSite(partAttribute.get(0).getSite()); |
|
|
|
samplingInspectionProgrammeData.setBuNo(partAttribute.get(0).getBuNo()); |
|
|
|
samplingInspectionProgrammeData.setSamplingProgrammeNo(partAttribute.get(0).getSamplingProgrammeNo()); |
|
|
|
// 获取抽样方案维护的矩阵详情 |
|
|
|
List<QcSamplingInspectionProgrammeData> dataList = qcMapper.searchSamplingProgrammeDetails(samplingInspectionProgrammeData); |
|
|
|
// 根据抽样方案确定抽样数 |
|
|
|
for (QcSamplingInspectionProgrammeData programmeData : dataList) { |
|
|
|
if (programmeData.getSamplingLevelNo().equals(partAttribute.get(0).getSamplingLevelNo()) && (recordData.getRollCount().compareTo(programmeData.getMinQty()) > 0 || recordData.getRollCount().compareTo(programmeData.getMinQty()) == 0) && (recordData.getRollCount().compareTo(programmeData.getMaxQty()) < 0 || recordData.getRollCount().compareTo(programmeData.getMaxQty()) == 0) ){ |
|
|
|
qcFAIRecordData.setSamplingQty(programmeData.getSamplingQty()); |
|
|
|
} |
|
|
|
} |
|
|
|
} else if (partAttribute.get(0).getDefaultSamplingQuantity() != null) { |
|
|
|
// 没有维护抽样方案,再根据默认抽样数来确定 |
|
|
|
qcFAIRecordData.setSamplingQty(partAttribute.get(0).getDefaultSamplingQuantity()); |
|
|
|
} else if (partAttribute.get(0).getDefaultSamplingProportion() != null) { |
|
|
|
// 也没有维护默认抽样数,最后根据默认抽样比例来确定 |
|
|
|
BigDecimal d = partAttribute.get(0).getDefaultSamplingProportion().multiply(recordData.getRollCount()).divide(new BigDecimal(100), 3, BigDecimal.ROUND_HALF_UP); |
|
|
|
qcFAIRecordData.setSamplingQty(d); |
|
|
|
} |
|
|
|
|
|
|
|
// 获取根据该检验模板下维护的检验项目 |
|
|
|
QcTemplateData templateData = new QcTemplateData(); |
|
|
|
templateData.setSite(recordData.getSite()); |
|
|
|
templateData.setBuNo(recordData.getBuNo()); |
|
|
|
templateData.setTemplateId(partAttribute.get(0).getTemplateId()); |
|
|
|
templateData.setItemType("D"); |
|
|
|
List<QcTemplateData> itemList = qcMapper.templateDetailsSearch(templateData); |
|
|
|
QcFAIRecordData faiRecordData = new QcFAIRecordData(); |
|
|
|
faiRecordData.setSite(recordData.getSite()); // 工厂 |
|
|
|
faiRecordData.setBuNo(recordData.getBuNo()); // BU |
|
|
|
faiRecordData.setInspectionNo(qcFAIRecordData.getInspectionNo()); // 检验单号 |
|
|
|
faiRecordData.setTemplateId(partAttribute.get(0).getTemplateId()); // 模板编码 |
|
|
|
faiRecordData.setAql(partAttribute.get(0).getAql()); // aql |
|
|
|
faiRecordData.setAc(partAttribute.get(0).getAc()); // ac |
|
|
|
faiRecordData.setRe(partAttribute.get(0).getRe()); // re |
|
|
|
for (QcTemplateData itemData : itemList) { |
|
|
|
faiRecordData.setSamplingQty(null); |
|
|
|
faiRecordData.setSamplingLevelNo(itemData.getSamplingLevelNo()); // 检验水平编码 |
|
|
|
faiRecordData.setSamplingLevelDesc(itemData.getSamplingLevelDesc()); // 检验水平名称 |
|
|
|
faiRecordData.setSamplingProgrammeNo(itemData.getSamplingProgrammeNo()); // 抽样方案编码 |
|
|
|
faiRecordData.setSamplingProgrammeDesc(itemData.getSamplingProgrammeDesc()); // 抽样方案名称 |
|
|
|
faiRecordData.setItemNo(itemData.getItemNo()); // 项目编码 |
|
|
|
faiRecordData.setItemDesc(itemData.getItemDesc()); // 项目名称 |
|
|
|
faiRecordData.setObjectId(itemData.getObjectID()); // 设备编码 |
|
|
|
faiRecordData.setObjectDesc(itemData.getObjectDesc()); // 设备名称 |
|
|
|
faiRecordData.setDefaultValue(itemData.getDefaultValue()); // 默认值 |
|
|
|
faiRecordData.setMinValue(itemData.getMinValue()); // 最小值 |
|
|
|
faiRecordData.setMaxValue(itemData.getMaxValue()); // 最大值 |
|
|
|
faiRecordData.setValueType(itemData.getValueType()); // 检测值类型 |
|
|
|
faiRecordData.setValueTypeDb(itemData.getValueTypeDb()); |
|
|
|
// 获取抽样数量 |
|
|
|
// 如果该检验项目有维护抽样方案 |
|
|
|
if (StringUtils.isNotBlank(itemData.getSamplingProgrammeNo())) { |
|
|
|
QcSamplingInspectionProgrammeData samplingInspectionProgrammeData = new QcSamplingInspectionProgrammeData(); |
|
|
|
samplingInspectionProgrammeData.setSite(itemData.getSite()); |
|
|
|
samplingInspectionProgrammeData.setBuNo(itemData.getBuNo()); |
|
|
|
samplingInspectionProgrammeData.setSamplingProgrammeNo(itemData.getSamplingProgrammeNo()); |
|
|
|
// 获取抽样方案维护的矩阵详情 |
|
|
|
List<QcSamplingInspectionProgrammeData> dataList = qcMapper.searchSamplingProgrammeDetails(samplingInspectionProgrammeData); |
|
|
|
// 根据抽样方案确定抽样数 |
|
|
|
for (QcSamplingInspectionProgrammeData programmeData : dataList) { |
|
|
|
if (programmeData.getSamplingLevelNo().equals(itemData.getSamplingLevelNo()) && (recordData.getRollCount().compareTo(programmeData.getMinQty()) > 0 || recordData.getRollCount().compareTo(programmeData.getMinQty()) == 0) && (recordData.getRollCount().compareTo(programmeData.getMaxQty()) < 0 || recordData.getRollCount().compareTo(programmeData.getMaxQty()) == 0)) { |
|
|
|
faiRecordData.setSamplingQty(programmeData.getSamplingQty()); |
|
|
|
} |
|
|
|
} |
|
|
|
} else if (itemData.getItemSamplingQuantity() != null) { |
|
|
|
// 没有维护抽样方案,再根据默认抽样数来确定 |
|
|
|
faiRecordData.setSamplingQty(itemData.getItemSamplingQuantity()); |
|
|
|
} else if (itemData.getDefaultSamplingProportion() != null) { |
|
|
|
// 也没有维护默认抽样数,最后根据默认抽样比例来确定 |
|
|
|
faiRecordData.setSamplingQty(itemData.getDefaultSamplingProportion().multiply(recordData.getRollCount()).divide(new BigDecimal(100), 3, BigDecimal.ROUND_HALF_UP)); |
|
|
|
} else { |
|
|
|
// 最后则根据检验单抽样数量赋值 |
|
|
|
faiRecordData.setSamplingQty(qcFAIRecordData.getSamplingQty()); // 抽样数量 |
|
|
|
} |
|
|
|
// 新增IQC明细记录信息 |
|
|
|
qcMapper.saveIQCDetailedRecord(faiRecordData); |
|
|
|
} |
|
|
|
} else { |
|
|
|
// 获取物料的类别编码 |
|
|
|
String familyId = qcMapper.selectFamilyIdByPartNo(partNo,recordData.getSite()); |
|
|
|
String attributeType2 = "B"; |
|
|
|
// 获取该类别属性下维护的IQC检验模板 |
|
|
|
List<QcFAIRecordData> familyAttribute = qcMapper.selectPartAttributeByPartNo(recordData.getSite(), recordData.getBuNo(), familyId, attributeType2, qcFAIRecordData.getInspectionTypeNo(), supplierNo); |
|
|
|
if (!familyAttribute.isEmpty()) { |
|
|
|
// 获取检验周期 |
|
|
|
if (familyAttribute.get(0).getInspectionCycle() != null) { |
|
|
|
qcFAIRecordData.setInspectionCycle(familyAttribute.get(0).getInspectionCycle()); |
|
|
|
} |
|
|
|
// 获取抽样数量 |
|
|
|
// 如果该检验模板有维护抽样方案 |
|
|
|
if (StringUtils.isNotBlank(familyAttribute.get(0).getSamplingProgrammeNo())) { |
|
|
|
QcSamplingInspectionProgrammeData samplingInspectionProgrammeData = new QcSamplingInspectionProgrammeData(); |
|
|
|
samplingInspectionProgrammeData.setSite(familyAttribute.get(0).getSite()); |
|
|
|
samplingInspectionProgrammeData.setBuNo(familyAttribute.get(0).getBuNo()); |
|
|
|
samplingInspectionProgrammeData.setSamplingProgrammeNo(familyAttribute.get(0).getSamplingProgrammeNo()); |
|
|
|
// 获取抽样方案维护的矩阵详情 |
|
|
|
List<QcSamplingInspectionProgrammeData> dataList = qcMapper.searchSamplingProgrammeDetails(samplingInspectionProgrammeData); |
|
|
|
// 根据抽样方案确定抽样数 |
|
|
|
for (QcSamplingInspectionProgrammeData programmeData : dataList) { |
|
|
|
if (programmeData.getSamplingLevelNo().equals(familyAttribute.get(0).getSamplingLevelNo()) && (recordData.getRollCount().compareTo(programmeData.getMinQty()) > 0 || recordData.getRollCount().compareTo(programmeData.getMinQty()) == 0) && (recordData.getRollCount().compareTo(programmeData.getMaxQty()) < 0 || recordData.getRollCount().compareTo(programmeData.getMaxQty()) == 0) ){ |
|
|
|
qcFAIRecordData.setSamplingQty(programmeData.getSamplingQty()); |
|
|
|
} |
|
|
|
} |
|
|
|
} else if (familyAttribute.get(0).getDefaultSamplingQuantity() != null) { |
|
|
|
// 没有维护抽样方案,再根据默认抽样数来确定 |
|
|
|
qcFAIRecordData.setSamplingQty(familyAttribute.get(0).getDefaultSamplingQuantity()); |
|
|
|
} else if (familyAttribute.get(0).getDefaultSamplingProportion() != null) { |
|
|
|
// 也没有维护默认抽样数,最后根据默认抽样比例来确定 |
|
|
|
qcFAIRecordData.setSamplingQty(familyAttribute.get(0).getDefaultSamplingProportion().multiply(qcFAIRecordData.getRollCount()).divide(new BigDecimal(100),3,BigDecimal.ROUND_HALF_UP)); |
|
|
|
} |
|
|
|
|
|
|
|
// 获取根据该检验模板下维护的检验项目 |
|
|
|
QcTemplateData templateData = new QcTemplateData(); |
|
|
|
templateData.setTemplateId(familyAttribute.get(0).getTemplateId()); |
|
|
|
templateData.setItemType("D"); |
|
|
|
templateData.setSite(recordData.getSite()); |
|
|
|
templateData.setBuNo(recordData.getBuNo()); |
|
|
|
List<QcTemplateData> itemList = qcMapper.templateDetailsSearch(templateData); |
|
|
|
QcFAIRecordData faiRecordData = new QcFAIRecordData(); |
|
|
|
faiRecordData.setSite(recordData.getSite()); // 工厂 |
|
|
|
faiRecordData.setBuNo(recordData.getBuNo()); // BU |
|
|
|
faiRecordData.setInspectionNo(qcFAIRecordData.getInspectionNo()); // 检验单号 |
|
|
|
faiRecordData.setTemplateId(familyAttribute.get(0).getTemplateId()); // 模板编码 |
|
|
|
faiRecordData.setAql(familyAttribute.get(0).getAql()); // aql |
|
|
|
faiRecordData.setAc(familyAttribute.get(0).getAc()); // ac |
|
|
|
faiRecordData.setRe(familyAttribute.get(0).getRe()); // re |
|
|
|
for (QcTemplateData itemData : itemList) { |
|
|
|
faiRecordData.setSamplingQty(null); |
|
|
|
faiRecordData.setSamplingLevelNo(itemData.getSamplingLevelNo()); // 检验水平编码 |
|
|
|
faiRecordData.setSamplingLevelDesc(itemData.getSamplingLevelDesc()); // 检验水平名称 |
|
|
|
faiRecordData.setSamplingProgrammeNo(itemData.getSamplingProgrammeNo()); // 抽样方案编码 |
|
|
|
faiRecordData.setSamplingProgrammeDesc(itemData.getSamplingProgrammeDesc()); // 抽样方案名称 |
|
|
|
faiRecordData.setItemNo(itemData.getItemNo()); // 项目编码 |
|
|
|
faiRecordData.setItemDesc(itemData.getItemDesc()); // 项目名称 |
|
|
|
faiRecordData.setObjectId(itemData.getObjectID()); // 设备编码 |
|
|
|
faiRecordData.setObjectDesc(itemData.getObjectDesc()); // 设备名称 |
|
|
|
faiRecordData.setDefaultValue(itemData.getDefaultValue()); // 默认值 |
|
|
|
faiRecordData.setMinValue(itemData.getMinValue()); // 最小值 |
|
|
|
faiRecordData.setMaxValue(itemData.getMaxValue()); // 最大值 |
|
|
|
faiRecordData.setValueType(itemData.getValueType()); // 检测值类型 |
|
|
|
faiRecordData.setValueTypeDb(itemData.getValueTypeDb()); |
|
|
|
// 获取抽样数量 |
|
|
|
// 如果该检验项目有维护抽样方案 |
|
|
|
if (StringUtils.isNotBlank(itemData.getSamplingProgrammeNo())) { |
|
|
|
QcSamplingInspectionProgrammeData samplingInspectionProgrammeData = new QcSamplingInspectionProgrammeData(); |
|
|
|
samplingInspectionProgrammeData.setSite(itemData.getSite()); |
|
|
|
samplingInspectionProgrammeData.setBuNo(itemData.getBuNo()); |
|
|
|
samplingInspectionProgrammeData.setSamplingProgrammeNo(itemData.getSamplingProgrammeNo()); |
|
|
|
// 获取抽样方案维护的矩阵详情 |
|
|
|
List<QcSamplingInspectionProgrammeData> dataList = qcMapper.searchSamplingProgrammeDetails(samplingInspectionProgrammeData); |
|
|
|
// 根据抽样方案确定抽样数 |
|
|
|
for (QcSamplingInspectionProgrammeData programmeData : dataList) { |
|
|
|
if (programmeData.getSamplingLevelNo().equals(itemData.getSamplingLevelNo()) && (recordData.getRollCount().compareTo(programmeData.getMinQty()) > 0 || recordData.getRollCount().compareTo(programmeData.getMinQty()) == 0) && (recordData.getRollCount().compareTo(programmeData.getMaxQty()) < 0 || recordData.getRollCount().compareTo(programmeData.getMaxQty()) == 0)) { |
|
|
|
faiRecordData.setSamplingQty(programmeData.getSamplingQty()); |
|
|
|
} |
|
|
|
} |
|
|
|
} else if (itemData.getItemSamplingQuantity() != null) { |
|
|
|
// 没有维护抽样方案,再根据默认抽样数来确定 |
|
|
|
faiRecordData.setSamplingQty(itemData.getItemSamplingQuantity()); |
|
|
|
} else if (itemData.getDefaultSamplingProportion() != null) { |
|
|
|
// 也没有维护默认抽样数,最后根据默认抽样比例来确定 |
|
|
|
faiRecordData.setSamplingQty(itemData.getDefaultSamplingProportion().multiply(recordData.getRollCount()).divide(new BigDecimal(100), 3, BigDecimal.ROUND_HALF_UP)); |
|
|
|
} else { |
|
|
|
// 最后则根据检验单抽样数量赋值 |
|
|
|
faiRecordData.setSamplingQty(qcFAIRecordData.getSamplingQty()); // 抽样数量 |
|
|
|
} |
|
|
|
// 新增IQC明细记录信息 |
|
|
|
qcMapper.saveIQCDetailedRecord(faiRecordData); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// 更新IQC主记录信息 |
|
|
|
qcMapper.updateIQCRecord(qcFAIRecordData); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|