From 6b006513afefcd43c7aaf2d42785134c1133ed7f Mon Sep 17 00:00:00 2001 From: wxr Date: Fri, 5 Dec 2025 18:32:54 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=88=86=E6=9E=90=E7=8F=AD=E7=BB=84?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=98=AF=E5=90=A6=E9=80=81=E6=A0=B7=E6=A0=87?= =?UTF-8?q?=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/BusinessSubSampleAnalysisGroupPageReqVO.java | 3 +++ .../vo/BusinessSubSampleAnalysisGroupRespVO.java | 3 +++ .../vo/BusinessSubSampleAnalysisGroupSaveReqVO.java | 3 +++ .../controller/vo/BusinessSubSampleExtendRespVO.java | 3 +++ .../bus/controller/vo/BusinessSubSamplePageReqVO.java | 3 +++ .../dataobject/BusinessSubSampleAnalysisGroupDO.java | 5 +++++ .../mapper/BusinessSubSampleAnalysisGroupMapper.java | 1 + .../bus/dal/mapper/BusinessSubSampleMapper.java | 1 + .../sample/flow/SampleSubProcessUpdateCmp.java | 10 ++++++++++ 9 files changed, 32 insertions(+) diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleAnalysisGroupPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleAnalysisGroupPageReqVO.java index 0739593..149c8ba 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleAnalysisGroupPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleAnalysisGroupPageReqVO.java @@ -31,6 +31,9 @@ public class BusinessSubSampleAnalysisGroupPageReqVO extends PageParam { @Schema(description = "样品状态", example = "1") private String sampleStatus; + @Schema(description = "是否送样") + private Integer isSend; + @Schema(description = "收样人") private String sampleReceiver; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleAnalysisGroupRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleAnalysisGroupRespVO.java index 7382885..a9728c9 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleAnalysisGroupRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleAnalysisGroupRespVO.java @@ -40,6 +40,9 @@ public class BusinessSubSampleAnalysisGroupRespVO { @ExcelProperty("样品状态") private String sampleStatus; + @Schema(description = "是否送样") + private Integer isSend; + @Schema(description = "收样人") @ExcelProperty("收样人") private String sampleReceiver; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleAnalysisGroupSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleAnalysisGroupSaveReqVO.java index d163842..a7b32bb 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleAnalysisGroupSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleAnalysisGroupSaveReqVO.java @@ -37,6 +37,9 @@ public class BusinessSubSampleAnalysisGroupSaveReqVO { @NotEmpty(message = "样品状态不能为空") private String sampleStatus; + @Schema(description = "是否送样") + private Integer isSend; + @Schema(description = "收样人") private String sampleReceiver; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleExtendRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleExtendRespVO.java index 6a60a80..ed6cdb1 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleExtendRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleExtendRespVO.java @@ -63,6 +63,9 @@ public class BusinessSubSampleExtendRespVO extends BusinessSubSampleRespVO { @Schema(description = "分析部门名称") private String assayDepartmentName; + + @Schema(description = "是否已送样") + private Integer isSendSample; @Schema(description = "是否打印") private Integer isPrint; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSamplePageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSamplePageReqVO.java index abfeb31..9c5581b 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSamplePageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSamplePageReqVO.java @@ -145,6 +145,9 @@ public class BusinessSubSamplePageReqVO extends PageParam { @Schema(description = "分析部门状态") private String assayDepartmentStatus; + @Schema(description = "是否已送样") + private Integer isSendSample; + @Schema(description = "样品流程节点KEY列表") private List sampleFlowNodeKeyList; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessSubSampleAnalysisGroupDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessSubSampleAnalysisGroupDO.java index 5e8876a..d846f3a 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessSubSampleAnalysisGroupDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessSubSampleAnalysisGroupDO.java @@ -63,6 +63,11 @@ public class BusinessSubSampleAnalysisGroupDO extends BusinessBaseDO { @TableField("SMP_STS") private String sampleStatus; /** + * 是否送样 + */ + @TableField("IS_SND") + private Integer isSend; + /** * 收样人 */ @TableField("SMP_RCVR") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSubSampleAnalysisGroupMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSubSampleAnalysisGroupMapper.java index c513296..68414ee 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSubSampleAnalysisGroupMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSubSampleAnalysisGroupMapper.java @@ -27,6 +27,7 @@ public interface BusinessSubSampleAnalysisGroupMapper extends BaseMapperX curDeptSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupDOList.stream().filter(f -> f.getAssayDepartmentId().equals(loginUser.getVisitDeptId())).collect(Collectors.toList()); + for (BusinessSubSampleAnalysisGroupDO businessSubSampleAnalysisGroupDO : curDeptSubSampleAnalysisGroupDOList) { + businessSubSampleAnalysisGroupDO.setIsSend(QmsCommonConstant.YES); + } + sampleFlowContext.setBusinessSubSampleAnalysisGroupList(curDeptSubSampleAnalysisGroupDOList); + + } } } From 000cfca842fbaed2990dd0edec21d1c4812bee57 Mon Sep 17 00:00:00 2001 From: FCL Date: Mon, 8 Dec 2025 10:27:36 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:=E6=8A=A5=E5=91=8A=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=AE=97=E6=B3=95=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataobject/BusinessAssayReportDataDO.java | 4 + .../vo/ReportDocumentDataPageReqVO.java | 3 + .../vo/ReportDocumentDataRespVO.java | 4 + .../vo/ReportDocumentDataSaveReqVO.java | 3 + .../dal/dataobject/ReportDocumentDataDO.java | 4 +- .../ReportDocumentDataServiceImpl.java | 429 ++++++++---------- .../ReportDocumentMainServiceImpl.java | 5 +- .../mapper/BusinessAssayReportDataMapper.xml | 3 +- ...usinessSampleEntrustRegistrationMapper.xml | 1 + 9 files changed, 218 insertions(+), 238 deletions(-) diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessAssayReportDataDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessAssayReportDataDO.java index e1aa53f..ca69a65 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessAssayReportDataDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessAssayReportDataDO.java @@ -109,4 +109,8 @@ public class BusinessAssayReportDataDO extends BusinessBaseDO { //样品创建时间 @TableField(exist = false) private LocalDateTime baseSampleCreateTime; + + //样品类型key + @TableField(exist = false) + private String sampleTypeKey; } \ 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/reportdoc/controller/vo/ReportDocumentDataPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataPageReqVO.java index 5c66fdf..aa18c88 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataPageReqVO.java @@ -43,4 +43,7 @@ public class ReportDocumentDataPageReqVO extends PageParam { @Schema(description = "样品大类名称") private String baseSampleName; + + @Schema(description = "样品类型key") + private String sampleTypeKey; } \ 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/reportdoc/controller/vo/ReportDocumentDataRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataRespVO.java index ebc981a..1a3c3b4 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataRespVO.java @@ -56,6 +56,10 @@ public class ReportDocumentDataRespVO { @ExcelProperty("样品大类名称") private String baseSampleName; + @Schema(description = "样品类型key") + @ExcelProperty("样品类型key") + private String sampleTypeKey; + //==================扩展字段=========== @Schema(description = "样品创建时间") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataSaveReqVO.java index 72b9a26..53e0b57 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataSaveReqVO.java @@ -40,4 +40,7 @@ public class ReportDocumentDataSaveReqVO { @Schema(description = "样品大类名称") private String baseSampleName; + @Schema(description = "样品类型key") + private String sampleTypeKey; + } \ 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/reportdoc/dal/dataobject/ReportDocumentDataDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/dal/dataobject/ReportDocumentDataDO.java index c590366..4160839 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/dal/dataobject/ReportDocumentDataDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/dal/dataobject/ReportDocumentDataDO.java @@ -75,7 +75,9 @@ public class ReportDocumentDataDO extends BusinessBaseDO { @TableField("BSE_SMP_NAME") private String baseSampleName; - + //样品类型key + @TableField("SMP_TP_KY") + private String sampleTypeKey; //==================扩展字段=========== diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentDataServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentDataServiceImpl.java index 0eb4bcc..de4e45a 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentDataServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentDataServiceImpl.java @@ -67,38 +67,66 @@ public class ReportDocumentDataServiceImpl implements ReportDocumentDataService if(fieldListAll.isEmpty()) return CommonResult.error(REPORT_DOCUMENT_TYPE_NOT_EXISTS.getCode(), "未配置报表字段,请联系管理员处理!"); List dataList = listByMainDataId(mainData.getId()).getData(); - //处理字段,提取有数据的字段 - List fieldList = new ArrayList<>(); - List hasFields = new ArrayList<>(); - for(ConfigReportFieldDO fieldDO : fieldListAll){ - String field = fieldDO.getField(); - String fieldName = fieldDO.getFieldName(); - String fieldType = fieldDO.getFieldType(); - //先处理固定列 - if(FIELD_FIXED.equals(fieldType)){ - if(!hasFields.contains( field)){ - fieldList.add(fieldDO); - hasFields.add(field); + + //拆分dataList,按样品分类key拆分 + List> dataListGroup = new ArrayList<>(); + String[] sampleTypeKeys = new String[]{"inspectionAnalysisSample", "comprehensiveInspectionSample"}; //商检分析样、商检综合样 + for(String sampleTypeKey : sampleTypeKeys){ + List dataListByKey = new ArrayList<>(); + for(ReportDocumentDataDO dataDO: dataList){ + if(sampleTypeKey.equals(dataDO.getSampleTypeKey())){ + dataListByKey.add(dataDO); } - continue; } - for(ReportDocumentDataDO dataDO : dataList){ - String documentContent = dataDO.getDocumentContent(); - JSONObject dataJson = JSONObject.parseObject(documentContent); - if(dataJson == null) - continue; - if(dataJson.containsKey(field)){ - if(!hasFields.contains( fieldName)){ + dataListGroup.add(dataListByKey); + } + if(dataListGroup.isEmpty()) + dataListGroup.add(dataList); + List rowList = new ArrayList<>(); + for(int i = 0; i < dataListGroup.size(); i++){ + List dataListByKey = dataListGroup.get(i); + //处理字段,提取有数据的字段 + List fieldList = new ArrayList<>(); + List hasFields = new ArrayList<>(); + for(ConfigReportFieldDO fieldDO : fieldListAll){ + String field = fieldDO.getField(); + String fieldName = fieldDO.getFieldName(); + String fieldType = fieldDO.getFieldType(); + //先处理固定列 + if(FIELD_FIXED.equals(fieldType)){ + if(!hasFields.contains( field)){ fieldList.add(fieldDO); - hasFields.add(fieldName); + hasFields.add(field); + } + continue; + } + for(ReportDocumentDataDO dataDO : dataListByKey){ + String documentContent = dataDO.getDocumentContent(); + JSONObject dataJson = JSONObject.parseObject(documentContent); + if(dataJson == null) + continue; + if(dataJson.containsKey(field)){ + if(!hasFields.contains( fieldName)){ + fieldList.add(fieldDO); + hasFields.add(fieldName); + } } } } + assembleStep1(rowList, fieldList, dataListByKey, customConfig, i); //处理后的组数对象 } - //组装数据 - List step1Arr = assembleStep1(fieldList, dataList, customConfig); //处理后的组数对象 - return CommonResult.success(step1Arr); + //todo 处理数据分页 + + //todo 以下为空白 +// JSONObject t = new JSONObject(); +// t.put(colPrefix + "01", emptyText); +// rowList.add(t.clone()); + + //todo 检出限 + + + return CommonResult.success(rowList); } /** @@ -106,7 +134,7 @@ public class ReportDocumentDataServiceImpl implements ReportDocumentDataService * @param fieldList 要显示的字段列表。固定字段在最前 * @param customConfig 报告配置项 * */ - private List assembleStep1(List fieldList, List dataList, String customConfig){ + private List assembleStep1(List rowList, List fieldList, List dataList, String customConfig, int groupIndex){ if(dataList.isEmpty()) return new ArrayList<>(); JSONObject jsonObject = JSONObject.parseObject(customConfig); @@ -114,11 +142,8 @@ public class ReportDocumentDataServiceImpl implements ReportDocumentDataService Integer fixedColCount = 0; Integer maxRowCount = 3; String dynamicColCountStr = jsonObject.getString("dynamicColCount"); //动态列(检测项)数量 -// String fixedColCountStr = jsonObject.getString("fixedColCount"); //固定列(样品名称、样品编号等)数量 JSONArray fixedCol = jsonObject.getJSONArray("fixedCol"); //固定列,举例:["sampleName", "sampleCode"] - JSONArray fixedColShow = jsonObject.getJSONArray("fixedColShow"); //固定列,举例:["产品名称", "编 号"] String maxRowCountStr = jsonObject.getString("maxRowCount"); //最大行数 -// String nameCodeType = jsonObject.getString("nameCodeType"); //名称、编号处理方式:merge-合并, name-只显示名称, code-只显示编号, split-2列分开显示 String hasRemark = jsonObject.getString("hasRemark"); //是否有备注 String hasRange = jsonObject.getString("hasRange"); //是否有检出限 String verticalFlag = jsonObject.getString("verticalFlag"); //vertical-纵表, 否则为横表 @@ -133,102 +158,146 @@ public class ReportDocumentDataServiceImpl implements ReportDocumentDataService if(fixedCol != null) fixedColCount = fixedCol.size(); if(!ObjectUtils.isEmpty(maxRowCountStr)) maxRowCount = Integer.parseInt(maxRowCountStr); - Integer eleCount = 0; //元素数量,即元素列总数 - - for(ConfigReportFieldDO fieldDO : fieldList){ - String fieldType = fieldDO.getFieldType(); - if(FIELD_DYNAMIC.equals(fieldType)) - eleCount ++; - } - Integer rowCountOneSample = eleCount / dynamicColCount + (eleCount % dynamicColCount == 0 ? 0 : 1); //每个样品要占的行数 Integer colCountOneSample = fixedColCount + dynamicColCount; //每个样品要占的列数 Integer dataLength = dataList.size(); - Integer emptyRowCount = dataLength < maxRowCount ? 1 : 0; //空行数 -// Integer allRowCount = 1 + dataLength + emptyRowCount + 1; //标题 + 样品数 + 空行 - - if("1".equals(hasRange)) - emptyRowCount ++; - -// if(rowCountOneSample > 1){ -// allRowCount = (1 + dataLength + emptyRowCount + 9) * rowCountOneSample + emptyRowCount; //(标题 + 样品数 + 空行) * 但样品行数 + 末尾行 -// } - List rowList = new ArrayList<>(); - for(int i = 0; i < maxRowCount; i++){ - JSONObject row = new JSONObject(); - row.put("col01", " "); - rowList.add( row); - } - - //=============处理表头============ JSONObject t = new JSONObject(); JSONObject r = new JSONObject(); //检出限 - int rowAssist = 1; - int colIndex = fixedColCount + 1; - boolean lastObjFlag = true; //取第一行数据,用来处理检出限 - JSONObject firstData = new JSONObject(); //取第一行数据,用于处理检出限 - if(dataLength > 0) - firstData = JSONObject.parseObject(dataList.get(0).getDocumentContent()); + JSONObject firstData = JSONObject.parseObject(dataList.get(0).getDocumentContent()); //取第一行数据,用于处理检出限 if("1".equals(hasRemark)){ //在最后一列增加备注 t.put(colPrefix + parseNumToString(colCountOneSample + 1, 2), "备注"); } - for(ConfigReportFieldDO fieldDO : fieldList){ + //取fieldList的动态字段,并分组 + List> dynamicFieldListGroup = new ArrayList<>(); + int fieldIndex = 1; + List list = new ArrayList<>(); + for(int i = 0; i < fieldList.size(); i++){ + ConfigReportFieldDO fieldDO = fieldList.get(i); String fieldType = fieldDO.getFieldType(); - String field = fieldDO.getField(); - if(FIELD_FIXED.equals(fieldType)){ //这里只处理动态列。固定列在 addTitleToRowList 处理 + if(FIELD_FIXED.equals(fieldType)) continue; + list.add(fieldDO); + if(fieldIndex % dynamicColCount == 0){ + dynamicFieldListGroup.add(list); + list = new ArrayList<>(); } - String fieldName = fieldDO.getFieldName(); - String colKey = parseNumToString(colIndex, 2); - t.put(colPrefix + colKey, fieldName); - //查询当前字段的检出限 - JSONObject fieldObj = firstData.getJSONObject( field); - String rangeVal = ""; - if(fieldObj != null){ - rangeVal = fieldObj.getString(rangeKey); - } - r.put(colPrefix + colKey, rangeVal); - r.put(colPrefix + "01", "方法检出限"); - lastObjFlag = true; - if(colIndex % colCountOneSample == 0){ - addTitleToRowList(fixedCol, rowAssist, t, dataLength, emptyRowCount, rowList, fieldList); - if("1".equals(hasRange)) - addRangeToRowList(rowAssist, r, dataLength, emptyRowCount, rowList); - t = new JSONObject(); - r = new JSONObject(); - - if("1".equals(hasRemark)){ - //在最后一列增加备注 - t.put(colPrefix + parseNumToString(colCountOneSample + 1, 2), "备注"); + fieldIndex ++; + } + int colIndex = 1; + for(int i = 0; i < dynamicFieldListGroup.size(); i++){ + List dynamicFieldList = dynamicFieldListGroup.get(i); + t = new JSONObject(); + r = new JSONObject(); + colIndex = fixedColCount + 1; //第二组以后,从固定列数开始 + for(ConfigReportFieldDO fieldDO : dynamicFieldList) { + String field = fieldDO.getField(); + String fieldName = fieldDO.getFieldName(); + String colKey = parseNumToString(colIndex, 2); + t.put(colPrefix + colKey, fieldName); + //查询当前字段的检出限 + JSONObject fieldObj = firstData.getJSONObject(field); + String rangeVal = ""; + if (fieldObj != null) { + rangeVal = fieldObj.getString(rangeKey); } - rowAssist++; - colIndex = fixedColCount + 1; //第二组以后,从固定列数开始 - lastObjFlag = false; - continue; + r.put(colPrefix + colKey, rangeVal); + r.put(colPrefix + "01", "方法检出限"); + colIndex ++; } - colIndex++; + //处理备注列 + if(i == 0 && groupIndex == 0 && "1".equals(hasRemark)){ + //在最后一列增加备注 + t.put(colPrefix + parseNumToString(colCountOneSample + 1, 2), "备注"); + } + if(i > 0 || groupIndex > 0){ //插入空行 + JSONObject emptyRow = new JSONObject(); + emptyRow.put(colPrefix + "01", " "); + rowList.add(emptyRow); + } + addTitleToRowList(fixedCol, t, rowList, fieldList); + //插入样品数据 + addDataToRowList(fixedCol, dynamicFieldList, dataList, rowList, fixedColCount, colCountOneSample, hasRemark); } - if(lastObjFlag){ - addTitleToRowList(fixedCol, rowAssist, t, dataLength, emptyRowCount, rowList, fieldList); - if("1".equals(hasRange)) - addRangeToRowList(rowAssist, r, dataLength, emptyRowCount, rowList); + //todo 方法检出限 + if("1".equals(hasRange)){ + rowList.add(r); + } + return rowList; + } + + /** + * @param + * + * */ + private void addTitleToRowList(JSONArray fixedCol, JSONObject t, List rowList, List fieldList){ +// int rowIndex = (1 + dataLength + emptyRowCount) * (rowAssist - 1) + 1; //(标题 + 数据行 + 空行) + //处理固定列 + //todo 来样名称、来样编号、来样名称编号 + int index = 1; + String colKey = ""; + for(int i=0;i fieldList, List dataList, List rowList, int fixedColCount, int colCountOneSample, String hasRemark){ + int colIndex = 0; + JSONObject t = new JSONObject(); for(ReportDocumentDataDO dataDO : dataList){ String documentContent = dataDO.getDocumentContent(); String externalContent = dataDO.getExternalContent(); JSONObject s = JSONObject.parseObject(documentContent); - JSONObject e = new JSONObject(); - if(!ObjectUtils.isEmpty(externalContent)){ - e = JSONObject.parseObject(externalContent); + //判断样品是否有值,若无值则跳过 + boolean hasValue = false; + for(ConfigReportFieldDO fieldDO : fieldList) { + String fieldType = fieldDO.getFieldType(); + if (FIELD_FIXED.equals(fieldType)) //这里只处理动态列。固定列在 addDataToRowList 处理 + continue; + String field = fieldDO.getField(); + JSONObject fieldObj = s.getJSONObject(field); + String fieldValue = ""; + if (fieldObj != null) + fieldValue = fieldObj.getString("fieldValue"); + if(!ObjectUtils.isEmpty(fieldValue)) + hasValue = true; } + if(!hasValue) + continue; + JSONObject e = new JSONObject(); + if(!ObjectUtils.isEmpty(externalContent)) + e = JSONObject.parseObject(externalContent); String remark = e.getString("remark"); colIndex = fixedColCount + 1; - rowAssist = 1; t = new JSONObject(); if("1".equals(hasRemark)){ t.put(colPrefix + parseNumToString(colCountOneSample + 1, 2), remark); @@ -249,157 +318,47 @@ public class ReportDocumentDataServiceImpl implements ReportDocumentDataService } if(!ObjectUtils.isEmpty(mathSymbol) && !"=".equals(mathSymbol)) fieldValue = mathSymbol + fieldValue; + if(ObjectUtils.isEmpty(fieldValue)) + fieldValue = "/"; t.put(colPrefix + colKey, fieldValue); - lastObjFlag = true; - if(colIndex % colCountOneSample == 0){ - addFixedDataToRowList(fixedCol, dataDO, rowAssist, t, dataLength, emptyRowCount, dataIndex, rowList, fieldList); - t = new JSONObject(); - if("1".equals(hasRemark)){ - t.put(colPrefix + parseNumToString(colCountOneSample + 1, 2), remark); - } - rowAssist++; - colIndex = fixedColCount + 1; //第二组以后,从固定列数开始 - lastObjFlag = false; - continue; - } colIndex++; } - if(lastObjFlag){ - addFixedDataToRowList(fixedCol, dataDO, rowAssist, t, dataLength, emptyRowCount, dataIndex, rowList, fieldList); - } - dataIndex ++; - } - - //==============以下为空白================= - //实际使用行数小于总行数,显示“”以下为空白“ - if(dataLength < maxRowCount){ - String colKey = colPrefix + "01"; - t = new JSONObject(); - t.put(colKey, emptyText); - int rowIndex = (dataLength + emptyRowCount) * (rowAssist) + 2; - if(rowAssist == 1) - rowIndex = dataLength + emptyRowCount; - if(rowCountOneSample == 1) - rowIndex = dataLength + 2; - rowList.set(rowIndex, t.clone()); - } - //前面的计数是从1开始,移除第一个元素 - if(!rowList.isEmpty()) - rowList.remove(0); - return rowList; - } - - /** - * @param - * - * */ - private void addTitleToRowList(JSONArray fixedCol, Integer rowAssist, JSONObject t, Integer dataLength, Integer emptyRowCount, List rowList, List fieldList){ - int rowIndex = (1 + dataLength + emptyRowCount) * (rowAssist - 1) + 1; //(标题 + 数据行 + 空行) - //处理固定列 - int index = 1; - String colKey = ""; - for(int i=0;i rowList){ - int rowIndex = (dataLength + emptyRowCount + 1 ) * (rowAssist); - rowList.set(rowIndex, r.clone()); + private void addRangeToRowList(JSONObject r, List rowList){ + rowList.add(r.clone()); } - - /** - * 添加固定列的数据 - * */ - private void addFixedDataToRowList(JSONArray fixedCol, ReportDocumentDataDO dataDO, Integer rowAssist, JSONObject t, Integer dataLength, Integer emptyRowCount, Integer dataIndex, List rowList, List fieldList){ - int rowIndex = (1 + dataLength + emptyRowCount) * (rowAssist - 1) + dataIndex + 1; //(标题 + 数据行 + 空行) - t.put("id", dataDO.getId()); - //处理固定列 - int index = 1; - //处理固定列 - String colKey = ""; - if(fixedCol != null && !fixedCol.isEmpty()){ - for(int i=0;i execAddDataByEntrust(ReportDocumentMainSaveReqVO reqVO) { Long id = reqVO.getId(); String businessSampleEntrustRegistrationIds = reqVO.getBusinessSampleEntrustRegistrationIds(); - if(ObjectUtils.isEmpty(businessSampleEntrustRegistrationIds) || id == null) + if(id == null) + return error(REPORT_DOCUMENT_DATA_NOT_EXISTS.getCode(), "缺少id参数,请刷新后重试"); + if(ObjectUtils.isEmpty(businessSampleEntrustRegistrationIds)) return error(REPORT_DOCUMENT_DATA_NOT_EXISTS.getCode(), "缺少businessSampleEntrustRegistrationIds参数,请刷新后重试"); List reportRelationList = reportDocumentMainCorrelationService.listByMainId(id); //todo 判断修改的场景。处理方法:删除reportRelation、ReportDocumentData @@ -152,6 +154,7 @@ public class ReportDocumentMainServiceImpl implements ReportDocumentMainService, reportDocumentDataDO.setSampleName(assayReportData.getSampleName()); reportDocumentDataDO.setBaseSampleName(assayReportData.getBaseSampleName()); reportDocumentDataDO.setDocumentContent(assayReportData.getAssayData()); + reportDocumentDataDO.setSampleTypeKey(assayReportData.getSampleTypeKey()); insertList.add(reportDocumentDataDO); } if(!insertList.isEmpty()) diff --git a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayReportDataMapper.xml b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayReportDataMapper.xml index c7901a3..eefef22 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayReportDataMapper.xml +++ b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayReportDataMapper.xml @@ -30,7 +30,8 @@ d.DELETED as deleted, s.CREATE_TIME as baseSampleCreateTime, s.SMP_NAME as sampleName, - s.BSE_SMP_NAME as baseSampleName + s.BSE_SMP_NAME as baseSampleName, + (select KY from T_DIC_BSN dic where dic.id = s.DIC_BSN_ID) as sampleTypeKey FROM T_BSN_ASY_RPT_DAT d inner join T_BSN_BSE_SMP s on d.BSN_BSE_SMP_ID = s.id diff --git a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSampleEntrustRegistrationMapper.xml b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSampleEntrustRegistrationMapper.xml index d2d3745..29fb1f4 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSampleEntrustRegistrationMapper.xml +++ b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSampleEntrustRegistrationMapper.xml @@ -56,6 +56,7 @@ m.SYS_DEPT_CD as systemDepartmentCode, m.UPD_CNT as updateCount, m.RMK as remark, + m.CREATE_TIME as createTime, es.name as configEntrustSourceName FROM T_BSN_SMP_ENTT_REG m left join T_CFG_ENTT_SRC es on m.CFG_ENTT_SRC_ID = es.id From b7f30012c86b511d0dec992a30217a89bde2a97d Mon Sep 17 00:00:00 2001 From: FCL Date: Mon, 8 Dec 2025 17:50:15 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat:=E6=8A=A5=E5=91=8A=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=AE=97=E6=B3=95=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataobject/BusinessAssayReportDataDO.java | 13 ++ ...inessSampleEntrustRegistrationService.java | 4 + ...sSampleEntrustRegistrationServiceImpl.java | 5 + .../admin/ReportDocumentMainController.java | 72 ++---- .../vo/ReportDocumentDataPageReqVO.java | 9 + .../vo/ReportDocumentDataRespVO.java | 12 + .../vo/ReportDocumentDataSaveReqVO.java | 9 + .../dal/dataobject/ReportDocumentDataDO.java | 16 ++ .../ReportDocumentDataServiceImpl.java | 210 ++++++++++++------ .../ReportDocumentMainCorrelationService.java | 2 + ...ortDocumentMainCorrelationServiceImpl.java | 5 + .../service/ReportDocumentMainService.java | 3 +- .../ReportDocumentMainServiceImpl.java | 87 +++++++- .../mapper/BusinessAssayReportDataMapper.xml | 4 + 14 files changed, 323 insertions(+), 128 deletions(-) diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessAssayReportDataDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessAssayReportDataDO.java index ca69a65..536d6ae 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessAssayReportDataDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessAssayReportDataDO.java @@ -1,5 +1,6 @@ package com.zt.plat.module.qms.business.bus.dal.dataobject; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; import java.time.LocalDateTime; @@ -113,4 +114,16 @@ public class BusinessAssayReportDataDO extends BusinessBaseDO { //样品类型key @TableField(exist = false) private String sampleTypeKey; + + //委托样品名称 + @TableField(exist = false) + private String entrustSampleName; + + //委托样品编号 + @TableField(exist = false) + private String entrustSampleCode; + + //委托明细排序 + @TableField(exist = false) + private Integer entrustDetailSort; } \ 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/BusinessSampleEntrustRegistrationService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/BusinessSampleEntrustRegistrationService.java index ae49327..9da761c 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/BusinessSampleEntrustRegistrationService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/BusinessSampleEntrustRegistrationService.java @@ -19,6 +19,8 @@ import com.zt.plat.framework.common.pojo.PageParam; */ public interface BusinessSampleEntrustRegistrationService { + + /** * 创建委检登记业务 * @@ -56,6 +58,8 @@ public interface BusinessSampleEntrustRegistrationService { */ BusinessSampleEntrustRegistrationDO getBusinessSampleEntrustRegistration(Long id); + List listByIds(List ids); + /** * 获得委检登记业务分页 * diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/BusinessSampleEntrustRegistrationServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/BusinessSampleEntrustRegistrationServiceImpl.java index c578ea4..663b5f4 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/BusinessSampleEntrustRegistrationServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/BusinessSampleEntrustRegistrationServiceImpl.java @@ -89,6 +89,11 @@ public class BusinessSampleEntrustRegistrationServiceImpl implements BusinessSam return businessSampleEntrustRegistrationMapper.selectById(id); } + @Override + public List listByIds(List ids) { + return businessSampleEntrustRegistrationMapper.selectByIds(ids); + } + @Override public PageResult getBusinessSampleEntrustRegistrationPage(BusinessSampleEntrustRegistrationPageReqVO pageReqVO) { return businessSampleEntrustRegistrationMapper.selectPage(pageReqVO); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/admin/ReportDocumentMainController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/admin/ReportDocumentMainController.java index 9d491b7..a696f7f 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/admin/ReportDocumentMainController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/admin/ReportDocumentMainController.java @@ -189,58 +189,32 @@ public class ReportDocumentMainController extends AbstractFileUploadController i //处理抬头数据 - if("true".equals(editFlag)){ - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String formData = vo.getFormData(); - JSONObject formDataJson = new JSONObject(); - if(!ObjectUtils.isEmpty(formData)) - formDataJson = JSONObject.parseObject(formData); - List dataList = reportDocumentDataService.listByMainDataId(id).getData(); - ReportDocumentTypeDO typeDO = reportDocumentTypeService.getReportDocumentType(reportDocumentMain.getReportDocumentTypeId()); - String customConfig = typeDO.getCustomConfig(); - String defaultConclusion = ""; - if(!ObjectUtils.isEmpty(customConfig)){ - JSONObject config = JSONObject.parseObject(customConfig); - defaultConclusion = config.getString("defaultConclusion"); - } - formDataJson.put("conclusion", defaultConclusion); - if(!dataList.isEmpty()) - formDataJson.put("sampleName", dataList.get(0).getSampleName()); - //处理检测标准 - String standard = assembleStandard(dataList); - formDataJson.put("standard", standard); - formDataJson.put("reportTime", sdf.format(new Date())); - vo.setFormData(formDataJson.toJSONString()); -// ReportDocumentMainSaveReqVO updateVO = new ReportDocumentMainSaveReqVO(); -// updateVO.setId(reportDocumentMain.getId()); -// updateVO.setFormData(formDataJson.toJSONString()); -// reportDocumentMainService.updateReportDocumentMain(updateVO); - } +// if("true".equals(editFlag)){ +// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// String formData = vo.getFormData(); +// JSONObject formDataJson = new JSONObject(); +// if(!ObjectUtils.isEmpty(formData)) +// formDataJson = JSONObject.parseObject(formData); +// List dataList = reportDocumentDataService.listByMainDataId(id).getData(); +// ReportDocumentTypeDO typeDO = reportDocumentTypeService.getReportDocumentType(reportDocumentMain.getReportDocumentTypeId()); +// String customConfig = typeDO.getCustomConfig(); +// String defaultConclusion = ""; +// if(!ObjectUtils.isEmpty(customConfig)){ +// JSONObject config = JSONObject.parseObject(customConfig); +// defaultConclusion = config.getString("defaultConclusion"); +// } +// formDataJson.put("conclusion", defaultConclusion); +// if(!dataList.isEmpty()) +// formDataJson.put("sampleName", dataList.get(0).getSampleName()); +// //处理检测标准 +// String standard = assembleStandard(dataList); +// formDataJson.put("standard", standard); +// formDataJson.put("reportTime", sdf.format(new Date())); +// vo.setFormData(formDataJson.toJSONString()); +// } return success(vo); } - private String assembleStandard(List dataList){ - - Set standardSet = new HashSet<>(); - for(ReportDocumentDataDO data : dataList){ - String content = data.getDocumentContent(); - if(ObjectUtils.isEmpty( content)) - continue; - JSONObject json = JSONObject.parseObject(content); - for(String key : json.keySet()){ - JSONObject obj = json.getJSONObject(key); - String methodName = obj.getString("methodName"); - if(ObjectUtils.isEmpty(methodName)) - continue; - standardSet.add(methodName); - } - } - if(standardSet.isEmpty()) - return ""; - return String.join(",", standardSet); - } - - @GetMapping("/page") @Operation(summary = "获得检测报告业务分页") //@PreAuthorize("@ss.hasPermission('qms:report-document-main:query')") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataPageReqVO.java index aa18c88..ba747d5 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataPageReqVO.java @@ -46,4 +46,13 @@ public class ReportDocumentDataPageReqVO extends PageParam { @Schema(description = "样品类型key") private String sampleTypeKey; + + @Schema(description = "委托样品名称") + private String entrustSampleName; + + @Schema(description = "委托样品编号") + private String entrustSampleCode; + + @Schema(description = "排序") + private Integer sort; } \ 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/reportdoc/controller/vo/ReportDocumentDataRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataRespVO.java index 1a3c3b4..c4a6d9e 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataRespVO.java @@ -60,6 +60,18 @@ public class ReportDocumentDataRespVO { @ExcelProperty("样品类型key") private String sampleTypeKey; + @Schema(description = "委托样品名称") + @ExcelProperty("委托样品名称") + private String entrustSampleName; + + @Schema(description = "委托样品编号") + @ExcelProperty("委托样品编号") + private String entrustSampleCode; + + @Schema(description = "排序") + @ExcelProperty("排序") + private Integer sort; + //==================扩展字段=========== @Schema(description = "样品创建时间") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataSaveReqVO.java index 53e0b57..bc5f178 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/vo/ReportDocumentDataSaveReqVO.java @@ -43,4 +43,13 @@ public class ReportDocumentDataSaveReqVO { @Schema(description = "样品类型key") private String sampleTypeKey; + @Schema(description = "委托样品名称") + private String entrustSampleName; + + @Schema(description = "委托样品编号") + private String entrustSampleCode; + + @Schema(description = "排序") + private Integer sort; + } \ 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/reportdoc/dal/dataobject/ReportDocumentDataDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/dal/dataobject/ReportDocumentDataDO.java index 4160839..25c46a4 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/dal/dataobject/ReportDocumentDataDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/dal/dataobject/ReportDocumentDataDO.java @@ -79,6 +79,22 @@ public class ReportDocumentDataDO extends BusinessBaseDO { @TableField("SMP_TP_KY") private String sampleTypeKey; + /** + * 委托样品名称 + */ + @TableField("ENTT_SMP_NAME") + private String entrustSampleName; + /** + * 委托样品编号 + */ + @TableField("ENTT_SMP_CD") + private String entrustSampleCode; + + /** + * 排序 + */ + @TableField("SRT") + private Integer sort; //==================扩展字段=========== //样品创建时间 diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentDataServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentDataServiceImpl.java index de4e45a..7ea9b88 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentDataServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentDataServiceImpl.java @@ -27,6 +27,7 @@ import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.e import static com.zt.plat.module.qms.enums.ErrorCodeConstants.REPORT_DOCUMENT_DATA_NOT_EXISTS; import static com.zt.plat.module.qms.enums.ErrorCodeConstants.REPORT_DOCUMENT_TYPE_NOT_EXISTS; import static com.zt.plat.module.qms.enums.QmsCommonConstant.FIELD_DYNAMIC; +import static com.zt.plat.module.qms.enums.QmsCommonConstant.FIELD_CALCULATED; import static com.zt.plat.module.qms.enums.QmsCommonConstant.FIELD_FIXED; /** @@ -43,10 +44,6 @@ public class ReportDocumentDataServiceImpl implements ReportDocumentDataService private final String colPrefix = "col"; private final String sampleCodeKey = "SMP_CD"; private final String sampleNameKey = "SMP_NAME"; - private final String name_code_merge = "merge"; - private final String name_code_name = "name"; - private final String name_code_code = "code"; - private final String name_code_split = "split"; private final String rangeKey = "minLimitValue"; private final String emptyText = "以下为空白"; @@ -59,6 +56,11 @@ public class ReportDocumentDataServiceImpl implements ReportDocumentDataService if(typeDO == null || typeDO.getConfigReportTypeId() == null) return CommonResult.error(REPORT_DOCUMENT_TYPE_NOT_EXISTS.getCode(), "报告配置为空,或未配置报表类型,请联系管理员处理!"); String customConfig = typeDO.getCustomConfig(); + JSONObject configJson = JSONObject.parseObject(customConfig); + String maxRowCountStr = configJson.getString("maxRowCount"); //最大行数 + Integer maxRowCount = 3; + if(!ObjectUtils.isEmpty(maxRowCountStr)) + maxRowCount = Integer.parseInt(maxRowCountStr); //查询报表字段配置 ConfigReportFieldPageReqVO fieldParam = new ConfigReportFieldPageReqVO(); fieldParam.setConfigReportTypeId(typeDO.getConfigReportTypeId()); @@ -78,7 +80,8 @@ public class ReportDocumentDataServiceImpl implements ReportDocumentDataService dataListByKey.add(dataDO); } } - dataListGroup.add(dataListByKey); + if(!dataListByKey.isEmpty()) + dataListGroup.add(dataListByKey); } if(dataListGroup.isEmpty()) dataListGroup.add(dataList); @@ -115,20 +118,52 @@ public class ReportDocumentDataServiceImpl implements ReportDocumentDataService } assembleStep1(rowList, fieldList, dataListByKey, customConfig, i); //处理后的组数对象 } + //处理空数据,填充/ + rowList = assembleEmpty(configJson, rowList); //todo 处理数据分页 - //todo 以下为空白 -// JSONObject t = new JSONObject(); -// t.put(colPrefix + "01", emptyText); -// rowList.add(t.clone()); - - //todo 检出限 - - + //以下为空白 + if(rowList.size() < maxRowCount){ + JSONObject t = new JSONObject(); + t.put(colPrefix + "01", emptyText); + rowList.add(t.clone()); + } + while(rowList.size() < maxRowCount){ + JSONObject t = new JSONObject(); + t.put(colPrefix + "01", " "); + rowList.add(t.clone()); + } return CommonResult.success(rowList); } + private List assembleEmpty(JSONObject configJson, List rowList){ + JSONArray fixedCol = configJson.getJSONArray("fixedCol"); //固定列,举例:["sampleName", "sampleCode"] + if(fixedCol == null) fixedCol = new JSONArray(); + JSONArray fixedColRight = configJson.getJSONArray("fixedColRight"); //右侧固定列 + if(fixedColRight == null) fixedColRight = new JSONArray(); + String dynamicColCountStr = configJson.getString("dynamicColCount"); //动态列(检测项)数量 + Integer dynamicColCount = 0; + Integer fixedColCount_left = 0; + Integer fixedColCount_right = 0; + if(!ObjectUtils.isEmpty(dynamicColCountStr)) dynamicColCount = Integer.parseInt(dynamicColCountStr); + fixedColCount_left = fixedCol.size(); + fixedColCount_right = fixedColRight.size(); + + for(JSONObject row : rowList){ + if(" ".equals(row.getString(colPrefix + "01"))) + continue; + int colIndex = 1; + while(colIndex <= dynamicColCount){ + String colKey = colPrefix + parseNumToString(colIndex + fixedColCount_left, 2); + if(!row.containsKey(colKey)) + row.put(colKey, "/"); + colIndex ++; + } + } + return rowList; + } + /** * 将数据按colCount分组。返回2维数组 * @param fieldList 要显示的字段列表。固定字段在最前 @@ -139,11 +174,13 @@ public class ReportDocumentDataServiceImpl implements ReportDocumentDataService return new ArrayList<>(); JSONObject jsonObject = JSONObject.parseObject(customConfig); Integer dynamicColCount = 3; - Integer fixedColCount = 0; - Integer maxRowCount = 3; + Integer fixedColCount_left = 0; + String dynamicColCountStr = jsonObject.getString("dynamicColCount"); //动态列(检测项)数量 JSONArray fixedCol = jsonObject.getJSONArray("fixedCol"); //固定列,举例:["sampleName", "sampleCode"] - String maxRowCountStr = jsonObject.getString("maxRowCount"); //最大行数 + if(fixedCol == null) fixedCol = new JSONArray(); + JSONArray fixedColRight = jsonObject.getJSONArray("fixedColRight"); //右侧固定列 + if(fixedColRight == null) fixedColRight = new JSONArray(); String hasRemark = jsonObject.getString("hasRemark"); //是否有备注 String hasRange = jsonObject.getString("hasRange"); //是否有检出限 String verticalFlag = jsonObject.getString("verticalFlag"); //vertical-纵表, 否则为横表 @@ -155,11 +192,8 @@ public class ReportDocumentDataServiceImpl implements ReportDocumentDataService return assembleFixedFieldsData(fieldList, dataList, customConfig); } if(!ObjectUtils.isEmpty(dynamicColCountStr)) dynamicColCount = Integer.parseInt(dynamicColCountStr); - if(fixedCol != null) fixedColCount = fixedCol.size(); - - if(!ObjectUtils.isEmpty(maxRowCountStr)) maxRowCount = Integer.parseInt(maxRowCountStr); - Integer colCountOneSample = fixedColCount + dynamicColCount; //每个样品要占的列数 - Integer dataLength = dataList.size(); + fixedColCount_left = fixedCol.size(); + Integer colCountOneSample = fixedColCount_left + dynamicColCount; //每个样品要占的列数 //=============处理表头============ JSONObject t = new JSONObject(); JSONObject r = new JSONObject(); //检出限 @@ -185,12 +219,14 @@ public class ReportDocumentDataServiceImpl implements ReportDocumentDataService } fieldIndex ++; } + if(!list.isEmpty()) + dynamicFieldListGroup.add(list); int colIndex = 1; for(int i = 0; i < dynamicFieldListGroup.size(); i++){ List dynamicFieldList = dynamicFieldListGroup.get(i); t = new JSONObject(); r = new JSONObject(); - colIndex = fixedColCount + 1; //第二组以后,从固定列数开始 + colIndex = fixedColCount_left + 1; //第二组以后,从固定列数开始 for(ConfigReportFieldDO fieldDO : dynamicFieldList) { String field = fieldDO.getField(); String fieldName = fieldDO.getFieldName(); @@ -216,13 +252,13 @@ public class ReportDocumentDataServiceImpl implements ReportDocumentDataService emptyRow.put(colPrefix + "01", " "); rowList.add(emptyRow); } - addTitleToRowList(fixedCol, t, rowList, fieldList); + addTitleToRowList(fixedCol, fixedColRight, dynamicColCount, t, rowList, fieldList); //插入样品数据 - addDataToRowList(fixedCol, dynamicFieldList, dataList, rowList, fixedColCount, colCountOneSample, hasRemark); - } - //todo 方法检出限 - if("1".equals(hasRange)){ - rowList.add(r); + addDataToRowList(fixedCol, fixedColRight, dynamicFieldList, dataList, rowList, fixedColCount_left, dynamicColCount, hasRemark); + //检出限 + if("1".equals(hasRange)){ + rowList.add(r); + } } return rowList; } @@ -231,46 +267,64 @@ public class ReportDocumentDataServiceImpl implements ReportDocumentDataService * @param * * */ - private void addTitleToRowList(JSONArray fixedCol, JSONObject t, List rowList, List fieldList){ -// int rowIndex = (1 + dataLength + emptyRowCount) * (rowAssist - 1) + 1; //(标题 + 数据行 + 空行) + private void addTitleToRowList(JSONArray fixedCol, JSONArray fixedColRight, Integer dynamicColCount, JSONObject t, List rowList, List fieldList){ //处理固定列 - //todo 来样名称、来样编号、来样名称编号 int index = 1; String colKey = ""; + //固定列-左 for(int i=0;i fieldList, List dataList, List rowList, int fixedColCount, int colCountOneSample, String hasRemark){ + private void addDataToRowList(JSONArray fixedCol, JSONArray fixedColRight, List fieldList, List dataList, List rowList, int fixedColCount, int dynamicColCount, String hasRemark){ int colIndex = 0; JSONObject t = new JSONObject(); for(ReportDocumentDataDO dataDO : dataList){ @@ -299,6 +353,7 @@ public class ReportDocumentDataServiceImpl implements ReportDocumentDataService String remark = e.getString("remark"); colIndex = fixedColCount + 1; t = new JSONObject(); + int colCountOneSample = fixedColCount + dynamicColCount; if("1".equals(hasRemark)){ t.put(colPrefix + parseNumToString(colCountOneSample + 1, 2), remark); } @@ -323,28 +378,51 @@ public class ReportDocumentDataServiceImpl implements ReportDocumentDataService t.put(colPrefix + colKey, fieldValue); colIndex++; } - //处理固定列 t.put("id", dataDO.getId()); - //处理固定列 + //处理固定列-左 int index = 1; - //处理固定列 String colKey = ""; - if(fixedCol != null && !fixedCol.isEmpty()){ - for(int i=0;i> listByMainDataId(Long mainDataId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("MAIN_ID", mainDataId); - queryWrapper.orderByAsc("ID"); + queryWrapper.orderByAsc("SRT"); List list = reportDocumentDataMapper.selectList(queryWrapper); return CommonResult.success(list); } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainCorrelationService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainCorrelationService.java index 2a1c2be..cdb3dff 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainCorrelationService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainCorrelationService.java @@ -22,6 +22,8 @@ public interface ReportDocumentMainCorrelationService { void deleteByMainId(Long mainId); + void insertBatch(List list); + /** * 创建检测报告关系表 * diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainCorrelationServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainCorrelationServiceImpl.java index d0188b5..dd0d20e 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainCorrelationServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainCorrelationServiceImpl.java @@ -59,6 +59,11 @@ public class ReportDocumentMainCorrelationServiceImpl implements ReportDocumentM reportDocumentMainCorrelationMapper.delete(query); } + @Override + public void insertBatch(List list) { + reportDocumentMainCorrelationMapper.insertBatch(list); + } + @Override public void updateReportDocumentMainCorrelation(ReportDocumentMainCorrelationSaveReqVO updateReqVO) { // 校验存在 diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainService.java index baacc8b..1d2b237 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainService.java @@ -3,6 +3,7 @@ package com.zt.plat.module.qms.business.reportdoc.service; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayReportDataDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustRegistrationDO; import com.zt.plat.module.qms.business.reportdoc.controller.vo.*; import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentMainDO; import jakarta.validation.Valid; @@ -23,7 +24,7 @@ public interface ReportDocumentMainService { CommonResult execAddDataByEntrust(ReportDocumentMainSaveReqVO reqVO); //添加数据到报告-按表表数据 - CommonResult execAddByBusinessAssayReportData(List assayReportDataList, Long id); + CommonResult execAddByBusinessAssayReportData(List assayReportDataList, Long id, List entrustList); //移除数据 CommonResult execRemoveData(ReportDocumentMainSaveReqVO reqVO); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainServiceImpl.java index 1569cfe..a35ca24 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainServiceImpl.java @@ -17,12 +17,15 @@ import com.zt.plat.module.qms.api.task.BMPCallbackInterface; import com.zt.plat.module.qms.api.task.dto.QmsBpmDTO; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessAssayReportDataPageReqVO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayReportDataDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustRegistrationDO; import com.zt.plat.module.qms.business.bus.service.BusinessAssayReportDataService; +import com.zt.plat.module.qms.business.bus.service.BusinessSampleEntrustRegistrationService; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigUserSignatureDO; import com.zt.plat.module.qms.business.config.service.ConfigUserSignatureService; import com.zt.plat.module.qms.business.reportdoc.controller.vo.*; import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentDataDO; import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentMainCorrelationDO; +import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentTypeDO; import com.zt.plat.module.qms.business.reportdoc.dal.mapper.ReportDocumentMainMapper; import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentMainDO; import com.zt.plat.module.qms.enums.QmsBpmConstant; @@ -35,10 +38,7 @@ import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception0; @@ -62,7 +62,10 @@ public class ReportDocumentMainServiceImpl implements ReportDocumentMainService, @Resource private BpmProcessInstanceApi bpmProcessInstanceApi; @Resource private BpmTaskApi bpmTaskApi; @Resource private ReportDocumentMainCorrelationService reportDocumentMainCorrelationService; + @Resource private ReportDocumentTypeService reportDocumentTypeService; @Resource private ConfigUserSignatureService configUserSignatureService; + @Resource private BusinessSampleEntrustRegistrationService businessSampleEntrustRegistrationService; + /*** * 增加报表数据(按样品) * 传入:报告id、 报表数据ids @@ -93,14 +96,13 @@ public class ReportDocumentMainServiceImpl implements ReportDocumentMainService, } if(isExist) return error(REPORT_DOCUMENT_DATA_NOT_EXISTS.getCode(), "报表数据已在本报告使用,请勿重复添加"); -// List assayReportDataList = businessAssayReportDataService.listByIds(addReportDataIdList); BusinessAssayReportDataPageReqVO reportDataQueryVo = new BusinessAssayReportDataPageReqVO(); reportDataQueryVo.setIdList(addReportDataIdList); reportDataQueryVo.setPageNo(1); reportDataQueryVo.setPageSize(9999); PageResult assayReportPage = businessAssayReportDataService.queryWaitingDataForReport( reportDataQueryVo); List assayReportDataList = assayReportPage.getList(); - return execAddByBusinessAssayReportData(assayReportDataList, id); + return execAddByBusinessAssayReportData(assayReportDataList, id, new ArrayList<>()); } @Override @@ -112,37 +114,40 @@ public class ReportDocumentMainServiceImpl implements ReportDocumentMainService, return error(REPORT_DOCUMENT_DATA_NOT_EXISTS.getCode(), "缺少id参数,请刷新后重试"); if(ObjectUtils.isEmpty(businessSampleEntrustRegistrationIds)) return error(REPORT_DOCUMENT_DATA_NOT_EXISTS.getCode(), "缺少businessSampleEntrustRegistrationIds参数,请刷新后重试"); - List reportRelationList = reportDocumentMainCorrelationService.listByMainId(id); - //todo 判断修改的场景。处理方法:删除reportRelation、ReportDocumentData List businessSampleEntrustRegistrationIdList = new ArrayList<>(); String[] split = businessSampleEntrustRegistrationIds.split(","); for (String s : split) { Long aLong = Long.valueOf(s); businessSampleEntrustRegistrationIdList.add(aLong); } + List entrustList = businessSampleEntrustRegistrationService.listByIds(businessSampleEntrustRegistrationIdList); BusinessAssayReportDataPageReqVO reportDataQueryVo = new BusinessAssayReportDataPageReqVO(); reportDataQueryVo.setBusinessSampleEntrustRegistrationIdList(businessSampleEntrustRegistrationIdList); reportDataQueryVo.setPageNo(1); reportDataQueryVo.setPageSize(9999); PageResult assayReportPage = businessAssayReportDataService.queryWaitingDataForReport( reportDataQueryVo); List assayReportDataList = assayReportPage.getList(); - CommonResult ret = execAddByBusinessAssayReportData(assayReportDataList, id); + CommonResult ret = execAddByBusinessAssayReportData(assayReportDataList, id, entrustList); if(!ret.isSuccess()) return ret; //保存报告关系表 + List correlationList = new ArrayList<>(); for(Long businessSampleEntrustRegistrationId : businessSampleEntrustRegistrationIdList){ - ReportDocumentMainCorrelationSaveReqVO correlationEntity = new ReportDocumentMainCorrelationSaveReqVO(); + ReportDocumentMainCorrelationDO correlationEntity = new ReportDocumentMainCorrelationDO(); correlationEntity.setMainId( id); correlationEntity.setCorrelationId(businessSampleEntrustRegistrationId); correlationEntity.setCorrelationType(ReportDocumentMainCorrelationService.CorrelationType_entrust); - reportDocumentMainCorrelationService.createReportDocumentMainCorrelation(correlationEntity); + correlationList.add(correlationEntity); } + if(!correlationList.isEmpty()) + reportDocumentMainCorrelationService.insertBatch(correlationList); return CommonResult.success("操作成功"); } @Override - public CommonResult execAddByBusinessAssayReportData(List assayReportDataList, Long id){ + @Transactional(rollbackFor = Exception.class) + public CommonResult execAddByBusinessAssayReportData(List assayReportDataList, Long id, List entrustList){ if(ObjectUtils.isEmpty(assayReportDataList)) return error(REPORT_DOCUMENT_DATA_NOT_EXISTS.getCode(), "您选择的委托还没产生可编制报告的数据,请稍后重试!"); List insertList = new ArrayList<>(); @@ -155,16 +160,74 @@ public class ReportDocumentMainServiceImpl implements ReportDocumentMainService, reportDocumentDataDO.setBaseSampleName(assayReportData.getBaseSampleName()); reportDocumentDataDO.setDocumentContent(assayReportData.getAssayData()); reportDocumentDataDO.setSampleTypeKey(assayReportData.getSampleTypeKey()); + reportDocumentDataDO.setEntrustSampleCode(assayReportData.getEntrustSampleCode()); + reportDocumentDataDO.setEntrustSampleName(assayReportData.getEntrustSampleName()); + reportDocumentDataDO.setSort(assayReportData.getEntrustDetailSort()); insertList.add(reportDocumentDataDO); } if(!insertList.isEmpty()) reportDocumentDataService.insertBatch(insertList); ReportDocumentMainDO reportDocumentMainDO = reportDocumentMainMapper.selectById(id); updateCommonField(reportDocumentMainDO); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String formData = reportDocumentMainDO.getFormData(); + JSONObject formDataJson = new JSONObject(); + if(!ObjectUtils.isEmpty(formData)) + formDataJson = JSONObject.parseObject(formData); + ReportDocumentTypeDO typeDO = reportDocumentTypeService.getReportDocumentType(reportDocumentMainDO.getReportDocumentTypeId()); + String customConfig = typeDO.getCustomConfig(); + String defaultConclusion = ""; + if(!ObjectUtils.isEmpty(customConfig)){ + JSONObject config = JSONObject.parseObject(customConfig); + defaultConclusion = config.getString("defaultConclusion"); + } + formDataJson.put("conclusion", defaultConclusion); + if(!assayReportDataList.isEmpty()) + formDataJson.put("sampleName", assayReportDataList.get(0).getSampleName()); + //处理检测标准 + String standard = assembleStandard(assayReportDataList); + formDataJson.put("standard", standard); + formDataJson.put("reportTime", sdf.format(new Date())); + + //委托单号 + String entrustCode = ""; + if(!ObjectUtils.isEmpty(entrustList)){ + for(BusinessSampleEntrustRegistrationDO entrust : entrustList){ + entrustCode += entrust.getEntrustNumber() + ","; + break; + } + } + if(!ObjectUtils.isEmpty(entrustCode)) + entrustCode = entrustCode.substring(0, entrustCode.length() - 1); + formDataJson.put("entrustCode", entrustCode); + + reportDocumentMainDO.setFormData(formDataJson.toJSONString()); reportDocumentMainMapper.updateById(reportDocumentMainDO); return CommonResult.success("操作成功"); } + //组装检测标准 + private String assembleStandard(List dataList){ + Set standardSet = new HashSet<>(); + for(BusinessAssayReportDataDO data : dataList){ + String content = data.getAssayData(); + if(ObjectUtils.isEmpty( content)) + continue; + JSONObject json = JSONObject.parseObject(content); + for(String key : json.keySet()){ + JSONObject obj = json.getJSONObject(key); + String methodName = obj.getString("methodName"); + if(ObjectUtils.isEmpty(methodName)) + continue; + standardSet.add(methodName); + } + } + if(standardSet.isEmpty()) + return ""; + return String.join(",", standardSet); + } + @Override public void updateCommonField(ReportDocumentMainDO reportDocumentMainDO) { if(reportDocumentMainDO == null) diff --git a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayReportDataMapper.xml b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayReportDataMapper.xml index eefef22..faf43b5 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayReportDataMapper.xml +++ b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayReportDataMapper.xml @@ -31,9 +31,13 @@ s.CREATE_TIME as baseSampleCreateTime, s.SMP_NAME as sampleName, s.BSE_SMP_NAME as baseSampleName, + ed.ENTT_SMP_NAME as entrustSampleName, + ed.ENTT_SMP_CD as entrustSampleCode, + ed.SRT as entrustDetailSort, (select KY from T_DIC_BSN dic where dic.id = s.DIC_BSN_ID) as sampleTypeKey FROM T_BSN_ASY_RPT_DAT d inner join T_BSN_BSE_SMP s on d.BSN_BSE_SMP_ID = s.id + inner join T_BSN_SMP_ENTT_DTL ed on ed.BSN_BSE_SMP_ID = s.id and d.id in (