|
@@ -0,0 +1,210 @@
|
|
|
|
|
+package cn.start.tz.module.pressure2.service.pipetaskorderitemreportversionarchiving;
|
|
|
|
|
+
|
|
|
|
|
+import cn.start.tz.module.infra.api.file.FileApi;
|
|
|
|
|
+import cn.start.tz.module.pressure2.dal.dataobject.boilertaskorderitemreport.BoilerTaskOrderItemReportDO;
|
|
|
|
|
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreport.PipeTaskOrderItemReportDO;
|
|
|
|
|
+import cn.start.tz.module.pressure2.dal.dataobject.dynamictbins.DynamicTbInsDO;
|
|
|
|
|
+import cn.start.tz.module.pressure2.dal.dataobject.dynamictbval.DynamicTbValDO;
|
|
|
|
|
+import cn.start.tz.module.pressure2.dal.mysql.dynamictb.DynamicTbMapper;
|
|
|
|
|
+import cn.start.tz.module.pressure2.dal.dataobject.dynamictb.DynamicTbDO;
|
|
|
|
|
+import cn.start.tz.module.pressure2.dal.mysql.boilertaskorderitemreport.BoilerTaskOrderItemReportMapper;
|
|
|
|
|
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreport.PipeTaskOrderItemReportMapper;
|
|
|
|
|
+import cn.start.tz.module.pressure2.service.dynamictbins.DynamicTbInsService;
|
|
|
|
|
+import cn.start.tz.module.pressure2.service.dynamictbval.DynamicTbValService;
|
|
|
|
|
+import cn.start.tz.module.pressure2.service.pdf.PdfService;
|
|
|
|
|
+import jodd.util.StringUtil;
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
+import jakarta.annotation.Resource;
|
|
|
|
|
+import org.springframework.validation.annotation.Validated;
|
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
|
+
|
|
|
|
|
+import java.util.*;
|
|
|
|
|
+import cn.start.tz.module.pressure2.controller.admin.pipetaskorderitemreportversionarchiving.vo.*;
|
|
|
|
|
+import cn.start.tz.module.pressure2.dal.dataobject.pipetaskorderitemreportversionarchiving.PipeTaskOrderItemReportVersionArchivingDO;
|
|
|
|
|
+import cn.start.tz.framework.common.pojo.PageResult;
|
|
|
|
|
+import cn.start.tz.framework.common.pojo.PageParam;
|
|
|
|
|
+import cn.start.tz.framework.common.util.object.BeanUtils;
|
|
|
|
|
+
|
|
|
|
|
+import cn.start.tz.module.pressure2.dal.mysql.pipetaskorderitemreportversionarchiving.PipeTaskOrderItemReportVersionArchivingMapper;
|
|
|
|
|
+
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
+
|
|
|
|
|
+import static cn.start.tz.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
|
|
+import static cn.start.tz.module.pressure2.enums.ErrorCodeConstants.*;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 管道报告归档检验项目版本信息 Service 实现类
|
|
|
|
|
+ *
|
|
|
|
|
+ * @author 特种管理员
|
|
|
|
|
+ */
|
|
|
|
|
+@Service
|
|
|
|
|
+@Validated
|
|
|
|
|
+@Slf4j
|
|
|
|
|
+public class PipeTaskOrderItemReportVersionArchivingServiceImpl extends ServiceImpl<PipeTaskOrderItemReportVersionArchivingMapper, PipeTaskOrderItemReportVersionArchivingDO> implements PipeTaskOrderItemReportVersionArchivingService {
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private PipeTaskOrderItemReportVersionArchivingMapper pipeTaskOrderItemReportVersionArchivingMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private PipeTaskOrderItemReportMapper taskOrderItemReportMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private PdfService pdfService;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private FileApi fileApi;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private DynamicTbInsService dynamicTbInsService;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private DynamicTbValService dynamicTbValService;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private DynamicTbMapper dynamicTbMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public String createPipeTaskOrderItemReportVersionArchiving(PipeTaskOrderItemReportVersionArchivingSaveReqVO createReqVO) {
|
|
|
|
|
+ // 插入
|
|
|
|
|
+ PipeTaskOrderItemReportVersionArchivingDO pipeTaskOrderItemReportVersionArchiving = BeanUtils.toBean(createReqVO, PipeTaskOrderItemReportVersionArchivingDO.class);
|
|
|
|
|
+ pipeTaskOrderItemReportVersionArchivingMapper.insert(pipeTaskOrderItemReportVersionArchiving);
|
|
|
|
|
+ // 返回
|
|
|
|
|
+ return pipeTaskOrderItemReportVersionArchiving.getId();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void updatePipeTaskOrderItemReportVersionArchiving(PipeTaskOrderItemReportVersionArchivingSaveReqVO updateReqVO) {
|
|
|
|
|
+ // 校验存在
|
|
|
|
|
+ validatePipeTaskOrderItemReportVersionArchivingExists(updateReqVO.getId());
|
|
|
|
|
+ // 更新
|
|
|
|
|
+ PipeTaskOrderItemReportVersionArchivingDO updateObj = BeanUtils.toBean(updateReqVO, PipeTaskOrderItemReportVersionArchivingDO.class);
|
|
|
|
|
+ pipeTaskOrderItemReportVersionArchivingMapper.updateById(updateObj);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void deletePipeTaskOrderItemReportVersionArchiving(String id) {
|
|
|
|
|
+ // 校验存在
|
|
|
|
|
+ validatePipeTaskOrderItemReportVersionArchivingExists(id);
|
|
|
|
|
+ // 删除
|
|
|
|
|
+ pipeTaskOrderItemReportVersionArchivingMapper.deleteById(id);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void validatePipeTaskOrderItemReportVersionArchivingExists(String id) {
|
|
|
|
|
+ if (pipeTaskOrderItemReportVersionArchivingMapper.selectById(id) == null) {
|
|
|
|
|
+ throw exception(PIPE_TASK_ORDER_ITEM_REPORT_VERSION_ARCHIVING_NOT_EXISTS);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public PipeTaskOrderItemReportVersionArchivingDO getPipeTaskOrderItemReportVersionArchiving(String id) {
|
|
|
|
|
+ return pipeTaskOrderItemReportVersionArchivingMapper.selectById(id);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public PageResult<PipeTaskOrderItemReportVersionArchivingDO> getPipeTaskOrderItemReportVersionArchivingPage(PipeTaskOrderItemReportVersionArchivingPageReqVO pageReqVO) {
|
|
|
|
|
+ return pipeTaskOrderItemReportVersionArchivingMapper.selectPage(pageReqVO);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void insertArchivingRecord(String reportId, String modifiedReason, String orderId, String orderItemId,Integer reportType) {
|
|
|
|
|
+
|
|
|
|
|
+ // 查询 reportId + reportType=100 下的最新版本号
|
|
|
|
|
+ LambdaQueryWrapper<PipeTaskOrderItemReportVersionArchivingDO> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ queryWrapper.eq(PipeTaskOrderItemReportVersionArchivingDO::getReportId, reportId)
|
|
|
|
|
+ .eq(PipeTaskOrderItemReportVersionArchivingDO::getReportType, reportType)
|
|
|
|
|
+ .orderByDesc(PipeTaskOrderItemReportVersionArchivingDO::getVersionNo)
|
|
|
|
|
+ .last("limit 1");
|
|
|
|
|
+ PipeTaskOrderItemReportVersionArchivingDO lastRecord = pipeTaskOrderItemReportVersionArchivingMapper.selectOne(queryWrapper);
|
|
|
|
|
+ int nextVersion = (lastRecord != null && lastRecord.getVersionNo() != null) ? lastRecord.getVersionNo() + 1 : 1;
|
|
|
|
|
+
|
|
|
|
|
+ String fileUrl = "";
|
|
|
|
|
+ String NewJson = "";
|
|
|
|
|
+ String dynamicTbCode = "";
|
|
|
|
|
+ PipeTaskOrderItemReportDO reportDO = taskOrderItemReportMapper.selectById(reportId);
|
|
|
|
|
+ if (reportDO != null){
|
|
|
|
|
+
|
|
|
|
|
+ if (reportType == 100){
|
|
|
|
|
+ //生成记录文件
|
|
|
|
|
+ if (reportDO.getEnterPdfUrl() != null && !reportDO.getEnterPdfUrl().isEmpty()){
|
|
|
|
|
+ fileUrl = reportDO.getEnterPdfUrl();
|
|
|
|
|
+ }else{
|
|
|
|
|
+ try {
|
|
|
|
|
+ byte[] bytes = pdfService.pdfByRefId(reportDO.getTemplateId(), reportDO.getId());
|
|
|
|
|
+ fileUrl = fileApi.createFile(bytes);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("报告编号{}生成记录报表PDF失败",reportId, e);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // 查询动态表数据转为JSON
|
|
|
|
|
+ NewJson = buildDynamicJson(reportDO.getId());
|
|
|
|
|
+ }else if (reportType == 200){
|
|
|
|
|
+ //生成报告文件
|
|
|
|
|
+ if (reportDO.getIssueUrl() != null && !reportDO.getIssueUrl().isEmpty()){
|
|
|
|
|
+ fileUrl = reportDO.getIssueUrl();
|
|
|
|
|
+ }else{
|
|
|
|
|
+ try {
|
|
|
|
|
+ byte[] bytes = pdfService.pdfByRefId(reportDO.getReportTemplateId(), "report_" + reportDO.getId());
|
|
|
|
|
+ fileUrl = fileApi.createFile(bytes);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("报告编号{}生成报告报表PDF失败",reportId, e);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // 查询动态表数据转为JSON
|
|
|
|
|
+ NewJson = buildDynamicJson("report_" + reportDO.getId());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 查询 dynamicTbCode:记录取 templateId,报告取 reportTemplateId
|
|
|
|
|
+ String tbId = reportType == 200 ? reportDO.getReportTemplateId() : reportDO.getTemplateId();
|
|
|
|
|
+ if (tbId != null) {
|
|
|
|
|
+ DynamicTbDO tbDO = dynamicTbMapper.selectById(tbId);
|
|
|
|
|
+ if (tbDO != null && tbDO.getTbCode() != null) {
|
|
|
|
|
+ dynamicTbCode = tbDO.getTbCode();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ PipeTaskOrderItemReportVersionArchivingDO archivingDO = new PipeTaskOrderItemReportVersionArchivingDO();
|
|
|
|
|
+ archivingDO.setReportId(reportId);
|
|
|
|
|
+ archivingDO.setReportType(reportType);
|
|
|
|
|
+ archivingDO.setVersionNo(nextVersion);
|
|
|
|
|
+ archivingDO.setModifiedReason(modifiedReason);
|
|
|
|
|
+ archivingDO.setOrderId(orderId);
|
|
|
|
|
+ archivingDO.setOrderItemId(orderItemId);
|
|
|
|
|
+ archivingDO.setNewReportUrl(fileUrl);
|
|
|
|
|
+ archivingDO.setNewPrepareJson(NewJson);
|
|
|
|
|
+ archivingDO.setDynamicTbCode(dynamicTbCode);
|
|
|
|
|
+
|
|
|
|
|
+ if (lastRecord != null){
|
|
|
|
|
+ archivingDO.setOldReportUrl(lastRecord.getNewReportUrl());
|
|
|
|
|
+ archivingDO.setOldPrepareJson(lastRecord.getNewPrepareJson());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ pipeTaskOrderItemReportVersionArchivingMapper.insert(archivingDO);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 从 dynamicTbIns + dynamicTbVal 查询数据并转为 JSON 字符串
|
|
|
|
|
+ */
|
|
|
|
|
+ private String buildDynamicJson(String reportId) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ DynamicTbInsDO insDO = dynamicTbInsService.getDynamicRefId(reportId);
|
|
|
|
|
+ if (insDO == null) return "";
|
|
|
|
|
+ List<DynamicTbValDO> valList = dynamicTbValService.lambdaQuery()
|
|
|
|
|
+ .eq(DynamicTbValDO::getInsId, insDO.getId())
|
|
|
|
|
+ .list();
|
|
|
|
|
+ if (valList.isEmpty()) return "";
|
|
|
|
|
+ Map<String, String> jsonMap = new LinkedHashMap<>();
|
|
|
|
|
+ for (DynamicTbValDO val : valList) {
|
|
|
|
|
+ jsonMap.put(val.getColCode(), val.getValValue());
|
|
|
|
|
+ }
|
|
|
|
|
+ return com.alibaba.fastjson2.JSON.toJSONString(jsonMap);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("[buildDynamicJson] 查询动态表数据失败, reportId={}", reportId, e);
|
|
|
|
|
+ return "";
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+}
|