AuditItemsServiceImpl.java 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. package com.ruoyi.approvalFlow.service.impl;
  2. import java.util.Date;
  3. import java.util.List;
  4. import java.util.Map;
  5. import java.util.Objects;
  6. import com.alibaba.fastjson.JSONArray;
  7. import com.alibaba.fastjson.JSONObject;
  8. import com.ruoyi.approvalFlow.domain.AuditItems;
  9. import com.ruoyi.approvalFlow.domain.AuditItemsUsers;
  10. import com.ruoyi.approvalFlow.domain.AuditPathsLevels;
  11. import com.ruoyi.approvalFlow.mapper.AuditItemsMapper;
  12. import com.ruoyi.approvalFlow.mapper.AuditItemsUsersMapper;
  13. import com.ruoyi.approvalFlow.mapper.AuditPathsLevelsMapper;
  14. import com.ruoyi.approvalFlow.service.IAuditItemsService;
  15. import com.ruoyi.common.core.domain.AjaxResult;
  16. import com.ruoyi.common.core.domain.entity.SysRole;
  17. import com.ruoyi.common.core.domain.entity.SysUser;
  18. import com.ruoyi.system.domain.SysUserRole;
  19. import com.ruoyi.system.mapper.SysRoleMapper;
  20. import com.ruoyi.system.mapper.SysUserMapper;
  21. import com.ruoyi.system.mapper.SysUserRoleMapper;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Service;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import org.springframework.transaction.interceptor.TransactionAspectSupport;
  26. /**
  27. * 审批流任务明细Service业务层处理
  28. *
  29. * @author ruoyi
  30. * @date 2021-01-21
  31. */
  32. @Service
  33. public class AuditItemsServiceImpl implements IAuditItemsService {
  34. @Autowired
  35. private SysUserMapper sysUserMapper;
  36. @Autowired
  37. private AuditItemsMapper auditItemsMapper;
  38. @Autowired
  39. private SysUserRoleMapper sysUserRoleMapper;
  40. @Autowired
  41. private AuditItemsUsersMapper auditItemsUsersMapper;
  42. @Autowired
  43. private AuditPathsLevelsMapper auditPathsLevelsMapper;
  44. /**
  45. * 查询审批流任务明细
  46. *
  47. * @param id 审批流任务明细ID
  48. * @return 审批流任务明细
  49. */
  50. @Override
  51. public AuditItems selectAuditItemsById(Long id) {
  52. return auditItemsMapper.selectAuditItemsById(id);
  53. }
  54. /**
  55. * 查询审批流任务明细列表
  56. *
  57. * @param auditItems 审批流任务明细
  58. * @return 审批流任务明细
  59. */
  60. @Override
  61. public List<AuditItems> selectAuditItemsList(AuditItems auditItems) {
  62. return auditItemsMapper.selectAuditItemsList(auditItems);
  63. }
  64. /**
  65. * 生成审批流
  66. *
  67. * @param auditItems 第一级审批
  68. * @return 结果
  69. */
  70. @Transactional
  71. public AjaxResult createApprovalFlow(AuditItems auditItems) {
  72. List<AuditPathsLevels> auditPathsLevelsList = auditPathsLevelsMapper.queryAuditLevels(auditItems.getActId());
  73. if (auditPathsLevelsList.size() <= 0) {
  74. return AjaxResult.error("未找到审批流, 请确认");
  75. }
  76. auditItemsMapper.insertAuditItems(auditItems);
  77. int num = 0;
  78. for (AuditPathsLevels levels : auditPathsLevelsList) {
  79. num++;
  80. JSONArray jsonArray = JSONArray.parseArray(levels.getAuditUserId());
  81. List<Long> userIdList = JSONObject.parseArray(jsonArray.toJSONString(), Long.class);
  82. AuditItems auditItem = new AuditItems();
  83. auditItem.setBillNo(auditItems.getBillNo());
  84. auditItem.setActId(auditItems.getActId());
  85. auditItem.setBillId(auditItems.getBillId());
  86. auditItem.setRefno1(auditItems.getRefno1());
  87. auditItem.setRefno2(auditItems.getRefno2());
  88. auditItem.setRefno3(auditItems.getRefno3());
  89. auditItem.setLevelId(levels.getLevelId());
  90. auditItem.setIffinalItem(levels.getIffinalItem());
  91. auditItem.setSendUserId(auditItems.getSendUserId());
  92. auditItem.setSendName(auditItems.getSendName());
  93. auditItem.setSendTime(new Date());
  94. if (Objects.equals(num, 1)) {
  95. auditItem.setAuditStatus("S");
  96. } else {
  97. auditItem.setAuditStatus("N");
  98. }
  99. if ("F".equals(levels.getIffixAuditUser())) {
  100. long userId = 0L;
  101. boolean reviewer = false;
  102. for (Long usId : userIdList) {
  103. List<SysUser> userList = sysUserRoleMapper.selectUserRoleByRoleId(usId);
  104. if (userList.size() != 0) {
  105. reviewer = true;
  106. for (SysUser use : userList) {
  107. if (Objects.equals(num, 1)) {
  108. auditItem.setAuditUserId(use.getUserId());
  109. int addAuditItem = auditItemsMapper.insertAuditItems(auditItem);
  110. if (addAuditItem <= 0) {
  111. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  112. return AjaxResult.error("生成审批流明细失败,请联系管理员");
  113. }
  114. }
  115. AuditItemsUsers auditItemsUsers = createAuditItemsUsers(num, use.getUserId(), auditItem);
  116. int addAuditUser = auditItemsUsersMapper.insertAuditItemsUsers(auditItemsUsers);
  117. if (addAuditUser <= 0) {
  118. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  119. return AjaxResult.error("生成审批流明细用户失败,请联系管理员");
  120. }
  121. }
  122. }
  123. }
  124. if (!reviewer) {
  125. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  126. return AjaxResult.error("审批流第" + num + "级所选角色中没有用户");
  127. }
  128. } else {
  129. auditItem.setAuditUserId(userIdList.get(0));
  130. int addAuditItem = auditItemsMapper.insertAuditItems(auditItem);
  131. if (addAuditItem <= 0) {
  132. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  133. return AjaxResult.error("生成审批流明细失败,请联系管理员");
  134. }
  135. for (Long usId : userIdList) {
  136. AuditItemsUsers auditItemsUsers = createAuditItemsUsers(num, usId, auditItem);
  137. int addAuditUser = auditItemsUsersMapper.insertAuditItemsUsers(auditItemsUsers);
  138. if (addAuditUser <= 0) {
  139. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  140. return AjaxResult.error("生成审批流明细用户失败,请联系管理员");
  141. }
  142. }
  143. }
  144. }
  145. return AjaxResult.success();
  146. }
  147. public AuditItemsUsers createAuditItemsUsers(int num, long userId, AuditItems auditItem) {
  148. AuditItemsUsers auditItemsUsers = new AuditItemsUsers();
  149. auditItemsUsers.setUserId(userId);
  150. auditItemsUsers.setPid(auditItem.getId());
  151. auditItemsUsers.setBillNo(auditItem.getBillNo());
  152. auditItemsUsers.setActId(auditItem.getActId());
  153. if (Objects.equals(num, 1)) {
  154. auditItemsUsers.setAuditStatus("S");
  155. } else {
  156. auditItemsUsers.setAuditStatus("N");
  157. }
  158. return auditItemsUsers;
  159. }
  160. /**
  161. * 新增审批流任务明细
  162. *
  163. * @param auditItems 审批流任务明细
  164. * @return 结果
  165. */
  166. @Override
  167. public int insertAuditItems(AuditItems auditItems) {
  168. return auditItemsMapper.insertAuditItems(auditItems);
  169. }
  170. /**
  171. * 修改审批流任务明细
  172. *
  173. * @param auditItems 审批流任务明细
  174. * @return 结果
  175. */
  176. @Override
  177. public int updateAuditItems(AuditItems auditItems) {
  178. return auditItemsMapper.updateAuditItems(auditItems);
  179. }
  180. /**
  181. * 批量删除审批流任务明细
  182. *
  183. * @param ids 需要删除的审批流任务明细ID
  184. * @return 结果
  185. */
  186. @Override
  187. public int deleteAuditItemsByIds(Long[] ids) {
  188. return auditItemsMapper.deleteAuditItemsByIds(ids);
  189. }
  190. /**
  191. * 删除审批流任务明细信息
  192. *
  193. * @param id 审批流任务明细ID
  194. * @return 结果
  195. */
  196. @Override
  197. public int deleteAuditItemsById(Long id) {
  198. return auditItemsMapper.deleteAuditItemsById(id);
  199. }
  200. }