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