diff --git a/src/main/java/com/gaotao/modules/pms/service/Impl/QcServiceImpl.java b/src/main/java/com/gaotao/modules/pms/service/Impl/QcServiceImpl.java index 597fc3d..78f3b79 100644 --- a/src/main/java/com/gaotao/modules/pms/service/Impl/QcServiceImpl.java +++ b/src/main/java/com/gaotao/modules/pms/service/Impl/QcServiceImpl.java @@ -630,13 +630,39 @@ public class QcServiceImpl implements QcService { @Override @Transactional public void saveFQCDetailedRecord(QcFAIRecordData data) { + boolean abnormalModify = "3".equals(data.getType()); // 校验:查询当前数据库中的状态,如果已审核完成则禁止保存 QcFAIRecordData currentRecord = qcMapper.getFQCRecordStatus(data); - if (currentRecord != null && ("Y".equals(currentRecord.getSubmitFlag()) || "已完成".equals(currentRecord.getState()))) { + if (currentRecord == null) { + throw new RuntimeException("检验单不存在或已删除!"); + } + if (!abnormalModify && ("Y".equals(currentRecord.getSubmitFlag()) || "已完成".equals(currentRecord.getState()))) { throw new RuntimeException("该检验单已审核完成,无法修改!"); } - if ("1".equals(data.getType())) { // 应用 + if (abnormalModify) { + if (!"已完成".equals(currentRecord.getState())) { + throw new RuntimeException("仅已完成状态允许异常修改!"); + } + // 异常修改时强制保留原有检验结论 + data.setState("已完成"); + data.setInspectionResult(currentRecord.getInspectionResult()); + Map currentItemResultMap = new HashMap<>(); + qcMapper.fqcDetailSearch(data).forEach(item -> { + if (item.getItemNo() != null && !currentItemResultMap.containsKey(item.getItemNo())) { + currentItemResultMap.put(item.getItemNo(), item.getItemResult()); + } + }); + for (int i = 0; i < data.getItemList().size(); i++) { + QcFAIRecordData detailRecord = data.getItemList().get(i); + if (detailRecord.getItemNo() == null) { + continue; + } + if (currentItemResultMap.containsKey(detailRecord.getItemNo())) { + detailRecord.setItemResult(currentItemResultMap.get(detailRecord.getItemNo())); + } + } + } else if ("1".equals(data.getType())) { // 应用 data.setState("待检验"); } else { // 保存 data.setState("待审核"); @@ -984,13 +1010,39 @@ public class QcServiceImpl implements QcService { @Override @Transactional public void saveIPQCDetailedRecord(QcFAIRecordData data) { + boolean abnormalModify = "3".equals(data.getType()); // 校验:查询当前数据库中的状态,如果已审核完成则禁止保存 QcFAIRecordData currentRecord = qcMapper.getIPQCRecordStatus(data); - if (currentRecord != null && ("Y".equals(currentRecord.getSubmitFlag()) || "已完成".equals(currentRecord.getState()))) { + if (currentRecord == null) { + throw new RuntimeException("检验单不存在或已删除!"); + } + if (!abnormalModify && ("Y".equals(currentRecord.getSubmitFlag()) || "已完成".equals(currentRecord.getState()))) { throw new RuntimeException("该检验单已审核完成,无法修改!"); } - if ("1".equals(data.getType())) { // 应用 + if (abnormalModify) { + if (!"已完成".equals(currentRecord.getState())) { + throw new RuntimeException("仅已完成状态允许异常修改!"); + } + // 异常修改时强制保留原有检验结论 + data.setState("已完成"); + data.setInspectionResult(currentRecord.getInspectionResult()); + Map currentItemResultMap = new HashMap<>(); + qcMapper.ipqcDetailSearch(data).forEach(item -> { + if (item.getItemNo() != null && !currentItemResultMap.containsKey(item.getItemNo())) { + currentItemResultMap.put(item.getItemNo(), item.getItemResult()); + } + }); + for (int i = 0; i < data.getItemList().size(); i++) { + QcFAIRecordData detailRecord = data.getItemList().get(i); + if (detailRecord.getItemNo() == null) { + continue; + } + if (currentItemResultMap.containsKey(detailRecord.getItemNo())) { + detailRecord.setItemResult(currentItemResultMap.get(detailRecord.getItemNo())); + } + } + } else if ("1".equals(data.getType())) { // 应用 data.setState("待检验"); } else { // 保存 data.setState("待审核"); @@ -1497,13 +1549,39 @@ public class QcServiceImpl implements QcService { @Override @Transactional public void saveIQCDetailedRecord(QcFAIRecordData data) { + boolean abnormalModify = "3".equals(data.getType()); // 校验:查询当前数据库中的状态,如果已审核完成则禁止保存 QcFAIRecordData currentRecord = qcMapper.getIQCRecordStatus(data); - if (currentRecord != null && ("Y".equals(currentRecord.getSubmitFlag()) || "已完成".equals(currentRecord.getState()))) { + if (currentRecord == null) { + throw new RuntimeException("检验单不存在或已删除!"); + } + if (!abnormalModify && ("Y".equals(currentRecord.getSubmitFlag()) || "已完成".equals(currentRecord.getState()))) { throw new RuntimeException("该检验单已审核完成,无法修改!"); } - if ("1".equals(data.getType())) { // 应用 + if (abnormalModify) { + if (!"已完成".equals(currentRecord.getState())) { + throw new RuntimeException("仅已完成状态允许异常修改!"); + } + // 异常修改时强制保留原有检验结论 + data.setState("已完成"); + data.setInspectionResult(currentRecord.getInspectionResult()); + Map currentItemResultMap = new HashMap<>(); + qcMapper.iqcDetailSearch(data).forEach(item -> { + if (item.getItemNo() != null && !currentItemResultMap.containsKey(item.getItemNo())) { + currentItemResultMap.put(item.getItemNo(), item.getItemResult()); + } + }); + for (int i = 0; i < data.getItemList().size(); i++) { + QcFAIRecordData detailRecord = data.getItemList().get(i); + if (detailRecord.getItemNo() == null) { + continue; + } + if (currentItemResultMap.containsKey(detailRecord.getItemNo())) { + detailRecord.setItemResult(currentItemResultMap.get(detailRecord.getItemNo())); + } + } + } else if ("1".equals(data.getType())) { // 应用 data.setState("待检验"); } else { // 保存 data.setState("待审核"); @@ -3707,6 +3785,7 @@ public class QcServiceImpl implements QcService { @Override @Transactional public void saveFQASDetailedRecord(QcFAIRecordData data) { + boolean abnormalModify = "3".equals(data.getType()); // 校验供应商 if (data.getResponsiblePerson() != null && !"".equals(data.getResponsiblePerson())){ List suppliers = qcMapper.getSupplier(data.getSite(), data.getResponsiblePerson(), "Y"); @@ -3715,7 +3794,38 @@ public class QcServiceImpl implements QcService { } } - if ("1".equals(data.getType())) { // 应用 + // 校验:查询当前数据库中的状态,如果已审核完成则禁止保存 + QcFAIRecordData currentRecord = qcMapper.getFQASRecordStatus(data); + if (currentRecord == null) { + throw new RuntimeException("检验单不存在或已删除!"); + } + if (!abnormalModify && ("Y".equals(currentRecord.getSubmitFlag()) || "已完成".equals(currentRecord.getState()))) { + throw new RuntimeException("该检验单已审核完成,无法修改!"); + } + + if (abnormalModify) { + if (!"已完成".equals(currentRecord.getState())) { + throw new RuntimeException("仅已完成状态允许异常修改!"); + } + // 异常修改时强制保留原有检验结论 + data.setState("已完成"); + data.setInspectionResult(currentRecord.getInspectionResult()); + Map currentItemResultMap = new HashMap<>(); + qcMapper.fqasDetailSearch(data).forEach(item -> { + if (item.getItemNo() != null && !currentItemResultMap.containsKey(item.getItemNo())) { + currentItemResultMap.put(item.getItemNo(), item.getItemResult()); + } + }); + for (int i = 0; i < data.getItemList().size(); i++) { + QcFAIRecordData detailRecord = data.getItemList().get(i); + if (detailRecord.getItemNo() == null) { + continue; + } + if (currentItemResultMap.containsKey(detailRecord.getItemNo())) { + detailRecord.setItemResult(currentItemResultMap.get(detailRecord.getItemNo())); + } + } + } else if ("1".equals(data.getType())) { // 应用 data.setState("待检验"); } else { // 保存 data.setState("待审核"); diff --git a/src/main/resources/mapper/pms/QcMapper.xml b/src/main/resources/mapper/pms/QcMapper.xml index f5a5e9f..583b7f5 100644 --- a/src/main/resources/mapper/pms/QcMapper.xml +++ b/src/main/resources/mapper/pms/QcMapper.xml @@ -819,7 +819,7 @@ @@ -1197,7 +1197,7 @@ @@ -1652,7 +1652,7 @@ @@ -3747,7 +3747,7 @@