feat: scc流程保存的时候保存列表数据

This commit is contained in:
2024-07-25 17:07:49 +08:00
parent 5a7d736e0f
commit 4129816778
3 changed files with 76 additions and 0 deletions
@@ -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<String, Object> businessInfoDTO = (LinkedHashMap<String, Object>) processInfoVO.getBusinessInfoDTO();
// 获取 detailInfoList 对应的数据
List<Map<String, Object>> detailInfoMapList = (List<Map<String, Object>>) businessInfoDTO.get("detailInfoList");
// 移除所有以 dictText 结尾的字段
for (Map<String, Object> detailInfoMap : detailInfoMapList) {
detailInfoMap.keySet().removeIf(key -> key.endsWith("dictText"));
}
// 使用 ObjectMapper 将 detailInfoMapList 转换为 JSON 字符串
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(detailInfoMapList);
// 将 JSON 字符串反序列化为 List<ProcessStandardComplianceCheckDetail>
List<ProcessStandardComplianceCheckDetail> detailInfoList = objectMapper.readValue(jsonString, new TypeReference<List<ProcessStandardComplianceCheckDetail>>() {});
List<String> 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
@@ -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<Proce
private CommonAPI commonAPI;
@Resource
private ExcelUtils excelUtils;
@Resource
private ISysDictService dictService;
@Value("${jero.path.exportExcelTempPath}")
private String exportExcelTempPath;
@@ -494,6 +497,7 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
@Override
public void exportXlsWithoutDistribute(String taskId, HttpServletResponse response) {
List<SysDictItemCore> listDict = commonAPI.getDictItemAll();
ProcessInfoVO<ProcessSccVO> handleData = this.getHandleData(taskId);
ProcessSccVO businessInfoDTO = handleData.getBusinessInfoDTO();
ProcessStandardComplianceCheck standardInfo = businessInfoDTO.getStandardInfo();
@@ -516,7 +520,14 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
// 复制一份数据
List<WithoutDistributeExcelTemplate> 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<WithoutDistributeExcelTemplate> newRecordsExport = new ArrayList<>(data);
Workbook workbook = ExcelExportUtil
.exportExcel(exportParams, WithoutDistributeExcelTemplate.class, data);
// 生成超链接
@@ -254,6 +254,33 @@ public class ExcelUtils {
return textValue.toString();
}
/**
* 翻译字典文本
*
* @param code 编码
* @param value 值
* @param listDict 字典集合
*/
public String translateDict(String code, String value, List<SysDictItemCore> listDict) {
StringBuilder textValue = new StringBuilder();
String tmpValue = null;
if (StrUtil.isBlank(value)) {
return null;
}
List<SysDictItemCore> 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();
}
/**
* 翻译字典文本
*