From 4129816778369c3b8d496315aaec383354a3fe47 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Thu, 25 Jul 2024 17:07:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20scc=E6=B5=81=E7=A8=8B=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=E4=BF=9D=E5=AD=98=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ProcessHandleServiceImpl.java | 38 +++++++++++++++++++ ...essStandardComplianceCheckServiceImpl.java | 11 ++++++ .../modules/activiti/util/ExcelUtils.java | 27 +++++++++++++ 3 files changed, 76 insertions(+) diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessHandleServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessHandleServiceImpl.java index 0cff3294..1a65c300 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessHandleServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessHandleServiceImpl.java @@ -1,7 +1,10 @@ package com.jero.modules.activiti.process.fb.service.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; import com.jero.common.api.vo.ResultCommon; import com.jero.common.exception.JeroBootException; import com.jero.modules.activiti.entity.ProcessAll; @@ -19,6 +22,8 @@ import com.jero.modules.activiti.process.fb.dto.BasicTaskInfoDTO; import com.jero.modules.activiti.process.fb.dto.ProcessDTO; import com.jero.modules.activiti.process.fb.service.IProcessHandleService; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; +import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessStandardComplianceCheckDetail; +import com.jero.modules.activiti.process.standardComplianceCheck.service.IProcessStandardComplianceCheckDetailService; import com.jero.modules.activiti.service.*; import com.jero.modules.laws.common.util.CurrentUserUtil; import lombok.extern.slf4j.Slf4j; @@ -34,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.*; +import java.util.stream.Collectors; /** * @Author: liao @@ -63,6 +69,9 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { private ProcessSnapshotService processSnapshotService; // 流程草稿表 @Resource private ProcessNodeService processNodeService; + @Resource + private IProcessStandardComplianceCheckDetailService sccDetailService; + /** * @Author: liao * @Date: 2023/11/2 17:04 @@ -403,6 +412,35 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { processDraft.setInfoJsonStr(processInfoVO.getInfoJsonStr());//草稿信息json字符串 processDraft.setSaveSource(processInfoVO.getSaveSource());//来源(启动流程时有用,用于保存初始业务信息用于强制驳回) processDraftService.saveOrUpdate(processDraft); + + if (basicProcessInfoDTO.getProcessType().equals(ProcessTypeEnum.STANDARD_COMPLIANCE_CHECK.getValue())) { + try { + LinkedHashMap businessInfoDTO = (LinkedHashMap) processInfoVO.getBusinessInfoDTO(); + + // 获取 detailInfoList 对应的数据 + List> detailInfoMapList = (List>) businessInfoDTO.get("detailInfoList"); + + // 移除所有以 dictText 结尾的字段 + for (Map detailInfoMap : detailInfoMapList) { + detailInfoMap.keySet().removeIf(key -> key.endsWith("dictText")); + } + + // 使用 ObjectMapper 将 detailInfoMapList 转换为 JSON 字符串 + ObjectMapper objectMapper = new ObjectMapper(); + String jsonString = objectMapper.writeValueAsString(detailInfoMapList); + + // 将 JSON 字符串反序列化为 List + List detailInfoList = objectMapper.readValue(jsonString, new TypeReference>() {}); + List ids = detailInfoList.stream().map(ProcessStandardComplianceCheckDetail::getId).collect(Collectors.toList()); + // 先删后增 + if (CollUtil.isNotEmpty(ids)) { + sccDetailService.removeByIds(ids); + sccDetailService.saveBatch(detailInfoList); + } + } catch (Exception e) { + log.error("反序列化失败", e); + } + } } @Override diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java index 6658807d..b03cb0bd 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java @@ -49,6 +49,7 @@ import com.jero.modules.split.service.ISarFileSplitInfoService; import com.jero.modules.sys.utils.UserUtils; import com.jero.modules.system.entity.SysDepart; import com.jero.modules.system.service.ISysDepartService; +import com.jero.modules.system.service.ISysDictService; import lombok.Cleanup; import lombok.extern.slf4j.Slf4j; import org.activiti.engine.RuntimeService; @@ -120,6 +121,8 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl listDict = commonAPI.getDictItemAll(); ProcessInfoVO handleData = this.getHandleData(taskId); ProcessSccVO businessInfoDTO = handleData.getBusinessInfoDTO(); ProcessStandardComplianceCheck standardInfo = businessInfoDTO.getStandardInfo(); @@ -516,7 +520,14 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl data = BeanCopyUtils .copyBeanList(detailInfoList, WithoutDistributeExcelTemplate.class); + // 翻译评估结果和佐证材料字段 + data.forEach(item -> { + item.setResult(excelUtils.translateDict("evaluation_result", item.getResult(), listDict)); + item.setMaterial(excelUtils.translateDictValue("id", "file_name", "oss_file", item.getMaterial(), listDict)); + }); + List newRecordsExport = new ArrayList<>(data); + Workbook workbook = ExcelExportUtil .exportExcel(exportParams, WithoutDistributeExcelTemplate.class, data); // 生成超链接 diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/util/ExcelUtils.java b/laws-modules/src/main/java/com/jero/modules/activiti/util/ExcelUtils.java index d8922b7a..7eed450b 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/util/ExcelUtils.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/util/ExcelUtils.java @@ -254,6 +254,33 @@ public class ExcelUtils { return textValue.toString(); } + /** + * 翻译字典文本 + * + * @param code 编码 + * @param value 值 + * @param listDict 字典集合 + */ + public String translateDict(String code, String value, List listDict) { + StringBuilder textValue = new StringBuilder(); + String tmpValue = null; + if (StrUtil.isBlank(value)) { + return null; + } + List listNew = listDict.stream() + .filter(o -> Objects.equals(o.getDictCode(), code) && Objects.equals(o.getItemValue(), value.trim())).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(listNew)) { + tmpValue = listNew.get(0).getItemText(); + } + if (tmpValue != null) { + if (!"".contentEquals(textValue)) { + textValue.append(","); + } + textValue.append(tmpValue); + } + return textValue.toString(); + } + /** * 翻译字典文本 *