SignatureServiceImpl.java 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. package jnpf.base.service.impl;
  2. import cn.hutool.core.collection.CollectionUtil;
  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.github.yulichang.wrapper.MPJLambdaWrapper;
  7. import jnpf.base.entity.SignatureEntity;
  8. import jnpf.base.entity.SignatureUserEntity;
  9. import jnpf.base.mapper.SignatureMapper;
  10. import jnpf.base.model.signature.*;
  11. import jnpf.base.service.SignatureService;
  12. import jnpf.base.service.SignatureUserService;
  13. import jnpf.base.service.SuperServiceImpl;
  14. import jnpf.permission.entity.UserEntity;
  15. import jnpf.util.JsonUtil;
  16. import jnpf.util.RandomUtil;
  17. import jnpf.util.StringUtil;
  18. import jnpf.util.UserProvider;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.transaction.annotation.Transactional;
  22. import java.util.ArrayList;
  23. import java.util.List;
  24. import java.util.Map;
  25. import java.util.StringJoiner;
  26. import java.util.stream.Collectors;
  27. /**
  28. * 电子签章
  29. *
  30. * @author JNPF开发平台组
  31. * @copyright 引迈信息技术有限公司
  32. * @date 2022年9月2日 上午9:18
  33. */
  34. @Service
  35. public class SignatureServiceImpl extends SuperServiceImpl<SignatureMapper, SignatureEntity> implements SignatureService {
  36. @Autowired
  37. private SignatureUserService signatureUserService;
  38. @Override
  39. public List<SignatureListVO> getList(PaginationSignature pagination) {
  40. List<String> list = null;
  41. // 有没有授权人
  42. if (StringUtil.isNotEmpty(pagination.getUserId())) {
  43. list = signatureUserService.getListByUserId(pagination.getUserId()).stream().map(SignatureUserEntity::getSignatureId).collect(Collectors.toList());
  44. }
  45. QueryWrapper<SignatureEntity> queryWrapper = new QueryWrapper<>();
  46. // 不为空需要in
  47. if (list != null && list.size() > 0) {
  48. queryWrapper.lambda().in(SignatureEntity::getId, list);
  49. }
  50. queryWrapper.lambda().and(StringUtil.isNotEmpty(pagination.getKeyword()), t -> t.like(SignatureEntity::getFullName, pagination.getKeyword()).or().like(SignatureEntity::getEnCode, pagination.getKeyword()));
  51. queryWrapper.lambda().orderByAsc(SignatureEntity::getSortCode).orderByDesc(SignatureEntity::getCreatorTime);
  52. Page<SignatureEntity> page = new Page<>(pagination.getCurrentPage(), pagination.getPageSize());
  53. IPage<SignatureEntity> iPage = this.page(page, queryWrapper);
  54. List<SignatureEntity> signatureEntities = pagination.setData(iPage.getRecords(), iPage.getTotal());
  55. List<SignatureListVO> voList = JsonUtil.getJsonToList(signatureEntities, SignatureListVO.class);
  56. if (voList.size() > 0) {
  57. MPJLambdaWrapper<SignatureUserEntity> wrapper = new MPJLambdaWrapper<>(SignatureUserEntity.class)
  58. .select(SignatureUserEntity::getSignatureId)
  59. .leftJoin(UserEntity.class, UserEntity::getId, SignatureUserEntity::getUserId)
  60. .select(UserEntity::getId, UserEntity::getAccount, UserEntity::getRealName);
  61. wrapper.in(SignatureUserEntity::getSignatureId, voList.stream().map(SignatureListVO::getId).collect(Collectors.toList()));
  62. List<InnerUserModel> innerUserModels = signatureUserService.selectJoinList(InnerUserModel.class, wrapper);
  63. Map<String, List<InnerUserModel>> collect = innerUserModels.stream().collect(Collectors.groupingBy(InnerUserModel::getSignatureId));
  64. voList.forEach(t -> {
  65. List<InnerUserModel> userModels = collect.get(t.getId());
  66. if (userModels != null) {
  67. StringJoiner userNames = new StringJoiner(";");
  68. for (InnerUserModel userModel : userModels) {
  69. StringJoiner userName = new StringJoiner("/");
  70. userName.add(userModel.getRealName());
  71. userName.add(userModel.getAccount());
  72. userNames.add(userName.toString());
  73. }
  74. t.setUserIds(userNames.toString());
  75. }
  76. });
  77. }
  78. return voList;
  79. }
  80. @Override
  81. public List<SignatureEntity> getList() {
  82. QueryWrapper<SignatureEntity> queryWrapper = new QueryWrapper<>();
  83. return this.list(queryWrapper);
  84. }
  85. @Override
  86. public List<SignatureSelectorListVO> getListByIds(SignatureListByIdsModel model) {
  87. if (CollectionUtil.isEmpty(model.getIds())) {
  88. return new ArrayList<>();
  89. }
  90. MPJLambdaWrapper<SignatureEntity> wrapper = new MPJLambdaWrapper<>(SignatureEntity.class)
  91. .select(SignatureEntity::getId, SignatureEntity::getEnCode, SignatureEntity::getFullName, SignatureEntity::getIcon)
  92. .leftJoin(SignatureUserEntity.class, SignatureUserEntity::getSignatureId, SignatureEntity::getId)
  93. .select(SignatureUserEntity::getSignatureId, SignatureUserEntity::getUserId)
  94. .selectCollection(SignatureUserEntity.class, SignatureSelectorListVO::getSignatureUserList, map -> map
  95. .result(SignatureUserEntity::getSignatureId)
  96. .result(SignatureUserEntity::getUserId));
  97. // ids
  98. wrapper.in(CollectionUtil.isNotEmpty(model.getIds()), SignatureEntity::getId, model.getIds());
  99. // 是否有权限
  100. wrapper.eq(StringUtil.isNotEmpty(UserProvider.getLoginUserId()), SignatureUserEntity::getUserId, UserProvider.getLoginUserId());
  101. wrapper.orderByAsc(SignatureEntity::getSortCode).orderByDesc(SignatureEntity::getCreatorTime);
  102. return this.selectJoinList(SignatureSelectorListVO.class, wrapper);
  103. }
  104. @Override
  105. public SignatureEntity getInfoById(String id) {
  106. QueryWrapper<SignatureEntity> queryWrapper = new QueryWrapper<>();
  107. queryWrapper.lambda().eq(SignatureEntity::getId, id);
  108. queryWrapper.lambda().orderByAsc(SignatureEntity::getSortCode).orderByDesc(SignatureEntity::getCreatorTime);
  109. return this.getOne(queryWrapper);
  110. }
  111. @Override
  112. public SignatureInfoVO getInfo(String id) {
  113. SignatureEntity entity = this.getInfoById(id);
  114. if (entity == null) {
  115. return null;
  116. }
  117. SignatureInfoVO vo = JsonUtil.getJsonToBean(entity, SignatureInfoVO.class);
  118. List<SignatureUserEntity> list = signatureUserService.getList(entity.getId());
  119. vo.setUserIds(list.stream().map(SignatureUserEntity::getUserId).collect(Collectors.toList()));
  120. return vo;
  121. }
  122. @Override
  123. public boolean isExistByFullName(String fullName, String id) {
  124. QueryWrapper<SignatureEntity> queryWrapper = new QueryWrapper<>();
  125. queryWrapper.lambda().eq(SignatureEntity::getFullName, fullName);
  126. if (StringUtil.isNotEmpty(id)) {
  127. queryWrapper.lambda().ne(SignatureEntity::getId, id);
  128. }
  129. return this.count(queryWrapper) > 0;
  130. }
  131. @Override
  132. public boolean isExistByEnCode(String enCode, String id) {
  133. QueryWrapper<SignatureEntity> queryWrapper = new QueryWrapper<>();
  134. queryWrapper.lambda().eq(SignatureEntity::getEnCode, enCode);
  135. if (StringUtil.isNotEmpty(id)) {
  136. queryWrapper.lambda().ne(SignatureEntity::getId, id);
  137. }
  138. return this.count(queryWrapper) > 0;
  139. }
  140. @Override
  141. @Transactional
  142. public void create(SignatureEntity entity, List<String> userIds) {
  143. entity.setId(RandomUtil.uuId());
  144. for (String userId : userIds) {
  145. SignatureUserEntity signatureUserEntity = new SignatureUserEntity();
  146. signatureUserEntity.setSignatureId(entity.getId());
  147. signatureUserEntity.setUserId(userId);
  148. signatureUserService.create(signatureUserEntity);
  149. }
  150. this.save(entity);
  151. }
  152. @Override
  153. @Transactional
  154. public boolean update(String id, SignatureUpForm signatureUpForm) {
  155. SignatureEntity signatureEntity = JsonUtil.getJsonToBean(signatureUpForm, SignatureEntity.class);
  156. signatureEntity.setId(id);
  157. signatureUserService.delete(id);
  158. for (String userId : signatureUpForm.getUserIds()) {
  159. SignatureUserEntity signatureUserEntity = new SignatureUserEntity();
  160. signatureUserEntity.setSignatureId(id);
  161. signatureUserEntity.setUserId(userId);
  162. signatureUserService.create(signatureUserEntity);
  163. }
  164. return this.updateById(signatureEntity);
  165. }
  166. @Override
  167. public boolean delete(String id) {
  168. return this.removeById(id);
  169. }
  170. }