Merge remote-tracking branch 'origin/test' into test
This commit is contained in:
@@ -26,6 +26,8 @@ import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIg
|
|||||||
import static com.zt.plat.framework.common.pojo.CommonResult.success;
|
import static com.zt.plat.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
import com.zt.plat.framework.excel.core.util.ExcelUtils;
|
import com.zt.plat.framework.excel.core.util.ExcelUtils;
|
||||||
|
import com.zt.plat.framework.security.core.LoginUser;
|
||||||
|
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
|
||||||
import com.zt.plat.module.qms.business.bus.controller.vo.*;
|
import com.zt.plat.module.qms.business.bus.controller.vo.*;
|
||||||
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustDepartmentDO;
|
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustDepartmentDO;
|
||||||
import com.zt.plat.module.qms.business.bus.service.BusinessSampleEntrustDepartmentService;
|
import com.zt.plat.module.qms.business.bus.service.BusinessSampleEntrustDepartmentService;
|
||||||
@@ -89,6 +91,10 @@ public class BusinessSampleEntrustDepartmentController implements BusinessContro
|
|||||||
@Operation(summary = "获得委检登记分析部门业务分页")
|
@Operation(summary = "获得委检登记分析部门业务分页")
|
||||||
// @PreAuthorize("@ss.hasPermission('t:business-sample-entrust-department:query')")
|
// @PreAuthorize("@ss.hasPermission('t:business-sample-entrust-department:query')")
|
||||||
public CommonResult<PageResult<BusinessSampleEntrustDepartmentExtendRespVO>> getBusinessSampleEntrustDepartmentPage(@Valid BusinessSampleEntrustDepartmentPageReqVO pageReqVO) {
|
public CommonResult<PageResult<BusinessSampleEntrustDepartmentExtendRespVO>> getBusinessSampleEntrustDepartmentPage(@Valid BusinessSampleEntrustDepartmentPageReqVO pageReqVO) {
|
||||||
|
if (pageReqVO.getAssayDepartmentId() == null) {
|
||||||
|
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
||||||
|
pageReqVO.setAssayDepartmentId(loginUser.getVisitDeptId());
|
||||||
|
}
|
||||||
PageResult<BusinessSampleEntrustDepartmentExtendRespVO> pageResult = businessSampleEntrustDepartmentService.getBusinessSampleEntrustDepartmentPage(pageReqVO);
|
PageResult<BusinessSampleEntrustDepartmentExtendRespVO> pageResult = businessSampleEntrustDepartmentService.getBusinessSampleEntrustDepartmentPage(pageReqVO);
|
||||||
return success(pageResult);
|
return success(pageResult);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,9 @@ public class BusinessSampleEntrustFilePageReqVO extends PageParam {
|
|||||||
@Schema(description = "路径")
|
@Schema(description = "路径")
|
||||||
private String filePath;
|
private String filePath;
|
||||||
|
|
||||||
|
@Schema(description = "扩展信息")
|
||||||
|
private String externalInfomation;
|
||||||
|
|
||||||
@Schema(description = "所属部门")
|
@Schema(description = "所属部门")
|
||||||
private String systemDepartmentCode;
|
private String systemDepartmentCode;
|
||||||
|
|
||||||
|
|||||||
@@ -42,6 +42,9 @@ public class BusinessSampleEntrustFileRespVO {
|
|||||||
@ExcelProperty("路径")
|
@ExcelProperty("路径")
|
||||||
private String filePath;
|
private String filePath;
|
||||||
|
|
||||||
|
@Schema(description = "扩展信息")
|
||||||
|
private String externalInfomation;
|
||||||
|
|
||||||
@Schema(description = "所属部门")
|
@Schema(description = "所属部门")
|
||||||
@ExcelProperty("所属部门")
|
@ExcelProperty("所属部门")
|
||||||
private String systemDepartmentCode;
|
private String systemDepartmentCode;
|
||||||
|
|||||||
@@ -31,6 +31,9 @@ public class BusinessSampleEntrustFileSaveReqVO {
|
|||||||
@Schema(description = "路径")
|
@Schema(description = "路径")
|
||||||
private String filePath;
|
private String filePath;
|
||||||
|
|
||||||
|
@Schema(description = "扩展信息")
|
||||||
|
private String externalInfomation;
|
||||||
|
|
||||||
@Schema(description = "所属部门")
|
@Schema(description = "所属部门")
|
||||||
private String systemDepartmentCode;
|
private String systemDepartmentCode;
|
||||||
|
|
||||||
|
|||||||
@@ -62,6 +62,11 @@ public class BusinessSampleEntrustFileDO extends BusinessBaseDO {
|
|||||||
@TableField("FILE_PATH")
|
@TableField("FILE_PATH")
|
||||||
private String filePath;
|
private String filePath;
|
||||||
/**
|
/**
|
||||||
|
* 扩展信息
|
||||||
|
*/
|
||||||
|
@TableField("EXT_INF")
|
||||||
|
private String externalInfomation;
|
||||||
|
/**
|
||||||
* 所属部门
|
* 所属部门
|
||||||
*/
|
*/
|
||||||
@TableField("SYS_DEPT_CD")
|
@TableField("SYS_DEPT_CD")
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ public interface BusinessSampleEntrustFileMapper extends BaseMapperX<BusinessSam
|
|||||||
.eqIfPresent(BusinessSampleEntrustFileDO::getFileId, reqVO.getFileId())
|
.eqIfPresent(BusinessSampleEntrustFileDO::getFileId, reqVO.getFileId())
|
||||||
.likeIfPresent(BusinessSampleEntrustFileDO::getFileName, reqVO.getFileName())
|
.likeIfPresent(BusinessSampleEntrustFileDO::getFileName, reqVO.getFileName())
|
||||||
.eqIfPresent(BusinessSampleEntrustFileDO::getFilePath, reqVO.getFilePath())
|
.eqIfPresent(BusinessSampleEntrustFileDO::getFilePath, reqVO.getFilePath())
|
||||||
|
.eqIfPresent(BusinessSampleEntrustFileDO::getExternalInfomation, reqVO.getExternalInfomation())
|
||||||
.eqIfPresent(BusinessSampleEntrustFileDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode())
|
.eqIfPresent(BusinessSampleEntrustFileDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode())
|
||||||
.betweenIfPresent(BusinessSampleEntrustFileDO::getCreateTime, reqVO.getCreateTime())
|
.betweenIfPresent(BusinessSampleEntrustFileDO::getCreateTime, reqVO.getCreateTime())
|
||||||
.eqIfPresent(BusinessSampleEntrustFileDO::getRemark, reqVO.getRemark())
|
.eqIfPresent(BusinessSampleEntrustFileDO::getRemark, reqVO.getRemark())
|
||||||
@@ -50,6 +51,7 @@ public interface BusinessSampleEntrustFileMapper extends BaseMapperX<BusinessSam
|
|||||||
.eqIfPresent(BusinessSampleEntrustFileDO::getFileId, reqVO.getFileId())
|
.eqIfPresent(BusinessSampleEntrustFileDO::getFileId, reqVO.getFileId())
|
||||||
.likeIfPresent(BusinessSampleEntrustFileDO::getFileName, reqVO.getFileName())
|
.likeIfPresent(BusinessSampleEntrustFileDO::getFileName, reqVO.getFileName())
|
||||||
.eqIfPresent(BusinessSampleEntrustFileDO::getFilePath, reqVO.getFilePath())
|
.eqIfPresent(BusinessSampleEntrustFileDO::getFilePath, reqVO.getFilePath())
|
||||||
|
.eqIfPresent(BusinessSampleEntrustFileDO::getExternalInfomation, reqVO.getExternalInfomation())
|
||||||
.eqIfPresent(BusinessSampleEntrustFileDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode())
|
.eqIfPresent(BusinessSampleEntrustFileDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode())
|
||||||
.betweenIfPresent(BusinessSampleEntrustFileDO::getCreateTime, reqVO.getCreateTime())
|
.betweenIfPresent(BusinessSampleEntrustFileDO::getCreateTime, reqVO.getCreateTime())
|
||||||
.eqIfPresent(BusinessSampleEntrustFileDO::getRemark, reqVO.getRemark())
|
.eqIfPresent(BusinessSampleEntrustFileDO::getRemark, reqVO.getRemark())
|
||||||
|
|||||||
@@ -782,6 +782,9 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent {
|
|||||||
if (usageCount <= 0) {//如果没有上报检测项目,则跳出当前循环
|
if (usageCount <= 0) {//如果没有上报检测项目,则跳出当前循环
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
//需要上报的检测项目
|
||||||
|
List<Long> usageReportDicProjectIdList = businessAssayProjectDataDOList.stream().filter(f -> businessAssayTaskDataAssayDepartmentIdList.contains(f.getBusinessAssayTaskDataId()) && (QmsCommonConstant.ASSAY_PROJECT_USAGE_REPORT.equals(f.getUsage()) || QmsCommonConstant.ASSAY_PROJECT_USAGE_INGREDIENT_REPORT.equals(f.getUsage()))).map(m -> m.getDictionaryProjectId()).distinct().collect(Collectors.toList());
|
||||||
|
List<String> usageReportProjectNameList = dictionaryProjectList.stream().filter(f -> usageReportDicProjectIdList.contains(f.getId())).map(m -> m.getShowName()).collect(Collectors.toList());
|
||||||
|
|
||||||
BusinessSampleEntrustDepartmentDO businessSampleEntrustDepartmentDO = new BusinessSampleEntrustDepartmentDO();
|
BusinessSampleEntrustDepartmentDO businessSampleEntrustDepartmentDO = new BusinessSampleEntrustDepartmentDO();
|
||||||
businessSampleEntrustDepartmentDO.setId(IdWorker.getId());
|
businessSampleEntrustDepartmentDO.setId(IdWorker.getId());
|
||||||
@@ -800,7 +803,7 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent {
|
|||||||
return Arrays.stream(parts)
|
return Arrays.stream(parts)
|
||||||
.map(String::trim) // 去除每个ID前后的空格
|
.map(String::trim) // 去除每个ID前后的空格
|
||||||
.filter(s -> !s.isEmpty()); // 过滤掉空项(例如 "101,,102" 中间的空项)
|
.filter(s -> !s.isEmpty()); // 过滤掉空项(例如 "101,,102" 中间的空项)
|
||||||
}).distinct().collect(Collectors.toList());
|
}).filter(f -> usageReportProjectNameList.contains(f)).distinct().collect(Collectors.toList());
|
||||||
businessSampleEntrustDepartmentDO.setAssayProject(CollUtil.join(assayProjectList, ","));
|
businessSampleEntrustDepartmentDO.setAssayProject(CollUtil.join(assayProjectList, ","));
|
||||||
|
|
||||||
List<Long> configAssayMethodIdAssayDepartmentIdList = businessAssayTaskDataAssayDepartmentList.stream().map(m -> m.getConfigAssayMethodId()).distinct().collect(Collectors.toList());
|
List<Long> configAssayMethodIdAssayDepartmentIdList = businessAssayTaskDataAssayDepartmentList.stream().map(m -> m.getConfigAssayMethodId()).distinct().collect(Collectors.toList());
|
||||||
@@ -814,6 +817,16 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent {
|
|||||||
|
|
||||||
List<Long> businessBaseSampleIdList = businessAssayTaskDataAssayDepartmentList.stream().map(m -> m.getBusinessBaseSampleId()).distinct().collect(Collectors.toList());
|
List<Long> businessBaseSampleIdList = businessAssayTaskDataAssayDepartmentList.stream().map(m -> m.getBusinessBaseSampleId()).distinct().collect(Collectors.toList());
|
||||||
for (Long businessBaseSampleId : businessBaseSampleIdList) {
|
for (Long businessBaseSampleId : businessBaseSampleIdList) {
|
||||||
|
//获取当前主样的分析任务id
|
||||||
|
List<Long> currBaseBusinessAssayTaskDataAssayDepartmentIdList = businessAssayTaskDataAssayDepartmentList.stream().filter(f -> f.getBusinessBaseSampleId().equals(businessBaseSampleId)).map(m -> m.getId()).collect(Collectors.toList());
|
||||||
|
//统计检测项目是上报的或者配料上报的数量
|
||||||
|
usageCount = businessAssayProjectDataDOList.stream().filter(f -> currBaseBusinessAssayTaskDataAssayDepartmentIdList.contains(f.getBusinessAssayTaskDataId()) && (QmsCommonConstant.ASSAY_PROJECT_USAGE_REPORT.equals(f.getUsage()) || QmsCommonConstant.ASSAY_PROJECT_USAGE_INGREDIENT_REPORT.equals(f.getUsage()))).count();
|
||||||
|
if (usageCount <= 0) {//如果没有上报检测项目,则跳出当前循环
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
List<Long> currBaseUsageReportDicProjectIdList = businessAssayProjectDataDOList.stream().filter(f -> currBaseBusinessAssayTaskDataAssayDepartmentIdList.contains(f.getBusinessAssayTaskDataId()) && (QmsCommonConstant.ASSAY_PROJECT_USAGE_REPORT.equals(f.getUsage()) || QmsCommonConstant.ASSAY_PROJECT_USAGE_INGREDIENT_REPORT.equals(f.getUsage()))).map(m -> m.getDictionaryProjectId()).distinct().collect(Collectors.toList());
|
||||||
|
List<String> currBaseUsageReportProjectNameList = dictionaryProjectList.stream().filter(f -> currBaseUsageReportDicProjectIdList.contains(f.getId())).map(m -> m.getShowName()).collect(Collectors.toList());
|
||||||
|
|
||||||
BusinessSampleEntrustDetailDO businessSampleEntrustDetailDO = sampleEntrustDetailList.stream().filter(f -> f.getBusinessBaseSampleId().equals(businessBaseSampleId)).findFirst().orElse(null);
|
BusinessSampleEntrustDetailDO businessSampleEntrustDetailDO = sampleEntrustDetailList.stream().filter(f -> f.getBusinessBaseSampleId().equals(businessBaseSampleId)).findFirst().orElse(null);
|
||||||
|
|
||||||
BusinessSampleEntrustDepartmentDetailDO businessSampleEntrustDepartmentDetailDO = new BusinessSampleEntrustDepartmentDetailDO();
|
BusinessSampleEntrustDepartmentDetailDO businessSampleEntrustDepartmentDetailDO = new BusinessSampleEntrustDepartmentDetailDO();
|
||||||
@@ -836,7 +849,7 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent {
|
|||||||
return Arrays.stream(parts)
|
return Arrays.stream(parts)
|
||||||
.map(String::trim) // 去除每个ID前后的空格
|
.map(String::trim) // 去除每个ID前后的空格
|
||||||
.filter(s -> !s.isEmpty()); // 过滤掉空项(例如 "101,,102" 中间的空项)
|
.filter(s -> !s.isEmpty()); // 过滤掉空项(例如 "101,,102" 中间的空项)
|
||||||
}).distinct().collect(Collectors.toList());
|
}).filter(f -> currBaseUsageReportProjectNameList.contains(f)).distinct().collect(Collectors.toList());
|
||||||
businessSampleEntrustDepartmentDetailDO.setAssayProject(CollUtil.join(sampleAssayProjectList, ","));
|
businessSampleEntrustDepartmentDetailDO.setAssayProject(CollUtil.join(sampleAssayProjectList, ","));
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.zt.plat.module.qms.business.bus.service;
|
package com.zt.plat.module.qms.business.bus.service;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -15,6 +16,7 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.zt.plat.framework.common.exception.ServiceException;
|
import com.zt.plat.framework.common.exception.ServiceException;
|
||||||
@@ -216,9 +218,14 @@ public class SampleDeptEntrustDocAuditServiceImpl implements SampleDeptEntrustDo
|
|||||||
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
|
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
|
||||||
Long businessSampleEntrustDepartmentId = param.getBusinessSampleEntrustDepartmentId();
|
Long businessSampleEntrustDepartmentId = param.getBusinessSampleEntrustDepartmentId();
|
||||||
BusinessSampleEntrustDepartmentDO businessSampleEntrustDepartmentDO = businessSampleEntrustDepartmentMapper.selectById(businessSampleEntrustDepartmentId);
|
BusinessSampleEntrustDepartmentDO businessSampleEntrustDepartmentDO = businessSampleEntrustDepartmentMapper.selectById(businessSampleEntrustDepartmentId);
|
||||||
|
if (QmsCommonConstant.YES.equals(businessSampleEntrustDepartmentDO.getIsReported())) {
|
||||||
|
throw new ServiceException(1_032_100_000, "当前商检报告已审核!");
|
||||||
|
}
|
||||||
|
|
||||||
businessSampleEntrustDepartmentDO.setIsReported(QmsCommonConstant.YES);
|
businessSampleEntrustDepartmentDO.setIsReported(QmsCommonConstant.YES);
|
||||||
businessSampleEntrustDepartmentDO.setReportOperator(nickName);
|
businessSampleEntrustDepartmentDO.setReportOperator(nickName);
|
||||||
businessSampleEntrustDepartmentDO.setReportOperatorId(loginUserId);
|
businessSampleEntrustDepartmentDO.setReportOperatorId(loginUserId);
|
||||||
|
businessSampleEntrustDepartmentDO.setReportTime(LocalDateTime.now());
|
||||||
businessSampleEntrustDepartmentDO.setAssayStatus(QmsCommonConstant.CHECKED);
|
businessSampleEntrustDepartmentDO.setAssayStatus(QmsCommonConstant.CHECKED);
|
||||||
|
|
||||||
Set<String> assayOperatorSet = new HashSet<>();
|
Set<String> assayOperatorSet = new HashSet<>();
|
||||||
@@ -290,6 +297,13 @@ public class SampleDeptEntrustDocAuditServiceImpl implements SampleDeptEntrustDo
|
|||||||
businessFileApi.createBusinessFile(businessFileSaveReqDTO);
|
businessFileApi.createBusinessFile(businessFileSaveReqDTO);
|
||||||
|
|
||||||
//设置附件
|
//设置附件
|
||||||
|
JSONObject fileExtInfoJSON = new JSONObject();
|
||||||
|
fileExtInfoJSON.put("taskNo", businessAssayTaskJson.getString("taskNo"));
|
||||||
|
fileExtInfoJSON.put("taskName", businessAssayTaskJson.getString("taskName"));
|
||||||
|
fileExtInfoJSON.put("assayOperator", businessAssayTaskJson.getString("assayOperator"));
|
||||||
|
fileExtInfoJSON.put("assayTime", businessAssayTaskJson.getString("assayTime"));
|
||||||
|
fileExtInfoJSON.put("reportOperator", businessAssayTaskJson.getString("reportOperator"));
|
||||||
|
fileExtInfoJSON.put("reportTime", businessAssayTaskJson.getString("reportTime"));
|
||||||
BusinessSampleEntrustFileDO businessSampleEntrustFileDO = new BusinessSampleEntrustFileDO();
|
BusinessSampleEntrustFileDO businessSampleEntrustFileDO = new BusinessSampleEntrustFileDO();
|
||||||
businessSampleEntrustFileDO.setBusinessSampleEntrustRegistrationId(businessSampleEntrustDepartmentDO.getBusinessSampleEntrustRegistrationId());
|
businessSampleEntrustFileDO.setBusinessSampleEntrustRegistrationId(businessSampleEntrustDepartmentDO.getBusinessSampleEntrustRegistrationId());
|
||||||
businessSampleEntrustFileDO.setBusinessSampleEntrustDepartmentId(businessSampleEntrustDepartmentDO.getId());
|
businessSampleEntrustFileDO.setBusinessSampleEntrustDepartmentId(businessSampleEntrustDepartmentDO.getId());
|
||||||
@@ -297,6 +311,7 @@ public class SampleDeptEntrustDocAuditServiceImpl implements SampleDeptEntrustDo
|
|||||||
businessSampleEntrustFileDO.setFileId(fileRespDTO.getId());
|
businessSampleEntrustFileDO.setFileId(fileRespDTO.getId());
|
||||||
businessSampleEntrustFileDO.setFileName(fileRespDTO.getName());
|
businessSampleEntrustFileDO.setFileName(fileRespDTO.getName());
|
||||||
businessSampleEntrustFileDO.setFilePath(fileRespDTO.getDirectory());
|
businessSampleEntrustFileDO.setFilePath(fileRespDTO.getDirectory());
|
||||||
|
businessSampleEntrustFileDO.setExternalInfomation(fileExtInfoJSON.toJSONString());
|
||||||
|
|
||||||
businessSampleEntrustFileDOList.add(businessSampleEntrustFileDO);
|
businessSampleEntrustFileDOList.add(businessSampleEntrustFileDO);
|
||||||
|
|
||||||
@@ -329,7 +344,7 @@ public class SampleDeptEntrustDocAuditServiceImpl implements SampleDeptEntrustDo
|
|||||||
formData.put("sampleCategory", sampleCategory);
|
formData.put("sampleCategory", sampleCategory);
|
||||||
formData.put("entrustCode", businessSampleEntrustRegistrationDO.getEntrustNumber());
|
formData.put("entrustCode", businessSampleEntrustRegistrationDO.getEntrustNumber());
|
||||||
|
|
||||||
jsonObjectParam.put("assayReportDataList", businessAssayReportDataList);
|
jsonObjectParam.put("assayReportDataList", JSON.parseArray(JSON.toJSONString(businessAssayReportDataList)));
|
||||||
jsonObjectParam.put("itemNameList", param.getAssayProject());
|
jsonObjectParam.put("itemNameList", param.getAssayProject());
|
||||||
jsonObjectParam.put("signatureData", signatureData);
|
jsonObjectParam.put("signatureData", signatureData);
|
||||||
jsonObjectParam.put("formData", formData);
|
jsonObjectParam.put("formData", formData);
|
||||||
@@ -364,6 +379,11 @@ public class SampleDeptEntrustDocAuditServiceImpl implements SampleDeptEntrustDo
|
|||||||
businessFileApi.createBusinessFile(businessFileSaveReqDTO);
|
businessFileApi.createBusinessFile(businessFileSaveReqDTO);
|
||||||
|
|
||||||
//设置附件
|
//设置附件
|
||||||
|
JSONObject fileExtInfoJSON = new JSONObject();
|
||||||
|
fileExtInfoJSON.put("entrustNumber", businessSampleEntrustRegistrationDO.getEntrustNumber());
|
||||||
|
fileExtInfoJSON.put("assayDepartmentName", businessSampleEntrustDepartmentDO.getAssayDepartmentName());
|
||||||
|
fileExtInfoJSON.put("reportOperator", businessSampleEntrustDepartmentDO.getReportOperator());
|
||||||
|
fileExtInfoJSON.put("reportTime", DateUtil.formatLocalDateTime(businessSampleEntrustDepartmentDO.getReportTime()));
|
||||||
BusinessSampleEntrustFileDO businessSampleEntrustFileDO = new BusinessSampleEntrustFileDO();
|
BusinessSampleEntrustFileDO businessSampleEntrustFileDO = new BusinessSampleEntrustFileDO();
|
||||||
businessSampleEntrustFileDO.setBusinessSampleEntrustRegistrationId(businessSampleEntrustDepartmentDO.getBusinessSampleEntrustRegistrationId());
|
businessSampleEntrustFileDO.setBusinessSampleEntrustRegistrationId(businessSampleEntrustDepartmentDO.getBusinessSampleEntrustRegistrationId());
|
||||||
businessSampleEntrustFileDO.setBusinessSampleEntrustDepartmentId(businessSampleEntrustDepartmentDO.getId());
|
businessSampleEntrustFileDO.setBusinessSampleEntrustDepartmentId(businessSampleEntrustDepartmentDO.getId());
|
||||||
@@ -371,6 +391,7 @@ public class SampleDeptEntrustDocAuditServiceImpl implements SampleDeptEntrustDo
|
|||||||
businessSampleEntrustFileDO.setFileId(fileRespDTO.getId());
|
businessSampleEntrustFileDO.setFileId(fileRespDTO.getId());
|
||||||
businessSampleEntrustFileDO.setFileName(fileRespDTO.getName());
|
businessSampleEntrustFileDO.setFileName(fileRespDTO.getName());
|
||||||
businessSampleEntrustFileDO.setFilePath(fileRespDTO.getDirectory());
|
businessSampleEntrustFileDO.setFilePath(fileRespDTO.getDirectory());
|
||||||
|
businessSampleEntrustFileDO.setExternalInfomation(fileExtInfoJSON.toJSONString());
|
||||||
|
|
||||||
businessSampleEntrustFileDOList.add(businessSampleEntrustFileDO);
|
businessSampleEntrustFileDOList.add(businessSampleEntrustFileDO);
|
||||||
|
|
||||||
|
|||||||
@@ -137,9 +137,29 @@ public class ReportDocumentAssistService {
|
|||||||
.body(bodyStr)
|
.body(bodyStr)
|
||||||
.timeout(15000)
|
.timeout(15000)
|
||||||
.execute();
|
.execute();
|
||||||
log.info("html2pdf--end at {}", LocalDateTime.now());
|
if (response.getStatus() != 200) {
|
||||||
|
// 尝试读取错误响应体以便调试(注意:如果流已消费则无法再次读取,这里 bodyStream 还没读)
|
||||||
|
String errorBody = response.body();
|
||||||
|
log.error("HTML2PDF 服务返回错误状态码: {}, 响应内容: {}", response.getStatus(), errorBody);
|
||||||
|
throw new IOException("生成 PDF 失败,远程服务返回状态码: " + response.getStatus() + ", 详情: " + errorBody);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 只有状态码为 200 时,才读取流
|
||||||
InputStream inputStream = response.bodyStream();
|
InputStream inputStream = response.bodyStream();
|
||||||
return IOUtils.toByteArray(inputStream);
|
if (inputStream == null) {
|
||||||
|
throw new IOException("生成 PDF 失败,响应流为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
byte[] pdfBytes = IOUtils.toByteArray(inputStream);
|
||||||
|
|
||||||
|
// 【可选防御性检查】验证返回的数据是否真的像 PDF (以 %PDF 开头)
|
||||||
|
if (pdfBytes.length < 5 || !(new String(pdfBytes, 0, 4).startsWith("%PDF"))) {
|
||||||
|
log.error("生成的 PDF 数据头校验失败,前100字节: {}", new String(pdfBytes, 0, Math.min(100, pdfBytes.length)));
|
||||||
|
throw new IOException("生成的文件不是有效的 PDF 格式,可能是服务端返回了错误信息");
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("html2pdf--end at {}, 文件大小: {} bytes", LocalDateTime.now(), pdfBytes.length);
|
||||||
|
return pdfBytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ public class PdfHelper {
|
|||||||
pdfDocument.save(baos);
|
pdfDocument.save(baos);
|
||||||
return baos.toByteArray();
|
return baos.toByteArray();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("处理pdf出错!");
|
log.error("处理pdf出错!", e);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user