Przeglądaj źródła

导入审批流

wanghongzhi 1 rok temu
rodzic
commit
a4729d0e47

+ 14 - 59
src/main/java/com/qdport/controller/PolicyCaseController.java

@@ -35,6 +35,7 @@ import javax.validation.Valid;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 
 /**
  * 案例分享
@@ -140,20 +141,8 @@ public class PolicyCaseController extends QdportController {
 
     @PostMapping("/saveApprove")
     @ApiOperation(value = "新增并且提交", notes = "传入PolicyCase")
-    @Transactional(rollbackFor = Exception.class)
-    public R saveApprove(@RequestBody PolicyCaseVO vo) {
-        if (StringUtil.isEmpty(vo.getId())) {
-            vo.setStatus(QDPortEnum.POLICY_CASE_STATUS_APPROVE.getValue());
-            policyCaseService.save(vo);
-        } else {
-            vo.setStatus(QDPortEnum.POLICY_CASE_STATUS_APPROVE.getValue());
-            policyCaseService.update(vo);
-        }
-        PolicyStrive strive = policyStriveService.getById(vo.getStriveId());
-        PolicyStriveVO striveVO = new PolicyStriveVO();
-        BeanUtils.copyProperties(strive, striveVO);
-        vo.setPolicyStrive(striveVO);
-
+    public R saveApprove(@RequestBody PolicyCaseVO vo) throws ExecutionException, InterruptedException {
+        policyCaseService.saveApprove(vo);
         policyTodoService.save(vo);
         return R.success("新增并且提交成功");
     }
@@ -162,67 +151,33 @@ public class PolicyCaseController extends QdportController {
      * 修改
      */
     @PostMapping("/update")
+    @ApiOperation(value = "编辑", notes = "传入PolicyCase")
     public R update(@RequestBody @Valid PolicyCaseVO vo) {
         policyCaseService.update(vo);
         return R.success("更新成功");
     }
 
     @PostMapping("/withdraw")
-    @Transactional(rollbackFor = Exception.class)
+    @ApiOperation(value = "撤回", notes = "传入PolicyCase")
     public R withdraw(@RequestBody @Valid PolicyCaseVO vo) {
-        vo.setStatus(QDPortEnum.POLICY_CASE_STATUS_ACTIVE.getValue());
-        vo.setUpdateTime(new Date());
-        policyCaseService.updateById(vo);
-
-        QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
-        todoQueryWrapper.eq("REF_ID", vo.getId());
-        todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_CASE.getValue());
-        todoQueryWrapper.eq("TODO_USER_ID", 1);
-        todoQueryWrapper.eq("TODO_TYPE", QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
-        todoQueryWrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
-        PolicyTodo todo = new PolicyTodo();
-        todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_CANCEL.getValue());
-        policyTodoService.update(todo, todoQueryWrapper);
+        policyCaseService.withdraw(vo);
         return R.success("撤回成功");
     }
 
     @PostMapping("/approve")
-    @Transactional(rollbackFor = Exception.class)
-    public R approve(@RequestBody @Valid PolicyCaseVO vo) {
-        vo.setStatus(QDPortEnum.POLICY_CASE_STATUS_DONE.getValue());
-        vo.setUpdateTime(new Date());
-        policyCaseService.updateById(vo);
-
-        QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
-        todoQueryWrapper.eq("REF_ID", vo.getId());
-        todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_CASE.getValue());
-        todoQueryWrapper.eq("TODO_USER_ID", 1);
-        todoQueryWrapper.eq("TODO_TYPE", QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
-        todoQueryWrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
-        PolicyTodo todo = new PolicyTodo();
-        todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_DONE.getValue());
-        policyTodoService.update(todo, todoQueryWrapper);
-
+    @ApiOperation(value = "审核通过", notes = "传入PolicyCase")
+    public R approve(@RequestBody @Valid PolicyCaseVO vo) throws ExecutionException, InterruptedException {
+        vo.setIsWithdraw(0);
+        policyCaseService.approve(vo);
+        policyTodoService.save(vo);
         return R.success("更新成功");
     }
 
     @PostMapping("/refuse")
-    @Transactional(rollbackFor = Exception.class)
+    @ApiOperation(value = "审核拒绝", notes = "传入PolicyCase")
     public R refuse(@RequestBody @Valid PolicyCaseVO vo) {
-        vo.setStatus(QDPortEnum.POLICY_CASE_STATUS_INACTIVE.getValue());
-        vo.setUpdateTime(new Date());
-        policyCaseService.updateById(vo);
-
-        QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
-        todoQueryWrapper.eq("REF_ID", vo.getId());
-        todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_CASE.getValue());
-        todoQueryWrapper.eq("TODO_USER_ID", 1);
-        todoQueryWrapper.eq("TODO_TYPE", QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
-        todoQueryWrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
-        PolicyTodo todo = new PolicyTodo();
-        todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_DONE.getValue());
-        policyTodoService.update(todo, todoQueryWrapper);
-
+        vo.setIsWithdraw(1);
+        policyCaseService.refuse(vo);
         return R.success("更新成功");
     }
 

+ 5 - 22
src/main/java/com/qdport/controller/PolicyShareController.java

@@ -1,32 +1,17 @@
 package com.qdport.controller;
 
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qdport.entity.PolicyShare;
-import com.qdport.entity.PolicyTodo;
 import com.qdport.enums.QDPortEnum;
-import com.qdport.modules.system.service.IUserSearchService;
 import com.qdport.query.PolicyShareQuery;
 import com.qdport.service.PolicyFileService;
 import com.qdport.service.PolicyShareService;
 import com.qdport.service.PolicyTodoService;
 import com.qdport.service.impl.PolicySystemService;
-import com.qdport.util.StringUtil;
 import com.qdport.vo.PolicyFileVO;
 import com.qdport.vo.PolicyShareVO;
-import com.qdport.workflow.core.utils.ObjectUtil;
-import com.qdport.workflow.process.controller.feign.IWfProcessClient;
-import com.qdport.workflow.process.model.WfProcess;
-import com.qdport.workflow.process.service.IWfProcessService;
 import com.qdport.wrapper.PolicyShareWrapper;
 import com.qdport.modules.system.entity.SysUser;
 import com.qdport.modules.system.service.TSysUserService;
-import lombok.AllArgsConstructor;
-import org.flowable.engine.HistoryService;
-import org.flowable.engine.history.HistoricActivityInstance;
-import org.flowable.engine.history.HistoricActivityInstanceQuery;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -40,8 +25,6 @@ import javax.annotation.Resource;
 import javax.validation.Valid;
 import java.util.*;
 import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.stream.Collectors;
 
 /**
  * 政策共享
@@ -77,7 +60,6 @@ public class PolicyShareController extends QdportController {
             Map<String, String> resultMap = policySystemService.getDeptNameAndCompanyName(createUser.getDeptId());
             model.setDeptName(resultMap.get("deptName"));
             model.setCompanyName(resultMap.get("companyName"));
-
             List<PolicyFileVO> fileList = policyFileService.getFileList(model.getId().toString(), QDPortEnum.POLICY_FILE_REFTYPE_POLICY_SHARE.getValue());
             model.setFileList(fileList);
         }
@@ -109,7 +91,6 @@ public class PolicyShareController extends QdportController {
      */
     @PostMapping("/save")
     @ApiOperation(value = "新增", notes = "传入PolicyShare")
-    @Transactional(rollbackFor = Exception.class)
     public R save(@RequestBody PolicyShareVO vo) {
         vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_ACTIVE.getValue());
         policyShareService.save(vo);
@@ -118,7 +99,6 @@ public class PolicyShareController extends QdportController {
 
     @PostMapping("/saveDone")
     @ApiOperation(value = "新增", notes = "传入PolicyShare")
-    @Transactional(rollbackFor = Exception.class)
     public R saveDone(@RequestBody PolicyShareVO vo) {
         vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_DONE.getValue());
         policyShareService.save(vo);
@@ -137,19 +117,21 @@ public class PolicyShareController extends QdportController {
      * 修改
      */
     @PostMapping("/update")
+    @ApiOperation(value = "编辑", notes = "传入PolicyShare")
     public R update(@RequestBody @Valid PolicyShareVO vo) {
         policyShareService.update(vo);
         return R.success("更新成功");
     }
 
     @PostMapping("/withdraw")
-    @Transactional(rollbackFor = Exception.class)
+    @ApiOperation(value = "撤回", notes = "传入PolicyShare")
     public R withdraw(@RequestBody @Valid PolicyShareVO vo) {
         policyShareService.withdraw(vo);
         return R.success("撤回成功");
     }
 
     @PostMapping("/approve")
+    @ApiOperation(value = "审核通过", notes = "传入PolicyShare")
     public R approve(@RequestBody @Valid PolicyShareVO vo) throws ExecutionException, InterruptedException {
         vo.setIsWithdraw(0);
         policyShareService.approve(vo);
@@ -158,6 +140,7 @@ public class PolicyShareController extends QdportController {
     }
 
     @PostMapping("/refuse")
+    @ApiOperation(value = "审核拒绝", notes = "传入PolicyShare")
     public R refuse(@RequestBody @Valid PolicyShareVO vo) {
         vo.setIsWithdraw(1);
         policyShareService.refuse(vo);
@@ -165,6 +148,7 @@ public class PolicyShareController extends QdportController {
     }
 
     @PostMapping("/resubmit")
+    @ApiOperation(value = "重新提交", notes = "传入PolicyShare")
     public R resubmit(@RequestBody @Valid PolicyShareVO vo) throws ExecutionException, InterruptedException {
         vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_APPROVE.getValue());
         policyShareService.approve(vo);
@@ -177,7 +161,6 @@ public class PolicyShareController extends QdportController {
      */
     @PostMapping("/remove")
     @ApiOperation(value = "逻辑删除", notes = "传入ids")
-    @Transactional(rollbackFor = Exception.class)
     public R delete(@ApiParam(value = "主键集合", required = true) @RequestParam(name = "ids") String ids) {
         List<String> idList = Func.toStrList(ids);
         policyShareService.delete(idList);

+ 16 - 45
src/main/java/com/qdport/controller/PolicyStriveController.java

@@ -13,13 +13,11 @@ import com.qdport.service.PolicyTodoService;
 import com.qdport.service.impl.PolicySystemService;
 import com.qdport.util.StringUtil;
 import com.qdport.vo.PolicyFileVO;
-import lombok.AllArgsConstructor;
 import com.qdport.entity.PolicyStrive;
 import com.qdport.service.PolicyStriveService;
 import com.qdport.query.PolicyStriveQuery;
 import com.qdport.vo.PolicyStriveVO;
 import com.qdport.wrapper.PolicyStriveWrapper;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -36,6 +34,7 @@ import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 
 /**
  * 政策争取
@@ -104,7 +103,6 @@ public class PolicyStriveController extends QdportController {
      */
     @PostMapping("/save")
     @ApiOperation(value = "新增", notes = "传入PolicyStrive")
-    @Transactional(rollbackFor = Exception.class)
     public R save(@RequestBody PolicyStriveVO vo) {
         vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_ACTIVE.getValue());
         policyStriveService.save(vo);
@@ -113,7 +111,6 @@ public class PolicyStriveController extends QdportController {
 
     @PostMapping("/saveDone")
     @ApiOperation(value = "新增", notes = "传入PolicyStrive")
-    @Transactional(rollbackFor = Exception.class)
     public R saveDone(@RequestBody PolicyStriveVO vo) {
         vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_DONE.getValue());
         policyStriveService.save(vo);
@@ -122,16 +119,8 @@ public class PolicyStriveController extends QdportController {
 
     @PostMapping("/saveApprove")
     @ApiOperation(value = "新增并且提交", notes = "传入PolicyStrive")
-    @Transactional(rollbackFor = Exception.class)
-    public R saveApprove(@RequestBody PolicyStriveVO vo) {
-        if (StringUtil.isEmpty(vo.getId())) {
-            vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_APPROVE.getValue());
-            policyStriveService.save(vo);
-        } else {
-            vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_APPROVE.getValue());
-            policyStriveService.update(vo);
-        }
-
+    public R saveApprove(@RequestBody PolicyStriveVO vo) throws ExecutionException, InterruptedException {
+        policyStriveService.saveApprove(vo);
         policyTodoService.save(vo);
         return R.success("新增并且提交成功");
     }
@@ -140,6 +129,7 @@ public class PolicyStriveController extends QdportController {
      * 修改
      */
     @PostMapping("/update")
+    @ApiOperation(value = "编辑", notes = "传入PolicyStrive")
     public R update(@RequestBody @Valid PolicyStriveVO vo) {
         policyStriveService.update(vo);
         return R.success("更新成功");
@@ -169,47 +159,27 @@ public class PolicyStriveController extends QdportController {
     }
 
     @PostMapping("/withdraw")
-    @Transactional(rollbackFor = Exception.class)
+    @ApiOperation(value = "撤回", notes = "传入PolicyStrive")
     public R withdraw(@RequestBody @Valid PolicyStriveVO vo) {
-        vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_ACTIVE.getValue());
-        vo.setUpdateTime(new Date());
-        policyStriveService.updateById(vo);
-
-        QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
-        todoQueryWrapper.eq("REF_ID", vo.getId());
-        todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_STRIVE.getValue());
-        todoQueryWrapper.eq("TODO_USER_ID", 1);
-        todoQueryWrapper.eq("TODO_TYPE", QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
-        todoQueryWrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
-        PolicyTodo todo = new PolicyTodo();
-        todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_CANCEL.getValue());
-        policyTodoService.update(todo, todoQueryWrapper);
+        policyStriveService.withdraw(vo);
         return R.success("撤回成功");
     }
 
     @PostMapping("/approve")
-    @Transactional(rollbackFor = Exception.class)
-    public R approve(@RequestBody @Valid PolicyStriveVO vo) {
-        vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_DONE.getValue());
-        vo.setUpdateTime(new Date());
-        policyStriveService.updateById(vo);
-
-        QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
-        todoQueryWrapper.eq("REF_ID", vo.getId());
-        todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_STRIVE.getValue());
-        todoQueryWrapper.eq("TODO_USER_ID", 1);
-        todoQueryWrapper.eq("TODO_TYPE", QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
-        todoQueryWrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
-        PolicyTodo todo = new PolicyTodo();
-        todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_DONE.getValue());
-        policyTodoService.update(todo, todoQueryWrapper);
-
+    @ApiOperation(value = "审批通过", notes = "传入PolicyStrive")
+    public R approve(@RequestBody @Valid PolicyStriveVO vo) throws ExecutionException, InterruptedException {
+        vo.setIsWithdraw(0);
+        policyStriveService.approve(vo);
+        policyTodoService.save(vo);
         return R.success("更新成功");
     }
 
     @PostMapping("/refuse")
-    @Transactional(rollbackFor = Exception.class)
+    @ApiOperation(value = "审批拒绝", notes = "传入PolicyStrive")
     public R refuse(@RequestBody @Valid PolicyStriveVO vo) {
+        vo.setIsWithdraw(1);
+        policyStriveService.refuse(vo);
+
         vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_INACTIVE.getValue());
         vo.setUpdateTime(new Date());
         policyStriveService.updateById(vo);
@@ -239,6 +209,7 @@ public class PolicyStriveController extends QdportController {
     }
 
     @PostMapping("/calculate")
+    @ApiOperation(value = "计算金额", notes = "传入PolicyStrive")
     public R calculate(@RequestBody @Valid PolicyStriveVO vo) {
         BigDecimal rewardRadix = vo.getRewardRadix();
         BigDecimal implementScore = vo.getImplementScore();

+ 8 - 0
src/main/java/com/qdport/entity/PolicyCase.java

@@ -113,4 +113,12 @@ public class PolicyCase implements Serializable {
     @ApiModelProperty(value = "经验")
 	private String expContent;
 
+	@ApiModelProperty(value = "流程任务id")
+	private String processTaskId;
+	@ApiModelProperty(value = "流程实例id")
+	private String processInstanceId;
+	@ApiModelProperty(value = "流程模板id")
+	private String processDefinitionId;
+	@ApiModelProperty(value = "是否显示撤回按钮")
+	private Integer isWithdraw;
 }

+ 2 - 3
src/main/java/com/qdport/entity/PolicyShare.java

@@ -149,9 +149,6 @@ public class PolicyShare implements Serializable {
 	)
 	private Long updateId;
 
-	@ApiModelProperty(value = "是否显示撤回按钮")
-    private Integer isWithdraw;
-
 	@ApiModelProperty(value = "解读内容")
 	private String decodeContent;
 
@@ -161,4 +158,6 @@ public class PolicyShare implements Serializable {
 	private String processInstanceId;
 	@ApiModelProperty(value = "流程模板id")
 	private String processDefinitionId;
+	@ApiModelProperty(value = "是否显示撤回按钮")
+	private Integer isWithdraw;
 }

+ 9 - 0
src/main/java/com/qdport/entity/PolicyStrive.java

@@ -200,4 +200,13 @@ public class PolicyStrive implements Serializable {
 	private Integer isReward;
 	@ApiModelProperty(value = "是否案例")
 	private Integer isCase;
+
+	@ApiModelProperty(value = "流程任务id")
+	private String processTaskId;
+	@ApiModelProperty(value = "流程实例id")
+	private String processInstanceId;
+	@ApiModelProperty(value = "流程模板id")
+	private String processDefinitionId;
+	@ApiModelProperty(value = "是否显示撤回按钮")
+	private Integer isWithdraw;
 }

+ 2 - 0
src/main/java/com/qdport/query/PolicyCaseQuery.java

@@ -34,4 +34,6 @@ public class PolicyCaseQuery implements Serializable {
             pattern = "yyyy-MM-dd HH:mm:ss"
     )
     private Date endCreateTime;
+
+    private Long deptId;
 }

+ 2 - 0
src/main/java/com/qdport/query/PolicyShareQuery.java

@@ -50,4 +50,6 @@ public class PolicyShareQuery implements Serializable {
             pattern = "yyyy-MM-dd HH:mm:ss"
     )
     private Date endCreateTime;
+
+    private Long deptId;
 }

+ 2 - 0
src/main/java/com/qdport/query/PolicyStriveQuery.java

@@ -52,4 +52,6 @@ public class PolicyStriveQuery implements Serializable {
     private Integer rewardType;
     @Wrapper
     private Integer isCase;
+
+    private Long deptId;
 }

+ 8 - 0
src/main/java/com/qdport/service/PolicyCaseService.java

@@ -21,4 +21,12 @@ public interface PolicyCaseService  extends IService<PolicyCase> {
     void update(PolicyCaseVO vo);
 
     void delete(List<String> idList);
+
+    void saveApprove(PolicyCaseVO vo);
+
+    void approve(PolicyCaseVO vo);
+
+    void refuse(PolicyCaseVO vo);
+
+    void withdraw(PolicyCaseVO vo);
 }

+ 8 - 0
src/main/java/com/qdport/service/PolicyStriveService.java

@@ -24,4 +24,12 @@ public interface PolicyStriveService  extends IService<PolicyStrive> {
     void updateById(PolicyStriveVO vo);
 
     void delete(List<String> idList);
+
+    void saveApprove(PolicyStriveVO vo);
+
+    void approve(PolicyStriveVO vo);
+
+    void refuse(PolicyStriveVO vo);
+
+    void withdraw(PolicyStriveVO vo);
 }

+ 2 - 2
src/main/java/com/qdport/service/PolicyTodoService.java

@@ -27,9 +27,9 @@ public interface PolicyTodoService extends IService<PolicyTodo> {
 
     void save(PolicyShareVO vo) throws ExecutionException, InterruptedException;
 
-    void save(PolicyStriveVO vo);
+    void save(PolicyStriveVO vo) throws ExecutionException, InterruptedException;
 
-    void save(PolicyCaseVO vo);
+    void save(PolicyCaseVO vo) throws ExecutionException, InterruptedException;
 
     void update(PolicyTodoVO vo);
 

+ 130 - 1
src/main/java/com/qdport/service/impl/PolicyCaseServiceImpl.java

@@ -1,16 +1,24 @@
 package com.qdport.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qdport.entity.PolicyStrive;
+import com.qdport.entity.PolicyTodo;
 import com.qdport.enums.QDPortEnum;
+import com.qdport.mapper.PolicyTodoMapper;
+import com.qdport.modules.system.entity.SysUser;
+import com.qdport.modules.system.service.TSysUserService;
 import com.qdport.query.QueryWrapperBuilder;
 import com.qdport.service.PolicyFlowNoService;
 import com.qdport.service.PolicyStriveService;
 import com.qdport.util.StringUtil;
+import com.qdport.vo.PolicyStriveVO;
+import com.qdport.workflow.process.model.WfProcess;
+import com.qdport.workflow.process.service.IWfProcessService;
 import lombok.AllArgsConstructor;
 import com.qdport.entity.PolicyCase;
 import com.qdport.query.PolicyCaseQuery;
@@ -19,6 +27,8 @@ import com.qdport.mapper.PolicyCaseMapper;
 import com.qdport.service.PolicyCaseService;
 import com.qdport.wrapper.PolicyCaseWrapper;
 import com.qdport.core.tool.utils.BeanUtil;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -40,6 +50,14 @@ public class PolicyCaseServiceImpl extends ServiceImpl<PolicyCaseMapper, PolicyC
     private PolicyFlowNoService policyFlowNoService;
     @Resource
     private PolicyStriveService policyStriveService;
+    @Resource
+    private IWfProcessService processService;
+    @Resource
+    private PolicyTodoMapper policyTodoMapper;
+    @Resource
+    private TSysUserService sysUserService;
+    @Value("${processDefKey.policyCase}")
+    private String processDefKey;
 
     @Override
     public IPage<PolicyCaseVO> page(PolicyCaseQuery query) {
@@ -78,6 +96,14 @@ public class PolicyCaseServiceImpl extends ServiceImpl<PolicyCaseMapper, PolicyC
                 wrapper.in("STRIVE_ID", idList);
             }
         }
+
+        if (StringUtil.isNotEmpty(query.getDeptId())) {
+            QueryWrapper<SysUser> userWrapper = new QueryWrapper<>();
+            userWrapper.eq("dept_id", query.getDeptId());
+            List<SysUser> userList = sysUserService.list(userWrapper);
+            List<String> userIdList = userList.stream().map(SysUser::getId).collect(Collectors.toList());
+            wrapper.in("create_id", userIdList);
+        }
         return wrapper;
     }
 
@@ -98,10 +124,10 @@ public class PolicyCaseServiceImpl extends ServiceImpl<PolicyCaseMapper, PolicyC
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void update(PolicyCaseVO vo) {
         vo.setUpdateTime(new Date());
         PolicyCase entity = BeanUtil.copy(vo, PolicyCase.class);
-
         updateById(entity);
     }
 
@@ -117,4 +143,107 @@ public class PolicyCaseServiceImpl extends ServiceImpl<PolicyCaseMapper, PolicyC
         }
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveApprove(PolicyCaseVO vo) {
+        JSONObject body = new JSONObject();
+        String processInstanceId = processService.startProcessInstanceByKey(processDefKey, vo.getId(), body);
+        String processTaskId = processService.getTaskIdByProcessInstanceId(processInstanceId);
+
+        vo.setProcessInstanceId(processInstanceId);
+        vo.setProcessTaskId(processTaskId);
+
+        if (StringUtil.isEmpty(vo.getId())) {
+            vo.setStatus(QDPortEnum.POLICY_CASE_STATUS_APPROVE.getValue());
+            save(vo);
+        } else {
+            vo.setStatus(QDPortEnum.POLICY_CASE_STATUS_APPROVE.getValue());
+           update(vo);
+        }
+        PolicyStrive strive = policyStriveService.getById(vo.getStriveId());
+        PolicyStriveVO striveVO = new PolicyStriveVO();
+        BeanUtils.copyProperties(strive, striveVO);
+        vo.setPolicyStrive(striveVO);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void approve(PolicyCaseVO vo) {
+        PolicyCase policyCase = baseMapper.selectById(vo.getId());
+        vo.setProcessInstanceId(policyCase.getProcessInstanceId());
+        vo.setProcessTaskId(policyCase.getProcessTaskId());
+
+        WfProcess process = new WfProcess();
+        process.setTaskId(vo.getProcessTaskId());
+        process.setProcessDefinitionId(vo.getProcessDefinitionId());
+        process.setProcessInstanceId(vo.getProcessInstanceId());
+        process.setPass(true);
+        process.setComment("同意");
+        processService.completeTask(process);
+
+        String processTaskId = processService.getTaskIdByProcessInstanceId(vo.getProcessInstanceId());
+        vo.setProcessTaskId(processTaskId);
+
+        vo.setStatus(QDPortEnum.POLICY_CASE_STATUS_DONE.getValue());
+        vo.setUpdateTime(new Date());
+        updateById(vo);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void refuse(PolicyCaseVO vo) {
+        PolicyCase policyCase = baseMapper.selectById(vo.getId());
+        vo.setProcessDefinitionId(policyCase.getProcessDefinitionId());
+        vo.setProcessTaskId(policyCase.getProcessTaskId());
+
+        WfProcess process = new WfProcess();
+        process.setTaskId(vo.getProcessTaskId());
+        process.setProcessDefinitionId(vo.getProcessDefinitionId());
+        process.setProcessInstanceId(vo.getProcessInstanceId());
+        process.setPass(false);
+        process.setComment(vo.getComment());
+        processService.completeTask(process);
+
+        String processTaskId = processService.getTaskIdByProcessInstanceId(vo.getProcessInstanceId());
+        vo.setProcessTaskId(processTaskId);
+
+        vo.setStatus(QDPortEnum.POLICY_CASE_STATUS_INACTIVE.getValue());
+        vo.setUpdateTime(new Date());
+        updateById(vo);
+
+        QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
+        todoQueryWrapper.eq("REF_ID", vo.getId());
+        todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_CASE.getValue());
+        todoQueryWrapper.eq("TODO_TYPE", QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
+        todoQueryWrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
+        PolicyTodo todo = new PolicyTodo();
+        todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_DONE.getValue());
+        policyTodoMapper.update(todo, todoQueryWrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void withdraw(PolicyCaseVO vo) {
+        PolicyCase policyCase = baseMapper.selectById(vo.getId());
+        vo.setProcessTaskId(policyCase.getProcessTaskId());
+
+        WfProcess process = new WfProcess();
+        process.setTaskId(vo.getProcessTaskId());
+        process.setWithdrawType("wf_withdraw_end");
+        processService.terminateProcess(process);
+
+        vo.setStatus(QDPortEnum.POLICY_CASE_STATUS_ACTIVE.getValue());
+        vo.setUpdateTime(new Date());
+        updateById(vo);
+
+        QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
+        todoQueryWrapper.eq("REF_ID", vo.getId());
+        todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_CASE.getValue());
+        todoQueryWrapper.eq("TODO_TYPE", QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
+        todoQueryWrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
+        PolicyTodo todo = new PolicyTodo();
+        todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_CANCEL.getValue());
+        policyTodoMapper.update(todo, todoQueryWrapper);
+    }
+
 }

+ 14 - 5
src/main/java/com/qdport/service/impl/PolicyShareServiceImpl.java

@@ -8,6 +8,7 @@ import com.qdport.entity.PolicyFile;
 import com.qdport.entity.PolicyTodo;
 import com.qdport.mapper.PolicyTodoMapper;
 import com.qdport.modules.system.entity.SysUser;
+import com.qdport.modules.system.service.SysDeptService;
 import com.qdport.modules.system.service.TSysUserService;
 import com.qdport.query.QueryWrapperBuilder;
 import com.qdport.service.PolicyFileService;
@@ -54,13 +55,9 @@ public class PolicyShareServiceImpl extends ServiceImpl<PolicyShareMapper, Polic
     @Resource
     private PolicyTodoMapper policyTodoMapper;
     @Resource
-    private HistoryService historyService;
-    @Resource
     private TSysUserService sysUserService;
-    @Value("${policyShare.processDefKey}")
+    @Value("${processDefKey.policyShare}")
     private String processDefKey;
-    @Value("${policyShare.processDefId}")
-    private String processDefId;
 
     @Override
     public IPage<PolicyShareVO> page(PolicyShareQuery query) {
@@ -72,10 +69,19 @@ public class PolicyShareServiceImpl extends ServiceImpl<PolicyShareMapper, Polic
     private QueryWrapper<PolicyShare> getWrapper(PolicyShareQuery query) {
         QueryWrapper<PolicyShare> wrapper = QueryWrapperBuilder.buildQueryWrapper(query, PolicyShare.class);
         wrapper.orderByDesc("CREATE_TIME");
+
+        if (StringUtil.isNotEmpty(query.getDeptId())) {
+            QueryWrapper<SysUser> userWrapper = new QueryWrapper<>();
+            userWrapper.eq("dept_id", query.getDeptId());
+            List<SysUser> userList = sysUserService.list(userWrapper);
+            List<String> userIdList = userList.stream().map(SysUser::getId).collect(Collectors.toList());
+            wrapper.in("create_id", userIdList);
+        }
         return wrapper;
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void save(PolicyShareVO vo) {
         String flowNo = policyFlowNoService.getFlowNo(QDPortEnum.FLOWNO_TYPE_SHARE.getValue());
         vo.setCreateTime(new Date());
@@ -128,6 +134,7 @@ public class PolicyShareServiceImpl extends ServiceImpl<PolicyShareMapper, Polic
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void delete(List<String> idList) {
         removeByIds(idList);
 
@@ -174,6 +181,7 @@ public class PolicyShareServiceImpl extends ServiceImpl<PolicyShareMapper, Polic
 
         String processTaskId = processService.getTaskIdByProcessInstanceId(vo.getProcessInstanceId());
         vo.setProcessTaskId(processTaskId);
+
         updateById(vo);
 
     }
@@ -195,6 +203,7 @@ public class PolicyShareServiceImpl extends ServiceImpl<PolicyShareMapper, Polic
 
         String processTaskId = processService.getTaskIdByProcessInstanceId(vo.getProcessInstanceId());
         vo.setProcessTaskId(processTaskId);
+
         vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_INACTIVE.getValue());
         vo.setUpdateTime(new Date());
         updateById(vo);

+ 126 - 0
src/main/java/com/qdport/service/impl/PolicyStriveServiceImpl.java

@@ -5,13 +5,19 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qdport.entity.PolicyFile;
+import com.qdport.entity.PolicyTodo;
 import com.qdport.enums.QDPortEnum;
+import com.qdport.mapper.PolicyTodoMapper;
+import com.qdport.modules.system.entity.SysUser;
+import com.qdport.modules.system.service.TSysUserService;
 import com.qdport.query.QueryWrapperBuilder;
 import com.qdport.service.PolicyFileService;
 import com.qdport.service.PolicyFlowNoService;
 import com.qdport.util.StringUtil;
 import com.qdport.vo.PolicyFileVO;
 import com.qdport.vo.PolicyShareVO;
+import com.qdport.workflow.process.model.WfProcess;
+import com.qdport.workflow.process.service.IWfProcessService;
 import lombok.AllArgsConstructor;
 import com.qdport.entity.PolicyStrive;
 import com.qdport.query.PolicyStriveQuery;
@@ -21,6 +27,7 @@ import com.qdport.service.PolicyStriveService;
 import com.qdport.wrapper.PolicyStriveWrapper;
 import com.qdport.core.tool.utils.Func;
 import com.qdport.core.tool.utils.BeanUtil;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -29,6 +36,7 @@ import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 政策争取
@@ -42,6 +50,14 @@ public class PolicyStriveServiceImpl extends ServiceImpl<PolicyStriveMapper, Pol
     private PolicyFlowNoService policyFlowNoService;
     @Resource
     private PolicyFileService policyFileService;
+    @Resource
+    private IWfProcessService processService;
+    @Resource
+    private PolicyTodoMapper policyTodoMapper;
+    @Resource
+    private TSysUserService sysUserService;
+    @Value("${processDefKey.policyStrive}")
+    private String processDefKey;
     private final static BigDecimal decimal_50w = new BigDecimal(500000);
     private final static BigDecimal decimal_200w = new BigDecimal(2000000);
     private final static BigDecimal decimal_500w = new BigDecimal(5000000);
@@ -69,10 +85,19 @@ public class PolicyStriveServiceImpl extends ServiceImpl<PolicyStriveMapper, Pol
     private QueryWrapper<PolicyStrive> getWrapper(PolicyStriveQuery query) {
         QueryWrapper<PolicyStrive> wrapper = QueryWrapperBuilder.buildQueryWrapper(query, PolicyStrive.class);
         wrapper.orderByDesc("CREATE_TIME");
+
+        if (StringUtil.isNotEmpty(query.getDeptId())) {
+            QueryWrapper<SysUser> userWrapper = new QueryWrapper<>();
+            userWrapper.eq("dept_id", query.getDeptId());
+            List<SysUser> userList = sysUserService.list(userWrapper);
+            List<String> userIdList = userList.stream().map(SysUser::getId).collect(Collectors.toList());
+            wrapper.in("create_id", userIdList);
+        }
         return wrapper;
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void save(PolicyStriveVO vo) {
         String flowNo = policyFlowNoService.getFlowNo(QDPortEnum.FLOWNO_TYPE_STRIVE.getValue());
         vo.setCreateTime(new Date());
@@ -98,6 +123,7 @@ public class PolicyStriveServiceImpl extends ServiceImpl<PolicyStriveMapper, Pol
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void update(PolicyStriveVO vo) {
         vo.setUpdateTime(new Date());
         PolicyStrive entity = BeanUtil.copy(vo, PolicyStrive.class);
@@ -118,6 +144,7 @@ public class PolicyStriveServiceImpl extends ServiceImpl<PolicyStriveMapper, Pol
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void updateById(PolicyStriveVO vo) {
         vo.setUpdateTime(new Date());
         updateRewardData(vo);
@@ -131,6 +158,105 @@ public class PolicyStriveServiceImpl extends ServiceImpl<PolicyStriveMapper, Pol
         removeByIds(idList);
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveApprove(PolicyStriveVO vo) {
+        JSONObject body = new JSONObject();
+        String processInstanceId = processService.startProcessInstanceByKey(processDefKey, vo.getId(), body);
+        String processTaskId = processService.getTaskIdByProcessInstanceId(processInstanceId);
+
+        vo.setProcessInstanceId(processInstanceId);
+        vo.setProcessTaskId(processTaskId);
+
+        if (StringUtil.isEmpty(vo.getId())) {
+            vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_APPROVE.getValue());
+            save(vo);
+        } else {
+            vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_APPROVE.getValue());
+            update(vo);
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void approve(PolicyStriveVO vo) {
+        PolicyStrive strive = baseMapper.selectById(vo.getId());
+        vo.setProcessInstanceId(strive.getProcessInstanceId());
+        vo.setProcessTaskId(strive.getProcessTaskId());
+
+        WfProcess process = new WfProcess();
+        process.setTaskId(vo.getProcessTaskId());
+        process.setProcessDefinitionId(vo.getProcessDefinitionId());
+        process.setProcessInstanceId(vo.getProcessInstanceId());
+        process.setPass(true);
+        process.setComment("同意");
+        processService.completeTask(process);
+
+        String processTaskId = processService.getTaskIdByProcessInstanceId(vo.getProcessInstanceId());
+        vo.setProcessTaskId(processTaskId);
+
+        vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_DONE.getValue());
+        vo.setUpdateTime(new Date());
+        updateById(vo);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void refuse(PolicyStriveVO vo) {
+        PolicyStrive strive = baseMapper.selectById(vo.getId());
+        vo.setProcessDefinitionId(strive.getProcessDefinitionId());
+        vo.setProcessTaskId(strive.getProcessTaskId());
+
+        WfProcess process = new WfProcess();
+        process.setTaskId(vo.getProcessTaskId());
+        process.setProcessDefinitionId(vo.getProcessDefinitionId());
+        process.setProcessInstanceId(vo.getProcessInstanceId());
+        process.setPass(false);
+        process.setComment(vo.getComment());
+        processService.completeTask(process);
+
+        String processTaskId = processService.getTaskIdByProcessInstanceId(vo.getProcessInstanceId());
+        vo.setProcessTaskId(processTaskId);
+
+        vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_INACTIVE.getValue());
+        vo.setUpdateTime(new Date());
+        updateById(vo);
+
+        QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
+        todoQueryWrapper.eq("REF_ID", vo.getId());
+        todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_STRIVE.getValue());
+        todoQueryWrapper.eq("TODO_TYPE", QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
+        todoQueryWrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
+        PolicyTodo todo = new PolicyTodo();
+        todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_DONE.getValue());
+        policyTodoMapper.update(todo, todoQueryWrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void withdraw(PolicyStriveVO vo) {
+        PolicyStrive strive = baseMapper.selectById(vo.getId());
+        vo.setProcessTaskId(strive.getProcessTaskId());
+
+        WfProcess process = new WfProcess();
+        process.setTaskId(vo.getProcessTaskId());
+        process.setWithdrawType("wf_withdraw_end");
+        processService.terminateProcess(process);
+
+        vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_ACTIVE.getValue());
+        vo.setUpdateTime(new Date());
+        updateById(vo);
+
+        QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
+        todoQueryWrapper.eq("REF_ID", vo.getId());
+        todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_STRIVE.getValue());
+        todoQueryWrapper.eq("TODO_TYPE", QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
+        todoQueryWrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
+        PolicyTodo todo = new PolicyTodo();
+        todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_CANCEL.getValue());
+        policyTodoMapper.update(todo, todoQueryWrapper);
+    }
+
     private void updateRewardData(PolicyStriveVO vo) {
         Integer rewardType = vo.getRewardType();
         Integer isLand = vo.getIsLand();

+ 97 - 32
src/main/java/com/qdport/service/impl/PolicyTodoServiceImpl.java

@@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qdport.entity.PolicyStrive;
 import com.qdport.enums.QDPortEnum;
+import com.qdport.mapper.PolicyCaseMapper;
 import com.qdport.mapper.PolicyShareMapper;
+import com.qdport.mapper.PolicyStriveMapper;
 import com.qdport.modules.system.entity.SysUser;
 import com.qdport.modules.system.service.TSysUserService;
 import com.qdport.query.QueryWrapperBuilder;
@@ -50,7 +52,10 @@ public class PolicyTodoServiceImpl extends ServiceImpl<PolicyTodoMapper, PolicyT
     private TSysUserService sysUserService;
     @Resource
     private PolicyShareMapper policyShareMapper;
-
+    @Resource
+    private PolicyStriveMapper policyStriveMapper;
+    @Resource
+    private PolicyCaseMapper policyCaseMapper;
 
     @Override
     public IPage<PolicyTodoVO> page(PolicyTodoQuery query) {
@@ -123,43 +128,103 @@ public class PolicyTodoServiceImpl extends ServiceImpl<PolicyTodoMapper, PolicyT
     }
 
     @Override
-    public void save(PolicyStriveVO vo) {
+    @Transactional(rollbackFor = Exception.class)
+    public void save(PolicyStriveVO vo) throws ExecutionException, InterruptedException {
+        QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
+        todoQueryWrapper.eq("REF_ID", vo.getId());
+        todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_STRIVE.getValue());
+        todoQueryWrapper.eq("TODO_TYPE", QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
+        todoQueryWrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
         PolicyTodo todo = new PolicyTodo();
-        todo.setRefId(vo.getId());
-        todo.setRefType(QDPortEnum.POLICY_TODO_REFTYPE_POLICY_STRIVE.getValue());
-        todo.setCreateTime(new Date());
-        todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
-        todo.setTodoType(QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
-//        todo.setTodoUserId((long) 1);
-        todo.setZcAbstractContent(vo.getAbstractContent());
-        todo.setZcContactPhone(vo.getContactPhone());
-        todo.setZcCreateId(vo.getCreateId());
-        todo.setZcCreateName(vo.getCreateName());
-        todo.setZcCreateTime(vo.getCreateTime());
-        todo.setZcName(vo.getName());
-        todo.setZcType(vo.getZcType());
-        baseMapper.insert(todo);
+        todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_DONE.getValue());
+        update(todo, todoQueryWrapper);
+
+        Future<List<WfProcess>> flowFuture = processService.historyFlowList(vo.getProcessInstanceId(), null, null);
+        List<WfProcess> ll = flowFuture.get();
+        List<WfProcess> filter = ll.stream().filter(wfProcess ->
+                QDPortEnum.POLICY_PROCESS_TYPE_USER_TASK.getValue().equals(wfProcess.getHistoryActivityType())
+                        && StringUtil.isEmpty(wfProcess.getEndTime())
+        ).collect(Collectors.toList());
+
+        if (!filter.isEmpty()) {
+            WfProcess process = filter.get(0);
+            String[] assignNames = process.getAssigneeName().split("/");
+            for (String username : assignNames) {
+                QueryWrapper<SysUser> sysUserWrapper = new QueryWrapper<>();
+                sysUserWrapper.eq("username", username);
+                SysUser user = sysUserService.getOne(sysUserWrapper);
+
+                todo = new PolicyTodo();
+                todo.setRefId(vo.getId());
+                todo.setRefType(QDPortEnum.POLICY_TODO_REFTYPE_POLICY_STRIVE.getValue());
+                todo.setCreateTime(new Date());
+                todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
+                todo.setTodoType(QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
+                todo.setTodoUserId(user.getId());
+                todo.setZcAbstractContent(vo.getAbstractContent());
+                todo.setZcContactPhone(vo.getContactPhone());
+                todo.setZcCreateId(vo.getCreateId());
+                todo.setZcCreateName(vo.getCreateName());
+                todo.setZcCreateTime(vo.getCreateTime());
+                todo.setZcName(vo.getName());
+                todo.setZcType(vo.getZcType());
+                baseMapper.insert(todo);
+            }
+        } else {
+            vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_DONE.getValue());
+            vo.setUpdateTime(new Date());
+            policyStriveMapper.updateById(vo);
+        }
     }
 
     @Override
-    public void save(PolicyCaseVO vo) {
+    public void save(PolicyCaseVO vo) throws ExecutionException, InterruptedException {
+        QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
+        todoQueryWrapper.eq("REF_ID", vo.getId());
+        todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_CASE.getValue());
+        todoQueryWrapper.eq("TODO_TYPE", QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
+        todoQueryWrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
+        PolicyTodo todo = new PolicyTodo();
+        todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_DONE.getValue());
+        update(todo, todoQueryWrapper);
+
+        Future<List<WfProcess>> flowFuture = processService.historyFlowList(vo.getProcessInstanceId(), null, null);
+        List<WfProcess> ll = flowFuture.get();
+        List<WfProcess> filter = ll.stream().filter(wfProcess ->
+                QDPortEnum.POLICY_PROCESS_TYPE_USER_TASK.getValue().equals(wfProcess.getHistoryActivityType())
+                        && StringUtil.isEmpty(wfProcess.getEndTime())
+        ).collect(Collectors.toList());
+
         PolicyStrive policyStrive = vo.getPolicyStrive();
+        if (!filter.isEmpty()) {
+            WfProcess process = filter.get(0);
+            String[] assignNames = process.getAssigneeName().split("/");
+            for (String username : assignNames) {
+                QueryWrapper<SysUser> sysUserWrapper = new QueryWrapper<>();
+                sysUserWrapper.eq("username", username);
+                SysUser user = sysUserService.getOne(sysUserWrapper);
 
-        PolicyTodo todo = new PolicyTodo();
-        todo.setRefId(vo.getId());
-        todo.setRefType(QDPortEnum.POLICY_TODO_REFTYPE_POLICY_CASE.getValue());
-        todo.setCreateTime(new Date());
-        todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
-        todo.setTodoType(QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
-//        todo.setTodoUserId((long) 1);
-        todo.setZcAbstractContent(policyStrive.getAbstractContent());
-        todo.setZcContactPhone(policyStrive.getContactPhone());
-        todo.setZcCreateId(policyStrive.getCreateId());
-        todo.setZcCreateName(policyStrive.getCreateName());
-        todo.setZcCreateTime(vo.getCreateTime());
-        todo.setZcName(policyStrive.getName());
-        todo.setZcType(policyStrive.getZcType());
-        baseMapper.insert(todo);
+                todo = new PolicyTodo();
+                todo.setRefId(vo.getId());
+                todo.setRefType(QDPortEnum.POLICY_TODO_REFTYPE_POLICY_CASE.getValue());
+                todo.setCreateTime(new Date());
+                todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
+                todo.setTodoType(QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
+                todo.setTodoUserId(user.getId());
+                todo.setZcAbstractContent(policyStrive.getAbstractContent());
+                todo.setZcContactPhone(policyStrive.getContactPhone());
+                todo.setZcCreateId(policyStrive.getCreateId());
+                todo.setZcCreateName(policyStrive.getCreateName());
+                todo.setZcCreateTime(vo.getCreateTime());
+                todo.setZcName(policyStrive.getName());
+                todo.setZcType(policyStrive.getZcType());
+                baseMapper.insert(todo);
+            }
+        } else {
+            vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_DONE.getValue());
+            vo.setUpdateTime(new Date());
+            policyCaseMapper.updateById(vo);
+        }
     }
 
 

+ 7 - 4
src/main/java/com/qdport/vo/PolicyCaseVO.java

@@ -1,5 +1,6 @@
 package com.qdport.vo;
 import com.qdport.entity.PolicyStrive;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import com.qdport.entity.PolicyCase;
@@ -17,12 +18,14 @@ import java.util.List;
 @EqualsAndHashCode(callSuper = true)
 public class PolicyCaseVO extends PolicyCase {
 	private static final long serialVersionUID = 1L;
-
+	@ApiModelProperty(value = "部门名称")
 	private String deptName;
-
+	@ApiModelProperty(value = "公司名称")
 	private String companyName;
-
+	@ApiModelProperty(value = "附件")
 	private List<PolicyFileVO> fileList = new ArrayList<>();
-
+	@ApiModelProperty(value = "政策争取")
 	private PolicyStriveVO policyStrive;
+	@ApiModelProperty(value = "意见")
+	private String comment;
 }

+ 2 - 0
src/main/java/com/qdport/vo/PolicyStriveVO.java

@@ -26,4 +26,6 @@ public class PolicyStriveVO extends PolicyStrive {
 	private List<PolicyFileVO> fileList = new ArrayList<>();
 	@ApiModelProperty(value = "excel的远程路径")
 	private String excelUrl;
+	@ApiModelProperty(value = "意见")
+	private String comment;
 }

+ 4 - 3
src/main/resources/application-dev.yml

@@ -91,7 +91,8 @@ flowable:
   custom-mybatis-x-m-l-mappers:
     - com/qdport/workflow/process/mapper/WfProcessDefinition.xml
 
-policyShare:
-  processDefKey: "process_nSFfWHBErDdKJsGEQByHGkd5wMNp3GF7"
-  processDefId: "f11f6111db638aea1f4b44ac768834b9"
+processDefKey:
+  policyShare: "process_nSFfWHBErDdKJsGEQByHGkd5wMNp3GF7"
+  policyStrive: "process_nSFfWHBErDdKJsGEQByHGkd5wMNp3GF7"
+  policyCase: "process_nSFfWHBErDdKJsGEQByHGkd5wMNp3GF7"