feat: 复审流程保存自翻译
This commit is contained in:
+31
-18
@@ -61,16 +61,17 @@ public class TranslationAspect {
|
||||
|
||||
/**
|
||||
* 在切入点return内容之后切入内容(可以用来对处理返回值做一些加工处理)
|
||||
*
|
||||
* @param joinPoint
|
||||
*/
|
||||
@AfterReturning(returning="rvt",pointcut = "annotationPointcut()")
|
||||
@AfterReturning(returning = "rvt", pointcut = "annotationPointcut()")
|
||||
public void doAfterReturning(JoinPoint joinPoint, Object rvt) {
|
||||
|
||||
}
|
||||
|
||||
private void parseDictText(Object result) {
|
||||
List<SysDictItemCore> listDict = commonAPI.getDictItemAll();
|
||||
if(CollectionUtils.isEmpty(listDict)){
|
||||
if (CollectionUtils.isEmpty(listDict)) {
|
||||
return;
|
||||
}
|
||||
if (result instanceof Result) {
|
||||
@@ -78,25 +79,36 @@ public class TranslationAspect {
|
||||
List<Object> items = new ArrayList<>();
|
||||
|
||||
for (Object record : ((IPage) ((Result) result).getResult()).getRecords()) {
|
||||
Object item = translateObject(record,listDict);
|
||||
Object item = translateObject(record, listDict);
|
||||
items.add(item);
|
||||
}
|
||||
((IPage) ((Result) result).getResult()).setRecords(items);
|
||||
}else if (((Result) result).getResult() instanceof List) {
|
||||
} else if (((Result) result).getResult() instanceof List) {
|
||||
List<Object> items = new ArrayList<>();
|
||||
for (Object record : ((List) ((Result) result).getResult())) {
|
||||
Object item = translateObject(record,listDict);
|
||||
Object item = translateObject(record, listDict);
|
||||
items.add(item);
|
||||
}
|
||||
((Result) result).setResult(items);
|
||||
}else{
|
||||
} else {
|
||||
Object record = (Object) ((Result) result).getResult();
|
||||
Object item = translateObject(record,listDict);
|
||||
Object item = translateObject(record, listDict);
|
||||
((Result) result).setResult(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String manualParseDictText(Object data, Object user) {
|
||||
List<SysDictItemCore> listDict = commonAPI.getDictItemAll();
|
||||
if (CollectionUtils.isEmpty(listDict)) {
|
||||
return "";
|
||||
}
|
||||
JSONObject dataJsonObject = (JSONObject) translateObject(data, listDict);
|
||||
dataJsonObject.put("personnelObj", user);
|
||||
return dataJsonObject.toJSONString();
|
||||
}
|
||||
|
||||
|
||||
private Object translateObject(Object record, List<SysDictItemCore> listDict) {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
String json;
|
||||
@@ -172,15 +184,16 @@ public class TranslationAspect {
|
||||
}
|
||||
|
||||
/**
|
||||
* 翻译字典文本
|
||||
* @param code 编码
|
||||
* @param text 值
|
||||
* @param table 表名
|
||||
* @param key 键
|
||||
* 翻译字典文本
|
||||
*
|
||||
* @param code 编码
|
||||
* @param text 值
|
||||
* @param table 表名
|
||||
* @param key 键
|
||||
* @param listDict 字典集合
|
||||
*/
|
||||
private String translateDictValue(String code, String text, String table, String key, List<SysDictItemCore> listDict) {
|
||||
if(oConvertUtils.isEmpty(key)) {
|
||||
if (oConvertUtils.isEmpty(key)) {
|
||||
return null;
|
||||
}
|
||||
StringBuilder textValue = new StringBuilder();
|
||||
@@ -190,11 +203,11 @@ public class TranslationAspect {
|
||||
if (k.trim().length() == 0) {
|
||||
continue; //跳过循环
|
||||
}
|
||||
if (!StringUtils.isEmpty(table)){
|
||||
tmpValue = commonAPI.queryTableDictTextByKey(table,text,code,k.trim());
|
||||
}else {
|
||||
List<SysDictItemCore> listNew = listDict.stream().filter(o-> Objects.equals(o.getDictCode(),code) && Objects.equals(o.getItemValue(),k.trim())).collect(Collectors.toList());
|
||||
if(!CollectionUtils.isEmpty(listNew)){
|
||||
if (!StringUtils.isEmpty(table)) {
|
||||
tmpValue = commonAPI.queryTableDictTextByKey(table, text, code, k.trim());
|
||||
} else {
|
||||
List<SysDictItemCore> listNew = listDict.stream().filter(o -> Objects.equals(o.getDictCode(), code) && Objects.equals(o.getItemValue(), k.trim())).collect(Collectors.toList());
|
||||
if (!CollectionUtils.isEmpty(listNew)) {
|
||||
tmpValue = listNew.get(0).getItemText();
|
||||
}
|
||||
}
|
||||
|
||||
+48
-13
@@ -352,16 +352,10 @@ public class ActFlowCommonService {
|
||||
}
|
||||
|
||||
public void getExistDraftAndRemove(CommonVO common, ProcessTypeEnum processTypeEnum) {
|
||||
String taskId = common.getTaskId();
|
||||
String userId = UserUtils.getUserId();
|
||||
String processInstanceId = common.getProcessInstanceId();
|
||||
LambdaQueryWrapper<ProcessDraft> draftWrapper = new LambdaQueryWrapper<>();
|
||||
draftWrapper.eq(ProcessDraft::getPrcType, processTypeEnum.getValue());
|
||||
draftWrapper.eq(ProcessDraft::getUserId, userId);
|
||||
draftWrapper.eq(StrUtil.isNotBlank(processInstanceId), ProcessDraft::getProcessInstanceId, processInstanceId);
|
||||
draftWrapper.eq(StrUtil.isNotBlank(taskId), ProcessDraft::getTaskId, taskId);
|
||||
// 删除草稿表数据
|
||||
processDraftService.remove(draftWrapper);
|
||||
if (StrUtil.isNotBlank(common.getDraftId())) {
|
||||
processDraftService.removeById(common.getDraftId());
|
||||
}
|
||||
}
|
||||
|
||||
public CommonVO getHandleCommon(String taskId) {
|
||||
@@ -388,7 +382,7 @@ public class ActFlowCommonService {
|
||||
String processInstanceId = commonVO.getProcessInstanceId();
|
||||
LambdaQueryWrapper<ProcessDraft> draftWrapper = new LambdaQueryWrapper<>();
|
||||
draftWrapper.eq(ProcessDraft::getUserId, userId);
|
||||
draftWrapper.eq(ProcessDraft::getTaskId, taskId);
|
||||
draftWrapper.eq(StrUtil.isNotBlank(taskId), ProcessDraft::getTaskId, taskId);
|
||||
draftWrapper.ne(ProcessDraft::getSaveSource, DraftCommon.INITIAL_SOURCE);
|
||||
draftWrapper.eq(StrUtil.isNotBlank(processInstanceId), ProcessDraft::getProcessInstanceId, processInstanceId);
|
||||
processDraftService.remove(draftWrapper);
|
||||
@@ -450,15 +444,20 @@ public class ActFlowCommonService {
|
||||
*
|
||||
* @param common
|
||||
* @param processTypeEnum
|
||||
* @param data
|
||||
* @param jsonData
|
||||
*/
|
||||
public void saveFirstNodeDraft(CommonVO common, ProcessTypeEnum processTypeEnum, Object data) {
|
||||
ProcessInfoVO processInfoVo = this.getProcessInfoVo(common, processTypeEnum, data);
|
||||
processHandleService.saveToDraft(processInfoVo);
|
||||
}
|
||||
|
||||
public void saveFirstNodeDraftCustomUserId(CommonVO common, ProcessTypeEnum processTypeEnum, Object data, String userId) {
|
||||
ProcessInfoVO processInfoVo = this.getProcessInfoVo(common, processTypeEnum, data);
|
||||
public void saveFirstNodeDraft(CommonVO common, ProcessTypeEnum processTypeEnum, String jsonData) {
|
||||
ProcessInfoVO processInfoVo = this.getProcessInfoVo(common, processTypeEnum, jsonData);
|
||||
processHandleService.saveToDraft(processInfoVo);
|
||||
}
|
||||
|
||||
public void saveFirstNodeDraftCustomUserId(CommonVO common, ProcessTypeEnum processTypeEnum, String jsonData, String userId) {
|
||||
ProcessInfoVO processInfoVo = this.getProcessInfoVo(common, processTypeEnum, jsonData);
|
||||
processHandleService.saveToDraftCustomUserId(processInfoVo, userId);
|
||||
}
|
||||
|
||||
@@ -482,6 +481,24 @@ public class ActFlowCommonService {
|
||||
return processInfoVO;
|
||||
}
|
||||
|
||||
private ProcessInfoVO getProcessInfoVo(CommonVO common, ProcessTypeEnum processTypeEnum, String jsonData) {
|
||||
ProcessInfoVO<ESArchiveDataVO> processInfoVO = new ProcessInfoVO<>();
|
||||
processInfoVO.setSaveSource(DraftCommon.INITIAL_SOURCE);
|
||||
BasicTaskInfoDTO basicTaskInfoDTO = new BasicTaskInfoDTO();
|
||||
basicTaskInfoDTO.setHandleFile(common.getCommitFile());
|
||||
basicTaskInfoDTO.setHandleText(common.getCommitText());
|
||||
BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO();
|
||||
basicProcessInfoDTO.setProcessName(common.getPrcName());
|
||||
basicProcessInfoDTO.setProcessDescription(common.getPrcMes());
|
||||
basicProcessInfoDTO.setProcessType(processTypeEnum.getValue());
|
||||
basicProcessInfoDTO.setProcessDueDate(common.getDueTime());
|
||||
basicProcessInfoDTO.setProcessInstanceId(common.getProcessInstanceId());
|
||||
processInfoVO.setInfoJsonStr(jsonData);
|
||||
processInfoVO.setBasicTaskInfoDTO(basicTaskInfoDTO);
|
||||
processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO);
|
||||
return processInfoVO;
|
||||
}
|
||||
|
||||
public void checkStandardState(String standardId) {
|
||||
LawsEnterpriseStandard es = esService.getById(standardId);
|
||||
if (es != null) {
|
||||
@@ -493,4 +510,22 @@ public class ActFlowCommonService {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String getFirstTaskId(String processInstanceId, String userId, String processDefinitionId) {
|
||||
// 自动完成第一个任务
|
||||
List<Map<String, Object>> taskList = this.myTaskList(userId);
|
||||
if (!CollectionUtils.isEmpty(taskList)) {
|
||||
for (Map<String, Object> map : taskList) {
|
||||
if (map.get("assignee").toString().equals(userId) &&
|
||||
map.get("processDefinitionId").toString().equals(processDefinitionId) &&
|
||||
map.get("processInstanceId").toString().equals(processInstanceId)) { // 添加这一行来进行更精确的匹配
|
||||
|
||||
log.info("当前用户ID:{},相关联的流程定义ID:{}", userId, map.get("processDefinitionId").toString());
|
||||
log.info("匹配到的任务ID:{}", map.get("taskId").toString());
|
||||
return map.get("taskId").toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
+20
-8
@@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.common.api.vo.ResultCommon;
|
||||
import com.jero.common.aspect.TranslationAspect;
|
||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.modules.activiti.enums.ProcessTypeEnum;
|
||||
@@ -60,6 +61,9 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
|
||||
@Resource
|
||||
private TaskService taskService;
|
||||
|
||||
@Resource
|
||||
private TranslationAspect translationAspect;
|
||||
|
||||
@Override
|
||||
public void startProcess(ESRecheckDataVO recheckData) {
|
||||
// 执行流程发起前的操作
|
||||
@@ -87,23 +91,27 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
|
||||
String processInstanceId = processInstance.getId();
|
||||
// 手动设置所有流程变量
|
||||
actFlowCommonService.setProcessVariables(processInstanceId, actVariables);
|
||||
// 自动完成第一个任务
|
||||
actFlowCommonService.autoCompleteFirstTask(userId, processInstanceId, processDefinitionId, common);
|
||||
// 设置流程实例Id
|
||||
esRecheck.setProcessInstanceId(processInstanceId);
|
||||
// 保存到业务流程表
|
||||
saveOrUpdate(esRecheck);
|
||||
// 保存选人信息
|
||||
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables));
|
||||
// 获取第一个任务的taskId
|
||||
String taskId = actFlowCommonService.getFirstTaskId(processInstanceId, userId, processDefinitionId);
|
||||
// 手动翻译
|
||||
String jsonData = translationAspect.manualParseDictText(this.getHandleData(taskId), this.getUserMap(variables));
|
||||
// 强制撤回
|
||||
common.setProcessInstanceId(processInstanceId);
|
||||
actFlowCommonService.saveFirstNodeDraft(common, ProcessTypeEnum.ES_RECHECK, jsonData);
|
||||
// 自动完成第一个任务
|
||||
actFlowCommonService.completeTask(taskId, userId);
|
||||
// 根据流程实例id更新流程总表
|
||||
String prcName = common.getPrcName();
|
||||
String prcMes = common.getPrcMes();
|
||||
Date dueTime = common.getDueTime();
|
||||
Integer prcType = ProcessTypeEnum.ES_RECHECK.getValue();
|
||||
actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime);
|
||||
// 强制撤回
|
||||
common.setProcessInstanceId(processInstanceId);
|
||||
actFlowCommonService.saveFirstNodeDraft(common, ProcessTypeEnum.ES_RECHECK, recheckData);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -137,15 +145,19 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
|
||||
saveOrUpdate(esRecheck);
|
||||
// 保存选人信息
|
||||
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables));
|
||||
// 获取第一个任务的taskId
|
||||
String taskId = actFlowCommonService.getFirstTaskId(processInstanceId, userId, processDefinitionId);
|
||||
// 手动翻译
|
||||
String jsonData = translationAspect.manualParseDictText(this.getHandleData(taskId), this.getUserMap(variables));
|
||||
// 强制撤回
|
||||
common.setProcessInstanceId(processInstanceId);
|
||||
actFlowCommonService.saveFirstNodeDraft(common, ProcessTypeEnum.ES_RECHECK, jsonData);
|
||||
// 根据流程实例id更新流程总表
|
||||
String prcName = common.getPrcName();
|
||||
String prcMes = common.getPrcMes();
|
||||
Date dueTime = common.getDueTime();
|
||||
Integer prcType = ProcessTypeEnum.ES_RECHECK.getValue();
|
||||
actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime);
|
||||
// 强制撤回
|
||||
common.setProcessInstanceId(processInstanceId);
|
||||
actFlowCommonService.saveFirstNodeDraftCustomUserId(common, ProcessTypeEnum.ES_RECHECK, recheckData, userId);
|
||||
}
|
||||
|
||||
public Map<String, Object> setVariables(Map<String, Object> flowUser) {
|
||||
|
||||
-1
@@ -418,7 +418,6 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
|
||||
if (StringUtils.isNotBlank(draftId)) {
|
||||
processDraftService.removeById(draftId);
|
||||
}
|
||||
deleteMyDraftCustomUserId(taskId, processInfoVO.getBusinessId(), basicProcessInfoDTO.getProcessType(), userId);
|
||||
// 根据是否有taskId区分保存来源(待办、草稿)
|
||||
ProcessDraft processDraft = new ProcessDraft();
|
||||
processDraft.setProjectId(processInfoVO.getBusinessId()); // 业务id
|
||||
|
||||
Reference in New Issue
Block a user