TmCameraServiceImpl.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. package com.fdkankan.fusion.service.impl;
  2. import java.util.*;
  3. import cn.hutool.core.collection.CollectionUtil;
  4. import com.alibaba.fastjson.JSONArray;
  5. import com.alibaba.fastjson.JSONObject;
  6. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  7. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  8. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  9. import com.fdkankan.fusion.common.PageInfo;
  10. import com.fdkankan.fusion.common.ResultCode;
  11. import com.fdkankan.fusion.common.enums.IdPreEnum;
  12. import com.fdkankan.fusion.common.util.IdUtils;
  13. import com.fdkankan.fusion.entity.TmCamera;
  14. import com.fdkankan.fusion.entity.TmDepartment;
  15. import com.fdkankan.fusion.entity.TmUser;
  16. import com.fdkankan.fusion.exception.BusinessException;
  17. import com.fdkankan.fusion.httpClient.FdService;
  18. import com.fdkankan.fusion.httpClient.client.FdKKClient;
  19. import com.fdkankan.fusion.httpClient.request.FdkkCameraParam;
  20. import com.fdkankan.fusion.httpClient.response.FdkkResponse;
  21. import com.fdkankan.fusion.mapper.ITmCameraMapper;
  22. import com.fdkankan.fusion.response.BindCameraDto;
  23. import com.fdkankan.fusion.response.CameraVo;
  24. import com.fdkankan.fusion.service.ITmCameraService;
  25. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  26. import com.fdkankan.fusion.service.ITmDepartmentService;
  27. import com.fdkankan.fusion.service.ITmUserService;
  28. import org.apache.commons.lang3.StringUtils;
  29. import org.apache.ibatis.annotations.Param;
  30. import org.springframework.beans.factory.annotation.Autowired;
  31. import org.springframework.stereotype.Service;
  32. import java.util.stream.Collectors;
  33. /**
  34. * <p>
  35. * 相机关联关系表 服务实现类
  36. * </p>
  37. *
  38. * @author
  39. * @since 2023-07-28
  40. */
  41. @Service
  42. public class TmCameraServiceImpl extends ServiceImpl<ITmCameraMapper, TmCamera> implements ITmCameraService {
  43. @Autowired
  44. FdService fdService;
  45. @Autowired
  46. ITmDepartmentService tmDepartmentService;
  47. @Autowired
  48. ITmUserService tmUserService;
  49. @Override
  50. public List<TmCamera> getByUserId(String userId) {
  51. LambdaQueryWrapper<TmCamera> wrapper = new LambdaQueryWrapper<>();
  52. wrapper.eq(TmCamera::getUserId,userId);
  53. return list(wrapper);
  54. }
  55. @Override
  56. public TmCamera getBySnCode(String snCode) {
  57. LambdaQueryWrapper<TmCamera> wrapper = new LambdaQueryWrapper<>();
  58. wrapper.eq(TmCamera::getCameraSn,snCode);
  59. return getOne(wrapper);
  60. }
  61. @Override
  62. public void bind(BindCameraDto param) {
  63. if(StringUtils.isBlank(param.getCameraSn()) || StringUtils.isBlank(param.getDeptId()) || StringUtils.isBlank(param.getUserId()) || param.getCameraType() == null){
  64. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  65. }
  66. TmUser tmUser = tmUserService.getById(param.getUserId());
  67. if(tmUser == null || tmUser.getStatus() == 0){
  68. throw new BusinessException(ResultCode.USER_NOT_EXIST);
  69. }
  70. TmDepartment tmDepartment = tmDepartmentService.getById(param.getDeptId());
  71. if(tmDepartment == null){
  72. throw new BusinessException(ResultCode.DEPT_NOT_EXITS);
  73. }
  74. TmCamera tmCamera = this.getBySnCode(param.getCameraSn());
  75. if(tmCamera != null){
  76. throw new BusinessException(ResultCode.CAMERA_EXITS);
  77. }
  78. FdkkResponse fdkkResponse2 = fdService.fdkKBind(param.getCameraSn(),tmUser.getUserName(),param.getCameraType());
  79. if(fdkkResponse2.getCode() != 0){
  80. throw new BusinessException(fdkkResponse2.getCode(),fdkkResponse2.getMsg());
  81. }
  82. FdkkResponse<CameraVo> fdkkResponse = fdService.getCameraDetail(param.getCameraSn());
  83. if(fdkkResponse.getCode() !=0 || fdkkResponse.getData() == null){
  84. throw new BusinessException(ResultCode.CAMERA_NOT_EXITS);
  85. }
  86. tmCamera = new TmCamera();
  87. tmCamera.setId(IdUtils.genId(IdPreEnum.CAMERA_PRE.getPre()));
  88. tmCamera.setCameraSn(param.getCameraSn());
  89. tmCamera.setDeptId(param.getDeptId());
  90. tmCamera.setUserId(param.getUserId());
  91. tmCamera.setFdCameraId(fdkkResponse.getData().getId());
  92. this.save(tmCamera);
  93. }
  94. @Override
  95. public void unBind(BindCameraDto param) {
  96. if(StringUtils.isBlank(param.getCameraSn())){
  97. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  98. }
  99. TmCamera tmCamera = this.getBySnCode(param.getCameraSn());
  100. if(tmCamera == null){
  101. throw new BusinessException(ResultCode.CAMERA_NOT_EXITS);
  102. }
  103. this.unBind(Arrays.asList(tmCamera));
  104. }
  105. @Override
  106. public void unBind(List<TmCamera> cameras) {
  107. if(CollectionUtil.isNotEmpty(cameras)){
  108. //四维解绑相机
  109. List<String> tmCameraIds = cameras.stream().map(TmCamera::getId).collect(Collectors.toList());
  110. FdkkResponse fdkkResponse = fdService.fdkkUnbind(cameras);
  111. if(fdkkResponse.getCode() == 0 ){
  112. this.removeByIds(tmCameraIds);
  113. }else {
  114. throw new BusinessException(fdkkResponse.getCode(),fdkkResponse.getMsg());
  115. }
  116. }
  117. }
  118. @Override
  119. public void edit(BindCameraDto param) {
  120. if(StringUtils.isBlank(param.getCameraSn())|| StringUtils.isBlank(param.getUserId()) || param.getCameraType() == null){
  121. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  122. }
  123. TmUser tmUser = tmUserService.getById(param.getUserId());
  124. if(tmUser == null || tmUser.getStatus() == 0){
  125. throw new BusinessException(ResultCode.USER_NOT_EXIST);
  126. }
  127. TmCamera tmCamera = this.getBySnCode(param.getCameraSn());
  128. if(tmCamera == null){
  129. throw new BusinessException(ResultCode.CAMERA_NOT_EXITS);
  130. }
  131. FdkkResponse fdkkResponse = fdService.fdkkUnbind(Arrays.asList(tmCamera));
  132. if(fdkkResponse.getCode() !=0){
  133. throw new BusinessException(fdkkResponse.getCode(),fdkkResponse.getMsg());
  134. }
  135. fdkkResponse = fdService.fdkKBind(param.getCameraSn(), tmUser.getUserName(),param.getCameraType());
  136. if(fdkkResponse.getCode() !=0){
  137. throw new BusinessException(fdkkResponse.getCode(),fdkkResponse.getMsg());
  138. }
  139. LambdaUpdateWrapper<TmCamera> wrapper = new LambdaUpdateWrapper<>();
  140. wrapper.eq(TmCamera::getCameraSn,param.getCameraSn());
  141. wrapper.set(TmCamera::getUserId,param.getUserId());
  142. this.update(wrapper);
  143. }
  144. @Override
  145. public Object getDetail(String snCode) {
  146. if(StringUtils.isBlank(snCode)){
  147. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  148. }
  149. TmCamera tmCamera = this.getBySnCode(snCode);
  150. if(tmCamera == null){
  151. throw new BusinessException(ResultCode.CAMERA_NOT_EXITS);
  152. }
  153. return fdService.getCameraDetail(snCode);
  154. }
  155. @Override
  156. public Object pageList(Long pageNum, Long pageSize, String snCode, String deptId, Integer type,String searchKey) {
  157. LambdaQueryWrapper<TmCamera> wrapper = new LambdaQueryWrapper<>();
  158. if(StringUtils.isNotBlank(searchKey)){
  159. List<TmUser> tmUsers = tmUserService.getLikeNickName(searchKey);
  160. if(tmUsers.size() <=0){
  161. return PageInfo.PageInfo(new Page<>(pageNum,pageSize));
  162. }
  163. List<String> userIds = tmUsers.stream().map(TmUser::getId).collect(Collectors.toList());
  164. wrapper.in(TmCamera::getUserId,userIds);
  165. }
  166. if (StringUtils.isNotBlank(snCode)) {
  167. wrapper.like(TmCamera::getCameraSn,snCode);
  168. }
  169. List<String> deptIds = tmDepartmentService.getDeptIds();
  170. if(StringUtils.isNotBlank(deptId)){
  171. deptIds = tmDepartmentService.getSonByDeptIdAndDeptIds(deptIds,deptId);
  172. }
  173. wrapper.in(TmCamera::getDeptId,deptIds);
  174. wrapper.orderByDesc(TmCamera::getCreateTime);
  175. Page<TmCamera> page = this.page(new Page<>(pageNum, pageSize), wrapper);
  176. if(page.getRecords().size()<=0){
  177. return PageInfo.PageInfo(page);
  178. }
  179. List<String> snCodes = page.getRecords().stream().map(TmCamera::getCameraSn).collect(Collectors.toList());
  180. FdkkResponse<List<CameraVo>> fdkkResponse = fdService.getCameraDetails(snCodes);
  181. HashMap<String,String> deptIdMap = new HashMap<>();
  182. HashMap<String,String> deptNameMap = new HashMap<>();
  183. for (TmCamera record : page.getRecords()) {
  184. deptIdMap.put(record.getCameraSn().toUpperCase(),record.getDeptId());
  185. }
  186. Collection<String> values = deptIdMap.values();
  187. if(values.size() >0){
  188. List<TmDepartment> departments = tmDepartmentService.listByIds(values);
  189. for (TmDepartment department : departments) {
  190. deptNameMap.put(department.getId(),department.getName());
  191. }
  192. }
  193. List<CameraVo> list = fdkkResponse.getData();
  194. HashMap<String ,TmUser> map = tmUserService.getByCamera(page.getRecords());
  195. for (CameraVo cameraVo : list) {
  196. String deptIdO = deptIdMap.get(cameraVo.getSnCode().toUpperCase());
  197. cameraVo.setDeptId(deptIdO);
  198. cameraVo.setDeptName(deptNameMap.get(deptIdO));
  199. TmUser tmUser = map.get(cameraVo.getSnCode().toUpperCase());
  200. if(tmUser != null){
  201. cameraVo.setNickName(tmUser.getNickName());
  202. cameraVo.setUserId(tmUser.getId());
  203. }
  204. }
  205. Page<CameraVo> objectPage = new Page<>(pageNum, pageSize);
  206. objectPage.setRecords(list);
  207. objectPage.setTotal(page.getTotal());
  208. return PageInfo.PageInfo(objectPage);
  209. }
  210. @Override
  211. public List<TmCamera> getByDeptIds() {
  212. List<String> deptIds = tmDepartmentService.getDeptIds();
  213. return getByDeptIds(deptIds);
  214. }
  215. @Override
  216. public List<TmCamera> getByDeptIds(List<String> deptIds) {
  217. if(CollectionUtil.isEmpty(deptIds)){
  218. return new ArrayList<>();
  219. }
  220. LambdaQueryWrapper<TmCamera> wrapper = new LambdaQueryWrapper<>();
  221. wrapper.in(TmCamera::getDeptId,deptIds);
  222. return this.list(wrapper);
  223. }
  224. @Override
  225. public HashMap<String, TmDepartment> getMapBySnCodes(Set<String> snCodes) {
  226. HashMap<String, TmDepartment> map = new HashMap<>();
  227. if(snCodes.size() >0){
  228. LambdaQueryWrapper<TmCamera> wrapper = new LambdaQueryWrapper<>();
  229. wrapper.in(TmCamera::getCameraSn,snCodes);
  230. List<TmCamera> list = this.list(wrapper);
  231. Set<String> deptIds = list.stream().map(TmCamera::getDeptId).collect(Collectors.toSet());
  232. HashMap<String, TmDepartment> mapDept = tmDepartmentService.getMapByDeptIds(deptIds);
  233. list.forEach(entity -> map.put(entity.getCameraSn().toUpperCase(),mapDept.get(entity.getDeptId())));
  234. }
  235. return map;
  236. }
  237. }