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 (