diff --git a/src/main/java/com/ydw/bat/wkflow/business_activiti/service/TaskTodoService.java b/src/main/java/com/ydw/bat/wkflow/business_activiti/service/TaskTodoService.java index 1e03e089..4bf953c7 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_activiti/service/TaskTodoService.java +++ b/src/main/java/com/ydw/bat/wkflow/business_activiti/service/TaskTodoService.java @@ -112,8 +112,6 @@ public class TaskTodoService { break; } } - } else { - result = true; } return result; } diff --git a/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TodoTaskController.java b/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TodoTaskController.java index e3b6f4af..5904902b 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TodoTaskController.java +++ b/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TodoTaskController.java @@ -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 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 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 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 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 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 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("保存成功"); } } diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/controller/PolicySolicitOpinionEOController.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/controller/PolicySolicitOpinionEOController.java new file mode 100644 index 00000000..d79b035b --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/controller/PolicySolicitOpinionEOController.java @@ -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> queryPolicitOpinionEOList(@RequestParam Map params) { + List policySolicitOpinionEOList = this.policySolicitOpinionEOService.queryPolicitOpinionEOList(params); + return Result.success(policySolicitOpinionEOList); + } +} + diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/BusProcessName.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/BusProcessName.java index 0b271949..8e4b0582 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/BusProcessName.java +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/BusProcessName.java @@ -94,4 +94,7 @@ public class BusProcessName implements Serializable { @TableField("RESPONSIBLE_UNIT_DEADLINE_DATE") private Date responsibleUnitDeadlineDate; + + @TableField(exist = false) + private String taskDefinitionKey; } diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/FlowUserRelInfo.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/FlowUserRelInfo.java new file mode 100644 index 00000000..d9590b64 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/FlowUserRelInfo.java @@ -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; + +} diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/PolicySolicitOpinionEO.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/PolicySolicitOpinionEO.java new file mode 100644 index 00000000..6aa39efa --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/PolicySolicitOpinionEO.java @@ -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; + +} diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/mapper/FlowUserRelInfoMapper.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/mapper/FlowUserRelInfoMapper.java new file mode 100644 index 00000000..48069ae3 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/mapper/FlowUserRelInfoMapper.java @@ -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 { +} diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/mapper/PolicySolicitOpinionEOMapper.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/mapper/PolicySolicitOpinionEOMapper.java new file mode 100644 index 00000000..5358ec28 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/mapper/PolicySolicitOpinionEOMapper.java @@ -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 { +} diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/IFlowUserRelInfoService.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/IFlowUserRelInfoService.java new file mode 100644 index 00000000..2b379943 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/IFlowUserRelInfoService.java @@ -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 { + /** + * 批量新增流程用户上下级关系 + * @param flowUserRelInfoList + */ + void saveBatchFlowUserRelInfo(List flowUserRelInfoList); +} diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/IPolicySolicitOpinionEOService.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/IPolicySolicitOpinionEOService.java new file mode 100644 index 00000000..186f32c4 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/IPolicySolicitOpinionEOService.java @@ -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 { + + void batchInsert(JSONObject json); + + List queryPolicitOpinionEOList(Map params); +} diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/FlowUserRelInfoServiceImpl.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/FlowUserRelInfoServiceImpl.java new file mode 100644 index 00000000..c2cd6701 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/FlowUserRelInfoServiceImpl.java @@ -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 implements IFlowUserRelInfoService { + + @Autowired + private FlowUserRelInfoMapper flowUserRelInfoMapper; + + @Override + public void saveBatchFlowUserRelInfo(List flowUserRelInfoList) { + if(CollectionUtils.isNotEmpty(flowUserRelInfoList)){ + FlowUserRelInfo flowUserRelInfo = flowUserRelInfoList.get(0); + + QueryWrapper 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); + } + } +} diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/PolicySolicitOpinionEOServiceImpl.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/PolicySolicitOpinionEOServiceImpl.java new file mode 100644 index 00000000..584acd9a --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/PolicySolicitOpinionEOServiceImpl.java @@ -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 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 removeIdList = Arrays.asList(removeIds.split(",")); + this.removeByIds(removeIdList); + } + JSONArray policySolicitOpinionEOArr = json.getJSONArray("policySolicitOpinionEOList"); + List addPolicySolicitOpinionEOList = new ArrayList<>(); + List 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 queryPolicitOpinionEOList(Map params) { + + List result = new ArrayList<>(); + String taskDefinitionKey = (String) params.get("taskDefinitionKey"); + String currentUserId = (String) params.get("currentUserId"); + String prcId = (String) params.get("prcId"); + + QueryWrapper 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 userIdList = new ArrayList<>(); + userIdList.add(currentUserId); + + QueryWrapper 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 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 userIdList = new ArrayList<>(); + + QueryWrapper 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 zrdwflowUserRelInfoList = this.flowUserRelInfoService.list(furQueryWrap); + if (CollectionUtils.isNotEmpty(zrdwflowUserRelInfoList)) { + List zrdjrUserIdList = zrdwflowUserRelInfoList.stream().map(FlowUserRelInfo::getParentUserId).distinct().collect(Collectors.toList()); + userIdList.addAll(zrdjrUserIdList); + + QueryWrapper 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 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; + } +} diff --git a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess10After.java b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess10After.java index 0740a53b..78e10c8d 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess10After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess10After.java @@ -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(); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess11After.java b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess11After.java index a5d1cac2..4f8e9749 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess11After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess11After.java @@ -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 nextUserList = Arrays.asList(shr2UserIds.split(",")); if (CollectionUtils.isNotEmpty(nextUserList)) { List 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()); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess12After.java b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess12After.java index f9a1aadf..47c21d04 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess12After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess12After.java @@ -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 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 nextUserList = Arrays.asList(hqrUserIds.split(",")); + List nextUserList = new ArrayList<>(); + String hqrUserIds = jsonForm.getString("hqrUserIds"); + if (StringUtils.isNotEmpty(hqrUserIds)) { + nextUserList.addAll(Arrays.asList(hqrUserIds.split(","))); + } List hqrUserIdList = (List) 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"); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess13After.java b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess13After.java index 76233e79..9113ced4 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess13After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess13After.java @@ -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 nextUserList = Arrays.asList(sdr2UserIds.split(",")); if (CollectionUtils.isNotEmpty(nextUserList)) { List 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()); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess14After.java b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess14After.java index a8213ce3..04483745 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess14After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess14After.java @@ -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()); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess15After.java b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess15After.java index fcd50c00..2494f284 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess15After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess15After.java @@ -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 nextUserList = Arrays.asList(csrUserIds.split(",")); if (CollectionUtils.isNotEmpty(nextUserList)) { List 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()); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess16After.java b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess16After.java index 1ed89ea5..263a29ef 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess16After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess16After.java @@ -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 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"); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess1After.java b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess1After.java index d3f83644..4b3fb251 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess1After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess1After.java @@ -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 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); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess2After.java b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess2After.java index 31a0cd54..4747dc24 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess2After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess2After.java @@ -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 nextUserList = Arrays.asList(sdr1UserIds.split(",")); if (CollectionUtils.isNotEmpty(nextUserList)) { List addBusProcessNewList = new ArrayList<>(); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess4After.java b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess4After.java index a49e1bd0..50d8c691 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess4After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess4After.java @@ -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()); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess5After.java b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess5After.java index 9703b0c1..27ed588a 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess5After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess5After.java @@ -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 nextUserList = Arrays.asList(djrUserIds.split(",")); if (CollectionUtils.isNotEmpty(nextUserList)) { List addBusProcessNewList = new ArrayList<>(); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess7After.java b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess7After.java index 04c32590..e3f0503e 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess7After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess7After.java @@ -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 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 nextUserList = Arrays.asList(zrrUserIds.split(",")); if (CollectionUtils.isNotEmpty(nextUserList)) { + List flowUserRelInfoList = new ArrayList<>(); + List 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(); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess8After.java b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess8After.java index 93f071e9..964912c0 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess8After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess8After.java @@ -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 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(); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess9After.java b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess9After.java index d11957c2..d1ee1e53 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess9After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/PolicySolicitOpinionProcess9After.java @@ -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 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 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 zrrUserIdList = (List) 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"); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/timer/PolicySolicitOpinionProcessTimer.java b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/timer/PolicySolicitOpinionProcessTimer.java new file mode 100644 index 00000000..cb41b2d1 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/listener/policySolicitOpinionProcess/timer/PolicySolicitOpinionProcessTimer.java @@ -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 bpnQueryWrap = new QueryWrapper<>(); + bpnQueryWrap.lambda().eq(BusProcessName::getPrcType, FlowTypeEnum.ZCZQYJLC.getValue()); + bpnQueryWrap.lambda().lt(BusProcessName::getResponsibleUnitDeadlineDate, new Date()); + List busProcessNameList = this.busProcessNameService.list(bpnQueryWrap); + + if (CollectionUtils.isNotEmpty(busProcessNameList)) { + List actiProcInstIdList = busProcessNameList.stream().map(BusProcessName::getPrcId).distinct().collect(Collectors.toList()); + this.recursionComplteZrbmTask(actiProcInstIdList); + } + } + + /** + * 递归提交待办任务 + * + * @param actiProcInstIdList + */ + public void recursionComplteZrbmTask(List actiProcInstIdList) { + for (String actiProcInstId : actiProcInstIdList) { + List 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 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 actiProcInstIds = this.queryZrbmTaskByActiProcInstId(actiProcInstIdList); + if (CollectionUtils.isNotEmpty(actiProcInstIds)) { + this.recursionComplteZrbmTask(actiProcInstIds); + } + } + + /** + * 根据流程实例id,查询还有待办任务的流程。 + * + * @param actiProcInstIdList + * @return + */ + public List queryZrbmTaskByActiProcInstId(List actiProcInstIdList) { + List result = new ArrayList<>(); + for (String actiProcInstId : actiProcInstIdList) { + List 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; + } +} diff --git a/src/main/java/com/ydw/bat/wkflow/util/enums/FlowTypeEnum.java b/src/main/java/com/ydw/bat/wkflow/util/enums/FlowTypeEnum.java new file mode 100644 index 00000000..9a765571 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/util/enums/FlowTypeEnum.java @@ -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; + } +} diff --git a/src/main/resources/mapper/datas/PolicySolicitOpinionEOMapper.xml b/src/main/resources/mapper/datas/PolicySolicitOpinionEOMapper.xml new file mode 100644 index 00000000..93f439b8 --- /dev/null +++ b/src/main/resources/mapper/datas/PolicySolicitOpinionEOMapper.xml @@ -0,0 +1,5 @@ + + + + +