From c7bcf07f72cb2f19b279d7f75ad198db12ef8616 Mon Sep 17 00:00:00 2001 From: wxr Date: Fri, 7 Nov 2025 09:58:38 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=A8=E6=8E=A7=E6=95=B0=E6=8D=AE=E4=BF=9D?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/SampleAnalysisController.java | 6 + ...inessQCCoefficientParameterDataMapper.java | 10 + ...sinessQCManagementParameterDataMapper.java | 12 +- .../bus/service/SampleAnalysisService.java | 6 + .../service/SampleAnalysisServiceImpl.java | 241 ++++++++++++++++++ 5 files changed, 274 insertions(+), 1 deletion(-) diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/SampleAnalysisController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/SampleAnalysisController.java index eca31d3..5a00537 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/SampleAnalysisController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/SampleAnalysisController.java @@ -45,6 +45,12 @@ public class SampleAnalysisController { return success(businessAssayTaskAnalysisSampleAndQcProject); } + @PostMapping("/saveBatchSmpleAndQcAnalysis") + public CommonResult saveBatchSmpleAndQcAnalysis(@RequestBody BusinessAssayTaskAnalysisSampleAndQcProjectRespVO vo) { + sampleAnalysisService.saveBatchSmpleAndQcAnalysis(vo); + return success("成功"); + } + @PostMapping("/submitSampleAnalysisByTaskId") public CommonResult submitSampleAnalysisByTaskId(Long businessAssayTaskId) { diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessQCCoefficientParameterDataMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessQCCoefficientParameterDataMapper.java index c46b59e..4247a42 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessQCCoefficientParameterDataMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessQCCoefficientParameterDataMapper.java @@ -67,5 +67,15 @@ public interface BusinessQCCoefficientParameterDataMapper extends BaseMapperX selectByBusinessQCCoefficientDataId(Long businessQCCoefficientDataId) { + return selectList(new LambdaQueryWrapperX() + .eq(BusinessQCCoefficientParameterDataDO::getBusinessQCCoefficientDataId, businessQCCoefficientDataId)); + } + + default List selectByBusinessQCCoefficientDataIds(List businessQCCoefficientDataIds) { + return selectList(new LambdaQueryWrapperX() + .in(BusinessQCCoefficientParameterDataDO::getBusinessQCCoefficientDataId, businessQCCoefficientDataIds)); + } } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessQCManagementParameterDataMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessQCManagementParameterDataMapper.java index e67cc87..bfa058f 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessQCManagementParameterDataMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessQCManagementParameterDataMapper.java @@ -64,6 +64,16 @@ public interface BusinessQCManagementParameterDataMapper extends BaseMapperX selectByBusinessQCManagementProjectDataId(Long businessQCManagementProjectDataId) { + return selectList(new LambdaQueryWrapperX() + .eq(BusinessQCManagementParameterDataDO::getBusinessQCManagementProjectDataId, businessQCManagementProjectDataId)); + } + + default List selectByBusinessQCManagementProjectDataIds(List businessQCManagementProjectDataIds) { + return selectList(new LambdaQueryWrapperX() + .in(BusinessQCManagementParameterDataDO::getBusinessQCManagementProjectDataId, businessQCManagementProjectDataIds)); + } } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisService.java index 9069f58..468cb05 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisService.java @@ -42,4 +42,10 @@ public interface SampleAnalysisService { */ void submitSampleAnalysisByTaskId(Long businessAssayTaskId); + /** + * 批量保存任务单录入数据 + * @param vo + */ + void saveBatchSmpleAndQcAnalysis(BusinessAssayTaskAnalysisSampleAndQcProjectRespVO vo); + } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisServiceImpl.java index e0f6464..b299a79 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisServiceImpl.java @@ -34,7 +34,10 @@ import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDetailDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessQCCoefficientDataDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessQCCoefficientParameterDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessQCManagementDataDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessQCManagementParameterDataDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessQCManagementProjectDataDO; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayParameterDataMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayProjectDataMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskDataMapper; @@ -597,6 +600,244 @@ public class SampleAnalysisServiceImpl implements SampleAnalysisService { } return list; } + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveBatchSmpleAndQcAnalysis(BusinessAssayTaskAnalysisSampleAndQcProjectRespVO vo) { + BusinessAssayTaskDO businessAssayTaskDO = businessAssayTaskMapper.selectById(vo.getBusinessAssayTaskId()); + businessAssayTaskDO.setFormValue(vo.getFormValue()); + businessAssayTaskDO.setAssayTime(vo.getAssayTime()); + businessAssayTaskDO.setTaskAssayStatus(QmsCommonConstant.SAVED); + //赋值数据集id + if (vo.getDataCollectionId() == null) { + ConfigAssayMethodDO configAssayMethodDO = configAssayMethodMapper.selectById(businessAssayTaskDO.getConfigAssayMethodId()); + DataCollectionDO dataCollectionDO = dataCollectionService.getLatestDataCollectionByKey(configAssayMethodDO.getDataCollectionKey()); + businessAssayTaskDO.setFormDataCollectionId(dataCollectionDO.getId()); + } else { + businessAssayTaskDO.setFormDataCollectionId(vo.getDataCollectionId()); + } + + List assayTaskAnalysisDataList = vo.getAssayTaskAnalysisDataList(); + for (BusinessAssayTaskAnalysisDataRespVO businessAssayTaskAnalysisDataRespVO : assayTaskAnalysisDataList) { + if ("analysis".equals(businessAssayTaskAnalysisDataRespVO.getAnalysisType())) { + List businessAssayTaskDataList = businessAssayTaskDataMapper.selectList(new LambdaQueryWrapperX().eq(BusinessAssayTaskDataDO::getBusinessAssayTaskId, vo.getBusinessAssayTaskId()).eq(BusinessAssayTaskDataDO::getConfigAssayMethodId, businessAssayTaskDO.getConfigAssayMethodId())); + + List businessAssayTaskDataIdList = businessAssayTaskDataList.stream().map(m -> m.getId()).collect(Collectors.toList()); + + List businessAssayProjectDataList = businessAssayProjectDataMapper.selectList(new LambdaQueryWrapperX().in(BusinessAssayProjectDataDO::getBusinessAssayTaskDataId, businessAssayTaskDataIdList)); + List businessAssayProjectDataIdList = businessAssayProjectDataList.stream().map(m -> m.getId()).collect(Collectors.toList()); + + List businessAssayParameterDataList = businessAssayParameterDataMapper.selectList(new LambdaQueryWrapperX().in(BusinessAssayParameterDataDO::getBusinessAssayProjectDataId, businessAssayProjectDataIdList)); + + List> datas = businessAssayTaskAnalysisDataRespVO.getDatas(); + for (Map map : datas) { + + List listBusinessAssayProjectAndParameter = new ArrayList<>(); + for (Map.Entry entry : map.entrySet()) { + Object val = entry.getValue(); + if (val instanceof String) { + continue; + } + BusinessAssayProjectAndParameterRespVO businessAssayProjectAndParameter = JSON.parseObject(JSON.toJSONString(val), BusinessAssayProjectAndParameterRespVO.class); + listBusinessAssayProjectAndParameter.add(businessAssayProjectAndParameter); + } + + for (BusinessAssayProjectAndParameterRespVO pap : listBusinessAssayProjectAndParameter) { + if ("project".equals(pap.getType())) { + BusinessAssayProjectDataDO businessAssayProjectDataDO = businessAssayProjectDataList.stream().filter(f -> f.getId().equals(pap.getId())).findFirst().orElse(null); + if (StringUtils.isNotBlank(pap.getValue())) { + String dataType = pap.getDataType();//string-字符串,int-整数,decimal-小数,date-日期,datetime-时间 + switch (dataType) { + case "int": + case "date": + case "datetime": + case "string": + businessAssayProjectDataDO.setValue(pap.getValue()); + businessAssayProjectDataDO.setRemark(pap.getShowName() + ": " + pap.getValue()); + break; + case "decimal": + BigDecimal value = new BigDecimal(pap.getValue()); + value = value.setScale(pap.getDecimalPosition(), RoundingMode.HALF_EVEN); + businessAssayProjectDataDO.setValue(value.toPlainString()); + businessAssayProjectDataDO.setRemark(pap.getShowName() + ": " + value.toPlainString()); + break; + default: + throw new IllegalArgumentException("Unexpected value: " + dataType); + } + } else { + businessAssayProjectDataDO.setValue(null); + } + } else if ("parameter".equals(pap.getType())) { + BusinessAssayParameterDataDO businessAssayParameterDataDO = businessAssayParameterDataList.stream().filter(f -> f.getId().equals(pap.getId())).findFirst().orElse(null); + if (StringUtils.isNotBlank(pap.getValue())) { + String dataType = pap.getDataType();//string-字符串,int-整数,decimal-小数,date-日期,datetime-时间 + switch (dataType) { + case "int": + case "date": + case "datetime": + case "string": + businessAssayParameterDataDO.setValue(pap.getValue()); + businessAssayParameterDataDO.setRemark(pap.getShowName() + ": " + pap.getValue()); + break; + case "decimal": + BigDecimal value = new BigDecimal(pap.getValue()); + value = value.setScale(pap.getDecimalPosition(), RoundingMode.HALF_EVEN); + businessAssayParameterDataDO.setValue(value.toPlainString()); + businessAssayParameterDataDO.setRemark(pap.getShowName() + ": " + value.toPlainString()); + break; + default: + throw new IllegalArgumentException("Unexpected value: " + dataType); + } + } else { + businessAssayParameterDataDO.setValue(null); + } + } + } + + } + + businessAssayProjectDataMapper.updateBatch(businessAssayProjectDataList); + if (CollUtil.isNotEmpty(businessAssayParameterDataList)) { + businessAssayParameterDataMapper.updateBatch(businessAssayParameterDataList); + } + + } else if ("zky".equals(businessAssayTaskAnalysisDataRespVO.getAnalysisType())) { + List BusinessQCManagementDataList = businessQCManagementDataMapper.selectByBusinessAssayTaskId(businessAssayTaskDO.getId()); + + List businessQCManagementDataIdList = BusinessQCManagementDataList.stream().map(m -> m.getId()).collect(Collectors.toList()); + + List businessQCManagementProjectDataList = businessQCManagementProjectDataMapper.selectByBusinessQCManagementDataIds(businessQCManagementDataIdList); + List businessQCManagementProjectDataIdList = businessQCManagementProjectDataList.stream().map(m -> m.getId()).collect(Collectors.toList()); + + List businessQCManagementParameterDataList = businessQCManagementParameterDataMapper.selectByBusinessQCManagementProjectDataIds(businessQCManagementProjectDataIdList); + + List> datas = businessAssayTaskAnalysisDataRespVO.getDatas(); + for (Map map : datas) { + + List listBusinessAssayProjectAndParameter = new ArrayList<>(); + for (Map.Entry entry : map.entrySet()) { + Object val = entry.getValue(); + if (val instanceof String) { + continue; + } + BusinessAssayProjectAndParameterRespVO businessAssayProjectAndParameter = JSON.parseObject(JSON.toJSONString(val), BusinessAssayProjectAndParameterRespVO.class); + listBusinessAssayProjectAndParameter.add(businessAssayProjectAndParameter); + } + + for (BusinessAssayProjectAndParameterRespVO pap : listBusinessAssayProjectAndParameter) { + if ("project".equals(pap.getType())) { + BusinessQCManagementProjectDataDO businessQCManagementProjectDataDO = businessQCManagementProjectDataList.stream().filter(f -> f.getId().equals(pap.getId())).findFirst().orElse(null); + if (StringUtils.isNotBlank(pap.getValue())) { + String dataType = pap.getDataType();//string-字符串,int-整数,decimal-小数,date-日期,datetime-时间 + switch (dataType) { + case "int": + case "date": + case "datetime": + case "string": + businessQCManagementProjectDataDO.setValue(pap.getValue()); + businessQCManagementProjectDataDO.setRemark(pap.getShowName() + ": " + pap.getValue()); + break; + case "decimal": + BigDecimal value = new BigDecimal(pap.getValue()); + value = value.setScale(pap.getDecimalPosition(), RoundingMode.HALF_EVEN); + businessQCManagementProjectDataDO.setValue(value.toPlainString()); + businessQCManagementProjectDataDO.setRemark(pap.getShowName() + ": " + value.toPlainString()); + break; + default: + throw new IllegalArgumentException("Unexpected value: " + dataType); + } + } else { + businessQCManagementProjectDataDO.setValue(null); + } + } else if ("parameter".equals(pap.getType())) { + BusinessQCManagementParameterDataDO businessQCManagementParameterDataDO = businessQCManagementParameterDataList.stream().filter(f -> f.getId().equals(pap.getId())).findFirst().orElse(null); + if (StringUtils.isNotBlank(pap.getValue())) { + String dataType = pap.getDataType();//string-字符串,int-整数,decimal-小数,date-日期,datetime-时间 + switch (dataType) { + case "int": + case "date": + case "datetime": + case "string": + businessQCManagementParameterDataDO.setValue(pap.getValue()); + businessQCManagementParameterDataDO.setRemark(pap.getShowName() + ": " + pap.getValue()); + break; + case "decimal": + BigDecimal value = new BigDecimal(pap.getValue()); + value = value.setScale(pap.getDecimalPosition(), RoundingMode.HALF_EVEN); + businessQCManagementParameterDataDO.setValue(value.toPlainString()); + businessQCManagementParameterDataDO.setRemark(pap.getShowName() + ": " + value.toPlainString()); + break; + default: + throw new IllegalArgumentException("Unexpected value: " + dataType); + } + } else { + businessQCManagementParameterDataDO.setValue(null); + } + } + } + + } + + + businessQCManagementProjectDataMapper.updateBatch(businessQCManagementProjectDataList); + if (CollUtil.isNotEmpty(businessQCManagementParameterDataList)) { + businessQCManagementParameterDataMapper.updateBatch(businessQCManagementParameterDataList); + } + } else { + List businessQCCoefficientDataList = businessQCCoefficientDataMapper.selectByBusinessAssayTaskId(businessAssayTaskDO.getId()); + + List businessQCCoefficientDataIdList = businessQCCoefficientDataList.stream().map(m -> m.getId()).collect(Collectors.toList()); + + List businessQCCoefficientParameterDataList = businessQCCoefficientParameterDataMapper.selectByBusinessQCCoefficientDataIds(businessQCCoefficientDataIdList); + + List> datas = businessAssayTaskAnalysisDataRespVO.getDatas(); + for (Map map : datas) { + + List listBusinessAssayProjectAndParameter = new ArrayList<>(); + for (Map.Entry entry : map.entrySet()) { + Object val = entry.getValue(); + if (val instanceof String) { + continue; + } + BusinessAssayProjectAndParameterRespVO businessAssayProjectAndParameter = JSON.parseObject(JSON.toJSONString(val), BusinessAssayProjectAndParameterRespVO.class); + listBusinessAssayProjectAndParameter.add(businessAssayProjectAndParameter); + } + + for (BusinessAssayProjectAndParameterRespVO pap : listBusinessAssayProjectAndParameter) { + if ("parameter".equals(pap.getType())) { + BusinessQCCoefficientParameterDataDO businessQCCoefficientParameterDataDO = businessQCCoefficientParameterDataList.stream().filter(f -> f.getId().equals(pap.getId())).findFirst().orElse(null); + if (StringUtils.isNotBlank(pap.getValue())) { + String dataType = pap.getDataType();//string-字符串,int-整数,decimal-小数,date-日期,datetime-时间 + switch (dataType) { + case "int": + case "date": + case "datetime": + case "string": + businessQCCoefficientParameterDataDO.setValue(pap.getValue()); + businessQCCoefficientParameterDataDO.setRemark(pap.getShowName() + ": " + pap.getValue()); + break; + case "decimal": + BigDecimal value = new BigDecimal(pap.getValue()); + value = value.setScale(pap.getDecimalPosition(), RoundingMode.HALF_EVEN); + businessQCCoefficientParameterDataDO.setValue(value.toPlainString()); + businessQCCoefficientParameterDataDO.setRemark(pap.getShowName() + ": " + value.toPlainString()); + break; + default: + throw new IllegalArgumentException("Unexpected value: " + dataType); + } + } else { + businessQCCoefficientParameterDataDO.setValue(null); + } + } + } + + } + + businessQCCoefficientParameterDataMapper.updateBatch(businessQCCoefficientParameterDataList); + } + } + businessAssayTaskMapper.updateById(businessAssayTaskDO); + } @Override