MarkingServiceImpl.java 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. package com.fdkankan.site.service.impl;
  2. import cn.hutool.core.collection.CollectionUtil;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import cn.hutool.core.util.StrUtil;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  7. import com.baomidou.mybatisplus.core.metadata.IPage;
  8. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  9. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  10. import com.fdkankan.site.common.PageInfo;
  11. import com.fdkankan.site.common.ResultCode;
  12. import com.fdkankan.site.common.ResultData;
  13. import com.fdkankan.site.common.util.VUtils;
  14. import com.fdkankan.site.entity.*;
  15. import com.fdkankan.site.entity.dto.MarkingDTO;
  16. import com.fdkankan.site.entity.dto.UserDTO;
  17. import com.fdkankan.site.mapper.IMarkingMapper;
  18. import com.fdkankan.site.request.MarkingParam;
  19. import com.fdkankan.site.request.MarkingSearchParam;
  20. import com.fdkankan.site.response.SceneVo;
  21. import com.fdkankan.site.service.*;
  22. import com.fdkankan.sms.SmsService;
  23. import com.fdkankan.sms.SmsServiceV2;
  24. import com.github.yulichang.wrapper.MPJLambdaWrapper;
  25. import lombok.extern.slf4j.Slf4j;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.beans.factory.annotation.Value;
  28. import org.springframework.stereotype.Service;
  29. import java.util.*;
  30. import java.util.function.Function;
  31. import java.util.stream.Collectors;
  32. import static java.util.stream.Collectors.toList;
  33. @Service
  34. @Slf4j
  35. public class MarkingServiceImpl extends ServiceImpl<IMarkingMapper, Marking> implements IMarkingService {
  36. @Autowired
  37. IProjectLogService projectLogService;
  38. @Autowired
  39. IMarkingUserService markingUserService;
  40. @Autowired
  41. IProjectTeamService projectTeamService;
  42. @Autowired
  43. IProjectService projectService;
  44. @Autowired
  45. SmsServiceV2 smsService;
  46. @Autowired
  47. IProjectNumService projectNumService;
  48. @Autowired
  49. ISceneService sceneService;
  50. @Value("${phone.code.cn}")
  51. private String cnCode;
  52. @Override
  53. public Object pageList(MarkingSearchParam param) {
  54. VUtils.isTure(param.getProjectId() == null).throwMessage(ResultCode.PARAM_MISS);
  55. List<Marking> byProjectId = findByProjectId(param.getProjectId());
  56. Set<Integer> projectIds = new HashSet<>(Arrays.asList(param.getProjectId()));
  57. List<ProjectNum> projectNum = projectNumService.getListByProjectIds(projectIds);
  58. HashMap<Integer,List<String>> typeMap = projectNumService.getTypeMap(projectNum);
  59. List<SceneVo> list = sceneService.getListByNumMap(typeMap);
  60. List<Marking> difference = byProjectId.stream()
  61. .filter(obj1 -> list.stream()
  62. .noneMatch(obj2 -> obj2.getNum().equals(obj1.getNum())))
  63. .collect(Collectors.toList());
  64. for (Marking marking : difference) {
  65. delMarking(marking.getMarkingId());
  66. }
  67. MPJLambdaWrapper<Marking> wrapper = new MPJLambdaWrapper<Marking>()
  68. .selectAll(Marking.class)
  69. .eq(Marking::getProjectId,param.getProjectId());
  70. if (Optional.ofNullable(param.getNum()).isPresent()) {
  71. wrapper.eq(Marking::getNum,param.getNum());
  72. }
  73. if (Optional.ofNullable(param.getMarkingStatus()).isPresent()) {
  74. wrapper.eq(Marking::getMarkingStatus,param.getMarkingStatus());
  75. }
  76. if (Optional.ofNullable(param.getMarkingTitle()).isPresent()&& StrUtil.isNotEmpty(param.getMarkingTitle())) {
  77. wrapper.like(Marking::getMarkingTitle,param.getMarkingTitle());
  78. }
  79. IPage<MarkingDTO> page = baseMapper.selectJoinPage(new Page<>(param.getPageNum(), param.getPageSize()), MarkingDTO.class, wrapper);
  80. for (MarkingDTO record : page.getRecords()) {
  81. List<UserDTO> users = markingUserService.findByProjectIdAndMarkingId(record.getProjectId(), record.getMarkingId());
  82. record.setUsers(users);
  83. if (ObjectUtil.isNotNull(record.getUpdateBy())){
  84. ProjectTeam update = projectTeamService.findByUserIdAndProjectId(Integer.valueOf(record.getUpdateBy()), record.getProjectId());
  85. if (ObjectUtil.isNotNull(update)){
  86. if (StrUtil.isNotEmpty(update.getNickName())){
  87. record.setLastUpdateBy(update.getNickName());
  88. }
  89. }
  90. }else {
  91. ProjectTeam create = projectTeamService.findByUserIdAndProjectId(Integer.valueOf(record.getCreateBy()), record.getProjectId());
  92. if (ObjectUtil.isNotNull(create)){
  93. if (StrUtil.isNotEmpty(create.getNickName())){
  94. record.setLastUpdateBy(create.getNickName());
  95. }
  96. }
  97. }
  98. ProjectTeam create = projectTeamService.findByUserIdAndProjectId(Integer.valueOf(record.getCreateBy()), record.getProjectId());
  99. if (ObjectUtil.isNotNull(create)){
  100. if (StrUtil.isNotEmpty(create.getNickName())){
  101. record.setCreateBy(create.getNickName());
  102. }
  103. }
  104. }
  105. return PageInfo.PageInfo(page);
  106. }
  107. @Override
  108. public void delMarking(Integer markingId,String token) {
  109. Marking marking = getById(markingId);
  110. projectService.checkTokenPer(token, marking.getProjectId());
  111. if (Optional.ofNullable(marking).isPresent()) {
  112. LambdaUpdateWrapper<Marking> wrapper = new LambdaUpdateWrapper<>();
  113. wrapper.eq(Marking::getMarkingId, markingId);
  114. this.baseMapper.delete(wrapper);
  115. projectLogService.addLog(marking.getProjectId(), "删除标注:" + marking.getMarkingTitle(), token, null);
  116. }
  117. }
  118. @Override
  119. public void delMarking(Integer markingId) {
  120. LambdaUpdateWrapper<Marking> wrapper = new LambdaUpdateWrapper<>();
  121. wrapper.eq(Marking::getMarkingId, markingId);
  122. this.baseMapper.delete(wrapper);
  123. }
  124. @Override
  125. public List<Marking> findByProjectId(Integer projectId) {
  126. LambdaQueryWrapper<Marking> wrapper=new LambdaQueryWrapper<>();
  127. wrapper.eq(Marking::getProjectId,projectId);
  128. return list(wrapper);
  129. }
  130. @Override
  131. public List<Marking> findByProjectIdAndNum(Integer projectId, String num) {
  132. LambdaQueryWrapper<Marking> wrapper=new LambdaQueryWrapper<>();
  133. wrapper.eq(Marking::getProjectId,projectId);
  134. wrapper.eq(Marking::getNum,num);
  135. return list(wrapper);
  136. }
  137. @Override
  138. public ResultData addOrUpdate(MarkingParam param,String token) {
  139. VUtils.isTure(param.getNum() == null).throwMessage(ResultCode.PARAM_MISS);
  140. projectService.checkTokenPer(token, param.getProjectId());
  141. if (Optional.ofNullable(param.getMarkingId()).isPresent()){
  142. // 写不为空的逻辑
  143. log.info("不为空修改");
  144. // ProjectTeam byUserIdAndProjectId = projectTeamService.findByUserIdAndProjectId(getUserId(), param.getProjectId());
  145. // param.setLastUpdateBy(byUserIdAndProjectId.getNickName());
  146. updateById(param);
  147. } else {
  148. // 写为空的逻辑
  149. log.info("为空");
  150. // ProjectTeam byUserIdAndProjectId = projectTeamService.findByUserIdAndProjectId(getUserId(), param.getProjectId());
  151. // param.setLastCreateBy(byUserIdAndProjectId.getNickName());
  152. boolean save = save(param);
  153. if (save){
  154. Project project = projectService.getById(param.getProjectId());
  155. if (ObjectUtil.isNotNull(project)){
  156. if (CollectionUtil.isNotEmpty(param.getUserIds())) {
  157. for (Integer userId : param.getUserIds()) {
  158. ProjectTeam projectTeam = projectTeamService.findByUserIdAndProjectId(userId, param.getProjectId());
  159. if (Optional.ofNullable(projectTeam).isPresent()&&Optional.ofNullable(projectTeam.getBindAccount()).isPresent()) {
  160. try {
  161. smsService.sendSms(projectTeam.getBindAccount(), "{\"projectname\":\"" + project.getProjectName() + "\"}", cnCode);
  162. } catch (Exception e) {
  163. e.printStackTrace();
  164. }
  165. }
  166. }
  167. }
  168. }
  169. }
  170. }
  171. if (CollectionUtil.isNotEmpty(param.getUserIds())) {
  172. markingUserService.delByMarkingId(param.getMarkingId());
  173. for (Integer userId : param.getUserIds()) {
  174. MarkingUser markingUser=new MarkingUser();
  175. markingUser.setUserId(userId);
  176. markingUser.setMarkingId(param.getMarkingId());
  177. markingUserService.save(markingUser);
  178. }
  179. }
  180. return ResultData.ok(param);
  181. }
  182. @Override
  183. public List<Map<Integer, Integer>> countMarkingStatus(MarkingSearchParam param) {
  184. List<Map<Integer, Integer>> maps = getBaseMapper().countMarkingStatus(param.getProjectId());
  185. return maps;
  186. }
  187. }