diff --git a/doc/sql/20221120_企标计划和企标制修订流程关联表.sql b/doc/sql/20221120_企标计划和企标制修订流程关联表.sql new file mode 100644 index 00000000..efa1539d --- /dev/null +++ b/doc/sql/20221120_企标计划和企标制修订流程关联表.sql @@ -0,0 +1,10 @@ +CREATE TABLE `es_prc_relation` ( + `id` varchar(32) NOT NULL, + `es_id` varchar(32) DEFAULT NULL COMMENT '企标计划ID', + `prc_id` varchar(33) DEFAULT NULL COMMENT '企标制修订技术标准流程实例ID', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_time` datetime DEFAULT NULL COMMENT '修改时间', + `oa_flag` varchar(2) DEFAULT NULL COMMENT 'OA待办标识 0-已办,1-待办', + `prc_id_gk` varchar(33) DEFAULT NULL COMMENT '企标计划管控流程的实例ID', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='企标计划和企标制修订流程关联表'; \ No newline at end of file diff --git a/src/main/java/com/ydw/bat/wkflow/business_auth/LawsUserInfoService.java b/src/main/java/com/ydw/bat/wkflow/business_auth/LawsUserInfoService.java index 26014398..b2ac573c 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_auth/LawsUserInfoService.java +++ b/src/main/java/com/ydw/bat/wkflow/business_auth/LawsUserInfoService.java @@ -211,5 +211,6 @@ public interface LawsUserInfoService { @PostMapping(value = "/lawss/NewsFeed/insertNewsFeed") public ResponseMessage insertNewsFeed(NewsFeed newsFeed); - + @GetMapping("/esRevisePlan/es-revise-plan/getAllPlansByWk") + public List getAllPlansByWk(@RequestParam("esName") String esName); } diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/controller/EsPrcRelationController.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/controller/EsPrcRelationController.java new file mode 100644 index 00000000..9d7ff749 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/controller/EsPrcRelationController.java @@ -0,0 +1,119 @@ +package com.ydw.bat.wkflow.business_main.datas.controller; + +import com.ydw.bat.wkflow.business_auth.LawsUserInfoService; +import com.ydw.bat.wkflow.business_main.datas.entity.EsPrcRelation; +import com.ydw.bat.wkflow.business_main.datas.entity.EsRevisePlanDTO; +import com.ydw.bat.wkflow.business_main.datas.service.IEsPrcRelationService; +import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService; +import com.ydw.bat.wkflow.util.SpringContextUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.activiti.engine.TaskService; +import org.activiti.engine.task.Task; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.util.ObjectUtils; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.List; +import java.util.stream.Collectors; + +@Api(description = "管控流程接受任务") +@RestController +@RequestMapping("/esPrcRelation") +public class EsPrcRelationController { + private static final Logger logger = LoggerFactory.getLogger(EsPrcRelationController.class); + + @Value("${oa.flag}") + private Boolean OAFlag; + + @Autowired + private TaskService taskService; + @Autowired + private IEsPrcRelationService esPrcRelationService; + @Autowired + private WebServiceOAService webServiceOAService; + + @ApiOperation(value = "接受任务") + @GetMapping("/acceptTask") + public Integer acceptTack(String nowEsId, String oaFlag, String taskId) { + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + if(task!=null) { + //发送OA已办 + try { + if (OAFlag) { + //发送OA已办 + webServiceOAService.completeOA(task); + } + } catch (Exception e) { + logger.error(e.toString()); + } + } + + return esPrcRelationService.modifyEsPrcRelation(nowEsId, null, oaFlag, null); + } + + @ApiOperation(value = "判断是否已经接受任务") + @GetMapping("/judgeAcceptTask") + public Boolean judgeAcceptTask(String nowEsId, String oaFlag, String prcIdGk) { + + EsPrcRelation esPrcRelation = new EsPrcRelation(); + esPrcRelation.setEsId(nowEsId); + esPrcRelation.setOaFlag(oaFlag); + esPrcRelation.setPrcIdGk(prcIdGk); + return esPrcRelationService.listJudge(esPrcRelation); + } + + @ApiOperation(value = "定时任务调试") + @GetMapping("/testAcceptTack") + public String testAcceptTack() { + LawsUserInfoService lawsUserInfoService = SpringContextUtil.getBean(LawsUserInfoService.class); + IEsPrcRelationService esPrcRelationService = SpringContextUtil.getBean(IEsPrcRelationService.class); + TaskService taskService = SpringContextUtil.getBean(TaskService.class); + + List esRevisePlanDTOList = lawsUserInfoService.getAllPlansByWk(null); // 查询 制定中,修订中的企标计划 + // 计划标准初稿时间前一个月的企标计划 + SimpleDateFormat sdfQuery = new SimpleDateFormat("yyyy-MM-dd"); + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.MONTH, -1); + String endDate = sdfQuery.format(calendar.getTime()); + List esRevisePlanDTOList2 = esRevisePlanDTOList.stream() + .filter(e -> !ObjectUtils.isEmpty(e.getDraftTime()) && endDate.equals(sdfQuery.format(e.getDraftTime()))) + .collect(Collectors.toList()); + if (!esRevisePlanDTOList2.isEmpty()) { + for (EsRevisePlanDTO esRevisePlanDTO : esRevisePlanDTOList2) { + List esPrcRelationList = esPrcRelationService.list(esRevisePlanDTO.getId()); + if (esPrcRelationList.isEmpty()) { + continue; + } + String esId = esPrcRelationList.get(0).getEsId(); + String prcIdGk = esPrcRelationList.get(0).getPrcIdGk(); + String oaFlag = esPrcRelationList.get(0).getOaFlag(); + // 判断对应 管控流程是否还在 技术标准起草节点, 且之前点过接受任务 + if (StringUtils.isNotBlank(prcIdGk)) { + List list2 = taskService.createTaskQuery().processInstanceId(prcIdGk).active().list(); + if (!list2.isEmpty()) { + String nowTaskInfo = list2.get(0).getName(); + if ("技术标准起草".equals(nowTaskInfo) && "0".equals(oaFlag)) { + // 再次发送待办 + logger.info("============再次发送待办,企标计划" + esRevisePlanDTO.getEsName() +"==========="); +// sendOATodo(list2.get(0)); + + // 更新 状态为待办 + esPrcRelationService.modifyEsPrcRelation(esId, null, "1", null); + } + } + } + } + } + return "定时任务完成"; + } + +} diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/EsPrcRelation.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/EsPrcRelation.java new file mode 100644 index 00000000..c9cd4a43 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/EsPrcRelation.java @@ -0,0 +1,47 @@ +package com.ydw.bat.wkflow.business_main.datas.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +@Data +@Accessors(chain = true) +@ApiModel(value="EsPrcRelation对象", description="企标计划和技术标准流程关联表") +public class EsPrcRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "ID", type = IdType.UUID) + private String id; + + @ApiModelProperty(value = "企标计划ID") + private String esId; + + @ApiModelProperty(value = "流程ID") + private String prcId; + + @ApiModelProperty(value = "创建时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty(value = "OA待办标识") + private String oaFlag; // 0-已办 1-待办 + + @ApiModelProperty(value = "企标计划管控流程的实例ID") + private String prcIdGk; +} \ No newline at end of file diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/mapper/EsPrcRelationMapper.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/mapper/EsPrcRelationMapper.java new file mode 100644 index 00000000..28f4ae56 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/mapper/EsPrcRelationMapper.java @@ -0,0 +1,18 @@ +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.EsPrcRelation; +import org.springframework.stereotype.Repository; + +/** + *

+ * 企标计划和技术标准流程关联表 Mapper 接口 + *

+ * + * @author iyawei + * @since 2022-11-18 + */ +@Repository +public interface EsPrcRelationMapper extends BaseMapper { + +} diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/IEsPrcRelationService.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/IEsPrcRelationService.java new file mode 100644 index 00000000..b3577bec --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/IEsPrcRelationService.java @@ -0,0 +1,45 @@ +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.EsPrcRelation; + +import java.util.List; + +public interface IEsPrcRelationService extends IService { + /** + * + * @param esId + * @return + */ + List list(String esId); + + /** + * + * @return + */ + Boolean listJudge(EsPrcRelation esPrcRelation); + + /** + * + * @param esId + * @param prcId + * @return + */ + int addEsPrcRelation(String esId, String prcId, String prcIdGk); + + /** + * + * @param esId + * @param prcId + * @param oaFlag + * @return + */ + int modifyEsPrcRelation(String esId, String prcId, String oaFlag, String prcIdGk); + + /** + * + * @param esId + * @return + */ + int delEsPrcRelation(String esId); +} diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/EsPrcRelationServiceImpl.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/EsPrcRelationServiceImpl.java new file mode 100644 index 00000000..324b95ab --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/EsPrcRelationServiceImpl.java @@ -0,0 +1,86 @@ +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.EsPrcRelation; +import com.ydw.bat.wkflow.business_main.datas.mapper.EsPrcRelationMapper; +import com.ydw.bat.wkflow.business_main.datas.service.IEsPrcRelationService; +import org.apache.commons.lang.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +@Service +public class EsPrcRelationServiceImpl extends ServiceImpl implements IEsPrcRelationService { + + @Override + public List list(String esId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(EsPrcRelation::getEsId, esId); + return this.baseMapper.selectList(queryWrapper); + } + + @Override + public Boolean listJudge(EsPrcRelation esPrcRelation) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(EsPrcRelation::getEsId, esPrcRelation.getEsId()); + queryWrapper.lambda().eq(EsPrcRelation::getOaFlag, esPrcRelation.getOaFlag()); + queryWrapper.lambda().eq(EsPrcRelation::getPrcIdGk, esPrcRelation.getPrcIdGk()); + List list = this.baseMapper.selectList(queryWrapper); + if (list != null && !list.isEmpty()) { + return true; + } else { + return false; + } + } + + @Override + public int addEsPrcRelation(String esId, String prcId, String prcIdGk) { + EsPrcRelation esPrcRelation = new EsPrcRelation(); + esPrcRelation.setEsId(esId); + esPrcRelation.setOaFlag("1"); // 待办 + Date date = new Date(); + esPrcRelation.setCreateTime(date); + esPrcRelation.setUpdateTime(date); + + if (StringUtils.isNotBlank(prcId)) { + esPrcRelation.setPrcId(prcId); + } + + if (StringUtils.isNotBlank(prcIdGk)) { + esPrcRelation.setPrcIdGk(prcIdGk); + } + return this.baseMapper.insert(esPrcRelation); + } + + @Override + public int modifyEsPrcRelation(String esId, String prcId, String oaFlag, String prcIdGk) { + EsPrcRelation esPrcRelation = new EsPrcRelation(); + esPrcRelation.setEsId(esId); + Date date = new Date(); + esPrcRelation.setUpdateTime(date); + + if (StringUtils.isNotBlank(oaFlag)) { + esPrcRelation.setOaFlag(oaFlag); + } + + if (StringUtils.isNotBlank(prcId)) { + esPrcRelation.setPrcId(prcId); + } + + if (StringUtils.isNotBlank(prcIdGk)) { + esPrcRelation.setPrcIdGk(prcIdGk); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(EsPrcRelation::getEsId, esPrcRelation.getEsId()); + return this.baseMapper.update(esPrcRelation, queryWrapper); + } + + @Override + public int delEsPrcRelation(String esId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(EsPrcRelation::getEsId, esId); + return this.baseMapper.delete(queryWrapper); + } +} diff --git a/src/main/java/com/ydw/bat/wkflow/config/ScheduledJobEsPlan.java b/src/main/java/com/ydw/bat/wkflow/config/ScheduledJobEsPlan.java new file mode 100644 index 00000000..4eb726c9 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/config/ScheduledJobEsPlan.java @@ -0,0 +1,100 @@ +package com.ydw.bat.wkflow.config; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ydw.bat.wkflow.business_auth.LawsUserInfoService; +import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.entity.EsPrcRelation; +import com.ydw.bat.wkflow.business_main.datas.entity.EsRevisePlanDTO; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; +import com.ydw.bat.wkflow.business_main.datas.service.IEsPrcRelationService; +import com.ydw.bat.wkflow.business_mq.service.CreateMQService; +import com.ydw.bat.wkflow.util.SpringContextUtil; +import org.activiti.engine.TaskService; +import org.activiti.engine.task.Task; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.Scheduled; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.List; +import java.util.stream.Collectors; + +public class ScheduledJobEsPlan { + Logger logger = LoggerFactory.getLogger(ScheduledJobEsPlan.class); + + @Value("${isNotScheduled}") + private boolean isNotScheduled; //是否开启定时器 + + @Scheduled(cron = "0 0 2 * * ?") //每天的凌晨2点执行 + @Async + public void SchedulingTask() { + if(isNotScheduled) { + logger.info("============企标计划定时任务开始==========="); + LawsUserInfoService lawsUserInfoService = SpringContextUtil.getBean(LawsUserInfoService.class); + IEsPrcRelationService esPrcRelationService = SpringContextUtil.getBean(IEsPrcRelationService.class); + TaskService taskService = SpringContextUtil.getBean(TaskService.class); + + List esRevisePlanDTOList = lawsUserInfoService.getAllPlansByWk(null); // 查询 制定中,修订中的企标计划 + // 计划标准初稿时间前一个月的企标计划 + SimpleDateFormat sdfQuery = new SimpleDateFormat("yyyy-MM-dd"); + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.MONTH, -1); + String endDate = sdfQuery.format(calendar.getTime()); + List esRevisePlanDTOList2 = esRevisePlanDTOList.stream() + .filter(e -> endDate.equals(sdfQuery.format(e.getDraftTime()))) + .collect(Collectors.toList()); + if (!esRevisePlanDTOList2.isEmpty()) { + for (EsRevisePlanDTO esRevisePlanDTO : esRevisePlanDTOList2) { + List esPrcRelationList = esPrcRelationService.list(esRevisePlanDTO.getId()); + if (esPrcRelationList.isEmpty()) { + continue; + } + String esId = esPrcRelationList.get(0).getEsId(); + String prcIdGk = esPrcRelationList.get(0).getPrcIdGk(); + String oaFlag = esPrcRelationList.get(0).getOaFlag(); + // 判断对应 管控流程是否还在 技术标准起草节点, 且之前点过接受任务 + if (StringUtils.isNotBlank(prcIdGk)) { + List list2 = taskService.createTaskQuery().processInstanceId(prcIdGk).active().list(); + if (!list2.isEmpty()) { + String nowTaskInfo = list2.get(0).getName(); + if ("技术标准起草".equals(nowTaskInfo) && "0".equals(oaFlag)) { + // 再次发送待办 + logger.info("============再次发送待办的企标计划" + esRevisePlanDTO.getEsName() +"==========="); + sendOATodo(list2.get(0)); + + // 更新 状态为待办 + esPrcRelationService.modifyEsPrcRelation(esId, null, "1", null); + } + } + } + } + } + logger.info("============企标计划定时任务结束==========="); + } + } + + public void sendOATodo(Task delegateTask) { + IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class); + QueryWrapper queryWrapper1 = new QueryWrapper(); + queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId()); + queryWrapper1.eq("USER_ID",delegateTask.getAssignee()); + queryWrapper1.isNull("TASK_ID"); + List list = busBean.list(queryWrapper1); + if(!list.isEmpty()) { + BusProcessNew one1 = list.get(0); + one1.setTaskId(delegateTask.getId()); + busBean.saveOrUpdate(one1); + + CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class); + // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 + one1.setLink("qbzxdjhgkStep6?prcType=25"); + one1.setTaskInfo(delegateTask.getName()); + oaService.sendTodoMq(one1); + } + + } +} diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussFs/BussFs4Before.java b/src/main/java/com/ydw/bat/wkflow/listener/bussFs/BussFs4Before.java index 6ee1fbbf..185557d7 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussFs/BussFs4Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussFs/BussFs4Before.java @@ -40,7 +40,7 @@ public class BussFs4Before implements TaskListener { busBean.saveOrUpdate(one1); // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 - one1.setLink("bussFs3?prcType=buss3"); + one1.setLink("bussFs6?prcType=buss3"); one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantAfter.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantAfter.java index ce22ea50..6fbe21b9 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantAfter.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantAfter.java @@ -5,14 +5,15 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.IBusProcessModelHisService; -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.EsPrcRelation; +import com.ydw.bat.wkflow.business_main.datas.service.*; import com.ydw.bat.wkflow.util.SpringContextUtil; import org.activiti.engine.ActivitiException; +import org.activiti.engine.RuntimeService; +import org.activiti.engine.TaskService; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.task.Task; import org.apache.commons.lang.StringUtils; import org.apache.tomcat.util.digester.ArrayStack; @@ -26,6 +27,12 @@ import java.util.List; */ public class BLApplicantAfter implements TaskListener{ + TaskService taskService = SpringContextUtil.getBean(TaskService.class); + + IEsPrcRelationService esPrcRelationService = SpringContextUtil.getBean(IEsPrcRelationService.class); + + RuntimeService runtimeService = SpringContextUtil.getBean(RuntimeService.class); + @Override public void notify(DelegateTask delegateTask) { IDatasService datasService = SpringContextUtil.getBean(IDatasService.class); @@ -137,6 +144,56 @@ public class BLApplicantAfter implements TaskListener{ // 生成 模板 // busProcessModelHisService.saveBussTemplateFile(object,delegateTask.getProcessInstanceId()); + + // 给企标计划绑定 技术标准流程 + //1合并 2延期 3取消 4更名 5立项 + String type=object.getString("type"); + if (StringUtils.isNotBlank(type)) { + // 删除 进行中的 旧流程 + if ("1".equals(type)) { + String esId1 = object.getString("esId1"); + String esId2 = object.getString("esId2"); + + List esPrcRelationList1 = esPrcRelationService.list(esId1); + if (esPrcRelationList1 != null && !esPrcRelationList1.isEmpty()) { + String prcId1 = esPrcRelationList1.get(0).getPrcId(); + List list1 = taskService.createTaskQuery().processInstanceId(prcId1).active().list(); + if (list1 != null && !list1.isEmpty()) { + // 删除正在运行中的流程根据流程实例ID + runtimeService.deleteProcessInstance(prcId1, ""); + } + } + + List esPrcRelationList2 = esPrcRelationService.list(esId2); + if (esPrcRelationList2 != null && !esPrcRelationList2.isEmpty()) { + String prcId2 = esPrcRelationList2.get(0).getPrcId(); + List list2 = taskService.createTaskQuery().processInstanceId(prcId2).active().list(); + if (list2 != null && !list2.isEmpty()) { + // 删除正在运行中的流程根据流程实例ID + runtimeService.deleteProcessInstance(prcId2, ""); + } + } + + // 删除旧的 计划和流程关联关系, 因为 一条计划只对应一条企标制修订流程 + esPrcRelationService.delEsPrcRelation(esId1); + esPrcRelationService.delEsPrcRelation(esId2); + + } else if ("2".equals(type) || "3".equals(type) || "4".equals(type)) { + String esId = object.getString("esId"); + List esPrcRelationList = esPrcRelationService.list(esId); + if (esPrcRelationList != null && !esPrcRelationList.isEmpty()) { + String prcId = esPrcRelationList.get(0).getPrcId(); + List list = taskService.createTaskQuery().processInstanceId(esPrcRelationList.get(0).getPrcId()).active().list(); + if (list != null && !list.isEmpty()) { + // 删除正在运行中的流程根据流程实例ID + runtimeService.deleteProcessInstance(prcId, ""); + } + } + + } + // 修改 计划和流程关联关系 + esPrcRelationService.modifyEsPrcRelation(object.getString("nowEsId"), delegateTask.getProcessInstanceId(), null, null); + } } private String verifyObj(String str){ diff --git a/src/main/java/com/ydw/bat/wkflow/listener/enterpriseStandardSystemRevisionPlan/ProcessStep4After.java b/src/main/java/com/ydw/bat/wkflow/listener/enterpriseStandardSystemRevisionPlan/ProcessStep4After.java index 1467ff2b..9f33d8cf 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/enterpriseStandardSystemRevisionPlan/ProcessStep4After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/enterpriseStandardSystemRevisionPlan/ProcessStep4After.java @@ -3,13 +3,11 @@ package com.ydw.bat.wkflow.listener.enterpriseStandardSystemRevisionPlan; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_auth.LawsUserInfoService; -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.entity.EsRevisePlanDTO; +import com.ydw.bat.wkflow.business_main.datas.entity.*; 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.IEsPrcRelationService; import com.ydw.bat.wkflow.util.SpringContextUtil; import net.sf.json.JSONArray; import net.sf.json.util.JSONTokener; @@ -38,6 +36,8 @@ public class ProcessStep4After implements TaskListener { LawsUserInfoService lawsUserInfoService = SpringContextUtil.getBean(LawsUserInfoService.class); + IEsPrcRelationService esPrcRelationService = SpringContextUtil.getBean(IEsPrcRelationService.class); + //根据流程id找到流程信息 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId()); @@ -47,10 +47,13 @@ public class ProcessStep4After implements TaskListener { //标准法规部业务经理Id List nextUserList = new ArrayList(); String prcName = ""; + String nowEsId = ""; //根据意见选择 企标状态并对企标信息进行修改 bzfgId if ("0".equals(object.getString("bzfgbzFlag"))){ prcName = "企标制修订计划-流程结束"; delegateTask.setVariable("bzfgbzFlag",0); + nextUserList.add(delegateTask.getVariable("prcCreateUser",String.class)); + delegateTask.setVariable("createUser",delegateTask.getVariable("prcCreateUser",String.class)); // 建立对应字符串 Map plan_status=new HashMap<>(); plan_status.put("未开始","0"); @@ -96,7 +99,12 @@ public class ProcessStep4After implements TaskListener { esRevisePlanDTO.setRqbJson(object.getString("rqbJson")); esRevisePlanDTO.setTechnologic(object.getString("technologic")); esRevisePlanDTO.setBussSort(object.getString("bussSort")); - lawsUserInfoService.addPlan(esRevisePlanDTO); + + List esRevisePlanDTOS = lawsUserInfoService.getAllPlansByWk(object.getString("esName")); + if (esRevisePlanDTOS != null && !esRevisePlanDTOS.isEmpty()) { + nowEsId = esRevisePlanDTOS.get(0).getId(); + } + }else if ("2".equals(object.getString("type"))){ EsRevisePlanDTO esRevisePlanDTO=new EsRevisePlanDTO(); esRevisePlanDTO.setId(object.getString("esId")); @@ -140,6 +148,10 @@ public class ProcessStep4After implements TaskListener { lawsUserInfoService.modStatePlan(esRevisePlanDTO); }else { lawsUserInfoService.addPlan(esRevisePlanDTO); + List esRevisePlanDTOS = lawsUserInfoService.getAllPlansByWk(object.getString("esName")); + if (esRevisePlanDTOS != null && !esRevisePlanDTOS.isEmpty()) { + nowEsId = esRevisePlanDTOS.get(0).getId(); + } } } }else { @@ -172,16 +184,12 @@ public class ProcessStep4After implements TaskListener { } //截止时间 流程描述 创建人 - String OVERTIME = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); String user = delegateTask.getVariable("prcCreateUser",String.class); String username = delegateTask.getVariable("prcCreateUserName", String.class); QueryWrapper queryWrapper2 = new QueryWrapper(); queryWrapper2.eq("PRC_ID", delegateTask.getProcessInstanceId()); BusProcessName one1 = busProcessNameService.getOne(queryWrapper2); if (one1 != null) { - if ("0".equals(object.getString("bzfgbzFlag"))){ - one1.setOverTime(OVERTIME); - } one1.setPrcType("25"); // one1.setPrcName(prcName); one1.setCreatUser(user); @@ -203,11 +211,17 @@ public class ProcessStep4After implements TaskListener { busBean.saveOrUpdate(busProcessNews); } } + if (nextUserList != null && !nextUserList.isEmpty()) { for (String nextUser : nextUserList) { BusProcessNew busProcessNewNext = new BusProcessNew(); busProcessNewNext.setMsgType("clause"); busProcessNewNext.setPId(delegateTask.getProcessInstanceId()); + if ("5".equals(type) || "1".equals(type)) { + object.put("nowEsId", nowEsId); + } else { + object.put("nowEsId", object.getString("esId")); + } busProcessNewNext.setMesg(object.toJSONString()); busProcessNewNext.setTaskInfo(delegateTask.getTaskDefinitionKey()); busProcessNewNext.setFinishFlag("0"); @@ -220,6 +234,11 @@ public class ProcessStep4After implements TaskListener { BusProcessNew busProcessNewNext = new BusProcessNew(); busProcessNewNext.setMsgType("clause"); busProcessNewNext.setPId(delegateTask.getProcessInstanceId()); + if ("5".equals(type) || "1".equals(type)) { + object.put("nowEsId", nowEsId); + } else { + object.put("nowEsId", object.getString("esId")); + } busProcessNewNext.setMesg(object.toJSONString()); busProcessNewNext.setTaskInfo(delegateTask.getTaskDefinitionKey()); busProcessNewNext.setFinishFlag("0"); @@ -228,5 +247,25 @@ public class ProcessStep4After implements TaskListener { busBean.save(busProcessNewNext); } // throw new ActivitiException("fa"); + + // 处理 oaFlag 为待办 + //1合并 2延期 3取消 4更名 5立项 + if ("5".equals(type) || "1".equals(type)){ + + // 新增新的 计划和流程关联关系 + esPrcRelationService.addEsPrcRelation(nowEsId, null, delegateTask.getProcessInstanceId()); + + } else { + List esPrcRelationList = esPrcRelationService.list(object.getString("esId")); + if (esPrcRelationList != null && !esPrcRelationList.isEmpty()) { + // 修改 计划和流程关联关系 + esPrcRelationService.modifyEsPrcRelation(object.getString("esId"), null , "0", delegateTask.getProcessInstanceId()); + + } else { + // 新增新的 计划和流程关联关系 + esPrcRelationService.addEsPrcRelation(object.getString("esId"), null, delegateTask.getProcessInstanceId()); + } + } + } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/enterpriseStandardSystemRevisionPlan/ProcessStep6After.java b/src/main/java/com/ydw/bat/wkflow/listener/enterpriseStandardSystemRevisionPlan/ProcessStep6After.java new file mode 100644 index 00000000..0c2431ef --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/listener/enterpriseStandardSystemRevisionPlan/ProcessStep6After.java @@ -0,0 +1,79 @@ +package com.ydw.bat.wkflow.listener.enterpriseStandardSystemRevisionPlan; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +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; +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.IEsPrcRelationService; +import com.ydw.bat.wkflow.util.SpringContextUtil; +import org.activiti.engine.TaskService; +import org.activiti.engine.delegate.DelegateTask; +import org.activiti.engine.delegate.TaskListener; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * 企标制修订计划管控-技术标准起草 + */ +public class ProcessStep6After implements TaskListener { + + @Override + public void notify(DelegateTask delegateTask) { + //默认流程数据接口 + IDatasService datasService = SpringContextUtil.getBean(IDatasService.class); + //流程节点信息 + IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class); + //流程信息 + IBusProcessNameService busProcessNameService = SpringContextUtil.getBean(IBusProcessNameService.class); + + IEsPrcRelationService esPrcRelationService = SpringContextUtil.getBean(IEsPrcRelationService.class); + + //根据流程id找到流程信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId()); + Datas datas = datasService.getOne(queryWrapper); + JSONObject object = JSONObject.parseObject(datas.getFormValsJson()); + delegateTask.setVariable("objectJson", object); + + //截止时间 流程描述 创建人 + String OVERTIME = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + String user = delegateTask.getVariable("prcCreateUser",String.class); + String username = delegateTask.getVariable("prcCreateUserName", String.class); + QueryWrapper queryWrapper1 = new QueryWrapper(); + queryWrapper1.eq("PRC_ID", delegateTask.getProcessInstanceId()); + BusProcessName one1 = busProcessNameService.getOne(queryWrapper1); + if (one1 != null) { + one1.setOverTime(OVERTIME); + one1.setPrcType("25"); +// one1.setPrcName(prcName); + one1.setCreatUser(user); + one1.setCreatUserName(username); + busProcessNameService.saveOrUpdate(one1); + } + + //存储当前节点意见 + QueryWrapper queryWrapper2 = new QueryWrapper(); + queryWrapper2.eq("TASK_ID", delegateTask.getId()); + BusProcessNew one2 = busBean.getOne(queryWrapper2); + if (one2 != null) { + one2.setMsgType("clause"); + one2.setPId(delegateTask.getProcessInstanceId()); + one2.setMesg(object.toJSONString()); + one2.setFinishFlag("0"); + one2.setTaskInfo(delegateTask.getName()); + one2.setCommitFlag("0"); + one2.setCommitText(object.getString("commentText")); + busBean.saveOrUpdate(one2); + } + + // 处理 oaFlag 为已办 + // 修改 计划和流程关联关系 + esPrcRelationService.modifyEsPrcRelation(object.getString("nowEsId"), null , "0", delegateTask.getProcessInstanceId()); + + } +} diff --git a/src/main/java/com/ydw/bat/wkflow/listener/enterpriseStandardSystemRevisionPlan/ProcessStep6Before.java b/src/main/java/com/ydw/bat/wkflow/listener/enterpriseStandardSystemRevisionPlan/ProcessStep6Before.java new file mode 100644 index 00000000..0c852513 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/listener/enterpriseStandardSystemRevisionPlan/ProcessStep6Before.java @@ -0,0 +1,39 @@ +package com.ydw.bat.wkflow.listener.enterpriseStandardSystemRevisionPlan; + +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.service.IBusProcessNewService; +import com.ydw.bat.wkflow.business_mq.service.CreateMQService; +import com.ydw.bat.wkflow.util.SpringContextUtil; +import org.activiti.engine.delegate.DelegateTask; +import org.activiti.engine.delegate.TaskListener; + +import java.util.List; + +/** + * 企标制修订计划管控-技术标准起草 + */ +public class ProcessStep6Before implements TaskListener { + + @Override + public void notify(DelegateTask delegateTask) { + IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class); + QueryWrapper queryWrapper1 = new QueryWrapper(); + queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId()); + queryWrapper1.eq("USER_ID",delegateTask.getAssignee()); + queryWrapper1.isNull("TASK_ID"); + List list = busBean.list(queryWrapper1); + if(!list.isEmpty()) { + BusProcessNew one1 = list.get(0); + one1.setTaskId(delegateTask.getId()); + busBean.saveOrUpdate(one1); + + CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class); + // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 + one1.setLink("qbzxdjhgkStep6?prcType=25"); + one1.setTaskInfo(delegateTask.getName()); + oaService.sendTodoMq(one1); + } + } + +} \ No newline at end of file diff --git a/src/main/java/com/ydw/bat/wkflow/listener/enterpriseStandardSystemRevisionPlan/ProcessstartAfter.java b/src/main/java/com/ydw/bat/wkflow/listener/enterpriseStandardSystemRevisionPlan/ProcessstartAfter.java index 75b3b5dd..3070959a 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/enterpriseStandardSystemRevisionPlan/ProcessstartAfter.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/enterpriseStandardSystemRevisionPlan/ProcessstartAfter.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.IEsPrcRelationService; import com.ydw.bat.wkflow.util.SpringContextUtil; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; @@ -32,6 +33,8 @@ public class ProcessstartAfter implements TaskListener { //流程信息 IBusProcessNameService busProcessNameService = SpringContextUtil.getBean(IBusProcessNameService.class); + IEsPrcRelationService esPrcRelationService = SpringContextUtil.getBean(IEsPrcRelationService.class); + //根据流程id找到流程信息 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId()); @@ -40,13 +43,26 @@ public class ProcessstartAfter implements TaskListener { delegateTask.setVariable("objectJson", object); //标准法规部业务经理Id deptCenterId List nextUserList = new ArrayList(); - nextUserList.add(object.getString("dockUser")); - delegateTask.setVariable("topmanagerId",object.getString("dockUser")); + if ("0".equals(object.getString("addFlag"))) { + nextUserList.add(object.getString("dockUser")); + delegateTask.setVariable("topmanagerId", object.getString("dockUser")); + delegateTask.setVariable("addFlag", object.getString("addFlag")); + + //存储后续需要的人员 + delegateTask.setVariable("Step1", object.getString("countersigner")); // 会签人员 + delegateTask.setVariable("Step2", object.getString("examine")); // 审定人员 + delegateTask.setVariable("Step3", object.getString("approver")); // 批准人员 + + } else { + nextUserList.add(object.getString("prcCreateUser")); + delegateTask.setVariable("createUser",object.getString("prcCreateUser")); // 技术标准起草人员 + delegateTask.setVariable("addFlag", object.getString("addFlag")); + + // 处理 oaFlag 为待办 + // 新增新的 计划和流程关联关系 + esPrcRelationService.addEsPrcRelation(object.getString("nowEsId"), null, delegateTask.getProcessInstanceId()); + } - //存储后续需要的人员 - delegateTask.setVariable("Step1",object.getString("countersigner")); - delegateTask.setVariable("Step2",object.getString("examine")); - delegateTask.setVariable("Step3",object.getString("approver")); //截止时间 流程描述 创建人 String user = object.getString("prcCreateUser"); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/xmhgpgXM/Step1After.java b/src/main/java/com/ydw/bat/wkflow/listener/xmhgpgXM/Step1After.java index 5dc464b7..d5096377 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/xmhgpgXM/Step1After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/xmhgpgXM/Step1After.java @@ -18,6 +18,9 @@ import java.util.Arrays; import java.util.Date; import java.util.List; +/** + * 项目合规评估流程-项目 + */ public class Step1After implements TaskListener { diff --git a/src/main/resources/mapper/esPrcRelation/EsPrcRelationMapper.xml b/src/main/resources/mapper/esPrcRelation/EsPrcRelationMapper.xml new file mode 100644 index 00000000..fa8aab59 --- /dev/null +++ b/src/main/resources/mapper/esPrcRelation/EsPrcRelationMapper.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file