feat: scc流程保存的时候保存列表数据
This commit is contained in:
+38
@@ -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
|
||||
|
||||
+11
@@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
* 翻译字典文本
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user