PolicyShareServiceImpl.java 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. package com.qdport.service.impl;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.qdport.entity.PolicyFile;
  7. import com.qdport.entity.PolicyTodo;
  8. import com.qdport.mapper.PolicyTodoMapper;
  9. import com.qdport.modules.system.entity.SysUser;
  10. import com.qdport.modules.system.service.TSysUserService;
  11. import com.qdport.query.QueryWrapperBuilder;
  12. import com.qdport.service.PolicyFileService;
  13. import com.qdport.service.PolicyFlowNoService;
  14. import com.qdport.service.PolicyShareService;
  15. import com.qdport.enums.QDPortEnum;
  16. import com.qdport.util.StringUtil;
  17. import com.qdport.vo.PolicyFileVO;
  18. import com.qdport.workflow.process.model.WfProcess;
  19. import com.qdport.workflow.process.service.IWfProcessService;
  20. import com.qdport.entity.PolicyShare;
  21. import com.qdport.query.PolicyShareQuery;
  22. import com.qdport.vo.PolicyShareVO;
  23. import com.qdport.mapper.PolicyShareMapper;
  24. import com.qdport.wrapper.PolicyShareWrapper;
  25. import com.qdport.core.tool.utils.BeanUtil;
  26. import org.flowable.engine.HistoryService;
  27. import org.springframework.beans.factory.annotation.Value;
  28. import org.springframework.stereotype.Service;
  29. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  30. import org.springframework.transaction.annotation.Transactional;
  31. import javax.annotation.Resource;
  32. import java.util.Date;
  33. import java.util.List;
  34. import java.util.concurrent.ExecutionException;
  35. import java.util.concurrent.Future;
  36. import java.util.stream.Collectors;
  37. /**
  38. * 政策共享
  39. *
  40. * @author yuheng
  41. * @since 1.0.0 2024-09-30
  42. */
  43. @Service
  44. public class PolicyShareServiceImpl extends ServiceImpl<PolicyShareMapper, PolicyShare> implements PolicyShareService {
  45. @Resource
  46. private PolicyFlowNoService policyFlowNoService;
  47. @Resource
  48. private PolicyFileService policyFileService;
  49. @Resource
  50. private IWfProcessService processService;
  51. @Resource
  52. private PolicyTodoMapper policyTodoMapper;
  53. @Resource
  54. private TSysUserService sysUserService;
  55. @Value("${processDefKey.policyShare}")
  56. private String processDefKey;
  57. @Override
  58. public IPage<PolicyShareVO> page(PolicyShareQuery query) {
  59. IPage<PolicyShare> page = new Page<>(query.getPage(), query.getSize());
  60. page = baseMapper.selectPage(page, getWrapper(query));
  61. return PolicyShareWrapper.build().pageVO(page);
  62. }
  63. private QueryWrapper<PolicyShare> getWrapper(PolicyShareQuery query) {
  64. QueryWrapper<PolicyShare> wrapper = QueryWrapperBuilder.buildQueryWrapper(query, PolicyShare.class);
  65. wrapper.orderByDesc("CREATE_TIME");
  66. if(StringUtil.isNotEmpty(query.getCreateId())&& StringUtil.isNotEmpty(query.getUserDeptId())){
  67. wrapper.apply("(CREATE_ID = " + query.getCreateId() + " or DEPT_ID = " + query.getUserDeptId() + ")");
  68. }
  69. return wrapper;
  70. }
  71. @Override
  72. @Transactional(rollbackFor = Exception.class)
  73. public void save(PolicyShareVO vo) {
  74. String flowNo = policyFlowNoService.getFlowNo(QDPortEnum.FLOWNO_TYPE_SHARE.getValue());
  75. vo.setCreateTime(new Date());
  76. vo.setUpdateTime(new Date());
  77. vo.setBusinessNo(flowNo);
  78. PolicyShare entity = BeanUtil.copy(vo, PolicyShare.class);
  79. baseMapper.insert(entity);
  80. vo.setId(entity.getId());
  81. QueryWrapper<PolicyFile> fileWrapper = new QueryWrapper<>();
  82. fileWrapper.eq("REF_ID", entity.getId());
  83. fileWrapper.eq("REF_TYPE", QDPortEnum.POLICY_FILE_REFTYPE_POLICY_SHARE.getValue());
  84. policyFileService.remove(fileWrapper);
  85. List<PolicyFileVO> fileList = vo.getFileList();
  86. for (PolicyFileVO model : fileList) {
  87. model.setCreateTime(new Date());
  88. model.setRefId(entity.getId());
  89. model.setRefType(QDPortEnum.POLICY_FILE_REFTYPE_POLICY_SHARE.getValue());
  90. policyFileService.save(model);
  91. }
  92. }
  93. @Override
  94. @Transactional(rollbackFor = Exception.class)
  95. public void update(PolicyShareVO vo) {
  96. vo.setUpdateTime(new Date());
  97. PolicyShare entity = BeanUtil.copy(vo, PolicyShare.class);
  98. updateById(entity);
  99. QueryWrapper<PolicyFile> fileWrapper = new QueryWrapper<>();
  100. fileWrapper.eq("REF_ID", entity.getId());
  101. fileWrapper.eq("REF_TYPE", QDPortEnum.POLICY_FILE_REFTYPE_POLICY_SHARE.getValue());
  102. policyFileService.remove(fileWrapper);
  103. List<PolicyFileVO> fileList = vo.getFileList();
  104. for (PolicyFileVO model : fileList) {
  105. model.setCreateTime(new Date());
  106. model.setRefId(entity.getId());
  107. model.setRefType(QDPortEnum.POLICY_FILE_REFTYPE_POLICY_SHARE.getValue());
  108. policyFileService.save(model);
  109. }
  110. }
  111. @Override
  112. public void updateById(PolicyShareVO vo) {
  113. vo.setUpdateTime(new Date());
  114. PolicyShare entity = BeanUtil.copy(vo, PolicyShare.class);
  115. updateById(entity);
  116. }
  117. @Override
  118. @Transactional(rollbackFor = Exception.class)
  119. public void delete(List<String> idList) {
  120. removeByIds(idList);
  121. QueryWrapper<PolicyFile> fileWrapper = new QueryWrapper<>();
  122. fileWrapper.in("REF_ID", idList);
  123. fileWrapper.eq("REF_TYPE", QDPortEnum.POLICY_FILE_REFTYPE_POLICY_SHARE.getValue());
  124. policyFileService.remove(fileWrapper);
  125. }
  126. @Override
  127. @Transactional(rollbackFor = Exception.class)
  128. public void saveApprove(PolicyShareVO vo) {
  129. JSONObject body = new JSONObject();
  130. String processInstanceId = processService.startProcessInstanceByKey(processDefKey, vo.getId(), body);
  131. String processTaskId = processService.getTaskIdByProcessInstanceId(processInstanceId);
  132. vo.setProcessInstanceId(processInstanceId);
  133. vo.setProcessTaskId(processTaskId);
  134. if (StringUtil.isEmpty(vo.getId())) {
  135. vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_APPROVE.getValue());
  136. save(vo);
  137. } else {
  138. vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_APPROVE.getValue());
  139. update(vo);
  140. }
  141. }
  142. @Override
  143. @Transactional(rollbackFor = Exception.class)
  144. public void approve(PolicyShareVO vo) {
  145. PolicyShare share = baseMapper.selectById(vo.getId());
  146. vo.setProcessInstanceId(share.getProcessInstanceId());
  147. vo.setProcessTaskId(share.getProcessTaskId());
  148. WfProcess process = new WfProcess();
  149. process.setTaskId(vo.getProcessTaskId());
  150. process.setProcessDefinitionId(vo.getProcessDefinitionId());
  151. process.setProcessInstanceId(vo.getProcessInstanceId());
  152. process.setPass(true);
  153. process.setComment("同意");
  154. processService.completeTask(process);
  155. String processTaskId = processService.getTaskIdByProcessInstanceId(vo.getProcessInstanceId());
  156. vo.setProcessTaskId(processTaskId);
  157. updateById(vo);
  158. }
  159. @Override
  160. @Transactional(rollbackFor = Exception.class)
  161. public void refuse(PolicyShareVO vo) {
  162. PolicyShare share = baseMapper.selectById(vo.getId());
  163. vo.setProcessDefinitionId(share.getProcessDefinitionId());
  164. vo.setProcessTaskId(share.getProcessTaskId());
  165. WfProcess process = new WfProcess();
  166. process.setTaskId(vo.getProcessTaskId());
  167. process.setProcessDefinitionId(vo.getProcessDefinitionId());
  168. process.setProcessInstanceId(vo.getProcessInstanceId());
  169. process.setPass(false);
  170. process.setComment(vo.getComment());
  171. processService.completeTask(process);
  172. String processTaskId = processService.getTaskIdByProcessInstanceId(vo.getProcessInstanceId());
  173. vo.setProcessTaskId(processTaskId);
  174. vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_INACTIVE.getValue());
  175. vo.setUpdateTime(new Date());
  176. updateById(vo);
  177. QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
  178. todoQueryWrapper.eq("REF_ID", vo.getId());
  179. todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_SHARE.getValue());
  180. todoQueryWrapper.eq("TODO_TYPE", QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
  181. todoQueryWrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
  182. PolicyTodo todo = new PolicyTodo();
  183. todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_DONE.getValue());
  184. policyTodoMapper.update(todo, todoQueryWrapper);
  185. }
  186. @Override
  187. @Transactional(rollbackFor = Exception.class)
  188. public void withdraw(PolicyShareVO vo) {
  189. PolicyShare share = baseMapper.selectById(vo.getId());
  190. vo.setProcessTaskId(share.getProcessTaskId());
  191. WfProcess process = new WfProcess();
  192. process.setTaskId(vo.getProcessTaskId());
  193. process.setWithdrawType("wf_withdraw_end");
  194. processService.terminateProcess(process);
  195. vo.setStatus(QDPortEnum.POLICY_SHARE_STATUS_ACTIVE.getValue());
  196. vo.setUpdateTime(new Date());
  197. updateById(vo);
  198. QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
  199. todoQueryWrapper.eq("REF_ID", vo.getId());
  200. todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_SHARE.getValue());
  201. todoQueryWrapper.eq("TODO_TYPE", QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
  202. todoQueryWrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
  203. PolicyTodo todo = new PolicyTodo();
  204. todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_CANCEL.getValue());
  205. policyTodoMapper.update(todo, todoQueryWrapper);
  206. }
  207. }