feat: scc流程保存的时候保存列表数据
This commit is contained in:
+38
@@ -1,7 +1,10 @@
|
|||||||
package com.jero.modules.activiti.process.fb.service.impl;
|
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.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
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.api.vo.ResultCommon;
|
||||||
import com.jero.common.exception.JeroBootException;
|
import com.jero.common.exception.JeroBootException;
|
||||||
import com.jero.modules.activiti.entity.ProcessAll;
|
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.dto.ProcessDTO;
|
||||||
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
|
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
|
||||||
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
|
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.activiti.service.*;
|
||||||
import com.jero.modules.laws.common.util.CurrentUserUtil;
|
import com.jero.modules.laws.common.util.CurrentUserUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -34,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author: liao
|
* @Author: liao
|
||||||
@@ -63,6 +69,9 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
|
|||||||
private ProcessSnapshotService processSnapshotService; // 流程草稿表
|
private ProcessSnapshotService processSnapshotService; // 流程草稿表
|
||||||
@Resource
|
@Resource
|
||||||
private ProcessNodeService processNodeService;
|
private ProcessNodeService processNodeService;
|
||||||
|
@Resource
|
||||||
|
private IProcessStandardComplianceCheckDetailService sccDetailService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author: liao
|
* @Author: liao
|
||||||
* @Date: 2023/11/2 17:04
|
* @Date: 2023/11/2 17:04
|
||||||
@@ -403,6 +412,35 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
|
|||||||
processDraft.setInfoJsonStr(processInfoVO.getInfoJsonStr());//草稿信息json字符串
|
processDraft.setInfoJsonStr(processInfoVO.getInfoJsonStr());//草稿信息json字符串
|
||||||
processDraft.setSaveSource(processInfoVO.getSaveSource());//来源(启动流程时有用,用于保存初始业务信息用于强制驳回)
|
processDraft.setSaveSource(processInfoVO.getSaveSource());//来源(启动流程时有用,用于保存初始业务信息用于强制驳回)
|
||||||
processDraftService.saveOrUpdate(processDraft);
|
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
|
@Override
|
||||||
|
|||||||
+11
@@ -49,6 +49,7 @@ import com.jero.modules.split.service.ISarFileSplitInfoService;
|
|||||||
import com.jero.modules.sys.utils.UserUtils;
|
import com.jero.modules.sys.utils.UserUtils;
|
||||||
import com.jero.modules.system.entity.SysDepart;
|
import com.jero.modules.system.entity.SysDepart;
|
||||||
import com.jero.modules.system.service.ISysDepartService;
|
import com.jero.modules.system.service.ISysDepartService;
|
||||||
|
import com.jero.modules.system.service.ISysDictService;
|
||||||
import lombok.Cleanup;
|
import lombok.Cleanup;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.activiti.engine.RuntimeService;
|
import org.activiti.engine.RuntimeService;
|
||||||
@@ -120,6 +121,8 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
|||||||
private CommonAPI commonAPI;
|
private CommonAPI commonAPI;
|
||||||
@Resource
|
@Resource
|
||||||
private ExcelUtils excelUtils;
|
private ExcelUtils excelUtils;
|
||||||
|
@Resource
|
||||||
|
private ISysDictService dictService;
|
||||||
|
|
||||||
@Value("${jero.path.exportExcelTempPath}")
|
@Value("${jero.path.exportExcelTempPath}")
|
||||||
private String exportExcelTempPath;
|
private String exportExcelTempPath;
|
||||||
@@ -494,6 +497,7 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void exportXlsWithoutDistribute(String taskId, HttpServletResponse response) {
|
public void exportXlsWithoutDistribute(String taskId, HttpServletResponse response) {
|
||||||
|
List<SysDictItemCore> listDict = commonAPI.getDictItemAll();
|
||||||
ProcessInfoVO<ProcessSccVO> handleData = this.getHandleData(taskId);
|
ProcessInfoVO<ProcessSccVO> handleData = this.getHandleData(taskId);
|
||||||
ProcessSccVO businessInfoDTO = handleData.getBusinessInfoDTO();
|
ProcessSccVO businessInfoDTO = handleData.getBusinessInfoDTO();
|
||||||
ProcessStandardComplianceCheck standardInfo = businessInfoDTO.getStandardInfo();
|
ProcessStandardComplianceCheck standardInfo = businessInfoDTO.getStandardInfo();
|
||||||
@@ -516,7 +520,14 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
|||||||
// 复制一份数据
|
// 复制一份数据
|
||||||
List<WithoutDistributeExcelTemplate> data = BeanCopyUtils
|
List<WithoutDistributeExcelTemplate> data = BeanCopyUtils
|
||||||
.copyBeanList(detailInfoList, WithoutDistributeExcelTemplate.class);
|
.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);
|
List<WithoutDistributeExcelTemplate> newRecordsExport = new ArrayList<>(data);
|
||||||
|
|
||||||
Workbook workbook = ExcelExportUtil
|
Workbook workbook = ExcelExportUtil
|
||||||
.exportExcel(exportParams, WithoutDistributeExcelTemplate.class, data);
|
.exportExcel(exportParams, WithoutDistributeExcelTemplate.class, data);
|
||||||
// 生成超链接
|
// 生成超链接
|
||||||
|
|||||||
@@ -254,6 +254,33 @@ public class ExcelUtils {
|
|||||||
return textValue.toString();
|
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