SendMessageConfigServiceImpl.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. package jnpf.message.service.impl;
  2. import jnpf.base.service.SuperServiceImpl;
  3. import jnpf.base.ActionResult;
  4. import jnpf.base.UserInfo;
  5. import jnpf.constant.MsgCode;
  6. import jnpf.exception.DataException;
  7. import jnpf.message.entity.SendConfigTemplateEntity;
  8. import jnpf.message.entity.SendMessageConfigEntity;
  9. import jnpf.message.mapper.SendMessageConfigMapper;
  10. import jnpf.message.model.sendmessageconfig.*;
  11. import jnpf.message.service.SendConfigTemplateService;
  12. import jnpf.message.service.SendMessageConfigService;
  13. import jnpf.util.RandomUtil;
  14. import cn.hutool.core.util.ObjectUtil;
  15. import java.lang.reflect.Field;
  16. import com.baomidou.mybatisplus.annotation.TableField;
  17. import java.util.stream.Collectors;
  18. import org.springframework.stereotype.Service;
  19. import com.baomidou.mybatisplus.core.metadata.IPage;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  22. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  23. import jnpf.util.*;
  24. import java.util.*;
  25. /**
  26. * 消息发送配置
  27. * 版本: V3.2.0
  28. * 版权: 引迈信息技术有限公司(https://www.jnpfsoft.com)
  29. * 作者: JNPF开发平台组
  30. * 日期: 2022-08-19
  31. */
  32. @Service
  33. public class SendMessageConfigServiceImpl extends SuperServiceImpl<SendMessageConfigMapper, SendMessageConfigEntity> implements SendMessageConfigService {
  34. @Autowired
  35. private SendConfigTemplateService sendConfigTemplateService;
  36. @Override
  37. public List<SendMessageConfigEntity> getList(SendMessageConfigPagination sendMessageConfigPagination, String dataType) {
  38. String userId = UserProvider.getUser().getUserId();
  39. int total = 0;
  40. int sendMessageConfigNum = 0;
  41. QueryWrapper<SendMessageConfigEntity> sendMessageConfigQueryWrapper = new QueryWrapper<>();
  42. int sendConfigTemplateNum = 0;
  43. QueryWrapper<SendConfigTemplateEntity> sendConfigTemplateQueryWrapper = new QueryWrapper<>();
  44. //关键字
  45. if (ObjectUtil.isNotEmpty(sendMessageConfigPagination.getKeyword())) {
  46. sendMessageConfigNum++;
  47. sendMessageConfigQueryWrapper.lambda().and(t -> t.like(SendMessageConfigEntity::getEnCode, sendMessageConfigPagination.getKeyword()).
  48. or().like(SendMessageConfigEntity::getFullName, sendMessageConfigPagination.getKeyword()));
  49. }
  50. //模板类型
  51. if (ObjectUtil.isNotEmpty(sendMessageConfigPagination.getTemplateType())) {
  52. sendMessageConfigNum++;
  53. sendMessageConfigQueryWrapper.lambda().eq(SendMessageConfigEntity::getTemplateType, sendMessageConfigPagination.getTemplateType());
  54. }
  55. //状态
  56. if (ObjectUtil.isNotEmpty(sendMessageConfigPagination.getEnabledMark())) {
  57. sendMessageConfigNum++;
  58. int enabledMark = Integer.parseInt(sendMessageConfigPagination.getEnabledMark());
  59. sendMessageConfigQueryWrapper.lambda().eq(SendMessageConfigEntity::getEnabledMark, enabledMark);
  60. }
  61. //消息来源
  62. if (ObjectUtil.isNotEmpty(sendMessageConfigPagination.getMessageSource())) {
  63. sendMessageConfigNum++;
  64. sendMessageConfigQueryWrapper.lambda().eq(SendMessageConfigEntity::getMessageSource, sendMessageConfigPagination.getMessageSource());
  65. }
  66. //排序
  67. if (StringUtil.isEmpty(sendMessageConfigPagination.getSidx())) {
  68. sendMessageConfigQueryWrapper.lambda().orderByAsc(SendMessageConfigEntity::getSortCode).orderByDesc(SendMessageConfigEntity::getCreatorTime).orderByDesc(SendMessageConfigEntity::getLastModifyTime);;
  69. } else {
  70. try {
  71. String sidx = sendMessageConfigPagination.getSidx();
  72. SendMessageConfigEntity sendMessageConfigEntity = new SendMessageConfigEntity();
  73. Field declaredField = sendMessageConfigEntity.getClass().getDeclaredField(sidx);
  74. declaredField.setAccessible(true);
  75. String value = declaredField.getAnnotation(TableField.class).value();
  76. sendMessageConfigQueryWrapper = "asc".equals(sendMessageConfigPagination.getSort().toLowerCase()) ? sendMessageConfigQueryWrapper.orderByAsc(value) : sendMessageConfigQueryWrapper.orderByDesc(value);
  77. } catch (NoSuchFieldException e) {
  78. e.printStackTrace();
  79. }
  80. }
  81. if (!"1".equals(dataType)) {
  82. if (total > 0 || total == 0) {
  83. Page<SendMessageConfigEntity> page = new Page<>(sendMessageConfigPagination.getCurrentPage(), sendMessageConfigPagination.getPageSize());
  84. IPage<SendMessageConfigEntity> userIPage = this.page(page, sendMessageConfigQueryWrapper);
  85. return sendMessageConfigPagination.setData(userIPage.getRecords(), userIPage.getTotal());
  86. } else {
  87. List<SendMessageConfigEntity> list = new ArrayList();
  88. return sendMessageConfigPagination.setData(list, list.size());
  89. }
  90. } else {
  91. return this.list(sendMessageConfigQueryWrapper);
  92. }
  93. }
  94. @Override
  95. public List<SendMessageConfigEntity> getSelectorList(SendMessageConfigPagination sendMessageConfigPagination) {
  96. QueryWrapper<SendMessageConfigEntity> queryWrapper = new QueryWrapper<>();
  97. queryWrapper.lambda().eq(SendMessageConfigEntity::getMessageSource, 5).eq(SendMessageConfigEntity::getEnabledMark, 1);
  98. queryWrapper.lambda().eq(SendMessageConfigEntity::getTemplateType, 0);
  99. Page<SendMessageConfigEntity> page = new Page<>(sendMessageConfigPagination.getCurrentPage(), sendMessageConfigPagination.getPageSize());
  100. IPage<SendMessageConfigEntity> userIPage = this.page(page, queryWrapper);
  101. return sendMessageConfigPagination.setData(userIPage.getRecords(), userIPage.getTotal());
  102. }
  103. @Override
  104. public SendMessageConfigEntity getInfo(String id) {
  105. QueryWrapper<SendMessageConfigEntity> queryWrapper = new QueryWrapper<>();
  106. queryWrapper.lambda().eq(SendMessageConfigEntity::getId, id);
  107. return this.getOne(queryWrapper);
  108. }
  109. @Override
  110. public SendMessageConfigEntity getInfoByEnCode(String enCode){
  111. QueryWrapper<SendMessageConfigEntity> queryWrapper = new QueryWrapper<>();
  112. queryWrapper.lambda().eq(SendMessageConfigEntity::getEnCode, enCode);
  113. return this.getOne(queryWrapper);
  114. }
  115. @Override
  116. public SendMessageConfigEntity getSysConfig(String enCode,String type){
  117. QueryWrapper<SendMessageConfigEntity> queryWrapper = new QueryWrapper<>();
  118. queryWrapper.lambda().eq(SendMessageConfigEntity::getTemplateType, type);
  119. queryWrapper.lambda().eq(SendMessageConfigEntity::getEnCode,enCode);
  120. return this.getOne(queryWrapper);
  121. }
  122. @Override
  123. public void create(SendMessageConfigEntity entity) {
  124. this.save(entity);
  125. }
  126. @Override
  127. public boolean update(String id, SendMessageConfigEntity entity) {
  128. entity.setId(id);
  129. return this.updateById(entity);
  130. }
  131. @Override
  132. public void delete(SendMessageConfigEntity entity) {
  133. if (entity != null) {
  134. this.removeById(entity.getId());
  135. }
  136. }
  137. //子表方法
  138. @Override
  139. public List<SendConfigTemplateEntity> getSendConfigTemplateList(String id, SendMessageConfigPagination sendMessageConfigPagination) {
  140. QueryWrapper<SendConfigTemplateEntity> queryWrapper = new QueryWrapper<>();
  141. queryWrapper.lambda().eq(SendConfigTemplateEntity::getSendConfigId, id);
  142. return sendConfigTemplateService.list(sendConfigTemplateService.getChild(sendMessageConfigPagination, queryWrapper));
  143. }
  144. @Override
  145. public List<SendConfigTemplateEntity> getSendConfigTemplateList(String id) {
  146. QueryWrapper<SendConfigTemplateEntity> queryWrapper = new QueryWrapper<>();
  147. queryWrapper.lambda().eq(SendConfigTemplateEntity::getSendConfigId, id);
  148. queryWrapper.lambda().orderByDesc(SendConfigTemplateEntity::getSortCode);
  149. return sendConfigTemplateService.list(queryWrapper);
  150. }
  151. //列表子表数据方法
  152. //验证表单唯一字段
  153. @Override
  154. public boolean checkForm(SendMessageConfigForm form, int i,String id) {
  155. int total = 0;
  156. if (ObjectUtil.isNotEmpty(form.getEnCode())) {
  157. QueryWrapper<SendMessageConfigEntity> enCodeWrapper = new QueryWrapper<>();
  158. enCodeWrapper.lambda().eq(SendMessageConfigEntity::getEnCode, form.getEnCode());
  159. if(StringUtil.isNotBlank(id) && !"null".equals(id)) {
  160. enCodeWrapper.lambda().ne(SendMessageConfigEntity::getId, id);
  161. }
  162. if ((int) this.count(enCodeWrapper) > i) {
  163. total++;
  164. }
  165. }
  166. if (form.getSendConfigTemplateList() != null) {
  167. }
  168. if (total > 0) {
  169. return true;
  170. }
  171. return false;
  172. }
  173. @Override
  174. public boolean isExistByFullName(String fullName, String id) {
  175. QueryWrapper<SendMessageConfigEntity> queryWrapper = new QueryWrapper<>();
  176. queryWrapper.lambda().eq(SendMessageConfigEntity::getFullName, fullName);
  177. if (!StringUtil.isEmpty(id)) {
  178. queryWrapper.lambda().ne(SendMessageConfigEntity::getId, id);
  179. }
  180. return this.count(queryWrapper) > 0 ? true : false;
  181. }
  182. @Override
  183. public boolean isExistByEnCode(String enCode, String id) {
  184. QueryWrapper<SendMessageConfigEntity> queryWrapper = new QueryWrapper<>();
  185. queryWrapper.lambda().eq(SendMessageConfigEntity::getEnCode, enCode);
  186. if (!StringUtil.isEmpty(id)) {
  187. queryWrapper.lambda().ne(SendMessageConfigEntity::getId, id);
  188. }
  189. return this.count(queryWrapper) > 0 ? true : false;
  190. }
  191. @Override
  192. public ActionResult ImportData(SendMessageConfigEntity entity) throws DataException {
  193. if (entity != null) {
  194. // if (isExistByFullName(entity.getFullName(), null)) {
  195. // return ActionResult.fail(MsgCode.EXIST001.get());
  196. // }
  197. if (isExistByEnCode(entity.getEnCode(), entity.getId())) {
  198. return ActionResult.fail(MsgCode.EXIST002.get());
  199. }
  200. try {
  201. this.save(entity);
  202. } catch (Exception e) {
  203. throw new DataException(MsgCode.IMP003.get());
  204. }
  205. return ActionResult.success(MsgCode.IMP001.get());
  206. }
  207. return ActionResult.fail(MsgCode.IMP006.get());
  208. }
  209. @Override
  210. public List<SendMessageConfigEntity> getList(List<String> idList){
  211. QueryWrapper<SendMessageConfigEntity> queryWrapper = new QueryWrapper<>();
  212. queryWrapper.lambda().in(SendMessageConfigEntity::getId,idList);
  213. return this.list(queryWrapper);
  214. }
  215. public List<String> getIdList(String usedId){
  216. List<String> idList = new ArrayList<>();
  217. QueryWrapper<SendMessageConfigEntity> queryWrapper = new QueryWrapper<>();
  218. if(this.list(queryWrapper) != null && this.list(queryWrapper).size()>0){
  219. idList = this.list(queryWrapper).stream().distinct().map(t->t.getId()).collect(Collectors.toList());
  220. }
  221. return idList;
  222. }
  223. @Override
  224. public void updateUsed(String id,List<String> sendConfigIdList){
  225. UserInfo userInfo = UserProvider.getUser();
  226. List<String> oldSendConfigList = this.getIdList(id);
  227. if(oldSendConfigList != null && oldSendConfigList.size()>0){
  228. List<String> subSendConfigIdList = this.subList(oldSendConfigList,sendConfigIdList);
  229. this.removeUsed(id,subSendConfigIdList);
  230. }
  231. if(sendConfigIdList != null && sendConfigIdList.size()>0) {
  232. List<SendMessageConfigEntity> sendConfigList = this.getList(sendConfigIdList);
  233. if (sendConfigIdList != null && sendConfigIdList.size() > 0) {
  234. // for (SendMessageConfigEntity entity : sendConfigList) {
  235. // SendConfigRecordEntity recordEntity = new SendConfigRecordEntity();
  236. // recordEntity = sendConfigRecordService.getRecord(entity.getId(),id);
  237. // if(recordEntity != null){
  238. // recordEntity.setLastModifyTime(DateUtil.getNowDate());
  239. // recordEntity.setLastModifyUserId(userInfo.getUserId());
  240. // sendConfigRecordService.update(recordEntity.getId(),recordEntity);
  241. // }else {
  242. // recordEntity = new SendConfigRecordEntity();
  243. // recordEntity.setId(RandomUtil.uuId());
  244. // recordEntity.setSendConfigId(entity.getId());
  245. // recordEntity.setMessageSource(entity.getMessageSource());
  246. // recordEntity.setUsedId(id);
  247. // recordEntity.setCreatorTime(DateUtil.getNowDate());
  248. // recordEntity.setCreatorUserId(userInfo.getUserId());
  249. // sendConfigRecordService.create(recordEntity);
  250. // }
  251. // }
  252. this.updateBatchById(sendConfigList);
  253. }
  254. }
  255. }
  256. @Override
  257. public void removeUsed(String id,List<String> sendConfigIdList){
  258. if(sendConfigIdList != null && sendConfigIdList.size()>0){
  259. List<SendMessageConfigEntity> subConfigList = this.getList(sendConfigIdList);
  260. // if(subConfigList != null && subConfigList.size()>0){
  261. // for(SendMessageConfigEntity subEntity : subConfigList) {
  262. // SendConfigRecordEntity recordEntity = sendConfigRecordService.getRecord(subEntity.getId(),id);
  263. // if(recordEntity != null){
  264. // sendConfigRecordService.delete(recordEntity);
  265. // }
  266. // }
  267. // }
  268. this.updateBatchById(subConfigList);
  269. }
  270. }
  271. @Override
  272. public List<String> subList(List<String> list1, List<String> list2) {
  273. //空间换时间 降低时间复杂度
  274. Map<String, String> tempMap = new HashMap<>();
  275. for(String str:list2){
  276. tempMap.put(str,str);
  277. }
  278. //LinkedList 频繁添加删除 也可以ArrayList容量初始化为List1.size(),防止数据量过大时频繁扩容以及数组复制
  279. List<String> resList = new LinkedList<>();
  280. for(String str:list1){
  281. if(!tempMap.containsKey(str)){
  282. resList.add(str);
  283. }
  284. }
  285. return resList;
  286. }
  287. @Override
  288. public boolean idUsed(String id){
  289. boolean flag = false;
  290. SendMessageConfigEntity entity = this.getInfo(id);
  291. // TODO 删除逻辑重新设置
  292. return flag;
  293. }
  294. }