瀏覽代碼

id换类型

wanghongzhi 1 年之前
父節點
當前提交
7d0da230e3
共有 22 個文件被更改,包括 327 次插入136 次删除
  1. 7 4
      src/main/java/com/qdport/controller/ImportDataController.java
  2. 13 7
      src/main/java/com/qdport/controller/PolicyCaseController.java
  3. 4 2
      src/main/java/com/qdport/controller/PolicyFileController.java
  4. 41 66
      src/main/java/com/qdport/controller/PolicyShareController.java
  5. 11 6
      src/main/java/com/qdport/controller/PolicyStriveController.java
  6. 3 2
      src/main/java/com/qdport/controller/PolicySystemController.java
  7. 8 4
      src/main/java/com/qdport/controller/PolicyTodoController.java
  8. 3 0
      src/main/java/com/qdport/entity/PolicyShare.java
  9. 1 4
      src/main/java/com/qdport/entity/PolicyTodo.java
  10. 2 0
      src/main/java/com/qdport/enums/QDPortEnum.java
  11. 8 0
      src/main/java/com/qdport/service/PolicyShareService.java
  12. 1 0
      src/main/java/com/qdport/service/PolicyStriveService.java
  13. 2 1
      src/main/java/com/qdport/service/PolicyTodoService.java
  14. 5 3
      src/main/java/com/qdport/service/impl/PolicyCaseServiceImpl.java
  15. 0 1
      src/main/java/com/qdport/service/impl/PolicyFileServiceImpl.java
  16. 0 1
      src/main/java/com/qdport/service/impl/PolicyFlowNoServiceImpl.java
  17. 129 7
      src/main/java/com/qdport/service/impl/PolicyShareServiceImpl.java
  18. 7 3
      src/main/java/com/qdport/service/impl/PolicyStriveServiceImpl.java
  19. 3 2
      src/main/java/com/qdport/service/impl/PolicySystemService.java
  20. 74 23
      src/main/java/com/qdport/service/impl/PolicyTodoServiceImpl.java
  21. 2 0
      src/main/java/com/qdport/vo/PolicyShareVO.java
  22. 3 0
      src/main/resources/application-dev.yml

+ 7 - 4
src/main/java/com/qdport/controller/ImportDataController.java

@@ -27,6 +27,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -35,11 +36,13 @@ import java.util.stream.Collectors;
 @RestController
 @RequestMapping("qdport-zcgx/import")
 @Api(value = "excel导入", tags = "excel导入")
-@AllArgsConstructor
 public class ImportDataController {
-    private final PolicyShareService policyShareService;
-    private final PolicyStriveService policyStriveService;
-    private final TSysUserService sysUserService;
+    @Resource
+    private PolicyShareService policyShareService;
+    @Resource
+    private PolicyStriveService policyStriveService;
+    @Resource
+    private TSysUserService sysUserService;
 
 
     @PostMapping("/policyShare")

+ 13 - 7
src/main/java/com/qdport/controller/PolicyCaseController.java

@@ -30,6 +30,7 @@ import com.qdport.core.tool.utils.Func;
 import com.qdport.core.boot.ctrl.QdportController;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import javax.annotation.Resource;
 import javax.validation.Valid;
 import java.util.Date;
 import java.util.List;
@@ -44,14 +45,19 @@ import java.util.Map;
 @RestController
 @RequestMapping("qdport-zcgx/case")
 @Api(value = "案例分享", tags = "案例分享")
-@AllArgsConstructor
 public class PolicyCaseController extends QdportController {
-    private final PolicyCaseService policyCaseService;
-    private final TSysUserService sysUserService;
-    private final PolicySystemService policySystemService;
-    private final PolicyFileService policyFileService;
-    private final PolicyTodoService policyTodoService;
-    private final PolicyStriveService policyStriveService;
+    @Resource
+    private PolicyCaseService policyCaseService;
+    @Resource
+    private TSysUserService sysUserService;
+    @Resource
+    private PolicySystemService policySystemService;
+    @Resource
+    private PolicyFileService policyFileService;
+    @Resource
+    private PolicyTodoService policyTodoService;
+    @Resource
+    private PolicyStriveService policyStriveService;
 
     /**
      * 分页

+ 4 - 2
src/main/java/com/qdport/controller/PolicyFileController.java

@@ -14,6 +14,8 @@ import com.qdport.core.tool.utils.Func;
 import com.qdport.core.tool.api.R;
 import com.qdport.core.boot.ctrl.QdportController;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import javax.annotation.Resource;
 import javax.validation.Valid;
 import java.util.List;
 
@@ -26,9 +28,9 @@ import java.util.List;
 @RestController
 @RequestMapping("qdport-zcgx/file")
 @Api(value = "文件存储", tags = "文件存储")
-@AllArgsConstructor
 public class PolicyFileController extends QdportController {
-    private final PolicyFileService policyFileService;
+    @Resource
+    private PolicyFileService policyFileService;
 
     /**
     * 分页

+ 41 - 66
src/main/java/com/qdport/controller/PolicyShareController.java

@@ -1,9 +1,11 @@
 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;
@@ -12,11 +14,18 @@ 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;
@@ -27,10 +36,12 @@ import com.qdport.core.tool.utils.Func;
 import com.qdport.core.boot.ctrl.QdportController;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import javax.annotation.Resource;
 import javax.validation.Valid;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.stream.Collectors;
 
 /**
  * 政策共享
@@ -41,14 +52,17 @@ import java.util.Map;
 @RestController
 @RequestMapping("qdport-zcgx/share")
 @Api(value = "政策共享", tags = "政策共享")
-@AllArgsConstructor
 public class PolicyShareController extends QdportController {
-    private final PolicyShareService policyShareService;
-    private final TSysUserService sysUserService;
-    private final PolicySystemService policySystemService;
-    private final PolicyFileService policyFileService;
-    private final PolicyTodoService policyTodoService;
-    private IWfProcessClient wfProcessClient;
+    @Resource
+    private PolicyShareService policyShareService;
+    @Resource
+    private TSysUserService sysUserService;
+    @Resource
+    private PolicySystemService policySystemService;
+    @Resource
+    private PolicyFileService policyFileService;
+    @Resource
+    private PolicyTodoService policyTodoService;
 
     /**
      * 分页
@@ -113,17 +127,8 @@ public class PolicyShareController extends QdportController {
 
     @PostMapping("/saveApprove")
     @ApiOperation(value = "新增并且提交", notes = "传入PolicyShare")
-    @Transactional(rollbackFor = Exception.class)
-    public R saveApprove(@RequestBody PolicyShareVO vo) {
-        if (StringUtil.isEmpty(vo.getId())) {
-            vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_APPROVE.getValue());
-            policyShareService.save(vo);
-        } else {
-            vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_APPROVE.getValue());
-            policyShareService.update(vo);
-        }
-//        wfProcessClient.startProcessByKey()
-
+    public R saveApprove(@RequestBody PolicyShareVO vo) throws ExecutionException, InterruptedException {
+        policyShareService.saveApprove(vo);
         policyTodoService.save(vo);
         return R.success("新增并且提交成功");
     }
@@ -132,7 +137,6 @@ public class PolicyShareController extends QdportController {
      * 修改
      */
     @PostMapping("/update")
-    @Transactional(rollbackFor = Exception.class)
     public R update(@RequestBody @Valid PolicyShareVO vo) {
         policyShareService.update(vo);
         return R.success("更新成功");
@@ -141,62 +145,33 @@ public class PolicyShareController extends QdportController {
     @PostMapping("/withdraw")
     @Transactional(rollbackFor = Exception.class)
     public R withdraw(@RequestBody @Valid PolicyShareVO vo) {
-        vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_ACTIVE.getValue());
-        vo.setUpdateTime(new Date());
-        policyShareService.updateById(vo);
-
-        QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
-        todoQueryWrapper.eq("REF_ID", vo.getId());
-        todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_SHARE.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);
+        policyShareService.withdraw(vo);
         return R.success("撤回成功");
     }
 
     @PostMapping("/approve")
-    @Transactional(rollbackFor = Exception.class)
-    public R approve(@RequestBody @Valid PolicyShareVO vo) {
-        vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_DONE.getValue());
-        vo.setUpdateTime(new Date());
-        policyShareService.updateById(vo);
-
-        QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
-        todoQueryWrapper.eq("REF_ID", vo.getId());
-        todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_SHARE.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);
-
+    public R approve(@RequestBody @Valid PolicyShareVO vo) throws ExecutionException, InterruptedException {
+        vo.setIsWithdraw(0);
+        policyShareService.approve(vo);
+        policyTodoService.save(vo);
         return R.success("更新成功");
     }
 
     @PostMapping("/refuse")
-    @Transactional(rollbackFor = Exception.class)
     public R refuse(@RequestBody @Valid PolicyShareVO vo) {
-        vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_INACTIVE.getValue());
-        vo.setUpdateTime(new Date());
-        policyShareService.updateById(vo);
-
-        QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
-        todoQueryWrapper.eq("REF_ID", vo.getId());
-        todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_SHARE.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);
+        policyShareService.refuse(vo);
         return R.success("更新成功");
     }
 
+    @PostMapping("/resubmit")
+    public R resubmit(@RequestBody @Valid PolicyShareVO vo) throws ExecutionException, InterruptedException {
+        vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_APPROVE.getValue());
+        policyShareService.approve(vo);
+        policyTodoService.save(vo);
+        return R.success("重新发起成功");
+    }
+
     /**
      * 删除
      */

+ 11 - 6
src/main/java/com/qdport/controller/PolicyStriveController.java

@@ -29,6 +29,7 @@ import com.qdport.core.tool.utils.Func;
 import com.qdport.core.boot.ctrl.QdportController;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import javax.annotation.Resource;
 import javax.validation.Valid;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -45,13 +46,17 @@ import java.util.Map;
 @RestController
 @RequestMapping("qdport-zcgx/strive")
 @Api(value = "政策争取", tags = "政策争取")
-@AllArgsConstructor
 public class PolicyStriveController extends QdportController {
-    private final PolicyStriveService policyStriveService;
-    private final TSysUserService sysUserService;
-    private final PolicySystemService policySystemService;
-    private final PolicyFileService policyFileService;
-    private final PolicyTodoService policyTodoService;
+    @Resource
+    private PolicyStriveService policyStriveService;
+    @Resource
+    private TSysUserService sysUserService;
+    @Resource
+    private PolicySystemService policySystemService;
+    @Resource
+    private PolicyFileService policyFileService;
+    @Resource
+    private PolicyTodoService policyTodoService;
 
     /**
      * 分页

+ 3 - 2
src/main/java/com/qdport/controller/PolicySystemController.java

@@ -10,14 +10,15 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
 import java.util.Map;
 
 @RestController
 @RequestMapping("qdport-zcgx/system")
 @Api(value = "系统", tags = "系统")
-@AllArgsConstructor
 public class PolicySystemController {
-    private final PolicySystemService policySystemService;
+    @Resource
+    private PolicySystemService policySystemService;
 
     @GetMapping("{deptId}")
     @ApiOperation(value = "查询用户所属部门", notes = "deptId")

+ 8 - 4
src/main/java/com/qdport/controller/PolicyTodoController.java

@@ -18,6 +18,8 @@ import com.qdport.core.tool.api.R;
 import com.qdport.core.tool.utils.Func;
 import com.qdport.core.boot.ctrl.QdportController;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import javax.annotation.Resource;
 import javax.validation.Valid;
 import java.util.List;
 import java.util.Map;
@@ -31,11 +33,13 @@ import java.util.Map;
 @RestController
 @RequestMapping("qdport-zcgx/todo")
 @Api(value = "政策待办", tags = "政策待办")
-@AllArgsConstructor
 public class PolicyTodoController extends QdportController {
-    private final PolicyTodoService policyTodoService;
-    private final TSysUserService sysUserService;
-    private final PolicySystemService policySystemService;
+    @Resource
+    private PolicyTodoService policyTodoService;
+    @Resource
+    private TSysUserService sysUserService;
+    @Resource
+    private PolicySystemService policySystemService;
 
     /**
     * 分页

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

@@ -149,6 +149,9 @@ public class PolicyShare implements Serializable {
 	)
 	private Long updateId;
 
+	@ApiModelProperty(value = "是否显示撤回按钮")
+    private Integer isWithdraw;
+
 	@ApiModelProperty(value = "解读内容")
 	private String decodeContent;
 

+ 1 - 4
src/main/java/com/qdport/entity/PolicyTodo.java

@@ -62,10 +62,7 @@ public class PolicyTodo implements Serializable {
 	* 待办处理人id
 	*/
     @ApiModelProperty(value = "待办处理人id")
-	@JsonSerialize(
-			using = ToStringSerializer.class
-	)
-	private Long todoUserId;
+	private String todoUserId;
 
 	/**
 	* 状态

+ 2 - 0
src/main/java/com/qdport/enums/QDPortEnum.java

@@ -40,6 +40,8 @@ public enum QDPortEnum {
 
     POLICY_TODO_TYPE_APPROVE("approve", "审核"),
 
+    POLICY_PROCESS_TYPE_USER_TASK("userTask", "已经审批通过的节点+正在审批的节点(去除箭头)"),
+
 
 
     ;

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

@@ -6,6 +6,7 @@ import com.qdport.query.PolicyShareQuery;
 import com.qdport.vo.PolicyShareVO;
 
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 
 /**
  * 政策共享
@@ -25,4 +26,11 @@ public interface PolicyShareService  extends IService<PolicyShare> {
 
     void delete(List<String> idList);
 
+    void saveApprove(PolicyShareVO vo) ;
+
+    void approve(PolicyShareVO vo);
+
+    void refuse(PolicyShareVO vo);
+
+    void withdraw(PolicyShareVO vo);
 }

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

@@ -1,5 +1,6 @@
 package com.qdport.service;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qdport.vo.PolicyShareVO;
 import com.qdport.vo.PolicyStriveVO;
 import com.qdport.query.PolicyStriveQuery;
 import com.qdport.entity.PolicyStrive;

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

@@ -11,6 +11,7 @@ import com.qdport.entity.PolicyTodo;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 
 /**
  * 政策待办
@@ -24,7 +25,7 @@ public interface PolicyTodoService extends IService<PolicyTodo> {
 
     void save(PolicyTodoVO vo);
 
-    void save(PolicyShareVO vo);
+    void save(PolicyShareVO vo) throws ExecutionException, InterruptedException;
 
     void save(PolicyStriveVO vo);
 

+ 5 - 3
src/main/java/com/qdport/service/impl/PolicyCaseServiceImpl.java

@@ -23,6 +23,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import javax.annotation.Resource;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -34,10 +35,11 @@ import java.util.stream.Collectors;
  * @since 1.0.0 2024-10-17
  */
 @Service
-@AllArgsConstructor
 public class PolicyCaseServiceImpl extends ServiceImpl<PolicyCaseMapper, PolicyCase> implements PolicyCaseService {
-    private final PolicyFlowNoService policyFlowNoService;
-    private final PolicyStriveService policyStriveService;
+    @Resource
+    private PolicyFlowNoService policyFlowNoService;
+    @Resource
+    private PolicyStriveService policyStriveService;
 
     @Override
     public IPage<PolicyCaseVO> page(PolicyCaseQuery query) {

+ 0 - 1
src/main/java/com/qdport/service/impl/PolicyFileServiceImpl.java

@@ -28,7 +28,6 @@ import java.util.stream.Collectors;
  * @since 1.0.0 2024-10-10
  */
 @Service
-@AllArgsConstructor
 public class PolicyFileServiceImpl extends ServiceImpl<PolicyFileMapper, PolicyFile> implements PolicyFileService {
 
     @Override

+ 0 - 1
src/main/java/com/qdport/service/impl/PolicyFlowNoServiceImpl.java

@@ -28,7 +28,6 @@ import java.util.List;
  * @since 1.0.0 2024-10-09
  */
 @Service
-@AllArgsConstructor
 public class PolicyFlowNoServiceImpl extends ServiceImpl<PolicyFlowNoMapper, PolicyFlowNo> implements PolicyFlowNoService {
     private static final DateTimeFormatter DFY_MD = DateTimeFormatter.ofPattern("yyyy-MM-dd");
     private static final DateTimeFormatter DFY_MD_2 = DateTimeFormatter.ofPattern("yyyyMMdd");

+ 129 - 7
src/main/java/com/qdport/service/impl/PolicyShareServiceImpl.java

@@ -1,29 +1,41 @@
 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.PolicyFile;
+import com.qdport.entity.PolicyTodo;
+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.service.PolicyShareService;
 import com.qdport.enums.QDPortEnum;
+import com.qdport.util.StringUtil;
 import com.qdport.vo.PolicyFileVO;
-import lombok.AllArgsConstructor;
+import com.qdport.workflow.process.model.WfProcess;
+import com.qdport.workflow.process.service.IWfProcessService;
 import com.qdport.entity.PolicyShare;
 import com.qdport.query.PolicyShareQuery;
 import com.qdport.vo.PolicyShareVO;
 import com.qdport.mapper.PolicyShareMapper;
 import com.qdport.wrapper.PolicyShareWrapper;
 import com.qdport.core.tool.utils.BeanUtil;
+import org.flowable.engine.HistoryService;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.Date;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.stream.Collectors;
 
 /**
  * 政策共享
@@ -32,11 +44,23 @@ import java.util.List;
  * @since 1.0.0 2024-09-30
  */
 @Service
-@AllArgsConstructor
 public class PolicyShareServiceImpl extends ServiceImpl<PolicyShareMapper, PolicyShare> implements PolicyShareService {
-
-    private final PolicyFlowNoService policyFlowNoService;
-    private final PolicyFileService policyFileService;
+    @Resource
+    private PolicyFlowNoService policyFlowNoService;
+    @Resource
+    private PolicyFileService policyFileService;
+    @Resource
+    private IWfProcessService processService;
+    @Resource
+    private PolicyTodoMapper policyTodoMapper;
+    @Resource
+    private HistoryService historyService;
+    @Resource
+    private TSysUserService sysUserService;
+    @Value("${policyShare.processDefKey}")
+    private String processDefKey;
+    @Value("${policyShare.processDefId}")
+    private String processDefId;
 
     @Override
     public IPage<PolicyShareVO> page(PolicyShareQuery query) {
@@ -76,6 +100,7 @@ public class PolicyShareServiceImpl extends ServiceImpl<PolicyShareMapper, Polic
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void update(PolicyShareVO vo) {
         vo.setUpdateTime(new Date());
         PolicyShare entity = BeanUtil.copy(vo, PolicyShare.class);
@@ -112,4 +137,101 @@ public class PolicyShareServiceImpl extends ServiceImpl<PolicyShareMapper, Polic
         policyFileService.remove(fileWrapper);
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveApprove(PolicyShareVO 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_SHARE_STATUS_APPROVE.getValue());
+            save(vo);
+        } else {
+            vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_APPROVE.getValue());
+            update(vo);
+        }
+
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void approve(PolicyShareVO vo) {
+        PolicyShare share = baseMapper.selectById(vo.getId());
+        vo.setProcessInstanceId(share.getProcessInstanceId());
+        vo.setProcessTaskId(share.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);
+        updateById(vo);
+
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void refuse(PolicyShareVO vo) {
+        PolicyShare share = baseMapper.selectById(vo.getId());
+        vo.setProcessDefinitionId(share.getProcessDefinitionId());
+        vo.setProcessTaskId(share.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_SHARE_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_SHARE.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(PolicyShareVO vo) {
+        PolicyShare share = baseMapper.selectById(vo.getId());
+        vo.setProcessTaskId(share.getProcessTaskId());
+
+        WfProcess process = new WfProcess();
+        process.setTaskId(vo.getProcessTaskId());
+        process.setWithdrawType("wf_withdraw_end");
+        processService.terminateProcess(process);
+
+        vo.setStatus(QDPortEnum.POLICY_SHARE_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_SHARE.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);
+    }
+
 }

+ 7 - 3
src/main/java/com/qdport/service/impl/PolicyStriveServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qdport.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -10,6 +11,7 @@ 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 lombok.AllArgsConstructor;
 import com.qdport.entity.PolicyStrive;
 import com.qdport.query.PolicyStriveQuery;
@@ -23,6 +25,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
@@ -34,10 +37,11 @@ import java.util.List;
  * @since 1.0.0 2024-10-14
  */
 @Service
-@AllArgsConstructor
 public class PolicyStriveServiceImpl extends ServiceImpl<PolicyStriveMapper, PolicyStrive> implements PolicyStriveService {
-    private final PolicyFlowNoService policyFlowNoService;
-    private final PolicyFileService policyFileService;
+    @Resource
+    private PolicyFlowNoService policyFlowNoService;
+    @Resource
+    private PolicyFileService policyFileService;
     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);

+ 3 - 2
src/main/java/com/qdport/service/impl/PolicySystemService.java

@@ -6,13 +6,14 @@ import com.qdport.modules.system.service.SysDeptService;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.Resource;
 import java.util.HashMap;
 import java.util.Map;
 
 @Component
-@AllArgsConstructor
 public class PolicySystemService {
-    private final SysDeptService deptService;
+    @Resource
+    private SysDeptService deptService;
 
     public Map<String, String> getDeptNameAndCompanyName(String deptId){
         Map<String, String> result = new HashMap<>();

+ 74 - 23
src/main/java/com/qdport/service/impl/PolicyTodoServiceImpl.java

@@ -5,8 +5,16 @@ 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.PolicyShareMapper;
+import com.qdport.modules.system.entity.SysUser;
+import com.qdport.modules.system.service.TSysUserService;
 import com.qdport.query.QueryWrapperBuilder;
+import com.qdport.service.PolicyShareService;
+import com.qdport.util.StringUtil;
 import com.qdport.vo.*;
+import com.qdport.workflow.core.utils.WfTaskUtil;
+import com.qdport.workflow.process.model.WfProcess;
+import com.qdport.workflow.process.service.IWfProcessService;
 import lombok.AllArgsConstructor;
 import com.qdport.entity.PolicyTodo;
 import com.qdport.query.PolicyTodoQuery;
@@ -14,23 +22,36 @@ import com.qdport.mapper.PolicyTodoMapper;
 import com.qdport.service.PolicyTodoService;
 import com.qdport.wrapper.PolicyTodoWrapper;
 import com.qdport.core.tool.utils.BeanUtil;
+import org.flowable.engine.HistoryService;
+import org.flowable.task.api.history.HistoricTaskInstance;
+import org.flowable.task.api.history.HistoricTaskInstanceQuery;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import javax.annotation.Resource;
 import java.util.Date;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
 import java.util.stream.Collectors;
 
 /**
  * 政策待办
  *
- * @author yuheng 
+ * @author yuheng
  * @since 1.0.0 2024-10-11
  */
 @Service
-@AllArgsConstructor
 public class PolicyTodoServiceImpl extends ServiceImpl<PolicyTodoMapper, PolicyTodo> implements PolicyTodoService {
+    @Resource
+    private IWfProcessService processService;
+    @Resource
+    private TSysUserService sysUserService;
+    @Resource
+    private PolicyShareMapper policyShareMapper;
+
+
     @Override
     public IPage<PolicyTodoVO> page(PolicyTodoQuery query) {
         IPage<PolicyTodo> page = new Page<>(query.getPage(), query.getSize());
@@ -38,37 +59,67 @@ public class PolicyTodoServiceImpl extends ServiceImpl<PolicyTodoMapper, PolicyT
         return PolicyTodoWrapper.build().pageVO(page);
     }
 
-    private QueryWrapper<PolicyTodo> getWrapper(PolicyTodoQuery query){
+    private QueryWrapper<PolicyTodo> getWrapper(PolicyTodoQuery query) {
         QueryWrapper<PolicyTodo> wrapper = QueryWrapperBuilder.buildQueryWrapper(query, PolicyTodo.class);
-        wrapper.eq("STATUS",QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
+        wrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
         wrapper.orderByDesc("CREATE_TIME");
         return wrapper;
     }
 
     @Override
     public void save(PolicyTodoVO vo) {
-        PolicyTodo entity = BeanUtil.copy(vo,PolicyTodo.class);
+        PolicyTodo entity = BeanUtil.copy(vo, PolicyTodo.class);
 
         baseMapper.insert(entity);
     }
 
     @Override
-    public void save(PolicyShareVO vo) {
+    @Transactional(rollbackFor = Exception.class)
+    public void save(PolicyShareVO vo) throws ExecutionException, InterruptedException {
+        QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
+        todoQueryWrapper.eq("REF_ID", vo.getId());
+        todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_SHARE.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_SHARE.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_SHARE.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());
+            policyShareMapper.updateById(vo);
+        }
     }
 
     @Override
@@ -79,7 +130,7 @@ public class PolicyTodoServiceImpl extends ServiceImpl<PolicyTodoMapper, PolicyT
         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.setTodoUserId((long) 1);
         todo.setZcAbstractContent(vo.getAbstractContent());
         todo.setZcContactPhone(vo.getContactPhone());
         todo.setZcCreateId(vo.getCreateId());
@@ -100,7 +151,7 @@ public class PolicyTodoServiceImpl extends ServiceImpl<PolicyTodoMapper, PolicyT
         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.setTodoUserId((long) 1);
         todo.setZcAbstractContent(policyStrive.getAbstractContent());
         todo.setZcContactPhone(policyStrive.getContactPhone());
         todo.setZcCreateId(policyStrive.getCreateId());
@@ -114,7 +165,7 @@ public class PolicyTodoServiceImpl extends ServiceImpl<PolicyTodoMapper, PolicyT
 
     @Override
     public void update(PolicyTodoVO vo) {
-        PolicyTodo entity = BeanUtil.copy(vo,PolicyTodo.class);
+        PolicyTodo entity = BeanUtil.copy(vo, PolicyTodo.class);
 
         updateById(entity);
     }

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

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

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

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