PtlAgreementGroupServiceImpl.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. package com.ydtech.modules.protocol.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.ydtech.exception.SystemException;
  6. import com.ydtech.modules.base.controller.BaseController;
  7. import com.ydtech.modules.order.entity.BasePageResult;
  8. import com.ydtech.modules.protocol.dao.PtlAgreementGroupLinkAgreementMapper;
  9. import com.ydtech.modules.protocol.dao.PtlAgreementGroupMapper;
  10. import com.ydtech.modules.protocol.entity.dto.PtlAgreementGroupDto;
  11. import com.ydtech.modules.protocol.entity.dto.PtlAgreementGroupLinkAgreementDto;
  12. import com.ydtech.modules.protocol.entity.po.*;
  13. import com.ydtech.modules.protocol.entity.vo.*;
  14. import com.ydtech.modules.protocol.service.*;
  15. import org.springframework.beans.BeanUtils;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import java.util.ArrayList;
  19. import java.util.Date;
  20. import java.util.List;
  21. import java.util.Objects;
  22. /**
  23. * @author Administrator
  24. * @description 针对表【ptl_agreement_group(协议组)】的数据库操作Service实现
  25. * @createDate 2024-10-24 09:54:37
  26. */
  27. @Service
  28. public class PtlAgreementGroupServiceImpl extends ServiceImpl<PtlAgreementGroupMapper, PtlAgreementGroups>
  29. implements PtlAgreementGroupService {
  30. @Autowired
  31. private PtlAgreementGroupMapper ptlAgreementGroupMapper;
  32. @Autowired
  33. private PtlAgreementGroupLinkAgreementMapper ptlAgreementGroupLinkAgreementMapper;
  34. @Autowired
  35. private PtlAgreementGroupLinkAgreementService ptlAgreementGroupLinkAgreementService;
  36. @Autowired
  37. private PtlAgreementGroupLinkAgreementRecordService ptlAgreementGroupLinkAgreementRecordService;
  38. @Autowired
  39. private PtlAgreementGroupLinkDeptService ptlAgreementGroupLinkDeptService;
  40. @Autowired
  41. private PtlAgreementGroupLinkDeptRecordService ptlAgreementGroupLinkDeptRecordService;
  42. /**
  43. * @version
  44. * @author: hxl
  45. * @Date: 2024/10/24 10:56
  46. * @Description: 分页查询
  47. */
  48. @Override
  49. public BasePageResult<PtlAgreementGroupDto> queryPage(PtlAgreementGroupVo ptlAgreementGroupVo) {
  50. Page<PtlAgreementGroupDto> page = new Page<>(ptlAgreementGroupVo.getPageNum(),
  51. ptlAgreementGroupVo.getPageSize());
  52. Page<PtlAgreementGroupDto> pageResult = ptlAgreementGroupMapper.queryPage(page, ptlAgreementGroupVo);
  53. return new BasePageResult<>(ptlAgreementGroupVo.getPageNum(), page.getSize(), pageResult.getTotal(), page.getPages(),
  54. pageResult.getRecords());
  55. }
  56. /**
  57. * @version
  58. * @author: hxl
  59. * @Date: 2024/10/24 11:30
  60. * @Description: 新增或者修改
  61. */
  62. @Override
  63. public void addOrUpdate(PtlAgreementGroupAddVo ptlAgreementGroupAddVo) {
  64. //判断有没有默认的数据,没有必须先添加
  65. PtlAgreementGroups defaultFlagGroup = this.findByDefaultFlag(ptlAgreementGroupAddVo.getId());
  66. if(ptlAgreementGroupAddVo.getId()==null){
  67. //如果非默认必须先添加默认
  68. if(ptlAgreementGroupAddVo.getDefaultFlag()==0 && defaultFlagGroup ==null){
  69. throw new SystemException("不存在默认协议组先添加默认协议组!!");
  70. }else if(ptlAgreementGroupAddVo.getDefaultFlag()==1 && defaultFlagGroup!=null){
  71. if(Objects.equals(defaultFlagGroup.getId(), ptlAgreementGroupAddVo.getId() == null ? 0L : ptlAgreementGroupAddVo.getId())){
  72. throw new SystemException("默认协议组不允许修改!!");
  73. }else{
  74. throw new SystemException("已存在默认协议组不允许添加!!");
  75. }
  76. }
  77. }else{
  78. if(Objects.equals(defaultFlagGroup.getId(), ptlAgreementGroupAddVo.getId() == null ? 0L : ptlAgreementGroupAddVo.getId())){
  79. throw new SystemException("默认协议组不允许修改!!");
  80. }else{
  81. if(ptlAgreementGroupAddVo.getDefaultFlag()==1){
  82. throw new SystemException("非默认协议组不允许修改为默认!!");
  83. }
  84. }
  85. }
  86. //查询协议组名称是否存在
  87. PtlAgreementGroups groupNames = this.findByName(ptlAgreementGroupAddVo.getAgreementGroupName(),ptlAgreementGroupAddVo.getId());
  88. if(groupNames!=null){
  89. throw new SystemException("默认协议组名称已存在不允许添加!!");
  90. }
  91. PtlAgreementGroups groups = new PtlAgreementGroups();
  92. if(ptlAgreementGroupAddVo.getId()==null){
  93. BeanUtils.copyProperties(ptlAgreementGroupAddVo, groups);
  94. groups.setCreateTime(new Date());
  95. groups.setCreateUser(new BaseController().getUserId());
  96. groups.setDelFlag(0);
  97. //添加
  98. this.save(groups);
  99. }else{
  100. PtlAgreementGroups updateData = this.getById(ptlAgreementGroupAddVo.getId());
  101. BeanUtils.copyProperties(ptlAgreementGroupAddVo, updateData);
  102. //修改
  103. updateData.setUpdateTime(new Date());
  104. updateData.setUpdateUser(new BaseController().getUserId());
  105. updateData.setDelFlag(0);
  106. this.updateById(updateData);
  107. }
  108. }
  109. /**
  110. * @version
  111. * @author: hxl
  112. * @Date: 2024/10/24 11:30
  113. * @Description: 逻辑删除
  114. */
  115. @Override
  116. public void updateByIdDelete(Long id) {
  117. PtlAgreementGroups defaultFlagGroup = this.getById(id);
  118. //如果非默认必须先添加默认
  119. if(defaultFlagGroup.getDefaultFlag()==1){
  120. throw new SystemException("默认协议组不允许删除");
  121. }
  122. defaultFlagGroup.setDelFlag(1);
  123. //逻辑删除
  124. this.updateById(defaultFlagGroup);
  125. }
  126. /**
  127. * @version
  128. * @author: hxl
  129. * @Date: 2024/10/24 11:39
  130. * @Description: 查询默认协议
  131. */
  132. @Override
  133. public PtlAgreementGroups findByDefaultFlag(Long id) {
  134. LambdaQueryWrapper<PtlAgreementGroups> infoWapper = new LambdaQueryWrapper<>();
  135. if(id!=null){
  136. infoWapper.ne(PtlAgreementGroups::getId, id);
  137. }
  138. infoWapper.eq(PtlAgreementGroups::getDefaultFlag, 1);
  139. infoWapper.eq(PtlAgreementGroups::getDelFlag, 0);
  140. PtlAgreementGroups group = this.getOne(infoWapper);
  141. return group;
  142. }
  143. /**
  144. * @version
  145. * @author: hxl
  146. * @Date: 2024/10/24 11:39
  147. * @Description: 查询默认协议
  148. */
  149. @Override
  150. public PtlAgreementGroups findByName(String name,Long id) {
  151. LambdaQueryWrapper<PtlAgreementGroups> infoWapper = new LambdaQueryWrapper<>();
  152. if(id!=null){
  153. infoWapper.ne(PtlAgreementGroups::getId, id);
  154. }
  155. infoWapper.eq(PtlAgreementGroups::getAgreementGroupName, name);
  156. infoWapper.eq(PtlAgreementGroups::getDelFlag, 0);
  157. PtlAgreementGroups group = this.getOne(infoWapper);
  158. return group;
  159. }
  160. /**
  161. * @version
  162. * @author: hxl
  163. * @Date: 2024/10/24 15:18
  164. * @Description: 查询可以使用的协议
  165. */
  166. @Override
  167. public BasePageResult<PtlAgreementGroupLinkAgreementDto> findAgreementList(PtlAgreementListVo ptlAgreementListVo) {
  168. Page<PtlAgreementGroupLinkAgreementDto> page = new Page<>(ptlAgreementListVo.getPageNum(),
  169. ptlAgreementListVo.getPageSize());
  170. Page<PtlAgreementGroupLinkAgreementDto> pageResult = ptlAgreementGroupLinkAgreementMapper.queryPage(page, ptlAgreementListVo);
  171. return new BasePageResult<>(ptlAgreementListVo.getPageNum(), page.getSize(), pageResult.getTotal(), page.getPages(),
  172. pageResult.getRecords());
  173. }
  174. /**
  175. * @version
  176. * @author: hxl
  177. * @Date: 2024/10/24 15:23
  178. * @Description: 保存集合
  179. */
  180. @Override
  181. public void saveAgreementList(PtlAgreementGroupLinkAgreementAddVo ptlAgreementGroupLinkAgreementAddVo) {
  182. //保存协议组关联协议
  183. List<Long> oldIds= ptlAgreementGroupLinkAgreementMapper.findByGroupId(ptlAgreementGroupLinkAgreementAddVo.getAgreementGroupId());
  184. ArrayList<Long> agreementList = ptlAgreementGroupLinkAgreementAddVo.getAgreementList();
  185. if(oldIds!=null && !oldIds.isEmpty() && agreementList!=null && !agreementList.isEmpty()){
  186. agreementList.removeAll(oldIds);
  187. }
  188. //添加
  189. List<PtlAgreementGroupLinkAgreement> addList = new ArrayList<PtlAgreementGroupLinkAgreement>();
  190. List<PtlAgreementGroupLinkAgreementRecord> addRecordList = new ArrayList<PtlAgreementGroupLinkAgreementRecord>();
  191. agreementList.stream().forEach(agreeId -> {
  192. PtlAgreementGroupLinkAgreement dto =new PtlAgreementGroupLinkAgreement(null,agreeId,ptlAgreementGroupLinkAgreementAddVo.getAgreementGroupId(),new Date(),new BaseController().getUserId());
  193. PtlAgreementGroupLinkAgreementRecord recordDto =new PtlAgreementGroupLinkAgreementRecord(null,agreeId,ptlAgreementGroupLinkAgreementAddVo.getAgreementGroupId(),new Date(),new BaseController().getUserId(),"add");
  194. addList.add(dto);
  195. addRecordList.add(recordDto);
  196. });
  197. ptlAgreementGroupLinkAgreementService.saveBatch(addList);
  198. ptlAgreementGroupLinkAgreementRecordService.saveBatch(addRecordList);
  199. }
  200. /**
  201. * @version
  202. * @author: hxl
  203. * @Date: 2024/10/24 15:24
  204. * @Description: 查询协议组关联的协议
  205. */
  206. @Override
  207. public BasePageResult<PtlAgreementGroupLinkAgreementDto> findLinkAgreementList(PtlAgreementGroupLinkAgreementVo ptlAgreementGroupLinkAgreementVo) {
  208. Page<PtlAgreementGroupLinkAgreementDto> page = new Page<>(ptlAgreementGroupLinkAgreementVo.getPageNum(),
  209. ptlAgreementGroupLinkAgreementVo.getPageSize());
  210. Page<PtlAgreementGroupLinkAgreementDto> pageResult = ptlAgreementGroupLinkAgreementMapper.findLinkAgreementList(page, ptlAgreementGroupLinkAgreementVo);
  211. return new BasePageResult<>(ptlAgreementGroupLinkAgreementVo.getPageNum(), page.getSize(), pageResult.getTotal(), page.getPages(),
  212. pageResult.getRecords());
  213. }
  214. /**
  215. * @version
  216. * @author: hxl
  217. * @Date: 2024/10/24 15:31
  218. * @Description: 删除协议组关联的协议
  219. */
  220. @Override
  221. public void deleteLinkAgreementList(PtlAgreementGroupLinkAgreementDeleteVo ptlAgreementGroupLinkAgreementDeleteVo) {
  222. List<PtlAgreementGroupLinkAgreement> deleteList = ptlAgreementGroupLinkAgreementService.findByIds(ptlAgreementGroupLinkAgreementDeleteVo.getIds());
  223. List<PtlAgreementGroupLinkAgreementRecord> addRecordList = new ArrayList<PtlAgreementGroupLinkAgreementRecord>();
  224. if(deleteList!=null && !deleteList.isEmpty()){
  225. deleteList.stream().forEach(agree -> {
  226. PtlAgreementGroupLinkAgreementRecord recordDto =new PtlAgreementGroupLinkAgreementRecord(null,agree.getPtlAgreementId(),agree.getPtlAgreementGroupId(),new Date(),new BaseController().getUserId(),"delete");
  227. addRecordList.add(recordDto);
  228. });
  229. ptlAgreementGroupLinkAgreementService.removeByIds(deleteList);
  230. ptlAgreementGroupLinkAgreementRecordService.saveBatch(addRecordList);
  231. }
  232. }
  233. /**
  234. * @version
  235. * @author: hxl
  236. * @Date: 2024/10/24 15:24
  237. * @Description: 协议授权
  238. */
  239. @Override
  240. public void authorizeDeptList(PtlAgreementGroupLinkDeptAddVo ptlAgreementGroupLinkDeptAddVo) {
  241. //通过协议组id查詢到授权的部门删除重新添加
  242. // 删除添加
  243. ArrayList<PtlAgreementGroupLinkDeptRecord> addRecordList =new ArrayList<PtlAgreementGroupLinkDeptRecord>();
  244. ArrayList<PtlAgreementGroupLinkDept> addList =new ArrayList<PtlAgreementGroupLinkDept>();
  245. //查询
  246. List<PtlAgreementGroupLinkDept> deleteList = ptlAgreementGroupLinkDeptService.findByGroupId(ptlAgreementGroupLinkDeptAddVo.getPtlAgreementGroupId());
  247. if(deleteList!=null && !deleteList.isEmpty()){
  248. deleteList.stream().forEach(dept -> {
  249. PtlAgreementGroupLinkDeptRecord recordDto =new PtlAgreementGroupLinkDeptRecord(null,dept.getPtlAgreementGroupId(),dept.getDeptId(),new Date(),new BaseController().getUserId(),"delete");
  250. addRecordList.add(recordDto);
  251. });
  252. ptlAgreementGroupLinkDeptService.removeByIds(deleteList);
  253. }
  254. //查询新增的list
  255. ArrayList<String> ids = ptlAgreementGroupLinkDeptAddVo.getIds();
  256. if(ids!=null && !ids.isEmpty()){
  257. ids.stream().forEach(deptId -> {
  258. PtlAgreementGroupLinkDept dto =new PtlAgreementGroupLinkDept(null,ptlAgreementGroupLinkDeptAddVo.getPtlAgreementGroupId(),deptId,new Date(),new BaseController().getUserId());
  259. PtlAgreementGroupLinkDeptRecord recordDto =new PtlAgreementGroupLinkDeptRecord(null,ptlAgreementGroupLinkDeptAddVo.getPtlAgreementGroupId(),deptId,new Date(),new BaseController().getUserId(),"add");
  260. addRecordList.add(recordDto);
  261. addList.add(dto);
  262. });
  263. }
  264. if(addList!=null && !addList.isEmpty()){
  265. ptlAgreementGroupLinkDeptService.saveBatch(addList);
  266. }
  267. if(addRecordList!=null && !addRecordList.isEmpty()){
  268. ptlAgreementGroupLinkDeptRecordService.saveBatch(addRecordList);
  269. }
  270. }
  271. /**
  272. * @version
  273. * @author: hxl
  274. * @Date: 2024/10/25 9:59
  275. * @Description: 通过协议id查询授权部门ids
  276. */
  277. @Override
  278. public List<String> findDeptIdsByPtlAgreementGroupId(Long ptlAgreementGroupId) {
  279. ArrayList<String> deptIds =new ArrayList<String>();
  280. //查询
  281. List<PtlAgreementGroupLinkDept> deleteList = ptlAgreementGroupLinkDeptService.findByGroupId(ptlAgreementGroupId);
  282. if(deleteList!=null && !deleteList.isEmpty()){
  283. deleteList.stream().forEach(dept -> {
  284. deptIds.add(dept.getDeptId());
  285. });
  286. }
  287. return deptIds;
  288. }
  289. }