diff --git a/src/main/java/com/xujie/sys/modules/pms/mapper/QcMapper.java b/src/main/java/com/xujie/sys/modules/pms/mapper/QcMapper.java index 9da33fc..46b722c 100644 --- a/src/main/java/com/xujie/sys/modules/pms/mapper/QcMapper.java +++ b/src/main/java/com/xujie/sys/modules/pms/mapper/QcMapper.java @@ -229,7 +229,7 @@ public interface QcMapper { List selectFAIBasicData(); - List selectPartAttributeByPartNo(String site, String buNo, String partNo, String attributeType, String inspectionTypeNo, String supplierNo); + List selectPartAttributeByPartNo(@Param("site") String site, @Param("buNo") String buNo, @Param("partNo") String partNo, @Param("attributeType") String attributeType, @Param("inspectionTypeNo") String inspectionTypeNo, @Param("supplierNo") String supplierNo); void saveFAIRecord(QcFAIRecordData data); diff --git a/src/main/java/com/xujie/sys/modules/pms/service/Impl/QcServiceImpl.java b/src/main/java/com/xujie/sys/modules/pms/service/Impl/QcServiceImpl.java index 8f748a0..908f7fd 100644 --- a/src/main/java/com/xujie/sys/modules/pms/service/Impl/QcServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/pms/service/Impl/QcServiceImpl.java @@ -5567,15 +5567,117 @@ public class QcServiceImpl implements QcService { @Override @Transactional public void fqasRecordOverLoad(QcFAIRecordData data) { - for (QcFAIRecordData qcData : data.getSubmitList()){ + // 新建对象存放主记录 + QcFAIRecordData qcFAIRecordData = new QcFAIRecordData(); + for (QcFAIRecordData recordData : data.getSubmitList()) { // 删除明细记录信息 - qcMapper.deleteFQASDetailedRecord(qcData); + qcMapper.deleteFQASDetailedRecord(recordData); // 删除子明细记录信息 - qcMapper.deleteFQASSubDetailedRecord(qcData); - // 修改detailFlag字段为N - //qcMapper.updateFQASDetailFlag(qcData); + qcMapper.deleteFQASSubDetailedRecord(recordData); // 删除文件 - qcMapper.deleteInspectionFiles(qcData); + qcMapper.deleteInspectionFiles(recordData); + // 主记录信息赋值 + qcFAIRecordData.setSite(recordData.getSite()); + qcFAIRecordData.setBuNo(recordData.getBuNo()); + qcFAIRecordData.setInspectionNo(recordData.getInspectionNo()); // 检验单号 + qcFAIRecordData.setInspectionTypeNo("108"); // 检验类型编码 + qcFAIRecordData.setPartDesc(recordData.getPartDesc()); + qcFAIRecordData.setRollQty(recordData.getRollQty()); + // 明细记录信息赋值 + String partNo = recordData.getPartNo(); + String attributeType1 = "A"; + // 获取该物料属性下维护的FQAS检验模板 + List partAttribute = qcMapper.selectPartAttributeByPartNo(recordData.getSite(), recordData.getBuNo(), partNo, attributeType1, qcFAIRecordData.getInspectionTypeNo(), ""); + 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 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 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 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()); // 抽样数量 + } + // 新增FQAS明细记录信息 + qcMapper.saveFQASDetailedRecord(faiRecordData); + } + } + // 更新FQAS主记录信息 + qcMapper.updateFQASRecord(qcFAIRecordData); } } diff --git a/src/main/resources/mapper/pms/QcMapper.xml b/src/main/resources/mapper/pms/QcMapper.xml index f7a27b4..b8cbe65 100644 --- a/src/main/resources/mapper/pms/QcMapper.xml +++ b/src/main/resources/mapper/pms/QcMapper.xml @@ -1504,11 +1504,15 @@ LEFT JOIN qc_template as qt ON qat.template_id = qt.template_id and qat.site = qt.site and qat.bu_no = qt.bu_no LEFT JOIN qc_sampling_inspection_level as qsil ON qat.sampling_level_no = qsil.sampling_level_no and qat.site = qsil.site and qat.bu_no = qsil.bu_no LEFT JOIN qc_sampling_inspection_programme as qsip ON qat.sampling_programme_no = qsip.sampling_programme_no and qat.site = qsip.site and qat.bu_no = qsip.bu_no - WHERE qat.site = #{site} and qat.bu_no = #{buNo} - AND qat.attribute_no = #{partNo} - AND qat.attribute_type = #{attributeType} - AND qt.inspection_type_no = #{inspectionTypeNo} - AND qat.manufacturer_id = #{supplierNo} + + qat.site = #{site} and qat.bu_no = #{buNo} + AND qat.attribute_no = #{partNo} + AND qat.attribute_type = #{attributeType} + AND qt.inspection_type_no = #{inspectionTypeNo} + + AND qat.manufacturer_id = #{supplierNo} + + @@ -3774,8 +3778,12 @@ - INSERT INTO qc_stock_detailed_record (inspection_no, template_id, sampling_level_no, sampling_level_desc, sampling_programme_no, sampling_programme_desc, AQL, AC, RE, item_no, item_desc, object_id, object_desc, default_value, min_value, max_value, value_type_db, value_type, site, sampling_qty, bu_no, serial_no) - VALUES(#{inspectionNo}, #{templateId}, #{samplingLevelNo}, #{samplingLevelDesc}, #{samplingProgrammeNo}, #{samplingProgrammeDesc}, #{aql,jdbcType=DECIMAL}, #{ac,jdbcType=DECIMAL}, #{re,jdbcType=DECIMAL}, #{itemNo}, #{itemDesc}, #{objectId}, #{objectDesc}, #{defaultValue}, #{minValue,jdbcType=DECIMAL}, #{maxValue,jdbcType=DECIMAL}, #{valueTypeDb}, #{valueType}, #{site}, #{samplingQty}, #{buNo}, #{serialNo}) + INSERT INTO qc_stock_detailed_record + (inspection_no, template_id, sampling_level_no, sampling_level_desc, sampling_programme_no, sampling_programme_desc, AQL, AC, RE, + item_no, item_desc, object_id, object_desc, default_value, min_value, max_value, value_type_db, value_type, site, sampling_qty, bu_no, serial_no) + VALUES + (#{inspectionNo}, #{templateId}, #{samplingLevelNo}, #{samplingLevelDesc}, #{samplingProgrammeNo}, #{samplingProgrammeDesc}, #{aql,jdbcType=DECIMAL}, #{ac,jdbcType=DECIMAL}, #{re,jdbcType=DECIMAL}, + #{itemNo}, #{itemDesc}, #{objectId}, #{objectDesc}, #{defaultValue}, #{minValue,jdbcType=DECIMAL}, #{maxValue,jdbcType=DECIMAL}, #{valueTypeDb}, #{valueType}, #{site}, #{samplingQty}, #{buNo}, #{serialNo})