AuditItemsServiceImpl.java 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  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);
  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.setLevelId(levels.getLevelId());
  86. auditItem.setTimes(auditItems.getTimes());
  87. auditItem.setBillId(auditItems.getBillId());
  88. auditItem.setRefno1(auditItems.getRefno1());
  89. auditItem.setRefno2(auditItems.getRefno2());
  90. auditItem.setRefno3(auditItems.getRefno3());
  91. auditItem.setFidStatus(auditItems.getFidStatus());
  92. auditItem.setIffinalItem(levels.getIffinalItem());
  93. auditItem.setSendUserId(auditItems.getSendUserId());
  94. auditItem.setSendName(auditItems.getSendName());
  95. auditItem.setSendTime(new Date());
  96. if (Objects.equals(num, 1)) {
  97. auditItem.setAuditStatus("S");
  98. } else {
  99. auditItem.setAuditStatus("N");
  100. }
  101. if ("F".equals(levels.getIffixAuditUser())) {
  102. long userId = 0L;
  103. boolean reviewer = false;
  104. for (Long usId : userIdList) {
  105. List<SysUser> userList = sysUserRoleMapper.selectUserRoleByRoleId(usId);
  106. if (userList.size() != 0) {
  107. reviewer = true;
  108. for (SysUser use : userList) {
  109. if (Objects.equals(num, 1)) {
  110. auditItem.setAuditUserId(use.getUserId());
  111. }
  112. int addAuditItem = auditItemsMapper.insertAuditItems(auditItem);
  113. if (addAuditItem <= 0) {
  114. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  115. return AjaxResult.error("生成审批流明细失败,请联系管理员");
  116. }
  117. AuditItemsUsers auditItemsUsers = createAuditItemsUsers(num, use.getUserId(), auditItem);
  118. int addAuditUser = auditItemsUsersMapper.insertAuditItemsUsers(auditItemsUsers);
  119. if (addAuditUser <= 0) {
  120. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  121. return AjaxResult.error("生成审批流明细用户失败,请联系管理员");
  122. }
  123. }
  124. }
  125. }
  126. if (!reviewer) {
  127. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  128. return AjaxResult.error("审批流第" + num + "级所选角色中没有用户");
  129. }
  130. } else {
  131. if(userIdList.size() ==0){
  132. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  133. return AjaxResult.error("生成审批流明细失败,请联系管理员添加审批人员");
  134. }
  135. auditItem.setAuditUserId(userIdList.get(0));
  136. int addAuditItem = auditItemsMapper.insertAuditItems(auditItem);
  137. if (addAuditItem <= 0) {
  138. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  139. return AjaxResult.error("生成审批流明细失败,请联系管理员");
  140. }
  141. for (Long usId : userIdList) {
  142. AuditItemsUsers auditItemsUsers = createAuditItemsUsers(num, usId, auditItem);
  143. int addAuditUser = auditItemsUsersMapper.insertAuditItemsUsers(auditItemsUsers);
  144. if (addAuditUser <= 0) {
  145. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  146. return AjaxResult.error("生成审批流明细用户失败,请联系管理员");
  147. }
  148. }
  149. }
  150. }
  151. return AjaxResult.success();
  152. }
  153. public AuditItemsUsers createAuditItemsUsers(int num, long userId, AuditItems auditItem) {
  154. AuditItemsUsers auditItemsUsers = new AuditItemsUsers();
  155. auditItemsUsers.setUserId(userId);
  156. auditItemsUsers.setPid(auditItem.getId());
  157. auditItemsUsers.setTimes(auditItem.getTimes());
  158. auditItemsUsers.setActId(auditItem.getActId());
  159. auditItemsUsers.setBillNo(auditItem.getBillNo());
  160. auditItemsUsers.setFidStatus(auditItem.getFidStatus());
  161. if (Objects.equals(num, 1)) {
  162. auditItemsUsers.setAuditStatus("S");
  163. } else {
  164. auditItemsUsers.setAuditStatus("N");
  165. }
  166. return auditItemsUsers;
  167. }
  168. /**
  169. * 新增审批流任务明细
  170. *
  171. * @param auditItems 审批流任务明细
  172. * @return 结果
  173. */
  174. @Override
  175. public int insertAuditItems(AuditItems auditItems) {
  176. return auditItemsMapper.insertAuditItems(auditItems);
  177. }
  178. /**
  179. * 修改审批流任务明细
  180. *
  181. * @param auditItems 审批流任务明细
  182. * @return 结果
  183. */
  184. @Override
  185. public int updateAuditItems(AuditItems auditItems) {
  186. return auditItemsMapper.updateAuditItems(auditItems);
  187. }
  188. /**
  189. * 批量删除审批流任务明细
  190. *
  191. * @param ids 需要删除的审批流任务明细ID
  192. * @return 结果
  193. */
  194. @Override
  195. public int deleteAuditItemsByIds(Long[] ids) {
  196. return auditItemsMapper.deleteAuditItemsByIds(ids);
  197. }
  198. /**
  199. * 删除审批流任务明细信息
  200. *
  201. * @param id 审批流任务明细ID
  202. * @return 结果
  203. */
  204. @Override
  205. public int deleteAuditItemsById(Long id) {
  206. return auditItemsMapper.deleteAuditItemsById(id);
  207. }
  208. }