政策征求意见流程开发、对接。

This commit is contained in:
wangzhijiang
2023-10-23 14:28:17 +08:00
parent 6f3aa50563
commit 79bdceac8a
29 changed files with 793 additions and 76 deletions
@@ -112,8 +112,6 @@ public class TaskTodoService {
break;
}
}
} else {
result = true;
}
return result;
}
@@ -20,15 +20,13 @@ import java.util.Map;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessEntrustService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_main.datas.service.IOaTaskExecService;
import com.ydw.bat.wkflow.business_main.datas.service.*;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.business_oa.webService.service.impl.WebServiceOAServiceImpl;
import com.ydw.bat.wkflow.business_wkflow.form.dto.FormSubmitDto;
import com.ydw.bat.wkflow.business_wkflow.form.service.FormValsService;
import com.ydw.bat.wkflow.util.enums.FlowTypeEnum;
import org.activiti.engine.*;
import org.activiti.engine.history.*;
import org.activiti.engine.repository.ProcessDefinition;
@@ -36,6 +34,7 @@ import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.runtime.ProcessInstanceQuery;
import org.activiti.engine.task.NativeTaskQuery;
import org.activiti.engine.task.Task;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -101,6 +100,12 @@ public class TodoTaskController extends BaseAction {
@Autowired
private CreateMQService mqService;
@Autowired
private IFlowUserRelInfoService flowUserRelInfoService;
@Autowired
private IPolicySolicitOpinionEOService policySolicitOpinionEOService;
@ApiOperation(value = "我的待办任务列表")
@ApiImplicitParams({@ApiImplicitParam(name = "name", value = "名称"),
@ApiImplicitParam(name = "current", value = "当前页"),
@@ -242,6 +247,7 @@ public class TodoTaskController extends BaseAction {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String data = sdf.format(entry.getValue().get(0).get("createTime"));
res.setAcceptTime(data);
res.setTaskDefinitionKey(entry.getValue().get(0).get("taskDefinitionKey").toString());
// //获取新的流程名称
// QueryWrapper<BusProcessNew> queryWrapper1=new QueryWrapper<>();
// queryWrapper1.eq("P_ID",res.getPrcId());
@@ -404,6 +410,10 @@ public class TodoTaskController extends BaseAction {
busProcessEntrust.setPrcName(one.getPrcName());
busProcessEntrust.setTaskId(str);
iBusProcessEntrustService.save(busProcessEntrust);
if (StringUtils.equals(one.getPrcType(), FlowTypeEnum.ZCZQYJLC.getValue())) {
this.changePolicySolicitOpinionProcessAssignee(assignee, userId, pId, str);
}
}
}
@@ -490,6 +500,49 @@ public class TodoTaskController extends BaseAction {
// logger.info("task {} find " + taskId);
return WrapMapper.ok("改派成功");
}
/**
* @Description: 变更政策征求意见流程任务办理人(责任部门子流程相关)
* @author: wangzhijiang
* @date: 2023-10-18
* @Param:
* @return:
*/
private void changePolicySolicitOpinionProcessAssignee(String assignee, String userId, String pId, String str) {
Task task = this.taskService.createTaskQuery().taskId(str).singleResult();
QueryWrapper<FlowUserRelInfo> furQueryWrap = new QueryWrapper<>();
furQueryWrap.lambda().eq(FlowUserRelInfo::getActiProcInstId, pId);
furQueryWrap.lambda().eq(FlowUserRelInfo::getFlowType,FlowTypeEnum.ZCZQYJLC.getValue());
// 责任人任务处理。
if (StringUtils.equals(task.getTaskDefinitionKey(),"PolicySolicitOpinionProcessKey8")) {
furQueryWrap.lambda().eq(FlowUserRelInfo::getDataType,"zrdjrfpzrr");
furQueryWrap.lambda().eq(FlowUserRelInfo::getUserId, userId);
List<FlowUserRelInfo> furInfoList = this.flowUserRelInfoService.list(furQueryWrap);
if (CollectionUtils.isNotEmpty(furInfoList)) {
furInfoList.forEach(furInfo -> {furInfo.setUserId(assignee);});
this.flowUserRelInfoService.updateBatchById(furInfoList);
}
}
// 责任对接人汇总
if (StringUtils.equals(task.getTaskDefinitionKey(),"PolicySolicitOpinionProcessKey9")) {
furQueryWrap.lambda().eq(FlowUserRelInfo::getDataType,"zrdjrfpzrr");
furQueryWrap.lambda().eq(FlowUserRelInfo::getParentUserId, userId);
List<FlowUserRelInfo> furInfoList = this.flowUserRelInfoService.list(furQueryWrap);
if (CollectionUtils.isNotEmpty(furInfoList)) {
furInfoList.forEach(furInfo -> {furInfo.setParentUserId(assignee);});
this.flowUserRelInfoService.updateBatchById(furInfoList);
}
}
// 责任单位审批
if (StringUtils.equals(task.getTaskDefinitionKey(),"PolicySolicitOpinionProcessKey10")) {
furQueryWrap.lambda().eq(FlowUserRelInfo::getDataType,"zrdjrfpzrdw");
furQueryWrap.lambda().eq(FlowUserRelInfo::getUserId, userId);
List<FlowUserRelInfo> furInfoList = this.flowUserRelInfoService.list(furQueryWrap);
if (CollectionUtils.isNotEmpty(furInfoList)) {
furInfoList.forEach(furInfo -> {furInfo.setUserId(assignee);});
this.flowUserRelInfoService.updateBatchById(furInfoList);
}
}
}
@ApiOperation(value = "完成任务", notes = "流程单个节点任务,直接完成任务")
@ApiImplicitParams({@ApiImplicitParam(name = "taskId", value = "任务id"),
@@ -1870,6 +1923,14 @@ public class TodoTaskController extends BaseAction {
BusProcessNew one = busProcessNewList.get(0);
one.setMesg(object.toString());
iBusProcessNewService.saveOrUpdate(one);
QueryWrapper<BusProcessName> bpnQueryWrap = new QueryWrapper<>();
bpnQueryWrap.lambda().eq(BusProcessName::getPrcId,one.getPId());
BusProcessName busProcessName = this.iBusProcessNameService.getOne(bpnQueryWrap);
if (StringUtils.equals(busProcessName.getPrcType(),FlowTypeEnum.ZCZQYJLC.getValue())) {
object.put("prcId",busProcessName.getPrcId());
this.policySolicitOpinionEOService.batchInsert(object);
}
return WrapMapper.ok("保存成功");
}
}
@@ -0,0 +1,32 @@
package com.ydw.bat.wkflow.business_main.datas.controller;
import com.ydw.bat.wkflow.business_main.datas.entity.PolicySolicitOpinionEO;
import com.ydw.bat.wkflow.business_main.datas.service.IPolicySolicitOpinionEOService;
import com.ydw.bat.wkflow.util.http.ResponseMessage;
import com.ydw.bat.wkflow.util.http.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/datas/policySolicitOpinion")
public class PolicySolicitOpinionEOController {
@Autowired
private IPolicySolicitOpinionEOService policySolicitOpinionEOService;
@ApiOperation(value = "查询政策征求意见列表")
@GetMapping("/queryPolicitOpinionEOList")
public ResponseMessage<List<PolicySolicitOpinionEO>> queryPolicitOpinionEOList(@RequestParam Map<String,Object> params) {
List<PolicySolicitOpinionEO> policySolicitOpinionEOList = this.policySolicitOpinionEOService.queryPolicitOpinionEOList(params);
return Result.success(policySolicitOpinionEOList);
}
}
@@ -94,4 +94,7 @@ public class BusProcessName implements Serializable {
@TableField("RESPONSIBLE_UNIT_DEADLINE_DATE")
private Date responsibleUnitDeadlineDate;
@TableField(exist = false)
private String taskDefinitionKey;
}
@@ -0,0 +1,67 @@
package com.ydw.bat.wkflow.business_main.datas.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* 流程用户关系信息表 :流程中,存储用户上下级关系
* 作用:记录流程中,用户分配的上下级关系。
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("T_FLOW_USER_REL_INFO")
@ApiModel(value="FlowUserRelInfo对象", description="")
public class FlowUserRelInfo {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
@TableId(value = "id", type = IdType.UUID)
private String id;
@ApiModelProperty(value = "流程类型")
@TableField("flow_type")
private String flowType;
@ApiModelProperty(value = "数据类型")
@TableField("data_type")
private String dataType;
@ApiModelProperty(value = "用户id")
@TableField("user_id")
private String userId;
@ApiModelProperty(value = "上级用户id")
@TableField("parent_user_id")
private String parentUserId;
@ApiModelProperty(value = "标准id")
@TableField("stand_id")
private String standId;
@ApiModelProperty(value = "待办id")
@TableField("task_id")
private String taskId;
@ApiModelProperty(value = "流程实例id")
@TableField("acti_proc_inst_id")
private String actiProcInstId;
@ApiModelProperty(value = "创建时间")
@TableField("create_time")
private Date createTime;
@ApiModelProperty(value = "创建人")
@TableField("create_by")
private String createBy;
}
@@ -0,0 +1,88 @@
package com.ydw.bat.wkflow.business_main.datas.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* @Description: 政策征求意见列表
* @author: wangzhijiang
* @date: 2023-10-18
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("POLICY_SOLICIT_OPINION")
@ApiModel(value="PolicySolicitOpinion对象", description="")
public class PolicySolicitOpinionEO {
private static final long serialVersionUID=1L;
@TableId(value = "ID", type = IdType.UUID)
private String id;
@TableField("PRC_ID")
private String prcId;
@TableField("SAR_LAWS_INFO_ID")
private String sarLawsInfoId;
// 章节编号
@TableField("CHAPTER_NUMBER")
private String chapterNumber;
// 章节条目
@TableField("CHAPTER_ENTRIES")
private String chapterEntries;
// 修改前
@TableField("MODIFY_BEFORE")
private String modifyBefore;
// 修改后
@TableField("MODIFY_AFTER")
private String modifyAfter;
// 修改理由
@TableField("MODIFY_REASON")
private String modifyReason;
// 原因
@TableField("CAUSE")
private String cause;
// 附件id
@TableField("ANNEX_FILE_ID")
private String annexFileId;
// 处理意见
@TableField("HANDLING_OPINIONS")
private String handlingOpinions;
// 处理原因
@TableField("HANDLING_CAUSE")
private String handlingCause;
// 提出人/创建人
@TableField("CREATE_USER_ID")
private String createUserId;
// 创建时间
@TableField("CREATE_TIME")
private Date createTime;
// 更新人
@TableField("MODIFY_USER_ID")
private String modifyUserId;
// 更新时间
@TableField("MODIFY_TIME")
private Date modifyTime;
}
@@ -0,0 +1,11 @@
package com.ydw.bat.wkflow.business_main.datas.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ydw.bat.wkflow.business_main.datas.entity.FlowUserRelInfo;
/**
* 流程用户关系信息表 :流程中,存储用户上下级关系
* 作用:记录流程中,用户分配的上下级关系。
*/
public interface FlowUserRelInfoMapper extends BaseMapper<FlowUserRelInfo> {
}
@@ -0,0 +1,7 @@
package com.ydw.bat.wkflow.business_main.datas.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ydw.bat.wkflow.business_main.datas.entity.PolicySolicitOpinionEO;
public interface PolicySolicitOpinionEOMapper extends BaseMapper<PolicySolicitOpinionEO> {
}
@@ -0,0 +1,17 @@
package com.ydw.bat.wkflow.business_main.datas.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ydw.bat.wkflow.business_main.datas.entity.FlowUserRelInfo;
import java.util.List;
/**
* 流程用户信息:流程中,存储用户上下级关系
*/
public interface IFlowUserRelInfoService extends IService<FlowUserRelInfo> {
/**
* 批量新增流程用户上下级关系
* @param flowUserRelInfoList
*/
void saveBatchFlowUserRelInfo(List<FlowUserRelInfo> flowUserRelInfoList);
}
@@ -0,0 +1,15 @@
package com.ydw.bat.wkflow.business_main.datas.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ydw.bat.wkflow.business_main.datas.entity.PolicySolicitOpinionEO;
import java.util.List;
import java.util.Map;
public interface IPolicySolicitOpinionEOService extends IService<PolicySolicitOpinionEO> {
void batchInsert(JSONObject json);
List<PolicySolicitOpinionEO> queryPolicitOpinionEOList(Map<String,Object> params);
}
@@ -0,0 +1,42 @@
package com.ydw.bat.wkflow.business_main.datas.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ydw.bat.wkflow.business_main.datas.entity.FlowUserRelInfo;
import com.ydw.bat.wkflow.business_main.datas.mapper.FlowUserRelInfoMapper;
import com.ydw.bat.wkflow.business_main.datas.service.IFlowUserRelInfoService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 流程用户信息:流程中,存储用户上下级关系
* 作用:记录流程每一个节点的用户id
*/
@Service
@Transactional(value = "transactionManager", propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
public class FlowUserRelInfoServiceImpl extends ServiceImpl<FlowUserRelInfoMapper, FlowUserRelInfo> implements IFlowUserRelInfoService {
@Autowired
private FlowUserRelInfoMapper flowUserRelInfoMapper;
@Override
public void saveBatchFlowUserRelInfo(List<FlowUserRelInfo> flowUserRelInfoList) {
if(CollectionUtils.isNotEmpty(flowUserRelInfoList)){
FlowUserRelInfo flowUserRelInfo = flowUserRelInfoList.get(0);
QueryWrapper<FlowUserRelInfo> deleteWrap = new QueryWrapper<>();
deleteWrap.lambda().eq(FlowUserRelInfo::getParentUserId,flowUserRelInfo.getParentUserId());
deleteWrap.lambda().eq(FlowUserRelInfo::getDataType,flowUserRelInfo.getDataType());
deleteWrap.lambda().eq(FlowUserRelInfo::getFlowType,flowUserRelInfo.getFlowType());
deleteWrap.lambda().eq(FlowUserRelInfo::getActiProcInstId,flowUserRelInfo.getActiProcInstId());
this.flowUserRelInfoMapper.delete(deleteWrap);
this.saveBatch(flowUserRelInfoList);
}
}
}
@@ -0,0 +1,130 @@
package com.ydw.bat.wkflow.business_main.datas.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.netflix.discovery.converters.Auto;
import com.ydw.bat.wkflow.business_main.datas.entity.FlowUserRelInfo;
import com.ydw.bat.wkflow.business_main.datas.entity.PolicySolicitOpinionEO;
import com.ydw.bat.wkflow.business_main.datas.mapper.PolicySolicitOpinionEOMapper;
import com.ydw.bat.wkflow.business_main.datas.service.IFlowUserRelInfoService;
import com.ydw.bat.wkflow.business_main.datas.service.IPolicySolicitOpinionEOService;
import com.ydw.bat.wkflow.util.enums.FlowTypeEnum;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class PolicySolicitOpinionEOServiceImpl extends ServiceImpl<PolicySolicitOpinionEOMapper, PolicySolicitOpinionEO> implements IPolicySolicitOpinionEOService {
@Autowired
private IFlowUserRelInfoService flowUserRelInfoService;
@Override
public void batchInsert(JSONObject json) {
String currentUserId = json.getString("currentUserId");
String prcId = json.getString("prcId");
String removeIds = json.getString("removeIds");
JSONObject jsonForm = json.getJSONObject("form");
if (StringUtils.isNotEmpty(removeIds)) {
List<String> removeIdList = Arrays.asList(removeIds.split(","));
this.removeByIds(removeIdList);
}
JSONArray policySolicitOpinionEOArr = json.getJSONArray("policySolicitOpinionEOList");
List<PolicySolicitOpinionEO> addPolicySolicitOpinionEOList = new ArrayList<>();
List<PolicySolicitOpinionEO> updatePolicySolicitOpinionEOList = new ArrayList<>();
PolicySolicitOpinionEO policySolicitOpinionEO = null;
for (Object policySolicitOpinion : policySolicitOpinionEOArr) {
policySolicitOpinionEO = JSONObject.parseObject(JSONObject.toJSONString(policySolicitOpinion), PolicySolicitOpinionEO.class);
policySolicitOpinionEO.setPrcId(prcId);
policySolicitOpinionEO.setSarLawsInfoId(jsonForm.getString("lawsId"));
if (StringUtils.isEmpty(policySolicitOpinionEO.getId())) {
policySolicitOpinionEO.setCreateUserId(currentUserId);
policySolicitOpinionEO.setCreateTime(new Date());
addPolicySolicitOpinionEOList.add(policySolicitOpinionEO);
} else {
policySolicitOpinionEO.setModifyUserId(currentUserId);
policySolicitOpinionEO.setModifyTime(new Date());
updatePolicySolicitOpinionEOList.add(policySolicitOpinionEO);
}
}
if (CollectionUtils.isNotEmpty(addPolicySolicitOpinionEOList)) {
this.saveBatch(addPolicySolicitOpinionEOList);
}
if (CollectionUtils.isNotEmpty(updatePolicySolicitOpinionEOList)) {
this.updateBatchById(updatePolicySolicitOpinionEOList);
}
}
@Override
public List<PolicySolicitOpinionEO> queryPolicitOpinionEOList(Map<String, Object> params) {
List<PolicySolicitOpinionEO> result = new ArrayList<>();
String taskDefinitionKey = (String) params.get("taskDefinitionKey");
String currentUserId = (String) params.get("currentUserId");
String prcId = (String) params.get("prcId");
QueryWrapper<PolicySolicitOpinionEO> psoEoQueryWrap = new QueryWrapper<>();
psoEoQueryWrap.lambda().eq(PolicySolicitOpinionEO::getPrcId, prcId);
if (StringUtils.equals(taskDefinitionKey, "PolicySolicitOpinionProcessKey8")) {
// 责任人处理
psoEoQueryWrap.lambda().eq(PolicySolicitOpinionEO::getCreateUserId, currentUserId);
} else if (StringUtils.equals(taskDefinitionKey, "PolicySolicitOpinionProcessKey9")) {
// 责任对接人汇总
// 查询当前责任对接人分配出去的责任人,获取这些责任人填写的征求意见列表
List<String> userIdList = new ArrayList<>();
userIdList.add(currentUserId);
QueryWrapper<FlowUserRelInfo> furQueryWrap = new QueryWrapper<>();
furQueryWrap.lambda().eq(FlowUserRelInfo::getActiProcInstId, prcId);
furQueryWrap.lambda().eq(FlowUserRelInfo::getFlowType, FlowTypeEnum.ZCZQYJLC.getValue());
furQueryWrap.lambda().eq(FlowUserRelInfo::getDataType, "zrdjrfpzrr"); // 责任对接人分配责任人
furQueryWrap.lambda().eq(FlowUserRelInfo::getParentUserId, currentUserId);
List<FlowUserRelInfo> zrdjrFlowUserRelInfoList = this.flowUserRelInfoService.list(furQueryWrap);
if (CollectionUtils.isNotEmpty(zrdjrFlowUserRelInfoList)) {
userIdList.addAll(zrdjrFlowUserRelInfoList.stream().map(FlowUserRelInfo::getUserId).distinct().collect(Collectors.toList()));
}
psoEoQueryWrap.lambda().in(PolicySolicitOpinionEO::getCreateUserId, userIdList);
} else if (StringUtils.equals(taskDefinitionKey, "PolicySolicitOpinionProcessKey10")) {
// 责任单位审批
// 查询当前责任单位被分配出去的责任人对接人,根据责任对接人获取分配出去的责任人,获取这些责任人填写的征求意见列表
List<String> userIdList = new ArrayList<>();
QueryWrapper<FlowUserRelInfo> furQueryWrap = new QueryWrapper<>();
furQueryWrap.lambda().eq(FlowUserRelInfo::getActiProcInstId, prcId);
furQueryWrap.lambda().eq(FlowUserRelInfo::getFlowType, FlowTypeEnum.ZCZQYJLC.getValue());
furQueryWrap.lambda().eq(FlowUserRelInfo::getDataType, "zrdjrfpzrdw"); // 责任对接人分配责任单位审批
furQueryWrap.lambda().eq(FlowUserRelInfo::getUserId, currentUserId);
List<FlowUserRelInfo> zrdwflowUserRelInfoList = this.flowUserRelInfoService.list(furQueryWrap);
if (CollectionUtils.isNotEmpty(zrdwflowUserRelInfoList)) {
List<String> zrdjrUserIdList = zrdwflowUserRelInfoList.stream().map(FlowUserRelInfo::getParentUserId).distinct().collect(Collectors.toList());
userIdList.addAll(zrdjrUserIdList);
QueryWrapper<FlowUserRelInfo> zrdjrQueryWrap = new QueryWrapper<>();
zrdjrQueryWrap.lambda().eq(FlowUserRelInfo::getActiProcInstId, prcId);
zrdjrQueryWrap.lambda().eq(FlowUserRelInfo::getFlowType, FlowTypeEnum.ZCZQYJLC.getValue());
zrdjrQueryWrap.lambda().eq(FlowUserRelInfo::getDataType, "zrdjrfpzrr"); // 责任对接人分配责任人
zrdjrQueryWrap.lambda().in(FlowUserRelInfo::getParentUserId, zrdjrUserIdList);
List<FlowUserRelInfo> zrdjrFlowUserRelInfoList = this.flowUserRelInfoService.list(zrdjrQueryWrap);
if (CollectionUtils.isNotEmpty(zrdjrFlowUserRelInfoList)) {
userIdList.addAll(zrdjrFlowUserRelInfoList.stream().map(FlowUserRelInfo::getUserId).distinct().collect(Collectors.toList()));
}
} else {
userIdList.add("设置一个无法满足的条件");
}
psoEoQueryWrap.lambda().in(PolicySolicitOpinionEO::getCreateUserId, userIdList);
}
psoEoQueryWrap.orderByAsc("create_time");
result = this.list(psoEoQueryWrap);
return result;
}
}
@@ -24,7 +24,8 @@ public class PolicySolicitOpinionProcess10After implements TaskListener {
Datas datas = datasService.getOne(queryWrapper);
JSONObject object = JSONObject.parseObject(datas.getFormValsJson());
String approvalFlag = object.getString("approvalFlag");
JSONObject jsonForm = object.getJSONObject("form");
String approvalFlag = jsonForm.getString("approvalFlag");
if (StringUtils.equals(approvalFlag, ApprovalFlagEnum.PASS.getValue())) {
// 责任部门 子流程总数
int zrSubProcessCount = (int) delegateTask.getVariable("zrSubProcessCount");
@@ -35,7 +36,7 @@ public class PolicySolicitOpinionProcess10After implements TaskListener {
// 如果该流程中的 责任部门子流程都已完成,给管理员节点分配数据。
if (zrSubProcessCount == zrSubProcessFinishCount) {
String glyUserId = object.getString("glyUserId");
String glyUserId = jsonForm.getString("glyUserId");
delegateTask.setVariable("glyUserId",glyUserId);
BusProcessNew busProcessNewNext = new BusProcessNew();
@@ -29,9 +29,10 @@ public class PolicySolicitOpinionProcess11After implements TaskListener {
Datas datas = datasService.getOne(queryWrapper);
JSONObject object = JSONObject.parseObject(datas.getFormValsJson());
String approvalFlag = object.getString("approvalFlag");
JSONObject jsonForm = object.getJSONObject("form");
String approvalFlag = jsonForm.getString("approvalFlag");
if (StringUtils.equals(approvalFlag, ApprovalFlagEnum.PASS.getValue())) {
String shr2UserIds = object.getString("shr2UserIds");
String shr2UserIds = jsonForm.getString("shr2UserIds");
List<String> nextUserList = Arrays.asList(shr2UserIds.split(","));
if (CollectionUtils.isNotEmpty(nextUserList)) {
List<BusProcessNew> addBusProcessNewList = new ArrayList<>();
@@ -55,7 +56,7 @@ public class PolicySolicitOpinionProcess11After implements TaskListener {
delegateTask.setVariable("shr2UserOverruleCount", 0);
}
} else if (StringUtils.equals(approvalFlag, ApprovalFlagEnum.OVERRULE.getValue())) {
String pzr1UserId = object.getString("pzr1UserId");
String pzr1UserId = jsonForm.getString("pzr1UserId");
BusProcessNew busProcessNewNext = new BusProcessNew();
busProcessNewNext.setMsgType("clause");
busProcessNewNext.setPId(delegateTask.getProcessInstanceId());
@@ -8,6 +8,7 @@ import com.ydw.bat.wkflow.business_main.datas.entity.Datas;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_main.datas.service.IDatasService;
import com.ydw.bat.wkflow.business_main.datas.service.IPolicySolicitOpinionEOService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import com.ydw.bat.wkflow.util.enums.ApprovalFlagEnum;
import org.activiti.engine.delegate.DelegateTask;
@@ -26,19 +27,24 @@ public class PolicySolicitOpinionProcess12After implements TaskListener {
IDatasService datasService = SpringContextUtil.getBean(IDatasService.class);
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
TaskTodoService taskTodoService = SpringContextUtil.getBean(TaskTodoService.class);
IPolicySolicitOpinionEOService policySolicitOpinionEOService = SpringContextUtil.getBean(IPolicySolicitOpinionEOService.class);
QueryWrapper<Datas> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId());
Datas datas = datasService.getOne(queryWrapper);
JSONObject object = JSONObject.parseObject(datas.getFormValsJson());
String approvalFlag = object.getString("approvalFlag");
JSONObject jsonForm = object.getJSONObject("form");
String approvalFlag = jsonForm.getString("approvalFlag");
if (StringUtils.equals(approvalFlag, ApprovalFlagEnum.PASS.getValue())) {
int shr2UserPassCount = (int) delegateTask.getVariable("shr2UserPassCount");
delegateTask.setVariable("shr2UserPassCount", shr2UserPassCount + 1);
String hqrUserIds = object.getString("hqrUserIds");
List<String> nextUserList = Arrays.asList(hqrUserIds.split(","));
List<String> nextUserList = new ArrayList<>();
String hqrUserIds = jsonForm.getString("hqrUserIds");
if (StringUtils.isNotEmpty(hqrUserIds)) {
nextUserList.addAll(Arrays.asList(hqrUserIds.split(",")));
}
List<String> hqrUserIdList = (List<String>) delegateTask.getVariable("hqrUserIdList");
if (CollectionUtils.isNotEmpty(hqrUserIdList)) {
@@ -75,7 +81,7 @@ public class PolicySolicitOpinionProcess12After implements TaskListener {
}
}
} else if (StringUtils.equals(approvalFlag, ApprovalFlagEnum.OVERRULE.getValue())) {
String pzr1UserId = object.getString("pzr1UserId");
String pzr1UserId = jsonForm.getString("pzr1UserId");
BusProcessNew busProcessNewNext = new BusProcessNew();
busProcessNewNext.setMsgType("clause");
busProcessNewNext.setPId(delegateTask.getProcessInstanceId());
@@ -91,6 +97,11 @@ public class PolicySolicitOpinionProcess12After implements TaskListener {
delegateTask.setVariable("shr2UserOverruleCount", 1);
}
// 保存责任人填写的征求意见信息
object.put("currentUserId",delegateTask.getAssignee());
object.put("prcId",delegateTask.getProcessInstanceId());
policySolicitOpinionEOService.batchInsert(object);
// 存储当前节点意见
BusProcessNew busProcessNew = new BusProcessNew();
busProcessNew.setMsgType("clause");
@@ -31,7 +31,8 @@ public class PolicySolicitOpinionProcess13After implements TaskListener {
Datas datas = datasService.getOne(queryWrapper);
JSONObject object = JSONObject.parseObject(datas.getFormValsJson());
String approvalFlag = object.getString("approvalFlag");
JSONObject jsonForm = object.getJSONObject("form");
String approvalFlag = jsonForm.getString("approvalFlag");
if (StringUtils.equals(approvalFlag, ApprovalFlagEnum.PASS.getValue())) {
int hqrUserPassCount = (int) delegateTask.getVariable("hqrUserPassCount");
delegateTask.setVariable("hqrUserPassCount", hqrUserPassCount + 1);
@@ -41,7 +42,7 @@ public class PolicySolicitOpinionProcess13After implements TaskListener {
delegateTask.getId()
);
if (!existTaskFlag) {
String sdr2UserIds = object.getString("sdr2UserIds");
String sdr2UserIds = jsonForm.getString("sdr2UserIds");
List<String> nextUserList = Arrays.asList(sdr2UserIds.split(","));
if (CollectionUtils.isNotEmpty(nextUserList)) {
List<BusProcessNew> addBusProcessNewList = new ArrayList<>();
@@ -66,7 +67,7 @@ public class PolicySolicitOpinionProcess13After implements TaskListener {
}
}
} else if (StringUtils.equals(approvalFlag, ApprovalFlagEnum.OVERRULE.getValue())) {
String pzr1UserId = object.getString("pzr1UserId");
String pzr1UserId = jsonForm.getString("pzr1UserId");
BusProcessNew busProcessNewNext = new BusProcessNew();
busProcessNewNext.setMsgType("clause");
busProcessNewNext.setPId(delegateTask.getProcessInstanceId());
@@ -26,7 +26,8 @@ public class PolicySolicitOpinionProcess14After implements TaskListener {
Datas datas = datasService.getOne(queryWrapper);
JSONObject object = JSONObject.parseObject(datas.getFormValsJson());
String approvalFlag = object.getString("approvalFlag");
JSONObject jsonForm = object.getJSONObject("form");
String approvalFlag = jsonForm.getString("approvalFlag");
if (StringUtils.equals(approvalFlag, ApprovalFlagEnum.PASS.getValue())) {
int sdr2UserPassCount = (int) delegateTask.getVariable("sdr2UserPassCount");
delegateTask.setVariable("sdr2UserPassCount", sdr2UserPassCount + 1);
@@ -36,7 +37,7 @@ public class PolicySolicitOpinionProcess14After implements TaskListener {
delegateTask.getId()
);
if (!existTaskFlag) {
String pzr2UserId = object.getString("pzr2UserId");
String pzr2UserId = jsonForm.getString("pzr2UserId");
BusProcessNew busProcessNewNext = new BusProcessNew();
busProcessNewNext.setMsgType("clause");
@@ -50,7 +51,7 @@ public class PolicySolicitOpinionProcess14After implements TaskListener {
delegateTask.setVariable("pzr2UserId", pzr2UserId);
}
} else if (StringUtils.equals(approvalFlag, ApprovalFlagEnum.OVERRULE.getValue())) {
String pzr1UserId = object.getString("pzr1UserId");
String pzr1UserId = jsonForm.getString("pzr1UserId");
BusProcessNew busProcessNewNext = new BusProcessNew();
busProcessNewNext.setMsgType("clause");
busProcessNewNext.setPId(delegateTask.getProcessInstanceId());
@@ -29,9 +29,10 @@ public class PolicySolicitOpinionProcess15After implements TaskListener {
Datas datas = datasService.getOne(queryWrapper);
JSONObject object = JSONObject.parseObject(datas.getFormValsJson());
String approvalFlag = object.getString("approvalFlag");
JSONObject jsonForm = object.getJSONObject("form");
String approvalFlag = jsonForm.getString("approvalFlag");
if (StringUtils.equals(approvalFlag, ApprovalFlagEnum.PASS.getValue())) {
String csrUserIds = object.getString("csrUserIds");
String csrUserIds = jsonForm.getString("csrUserIds");
List<String> nextUserList = Arrays.asList(csrUserIds.split(","));
if (CollectionUtils.isNotEmpty(nextUserList)) {
List<BusProcessNew> addBusProcessNewList = new ArrayList<>();
@@ -52,7 +53,7 @@ public class PolicySolicitOpinionProcess15After implements TaskListener {
delegateTask.setVariable("csrUserIdList", nextUserList);
}
} else if (StringUtils.equals(approvalFlag, ApprovalFlagEnum.OVERRULE.getValue())) {
String pzr1UserId = object.getString("pzr1UserId");
String pzr1UserId = jsonForm.getString("pzr1UserId");
BusProcessNew busProcessNewNext = new BusProcessNew();
busProcessNewNext.setMsgType("clause");
busProcessNewNext.setPId(delegateTask.getProcessInstanceId());
@@ -2,6 +2,8 @@ package com.ydw.bat.wkflow.listener.policySolicitOpinionProcess;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_activiti.service.TaskTodoService;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.entity.Datas;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
@@ -11,11 +13,16 @@ import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
import java.text.SimpleDateFormat;
import java.util.Date;
public class PolicySolicitOpinionProcess16After implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IDatasService datasService = SpringContextUtil.getBean(IDatasService.class);
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
TaskTodoService taskTodoService = SpringContextUtil.getBean(TaskTodoService.class);
IBusProcessNameService busProcessNameService = SpringContextUtil.getBean(IBusProcessNameService.class);
QueryWrapper<Datas> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId());
@@ -23,6 +30,26 @@ public class PolicySolicitOpinionProcess16After implements TaskListener {
JSONObject object = JSONObject.parseObject(datas.getFormValsJson());
// TODO 等需求确认,提交后需要做什么操作。
boolean existTaskFlag = taskTodoService.whetherExistTaskByTaskDefinitionKey(
delegateTask.getProcessDefinitionId(),
delegateTask.getTaskDefinitionKey(),
delegateTask.getId()
);
if (!existTaskFlag) {
String OVERTIME = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
QueryWrapper bpnQueryWrap = new QueryWrapper();
bpnQueryWrap.eq("PRC_ID", delegateTask.getProcessInstanceId());
BusProcessName bpn = busProcessNameService.getOne(bpnQueryWrap);
if (bpn != null) {
bpn.setOverTime(OVERTIME);
busProcessNameService.saveOrUpdate(bpn);
}
}
// 存储当前节点意见
BusProcessNew busProcessNew = new BusProcessNew();
busProcessNew.setMsgType("clause");
@@ -9,6 +9,7 @@ import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_main.datas.service.IDatasService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import com.ydw.bat.wkflow.util.enums.FlowTypeEnum;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
import org.apache.commons.collections4.CollectionUtils;
@@ -31,18 +32,18 @@ public class PolicySolicitOpinionProcess1After implements TaskListener {
Datas datas = datasService.getOne(queryWrapper);
JSONObject object = JSONObject.parseObject(datas.getFormValsJson());
JSONObject jsonForm = object.getJSONObject("form");
delegateTask.setVariable("objectJson",object);
// 审核人1用户ids
String shr1UserIds = object.getString("shr1UserIds");
String shr1UserIds = jsonForm.getString("shr1UserIds");
List<String> nextUserList = Arrays.asList(shr1UserIds.split(","));
//截止时间 流程描述 创建人
String user = object.getString("prcCreateUser");
String username = object.getString("prcCreateUserName");
Object lawsName = object.get("lawsName");
Object lawsNumber = object.get("lawsNumber");
Object lawsName = jsonForm.get("lawsName");
Object lawsNumber = jsonForm.get("lawsNumber");
String lawsInfoName = "";
if(lawsName != null && lawsNumber != null){
String name = lawsName.toString()+"-";
@@ -56,12 +57,12 @@ public class PolicySolicitOpinionProcess1After implements TaskListener {
queryWrapper2.eq("PRC_ID",delegateTask.getProcessInstanceId());
BusProcessName one1 = busProcessNameService.getOne(queryWrapper2);
if(one1!=null){
one1.setPrcType("laws2");
one1.setPrcType(FlowTypeEnum.ZCZQYJLC.getValue());
one1.setPrcName(prcName);
one1.setCreatUser(user);
one1.setCreatUserName(username);
Date responsibleUnitDeadlineDate = object.getDate("responsibleUnitDeadline");
Date responsibleUnitDeadlineDate = jsonForm.getDate("responsibleUnitDeadline");
one1.setResponsibleUnitDeadlineDate(responsibleUnitDeadlineDate);
busProcessNameService.saveOrUpdate(one1);
}
@@ -89,7 +90,6 @@ public class PolicySolicitOpinionProcess1After implements TaskListener {
busProcessNewNext.setFinishFlag("0");
busProcessNewNext.setTaskInfo(delegateTask.getName());
busProcessNewNext.setUserId(nextUser);
busProcessNewNext.setPrcName(prcName);
addBusProcessNewList.add(busProcessNewNext);
}
busBean.saveBatch(addBusProcessNewList);
@@ -30,7 +30,9 @@ public class PolicySolicitOpinionProcess2After implements TaskListener {
Datas datas = datasService.getOne(queryWrapper);
JSONObject object = JSONObject.parseObject(datas.getFormValsJson());
String approvalFlag = object.getString("approvalFlag");
JSONObject jsonForm = object.getJSONObject("form");
String approvalFlag = jsonForm.getString("approvalFlag");
if (StringUtils.equals(approvalFlag, ApprovalFlagEnum.PASS.getValue())) {
int shr1UserPassCount = (int) delegateTask.getVariable("shr1UserPassCount");
delegateTask.setVariable("shr1UserPassCount", shr1UserPassCount + 1);
@@ -42,7 +44,7 @@ public class PolicySolicitOpinionProcess2After implements TaskListener {
);
if (!existTaskFlag) {
// 审定人1用户ids
String sdr1UserIds = object.getString("sdr1UserIds");
String sdr1UserIds = jsonForm.getString("sdr1UserIds");
List<String> nextUserList = Arrays.asList(sdr1UserIds.split(","));
if (CollectionUtils.isNotEmpty(nextUserList)) {
List<BusProcessNew> addBusProcessNewList = new ArrayList<>();
@@ -26,7 +26,9 @@ public class PolicySolicitOpinionProcess4After implements TaskListener {
Datas datas = datasService.getOne(queryWrapper);
JSONObject object = JSONObject.parseObject(datas.getFormValsJson());
String approvalFlag = object.getString("approvalFlag");
JSONObject jsonForm = object.getJSONObject("form");
String approvalFlag = jsonForm.getString("approvalFlag");
if (StringUtils.equals(approvalFlag, ApprovalFlagEnum.PASS.getValue())) {
int sdr1UserPassCount = (int) delegateTask.getVariable("sdr1UserPassCount");
delegateTask.setVariable("sdr1UserPassCount", sdr1UserPassCount + 1);
@@ -37,7 +39,7 @@ public class PolicySolicitOpinionProcess4After implements TaskListener {
delegateTask.getId()
);
if (!existTaskFlag) {
String pzr1UserId = object.getString("pzr1UserId");
String pzr1UserId = jsonForm.getString("pzr1UserId");
BusProcessNew busProcessNewNext = new BusProcessNew();
busProcessNewNext.setMsgType("clause");
busProcessNewNext.setPId(delegateTask.getProcessInstanceId());
@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.entity.Datas;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_main.datas.service.IDatasService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
@@ -14,8 +13,6 @@ import org.activiti.engine.delegate.TaskListener;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
@@ -32,23 +29,16 @@ public class PolicySolicitOpinionProcess5After implements TaskListener {
Datas datas = datasService.getOne(queryWrapper);
JSONObject object = JSONObject.parseObject(datas.getFormValsJson());
String approvalFlag = object.getString("approvalFlag");
JSONObject jsonForm = object.getJSONObject("form");
String approvalFlag = jsonForm.getString("approvalFlag");
if (StringUtils.equals(approvalFlag, ApprovalFlagEnum.PASS.getValue())) {
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
String responsibleUnitDeadline = object.getString("responsibleUnitDeadline");
Date responsibleUnitDeadlineDate = null;
try {
responsibleUnitDeadlineDate = sdf.parse(responsibleUnitDeadline);
} catch (ParseException e) {
e.printStackTrace();
}
Date responsibleUnitDeadlineDate = jsonForm.getDate("responsibleUnitDeadline");
String endFlag = "";
// 如果当前日期大于责任单位截止日期,则不走责任对接人子流程 RESPONSIBLE_UNIT_DEADLINE_DATE
if (new Date().after(responsibleUnitDeadlineDate)) {
endFlag = "0";
// 管理员用户id
String glyUserId = object.getString("glyUserId");
String glyUserId = jsonForm.getString("glyUserId");
BusProcessNew busProcessNewNext = new BusProcessNew();
busProcessNewNext.setMsgType("clause");
busProcessNewNext.setPId(delegateTask.getProcessInstanceId());
@@ -64,7 +54,7 @@ public class PolicySolicitOpinionProcess5After implements TaskListener {
endFlag = "1";
// 责任对接人用户id
String djrUserIds = object.getString("djrUserIds");
String djrUserIds = jsonForm.getString("djrUserIds");
List<String> nextUserList = Arrays.asList(djrUserIds.split(","));
if (CollectionUtils.isNotEmpty(nextUserList)) {
List<BusProcessNew> addBusProcessNewList = new ArrayList<>();
@@ -4,10 +4,13 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.entity.Datas;
import com.ydw.bat.wkflow.business_main.datas.entity.FlowUserRelInfo;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_main.datas.service.IDatasService;
import com.ydw.bat.wkflow.business_main.datas.service.IFlowUserRelInfoService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import com.ydw.bat.wkflow.util.enums.FlowTypeEnum;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
import org.apache.commons.collections4.CollectionUtils;
@@ -22,19 +25,23 @@ public class PolicySolicitOpinionProcess7After implements TaskListener {
public void notify(DelegateTask delegateTask) {
IDatasService datasService = SpringContextUtil.getBean(IDatasService.class);
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
IFlowUserRelInfoService flowUserRelInfoService = SpringContextUtil.getBean(IFlowUserRelInfoService.class);
QueryWrapper<Datas> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId());
Datas datas = datasService.getOne(queryWrapper);
JSONObject object = JSONObject.parseObject(datas.getFormValsJson());
JSONObject jsonForm = object.getJSONObject("form");
// 提交方式,如果该字段不为空,则是定时器自动提交 定时器自动提交value:timerAutoSubmit
String submitMethod = object.getString("submitMethod");
if (StringUtils.isEmpty(submitMethod)) {
String zrrUserIds = object.getString("zrrUserIds");
String zrrUserIds = jsonForm.getString("zrrUserIds");
if (StringUtils.isNotEmpty(zrrUserIds)) {
List<String> nextUserList = Arrays.asList(zrrUserIds.split(","));
if (CollectionUtils.isNotEmpty(nextUserList)) {
List<FlowUserRelInfo> flowUserRelInfoList = new ArrayList<>();
List<BusProcessNew> addBusProcessNewList = new ArrayList<>();
for (String nextUser : nextUserList) {
BusProcessNew busProcessNewNext = new BusProcessNew();
@@ -46,11 +53,21 @@ public class PolicySolicitOpinionProcess7After implements TaskListener {
busProcessNewNext.setTaskInfo(delegateTask.getName());
busProcessNewNext.setUserId(nextUser);
addBusProcessNewList.add(busProcessNewNext);
FlowUserRelInfo flowUserRelInfo = new FlowUserRelInfo();
flowUserRelInfo.setParentUserId(delegateTask.getAssignee());
flowUserRelInfo.setUserId(nextUser);
flowUserRelInfo.setActiProcInstId(delegateTask.getProcessInstanceId());
flowUserRelInfo.setFlowType(FlowTypeEnum.ZCZQYJLC.getValue());
flowUserRelInfo.setDataType("zrdjrfpzrr"); // 责任对接人分配责任人
flowUserRelInfoList.add(flowUserRelInfo);
}
busBean.saveBatch(addBusProcessNewList);
// 配置多实例
delegateTask.setVariable("zrrUserIdList", nextUserList);
flowUserRelInfoService.saveBatchFlowUserRelInfo(flowUserRelInfoList);
}
}
@@ -64,7 +81,7 @@ public class PolicySolicitOpinionProcess7After implements TaskListener {
// 如果该流程中的 责任部门子流程都已完成,给管理员节点分配数据。
if (zrSubProcessCount == zrSubProcessFinishCount) {
String glyUserId = object.getString("glyUserId");
String glyUserId = jsonForm.getString("glyUserId");
delegateTask.setVariable("glyUserId", glyUserId);
BusProcessNew busProcessNewNext = new BusProcessNew();
@@ -8,6 +8,7 @@ import com.ydw.bat.wkflow.business_main.datas.entity.Datas;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_main.datas.service.IDatasService;
import com.ydw.bat.wkflow.business_main.datas.service.IPolicySolicitOpinionEOService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -19,31 +20,32 @@ public class PolicySolicitOpinionProcess8After implements TaskListener {
IDatasService datasService = SpringContextUtil.getBean(IDatasService.class);
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
TaskTodoService taskTodoService = SpringContextUtil.getBean(TaskTodoService.class);
IPolicySolicitOpinionEOService policySolicitOpinionEOService = SpringContextUtil.getBean(IPolicySolicitOpinionEOService.class);
QueryWrapper<Datas> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId());
Datas datas = datasService.getOne(queryWrapper);
JSONObject object = JSONObject.parseObject(datas.getFormValsJson());
JSONObject jsonForm = object.getJSONObject("form");
// 提交方式,如果该字段不为空,则是定时器自动提交 定时器自动提交value:timerAutoSubmit
String submitMethod = object.getString("submitMethod");
if (StringUtils.isEmpty(submitMethod)) {
boolean existTaskFlag = taskTodoService.whetherExistTaskByTaskDefinitionKey(
delegateTask.getProcessDefinitionId(),
delegateTask.getTaskDefinitionKey(),
delegateTask.getId()
);
if (!existTaskFlag) {
BusProcessNew busProcessNewNext = new BusProcessNew();
busProcessNewNext.setMsgType("clause");
busProcessNewNext.setPId(delegateTask.getProcessInstanceId());
busProcessNewNext.setMesg(object.toJSONString());
busProcessNewNext.setTaskInfo(delegateTask.getTaskDefinitionKey());
busProcessNewNext.setFinishFlag("0");
busProcessNewNext.setTaskInfo(delegateTask.getName());
busProcessNewNext.setUserId((String) delegateTask.getVariable("djrUserId"));
busBean.save(busProcessNewNext);
}
BusProcessNew busProcessNewNext = new BusProcessNew();
busProcessNewNext.setMsgType("clause");
busProcessNewNext.setPId(delegateTask.getProcessInstanceId());
busProcessNewNext.setMesg(object.toJSONString());
busProcessNewNext.setTaskInfo(delegateTask.getTaskDefinitionKey());
busProcessNewNext.setFinishFlag("0");
busProcessNewNext.setTaskInfo(delegateTask.getName());
busProcessNewNext.setUserId((String) delegateTask.getVariable("djrUserId"));
busBean.save(busProcessNewNext);
// 保存责任人填写的征求意见信息
object.put("currentUserId",delegateTask.getAssignee());
object.put("prcId",delegateTask.getProcessInstanceId());
policySolicitOpinionEOService.batchInsert(object);
submitMethod = "pageSubmit";
} else {
@@ -55,7 +57,7 @@ public class PolicySolicitOpinionProcess8After implements TaskListener {
// 如果该流程中的 责任部门子流程都已完成,给管理员节点分配数据。
if (zrSubProcessCount == zrSubProcessFinishCount) {
String glyUserId = object.getString("glyUserId");
String glyUserId = jsonForm.getString("glyUserId");
delegateTask.setVariable("glyUserId", glyUserId);
BusProcessNew busProcessNewNext = new BusProcessNew();
@@ -4,11 +4,11 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.entity.Datas;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_main.datas.service.IDatasService;
import com.ydw.bat.wkflow.business_main.datas.entity.FlowUserRelInfo;
import com.ydw.bat.wkflow.business_main.datas.service.*;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import com.ydw.bat.wkflow.util.enums.ApprovalFlagEnum;
import com.ydw.bat.wkflow.util.enums.FlowTypeEnum;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
import org.apache.commons.lang.StringUtils;
@@ -21,19 +21,22 @@ public class PolicySolicitOpinionProcess9After implements TaskListener {
public void notify(DelegateTask delegateTask) {
IDatasService datasService = SpringContextUtil.getBean(IDatasService.class);
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
IFlowUserRelInfoService flowUserRelInfoService = SpringContextUtil.getBean(IFlowUserRelInfoService.class);
IPolicySolicitOpinionEOService policySolicitOpinionEOService = SpringContextUtil.getBean(IPolicySolicitOpinionEOService.class);
QueryWrapper<Datas> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId());
Datas datas = datasService.getOne(queryWrapper);
JSONObject object = JSONObject.parseObject(datas.getFormValsJson());
JSONObject jsonForm = object.getJSONObject("form");
String approvalFlag = object.getString("approvalFlag");
String approvalFlag = jsonForm.getString("approvalFlag");
if (StringUtils.equals(approvalFlag, ApprovalFlagEnum.PASS.getValue())) {
// 内部审查 0 是,1 否
String internalReviewFlag = object.getString("internalReviewFlag");
String internalReviewFlag = jsonForm.getString("internalReviewFlag");
if (StringUtils.equals(internalReviewFlag, "0")) {
String zrdwUserId = object.getString("zrdwUserId");
String zrdwUserId = jsonForm.getString("zrdwUserId");
delegateTask.setVariable("zrdwUserId", zrdwUserId);
BusProcessNew busProcessNewNext = new BusProcessNew();
@@ -45,6 +48,16 @@ public class PolicySolicitOpinionProcess9After implements TaskListener {
busProcessNewNext.setTaskInfo(delegateTask.getName());
busProcessNewNext.setUserId(zrdwUserId);
busBean.save(busProcessNewNext);
List<FlowUserRelInfo> flowUserRelInfoList = new ArrayList<>();
FlowUserRelInfo flowUserRelInfo = new FlowUserRelInfo();
flowUserRelInfo.setParentUserId(delegateTask.getAssignee());
flowUserRelInfo.setUserId(zrdwUserId);
flowUserRelInfo.setActiProcInstId(delegateTask.getProcessInstanceId());
flowUserRelInfo.setFlowType(FlowTypeEnum.ZCZQYJLC.getValue());
flowUserRelInfo.setDataType("zrdjrfpzrdw"); // 责任对接人分配责任单位审批
flowUserRelInfoList.add(flowUserRelInfo);
flowUserRelInfoService.saveBatchFlowUserRelInfo(flowUserRelInfoList);
} else if (StringUtils.equals(internalReviewFlag, "1")) {
// 责任部门 子流程总数
int zrSubProcessCount = (int) delegateTask.getVariable("zrSubProcessCount");
@@ -54,7 +67,7 @@ public class PolicySolicitOpinionProcess9After implements TaskListener {
// 如果该流程中的 责任部门子流程都已完成,给管理员节点分配数据。
if (zrSubProcessCount == zrSubProcessFinishCount) {
String glyUserId = object.getString("glyUserId");
String glyUserId = jsonForm.getString("glyUserId");
delegateTask.setVariable("glyUserId", glyUserId);
BusProcessNew busProcessNewNext = new BusProcessNew();
@@ -68,6 +81,9 @@ public class PolicySolicitOpinionProcess9After implements TaskListener {
busBean.save(busProcessNewNext);
}
}
jsonForm.put("internalReviewFlag","");
jsonForm.put("zrdwUserId","");
delegateTask.setVariable("internalReviewFlag", internalReviewFlag);
} else if (StringUtils.equals(approvalFlag, ApprovalFlagEnum.OVERRULE.getValue())) {
List<String> zrrUserIdList = (List<String>) delegateTask.getVariable("zrrUserIdList");
@@ -86,6 +102,11 @@ public class PolicySolicitOpinionProcess9After implements TaskListener {
busBean.saveBatch(addBusProcessNewList);
}
// 保存责任人填写的征求意见信息
object.put("currentUserId",delegateTask.getAssignee());
object.put("prcId",delegateTask.getProcessInstanceId());
policySolicitOpinionEOService.batchInsert(object);
// 存储当前节点意见
BusProcessNew busProcessNew = new BusProcessNew();
busProcessNew.setMsgType("clause");
@@ -0,0 +1,142 @@
package com.ydw.bat.wkflow.listener.policySolicitOpinionProcess.timer;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_wkflow.form.dto.FormSubmitDto;
import com.ydw.bat.wkflow.business_wkflow.form.service.FormValsService;
import com.ydw.bat.wkflow.util.enums.ApprovalFlagEnum;
import com.ydw.bat.wkflow.util.enums.FlowTypeEnum;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.TaskService;
import org.activiti.engine.task.Task;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description: 政策征求意见流程定时器
* @author: wangzhijiang
* @date: 2023-10-23
*/
@Component
@EnableScheduling
@Slf4j
public class PolicySolicitOpinionProcessTimer {
@Autowired
private IBusProcessNameService busProcessNameService;
@Autowired
private TaskService taskService;
@Autowired
private IBusProcessNewService busProcessNewService;
@Autowired
private FormValsService formValsService;
/**
* @Description: 自动提交待办任务
* @author: wangzhijiang
* @date: 2023-10-23
* @Param:
* @return:
*/
@Scheduled(cron = "30 59 13 * * ? ")//每天十点执行
// @Scheduled(cron = "0/15 * * * * ? ")
public void autoSubmitZrbmTask() {
QueryWrapper<BusProcessName> bpnQueryWrap = new QueryWrapper<>();
bpnQueryWrap.lambda().eq(BusProcessName::getPrcType, FlowTypeEnum.ZCZQYJLC.getValue());
bpnQueryWrap.lambda().lt(BusProcessName::getResponsibleUnitDeadlineDate, new Date());
List<BusProcessName> busProcessNameList = this.busProcessNameService.list(bpnQueryWrap);
if (CollectionUtils.isNotEmpty(busProcessNameList)) {
List<String> actiProcInstIdList = busProcessNameList.stream().map(BusProcessName::getPrcId).distinct().collect(Collectors.toList());
this.recursionComplteZrbmTask(actiProcInstIdList);
}
}
/**
* 递归提交待办任务
*
* @param actiProcInstIdList
*/
public void recursionComplteZrbmTask(List<String> actiProcInstIdList) {
for (String actiProcInstId : actiProcInstIdList) {
List<Task> taskList = this.taskService.createTaskQuery().processInstanceId(actiProcInstId).list().stream().filter(task -> {
boolean flag = false;
if (StringUtils.equals(task.getTaskDefinitionKey(), "PolicySolicitOpinionProcessKey7")
|| StringUtils.equals(task.getTaskDefinitionKey(), "PolicySolicitOpinionProcessKey8")
|| StringUtils.equals(task.getTaskDefinitionKey(), "PolicySolicitOpinionProcessKey9")
|| StringUtils.equals(task.getTaskDefinitionKey(), "PolicySolicitOpinionProcessKey10")) {
flag = true;
}
return flag;
}).distinct().collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(taskList)) {
for (Task task : taskList) {
JSONObject formJson = new JSONObject();
QueryWrapper<BusProcessNew> newQueryWrapper = new QueryWrapper<>();
newQueryWrapper.lambda().eq(BusProcessNew::getTaskId, task.getId());
BusProcessNew busProcessNew = this.busProcessNewService.getOne(newQueryWrapper);
if (ObjectUtils.isNotEmpty(busProcessNew)) {
formJson = JSONObject.parseObject(busProcessNew.getMesg());
JSONObject jsonForm = formJson.getJSONObject("form");
jsonForm.put("approvalFlag",ApprovalFlagEnum.PASS.getValue());
jsonForm.put("internalReviewFlag", "1");
formJson.put("commentText","");
}
formJson.put("submitMethod", "timerAutoSubmit");
formJson.put("approvalFlag", ApprovalFlagEnum.PASS.getValue());
formJson.put("internalReviewFlag", "1");
FormSubmitDto formSubmitDto = new FormSubmitDto();
formSubmitDto.setForm(formJson.toString());
formSubmitDto.setTask_id(task.getId());
this.formValsService.saveFormVals(formSubmitDto, task.getTaskDefinitionKey());
this.taskService.complete(task.getId());
}
}
}
List<String> actiProcInstIds = this.queryZrbmTaskByActiProcInstId(actiProcInstIdList);
if (CollectionUtils.isNotEmpty(actiProcInstIds)) {
this.recursionComplteZrbmTask(actiProcInstIds);
}
}
/**
* 根据流程实例id,查询还有待办任务的流程。
*
* @param actiProcInstIdList
* @return
*/
public List<String> queryZrbmTaskByActiProcInstId(List<String> actiProcInstIdList) {
List<String> result = new ArrayList<>();
for (String actiProcInstId : actiProcInstIdList) {
List<Task> taskList = this.taskService.createTaskQuery().processInstanceId(actiProcInstId).list().stream().filter(task -> {
boolean flag = false;
if (StringUtils.equals(task.getTaskDefinitionKey(), "PolicySolicitOpinionProcessKey7")
|| StringUtils.equals(task.getTaskDefinitionKey(), "PolicySolicitOpinionProcessKey8")
|| StringUtils.equals(task.getTaskDefinitionKey(), "PolicySolicitOpinionProcessKey9")
|| StringUtils.equals(task.getTaskDefinitionKey(), "PolicySolicitOpinionProcessKey10")) {
flag = true;
}
return flag;
}).distinct().collect(Collectors.toList());
if (taskList.size() != 0) {
result.add(actiProcInstId);
}
}
return result;
}
}
@@ -0,0 +1,22 @@
package com.ydw.bat.wkflow.util.enums;
/**
* 流程类型枚举类
*/
public enum FlowTypeEnum {
ZCZQYJLC("29","政策征求意见流程"),;
private String value;
private String lable;
private FlowTypeEnum(String value, String lable) {
this.value = value;
this.lable = lable;
}
public String getValue() {
return value;
}
public String getLable() {
return lable;
}
}
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ydw.bat.wkflow.business_main.datas.mapper.PolicySolicitOpinionEOMapper">
</mapper>