Browse Source

流程最后一个环节处理报错的情况,撤回 驳回流程的orgpath等

zhanglei
yxt_djz 3 years ago
parent
commit
57ad68ec2f
  1. 2
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/bdmaterial/BdMaterialService.java
  2. 4
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stkinstock/STKInStockService.java
  3. 6
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java
  4. 6
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowdefinition/FlowDefinitionService.java
  5. 1
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.java
  6. 24
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.xml
  7. 11
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java

2
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/bdmaterial/BdMaterialService.java

@ -222,7 +222,7 @@ public class BdMaterialService extends FinKingDeeService {
private ResultBean<String> draft( String kingDeeData) throws Exception {
ResultBean<String> rb=ResultBean.fireFail();
ResultBean<String> stringResultBean = accessKingDeeInterface(KingDeeBillId.BD_MATERIAL.getID(),
kingDeeData, kingDeeConfig.getUserName_administrator(),kingDeeConfig.getPassword_administrator(), KingDeeBillUrl.DRAFT_URL.getURL());
kingDeeData, KingDeeBillUrl.DRAFT_URL.getURL());
if(!stringResultBean.getSuccess()){
log.info("物料保存失败!");
return rb.setMsg("物料保存失败!");

4
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stkinstock/STKInStockService.java

@ -106,6 +106,10 @@ public class STKInStockService extends FinKingDeeService {
}else{
f.setFLot(f.getFMaterialId());//启用批号
}
String fStockId = f.getFStockId();
if(!"ARZTCK".equals(fStockId)){//如果不是在途仓库 设置成安瑞正式仓库
f.setFStockId("ARZSCK");
}
// allocate(f,stkInStock,Id);
ResultBean<String> allocate = allocate(KingDeeBillId.BD_MATERIAL.getID(),Id+"", stkInStock.getTOrgId());
}

6
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java

@ -164,7 +164,7 @@ public class FlowableRest implements FlowableFeign {
return rb.setMsg(nextNodeUserSidsOfCreate.getMsg());
}
nextNodeUserSids_=nextNodeUserSidsOfCreate.getData().getUserSid();
dto.getFormVariables().put("orgPath",nextNodeUserSidsOfCreate.getData().getOrgPath());
dto.getFormVariables().put(BusinessVariables.ORGPATH,nextNodeUserSidsOfCreate.getData().getOrgPath());
}
dto.setNextNodeUserSids(nextNodeUserSids_);
ResultBean resultBean1 = flowableService.businessStart(dto);
@ -221,7 +221,7 @@ public class FlowableRest implements FlowableFeign {
return rb.setMsg("nextUserSid 不能为空!");
}
nextUserSid=nextNodeUserSidsOfSubmit.getData().getUserSid();
formVariables.put("orgPath",nextNodeUserSidsOfSubmit.getData().getOrgPath());
formVariables.put(BusinessVariables.ORGPATH,nextNodeUserSidsOfSubmit.getData().getOrgPath());
}
String comment = dto.getComment();
if (StringUtils.isBlank(comment)) {
@ -404,7 +404,7 @@ public class FlowableRest implements FlowableFeign {
vo.setNodeState( SysFormLinkFlowStateEnum.REJECT.getCode());
}*/
Map<String, Object> formVariables=new HashMap<>();
formVariables.put("orgPath",orgPath);
formVariables.put(BusinessVariables.ORGPATH,orgPath);
//在act_ru_variable表中增加环节上的业务参数的变量
taskService.setVariablesLocal(taskId,formVariables);
ResultBean resultBean1 = ResultBean.fireSuccess();

6
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowdefinition/FlowDefinitionService.java

@ -188,14 +188,15 @@ public class FlowDefinitionService extends FlowServiceFactory {
ProcessInstance processInstance = runtimeService.startProcessInstanceById(procDefId, variables);
// 给第一步申请人节点设置任务执行人和意见 todo:第一个节点不设置为申请人节点有点问题?
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).singleResult();
for(Map.Entry<String, Object> entry:variables.entrySet()){
/* for(Map.Entry<String, Object> entry:variables.entrySet()){
taskService.setVariable(task.getId(),entry.getKey(),entry.getValue());
System.out.println(entry.getKey()+"--->"+entry.getValue());
}
}*/
if (Objects.nonNull(task)) {
taskService.addComment(task.getId(), processInstance.getProcessInstanceId(), FlowComment.START.getType(),
sysUser.getName() + "发起流程申请");
taskService.setAssignee(task.getId(), userSid);
taskService.setVariablesLocal(task.getId(),variables);
taskService.complete(task.getId(), variables);
}
@ -236,6 +237,7 @@ public class FlowDefinitionService extends FlowServiceFactory {
public ResultBean<FlowTask> businessStart(BusinessVariables dto) {
ResultBean<FlowTask> resultBean = new ResultBean<>();
Map<String, Object> variables = dto.getFormVariables();
variables.put(BusinessVariables.ORGPATH,dto.getOrgSidPath());
Object procDefId_obj = dto.getModelId();
Object userSid_obj = dto.getUserSid();
String procDefId = null;

1
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.java

@ -42,4 +42,5 @@ public interface FlowTaskMapper extends BaseMapper<FlowTask> {
Map<String,Object> getHistTaskByID(@Param("procId")String procId,@Param("taskId")String id);
Map<String, Object> getTaskByDefKey(@Param("procId")String processInstanceId, @Param("taskId")String id);
Map<String, Object> getActHiVarinstForOrgPath(@Param("taskId")String taskId);
}

24
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.xml

@ -213,14 +213,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="getTaskByDefKey" resultType="java.util.Map">
SELECT
task.name_ ,
task.task_def_key_ ,
task.id_,
task.ASSIGNEE_
SELECT
task.name_ ,
task.task_def_key_ ,
task.id_,
task.ASSIGNEE_,
arv.text_ orgPath
FROM
act_ru_task task
left join act_ru_variable arv on task.id_=arv.task_id_ and arv.name_="orgPath"
WHERE
task.task_def_key_= #{taskId} and task.PROC_INST_ID_= #{procId} order by task.id_ desc limit 0,1
</select>
<select id="getActHiVarinstForOrgPath" resultType="java.util.Map">
SELECT
ahv.*
FROM
act_ru_task task
act_hi_varinst ahv
WHERE
task.task_def_key_= #{taskId} and task.PROC_INST_ID_= #{procId} order by task.id_ desc limit 0,1
ahv.task_id_= #{taskId} and ahv.name_="orgPath" order by ahv.id_ desc limit 0,1
</select>
</mapper>

11
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java

@ -1,5 +1,6 @@
package com.yxt.anrui.flowable.biz.flowtask;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@ -1206,6 +1207,10 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
parentUserTaskList.forEach(item -> parentUserTaskKeyList.add(item.getId()));
// 获取全部历史节点活动实例,即已经走过的节点历史,数据采用开始时间升序
List<HistoricTaskInstance> historicTaskInstanceList = historyService.createHistoricTaskInstanceQuery().processInstanceId(task.getProcessInstanceId()).orderByHistoricTaskInstanceStartTime().asc().list();
HistoricTaskInstance historicTaskInstance = historicTaskInstanceList.get(historicTaskInstanceList.size() - 2);
Map<String, Object> actHiVarinstForOrgPath = flowTaskMapper.getActHiVarinstForOrgPath(historicTaskInstance.getId());
//Object o = actHiVarinstForOrgPath.get(BusinessVariables.ORGPATH);
String orgPath = MapUtil.getStr(actHiVarinstForOrgPath,"TEXT_");
// 数据清洗,将回滚导致的脏数据清洗掉
List<String> lastHistoricTaskInstanceList = FlowableUtils.historicTaskInstanceClean(allElements, historicTaskInstanceList);
// 此时历史任务实例为倒序,获取最后走的节点
@ -1310,6 +1315,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
latestTaskVo.setName_(listResultBean_2!=null&&listResultBean_2.getData().size()!=0?listResultBean_2.getData().get(0).getName_():item.getName());
latestTaskVo.setTask_def_key_(listResultBean_2!=null&&listResultBean_2.getData().size()!=0?listResultBean_2.getData().get(0).getTask_def_key_():item.getId());
latestTaskVo.setIncomingSourceRef(listResultBean_2!=null&&listResultBean_2.getData().size()!=0?listResultBean_2.getData().get(0).getIncomingSourceRef():item.getIncomingFlows().get(0).getSourceRef());
latestTaskVo.setOrgPath(listResultBean_2!=null&&listResultBean_2.getData().size()!=0?listResultBean_2.getData().get(0).getOrgPath():orgPath);
latestTaskList.add(latestTaskVo);
});
} catch (FlowableObjectNotFoundException e) {
@ -1515,8 +1521,12 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
List<HistoricTaskInstance> historicTaskInstanceList = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(processInstanceId)
.orderByHistoricTaskInstanceStartTime().asc().list();
HistoricTaskInstance historicTaskInstance = historicTaskInstanceList.get(historicTaskInstanceList.size() - 1);
Map<String, Object> actHiVarinstForOrgPath = flowTaskMapper.getActHiVarinstForOrgPath(historicTaskInstance.getId());
String orgPath = MapUtil.getStr(actHiVarinstForOrgPath,"TEXT_");
// 数据清洗,将回滚导致的脏数据清洗掉
List<String> lastHistoricTaskInstanceList = FlowableUtils.historicTaskInstanceClean(allElements, historicTaskInstanceList);
// 此时历史任务实例为倒序,获取最后走的节点
List<String> targetIds = new ArrayList<>();
int number = 0;
@ -1598,6 +1608,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
latestTaskVo.setName_(item.getName());
latestTaskVo.setTask_def_key_(item.getId());
latestTaskVo.setIncomingSourceRef(item.getIncomingFlows().get(0).getSourceRef());
latestTaskVo.setOrgPath(orgPath);
Map<String, Object> task_map = flowTaskMapper.getTaskByDefKey(processInstanceId, item.getId());
if(task_map!=null){

Loading…
Cancel
Save