CaseServiceImpl.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. package com.fdkankan.fusion.service.impl;
  2. import cn.dev33.satoken.context.SaHolder;
  3. import cn.dev33.satoken.stp.StpUtil;
  4. import cn.hutool.core.bean.BeanUtil;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.fdkankan.fusion.common.ResultCode;
  8. import com.fdkankan.fusion.common.ResultData;
  9. import com.fdkankan.fusion.common.util.NumTypeUtils;
  10. import com.fdkankan.fusion.entity.*;
  11. import com.fdkankan.fusion.exception.BusinessException;
  12. import com.fdkankan.fusion.common.PageInfo;
  13. import com.fdkankan.fusion.mapper.ICaseMapper;
  14. import com.fdkankan.fusion.request.CaseParam;
  15. import com.fdkankan.fusion.request.ScenePram;
  16. import com.fdkankan.fusion.response.CaseVo;
  17. import com.fdkankan.fusion.response.HotVo;
  18. import com.fdkankan.fusion.response.SceneVo;
  19. import com.fdkankan.fusion.service.*;
  20. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  21. import org.apache.commons.lang3.StringUtils;
  22. import org.springframework.beans.BeanUtils;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Service;
  25. import java.time.Period;
  26. import java.util.*;
  27. import java.util.stream.Collectors;
  28. /**
  29. * <p>
  30. * 服务实现类
  31. * </p>
  32. *
  33. * @author
  34. * @since 2022-07-27
  35. */
  36. @Service
  37. public class CaseServiceImpl extends ServiceImpl<ICaseMapper, CaseEntity> implements ICaseService {
  38. @Autowired
  39. ISceneService sceneService;
  40. @Autowired
  41. ICaseNumService caseNumService;
  42. @Autowired
  43. ICaseFilesService caseFilesService;
  44. @Autowired
  45. IModelService modelService;
  46. @Autowired
  47. IFusionNumService fusionNumService;
  48. @Autowired
  49. ITmProjectService tmProjectService;
  50. @Autowired
  51. ITmDepartmentService tmDepartmentService;
  52. @Autowired
  53. ITmUserService tmUserService;
  54. @Autowired
  55. ITmCameraService tmCameraService;
  56. @Autowired
  57. ICaseSettingsService caseSettingsService;
  58. @Autowired
  59. IMapConfigService mapConfigService;
  60. @Autowired
  61. IScenePlusService scenePlusService;
  62. @Override
  63. public PageInfo pageList(CaseParam param,String userName) {
  64. LambdaQueryWrapper<CaseEntity> wrapper = new LambdaQueryWrapper<>();
  65. if(StringUtils.isNotBlank(param.getCaseTitle())){
  66. wrapper.like(CaseEntity::getCaseTitle,param.getCaseTitle());
  67. }
  68. List<String> deptIds = new ArrayList<>();
  69. String share = SaHolder.getRequest().getHeader("share");
  70. if(StringUtils.isNotBlank(share) && "1".equals(share)){ //分享请求头
  71. deptIds = tmDepartmentService.list().stream().map(TmDepartment::getId).collect(Collectors.toList());
  72. wrapper.eq(CaseEntity::getMapShow,true);
  73. }else {
  74. deptIds = tmDepartmentService.getDeptIds();
  75. }
  76. if(deptIds.size() <=0){
  77. return PageInfo.PageInfo(new Page<>(param.getPageNum(),param.getPageSize()));
  78. }
  79. List<String> deptIds2 = tmDepartmentService.getSonByDeptIdAndDeptIds(deptIds, param.getDeptId());
  80. wrapper.in(CaseEntity::getDeptId,deptIds2);
  81. //wrapper.eq(CaseEntity::getUserName,userName);
  82. wrapper.eq(CaseEntity::getType,0);
  83. wrapper.orderByDesc(CaseEntity::getCreateTime);
  84. Page<CaseEntity> page = this.page( new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
  85. Set<String> tmProIds = page.getRecords().stream().filter(entity -> StringUtils.isNotBlank(entity.getTmProjectId()))
  86. .map(CaseEntity::getTmProjectId).collect(Collectors.toSet());
  87. HashMap<String, TmProject> proMap = tmProjectService.getMapByIds(tmProIds);
  88. for (CaseEntity record : page.getRecords()) {
  89. if(StringUtils.isNotBlank(record.getTmProjectId())){
  90. TmProject project = proMap.get(record.getTmProjectId());
  91. if(project != null){
  92. record.setDeptId(project.getDeptId());
  93. }
  94. }
  95. }
  96. List<Integer> mapIds = page.getRecords().stream().map(CaseEntity::getMapId).collect(Collectors.toList());
  97. if(!mapIds.isEmpty()){
  98. HashMap<Integer,MapConfig> map = mapConfigService.getMapByIds(mapIds);
  99. for (CaseEntity caseEntity : page.getRecords()) {
  100. if(caseEntity.getMapId() != null && map.get(caseEntity.getMapId()) != null){
  101. MapConfig mapConfig = map.get(caseEntity.getMapId());
  102. caseEntity.setMapConfig(mapConfig);
  103. }
  104. }
  105. }
  106. Set<String> deptIds1 = page.getRecords().stream().filter(entity -> StringUtils.isNotBlank(entity.getDeptId()))
  107. .map(CaseEntity::getDeptId).collect(Collectors.toSet());
  108. HashMap<String, TmDepartment> mapByDeptIds = tmDepartmentService.getMapByDeptIds(deptIds1);
  109. for (CaseEntity record : page.getRecords()) {
  110. TmDepartment department = mapByDeptIds.get(record.getDeptId());
  111. if(department != null){
  112. record.setDeptName(department.getName());
  113. }
  114. List<CaseSettings> caseSettings = caseSettingsService.getByCaseId(record.getCaseId());
  115. if(!caseSettings.isEmpty()){
  116. CaseSettings caseSettings1 = caseSettings.get(0);
  117. if(caseSettings1 != null){
  118. record.setCover(caseSettings1.getCover());
  119. }
  120. }
  121. }
  122. return PageInfo.PageInfo(page);
  123. }
  124. @Override
  125. public List<SceneVo> sceneList(CaseParam param) {
  126. if(param.getCaseId() == null){
  127. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  128. }
  129. List<CaseNumEntity> numListByCase = caseNumService.getByCaseId(param.getCaseId());
  130. List<String> laserNumList = numListByCase.stream().filter(e -> NumTypeUtils.isLaser(e.getNumType())).map(CaseNumEntity::getNum).collect(Collectors.toList());
  131. List<String> meshNumList = numListByCase.stream().filter(e ->! NumTypeUtils.isLaser(e.getNumType())).map(CaseNumEntity::getNum).collect(Collectors.toList());
  132. List<SceneVo> meshSceneList = scenePlusService.getMeshList(meshNumList);
  133. List<SceneVo> laserSceneList = scenePlusService.getLaserList(laserNumList);
  134. HashMap<String, Model> laserModelMap = modelService.getMapByNum(laserNumList,0);
  135. HashMap<String, Model> meshModelMap = modelService.getMapByNum(meshNumList,1);
  136. for (SceneVo sceneVo : laserSceneList) {
  137. Model model = laserModelMap.get(sceneVo.getNum());
  138. if(model != null){
  139. BeanUtils.copyProperties(model,sceneVo);
  140. }
  141. }
  142. for (SceneVo sceneVo : meshSceneList) {
  143. Model model = meshModelMap.get(sceneVo.getNum());
  144. if(model != null){
  145. BeanUtils.copyProperties(model,sceneVo);
  146. }
  147. }
  148. List<SceneVo> listAll = new ArrayList<>();
  149. listAll.addAll(meshSceneList);
  150. listAll.addAll(laserSceneList);
  151. return listAll;
  152. }
  153. @Override
  154. public void addOrUpdate(CaseParam param, String userName) {
  155. if(StringUtils.isEmpty(param.getCaseTitle())){
  156. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  157. }
  158. CaseEntity caseEntity ;
  159. if(param.getCaseId() == null){
  160. caseEntity = new CaseEntity();
  161. TmUser tmUser = tmUserService.getByUserName(userName);
  162. caseEntity.setDeptId(tmUser.getDeptId());
  163. caseEntity.setUserName(userName);
  164. }else {
  165. caseEntity = this.getById(param.getCaseId());
  166. }
  167. caseEntity.setCaseTitle(param.getCaseTitle());
  168. caseEntity.setMapShow(param.getMapShow());
  169. caseEntity.setLatAndLong(param.getLatAndLong());
  170. caseEntity.setMapUrl(param.getMapUrl());
  171. caseEntity.setUpdateTime(null);
  172. this.saveOrUpdate(caseEntity);
  173. }
  174. @Override
  175. public void addScene(CaseParam param) {
  176. if(param.getCaseId() == null){
  177. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  178. }
  179. CaseEntity caseEntity = this.getById(param.getCaseId());
  180. if(caseEntity == null){
  181. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  182. }
  183. caseNumService.addBatch(param.getCaseId(),param.getSceneNumParam());
  184. }
  185. @Override
  186. public void delete(Integer caseId) {
  187. if(caseId == null){
  188. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  189. }
  190. //删除关联的场景
  191. caseNumService.deleteByCaseId(caseId);
  192. caseFilesService.deleteByCaseId(caseId);
  193. this.removeById(caseId);
  194. }
  195. @Override
  196. public List<CaseEntity> getByIds(List<Integer> caseIdIds) {
  197. LambdaQueryWrapper<CaseEntity> wrapper = new LambdaQueryWrapper<>();
  198. wrapper.in(CaseEntity::getCaseId,caseIdIds);
  199. return this.list(wrapper);
  200. }
  201. @Override
  202. public CaseEntity getByTmProjectId(String projectId) {
  203. LambdaQueryWrapper<CaseEntity> wrapper = new LambdaQueryWrapper<>();
  204. wrapper.eq(CaseEntity::getTmProjectId,projectId);
  205. return this.getOne(wrapper);
  206. }
  207. @Override
  208. public void updateIdenTityStatus(Integer caseId, Integer status) {
  209. CaseEntity caseEntity = this.getById(caseId);
  210. if(caseEntity != null && StringUtils.isNotBlank(caseEntity.getTmProjectId())){
  211. tmProjectService.updateIdenTityStatus(caseEntity.getTmProjectId(),status);
  212. }
  213. }
  214. @Override
  215. public String getDeptId(Integer caseId) {
  216. CaseEntity caseEntity = this.getById(caseId);
  217. String deptId = caseEntity.getDeptId();
  218. if(caseEntity.getType() ==1){
  219. deptId = tmProjectService.getById(caseEntity.getTmProjectId()).getDeptId();
  220. }
  221. return deptId;
  222. }
  223. @Override
  224. public CaseVo getInfo(Integer caseId,Boolean isLogin) {
  225. CaseEntity caseEntity = this.getById(caseId);
  226. if(caseEntity == null){
  227. return null;
  228. }
  229. CaseVo caseVo = new CaseVo();
  230. BeanUtil.copyProperties(caseEntity,caseVo);
  231. if(caseEntity.getTmProjectId() != null){
  232. TmProject tmProject = tmProjectService.getById(caseEntity.getTmProjectId());
  233. if(tmProject!= null && tmProject.getIsDelete()!=0){
  234. throw new BusinessException(ResultCode.CASE_NOT_EXITS);
  235. }
  236. caseVo.setTmProject(tmProject);
  237. caseVo.setCaseTitle(tmProject.getProjectName());
  238. }
  239. if(isLogin){
  240. checkCaseAuth(caseVo);
  241. }
  242. return caseVo;
  243. }
  244. private void checkCaseAuth(CaseVo caseVo) {
  245. String share = SaHolder.getRequest().getHeader("share");
  246. if(StringUtils.isNotBlank(share) && "1".equals(share)) { //分享请求头
  247. return;
  248. }
  249. if(!StpUtil.isLogin()){
  250. throw new BusinessException(ResultCode.USER_NOT_LOGIN);
  251. }
  252. List<String> deptIds = tmDepartmentService.getDeptIds();
  253. if(deptIds.size() <=0){
  254. throw new BusinessException(ResultCode.NOT_PERMISSION);
  255. }
  256. String caseDeptId = caseVo.getDeptId();
  257. if(caseVo.getTmProject() != null){
  258. caseDeptId = caseVo.getTmProject().getDeptId();
  259. }
  260. String deptId =(String) StpUtil.getExtra("deptId");
  261. List<String> deptIds2 = tmDepartmentService.getSonByDeptIdAndDeptIds(deptIds, deptId);
  262. if(!deptIds2.contains(caseDeptId)){
  263. throw new BusinessException(ResultCode.NOT_PERMISSION);
  264. }
  265. }
  266. }