BaseCameraManagementServiceImpl.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. package com.ozs.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.github.pagehelper.PageHelper;
  6. import com.ozs.common.exception.ServiceException;
  7. import com.ozs.common.utils.StringUtils;
  8. import com.ozs.common.utils.bean.BeanUtils;
  9. import com.ozs.common.utils.bean.BeanValidators;
  10. import com.ozs.entity.BaseCameraManagement;
  11. import com.ozs.entity.BaseDeviceDynamicManagement;
  12. import com.ozs.entity.BaseRailwayManagement;
  13. import com.ozs.entity.BaseUser;
  14. import com.ozs.entity.vo.BaseCameraManagementHomeVo;
  15. import com.ozs.entity.vo.BaseCameraManagementVo;
  16. import com.ozs.entity.vo.BaseCameraManagementVos;
  17. import com.ozs.mapper.*;
  18. import com.ozs.service.BaseCameraManagementService;
  19. import com.ozs.service.BaseRailwayManagementService;
  20. import com.ozs.service.BaseUserService;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.util.ObjectUtils;
  24. import javax.annotation.Resource;
  25. import javax.validation.Validator;
  26. import java.util.ArrayList;
  27. import java.util.HashSet;
  28. import java.util.List;
  29. import java.util.Set;
  30. /**
  31. * <p>
  32. * 相机台账管理表 服务实现类
  33. * </p>
  34. *
  35. * @author ozs
  36. * @since 2023-02-17
  37. */
  38. @Service
  39. public class BaseCameraManagementServiceImpl extends ServiceImpl<BaseCameraManagementMapper, BaseCameraManagement> implements BaseCameraManagementService {
  40. public static final String PATTERN = "^[0-9]*$";
  41. @Autowired
  42. protected Validator validator;
  43. @Autowired
  44. BaseDeviceDynamicManagementMapper baseDeviceDynamicManagementMapper;
  45. @Resource
  46. private BaseCameraManagementMapper baseCameraManagementMapper;
  47. @Resource
  48. private BaseUserService baseUserService;
  49. @Resource
  50. private BaseUserMapper baseUserMapper;
  51. @Resource
  52. private MsgAlarmMapper msgAlarmMapper;
  53. @Autowired
  54. private BaseDeptMapper baseDeptMapper;
  55. @Autowired
  56. private BaseRailwayManagementService baseRailwayManagementService;
  57. /**
  58. * 相机台账管理表导入
  59. *
  60. * @param accountManageList 相机台账列表
  61. * @param updateSupport 是否更新支持,如果已存在,则进行更新数据
  62. * @return
  63. */
  64. @Override
  65. public String importBaseAccountManagement(List<BaseCameraManagementVos> accountManageList, boolean updateSupport, String userId) {
  66. if (StringUtils.isNull(accountManageList) || accountManageList.size() == 0) {
  67. throw new ServiceException("导入相机台账列表信息不能为空!");
  68. }
  69. int successNum = 0;
  70. int failureNum = 0;
  71. StringBuilder successMsg = new StringBuilder();
  72. StringBuilder failureMsg = new StringBuilder();
  73. for (BaseCameraManagementVos cameraManagementVos : accountManageList) {
  74. try {
  75. BaseCameraManagement accountManagement = new BaseCameraManagement();
  76. BeanUtils.copyProperties(cameraManagementVos, accountManagement);
  77. // 判断相机编码是否存在
  78. LambdaQueryWrapper<BaseCameraManagement> lw = new LambdaQueryWrapper<BaseCameraManagement>();
  79. if (!ObjectUtils.isEmpty(accountManagement.getCameraCode())) {
  80. lw.eq(BaseCameraManagement::getCameraCode, accountManagement.getCameraCode());
  81. }
  82. BaseCameraManagement baseAccountManagement = baseCameraManagementMapper.selectOne(lw);
  83. if (ObjectUtils.isEmpty(baseAccountManagement)) {
  84. BeanValidators.validateWithException(validator, accountManagement);
  85. accountManagement.setUpdateBy(userId);
  86. accountManagement.setCreateBy(userId);
  87. Long deptId = baseDeptMapper.selectDeptByDeptName(accountManagement.getDeptName());
  88. log.debug(accountManagement.getDeptName() + "主键id:" + deptId);
  89. // if (!ObjectUtils.isEmpty(deptId)) {
  90. accountManagement.setDeptId(deptId);
  91. LambdaQueryWrapper<BaseRailwayManagement> queryWrapper = new LambdaQueryWrapper<BaseRailwayManagement>();
  92. if (!ObjectUtils.isEmpty(accountManagement.getRailwayName())) {
  93. queryWrapper.eq(BaseRailwayManagement::getRailwayName, accountManagement.getRailwayName());
  94. }
  95. BaseRailwayManagement baseRailwayManagement = baseRailwayManagementService.getOne(queryWrapper);
  96. if (!ObjectUtils.isEmpty(baseRailwayManagement)) {
  97. if (!accountManagement.getBeginMile().toString().matches(PATTERN) || !accountManagement.getInstallMile().toString().matches(PATTERN) || !accountManagement.getEndMile().toString().matches(PATTERN)) {
  98. failureNum++;
  99. failureMsg.append(failureNum + "、相机编码为: " + accountManagement.getCameraCode() + "的数据,里程位置填写格式不正确,请填写数字");
  100. } else {
  101. accountManagement.setRailwayCode(baseRailwayManagement.getRailwayCode());
  102. accountManagement.setInstallMile(accountManagement.getInstallMile() * 1000);
  103. accountManagement.setEndMile(accountManagement.getEndMile() * 1000);
  104. accountManagement.setBeginMile(accountManagement.getBeginMile() * 1000);
  105. if (accountManagement.getBeginMile() < accountManagement.getEndMile()) {
  106. baseCameraManagementMapper.insert(accountManagement);
  107. BaseDeviceDynamicManagement baseDeviceDynamicManagement = new BaseDeviceDynamicManagement();
  108. baseDeviceDynamicManagement.setCameraCode(accountManagement.getCameraCode());
  109. baseDeviceDynamicManagement.setUpdateBy(userId);
  110. baseDeviceDynamicManagement.setCreateBy(userId);
  111. baseDeviceDynamicManagementMapper.insert(baseDeviceDynamicManagement);
  112. successNum++;
  113. successMsg.append(successNum + "、相机编码 " + accountManagement.getCameraCode() + " 导入成功");
  114. } else {
  115. failureNum++;
  116. failureMsg.append(failureNum + "、相机编码为: " + accountManagement.getCameraCode() + "的数据,监控范围开始里程位置不能大于监控范围结束里程位置");
  117. }
  118. }
  119. } else {
  120. failureNum++;
  121. String msg = failureNum + "、相机所属线路名称 " + accountManagement.getRailwayName() + "不存在, 导入失败:";
  122. failureMsg.append(msg);
  123. log.error(msg);
  124. }
  125. // } else {
  126. // failureNum++;
  127. // String msg = failureNum + "、相机所属工务段 " + accountManagement.getDeptName() + "不存在, 导入失败:";
  128. // failureMsg.append(msg);
  129. // log.error(msg);
  130. // }
  131. } else if (updateSupport) {
  132. BeanValidators.validateWithException(validator, accountManagement);
  133. accountManagement.setUpdateBy(userId);
  134. Long deptId = baseDeptMapper.selectDeptByDeptName(accountManagement.getDeptName());
  135. log.debug(accountManagement.getDeptName() + "主键id:" + deptId);
  136. // if (!ObjectUtils.isEmpty(deptId)) {
  137. accountManagement.setDeptId(deptId);
  138. baseCameraManagementMapper.update(accountManagement, lw);
  139. LambdaQueryWrapper<BaseDeviceDynamicManagement> wrapper = new LambdaQueryWrapper<BaseDeviceDynamicManagement>();
  140. if (!ObjectUtils.isEmpty(baseAccountManagement.getCameraCode())) {
  141. wrapper.eq(BaseDeviceDynamicManagement::getCameraCode, baseAccountManagement.getCameraCode());
  142. }
  143. BaseDeviceDynamicManagement baseDeviceDynamicManagement = baseDeviceDynamicManagementMapper.selectOne(wrapper);
  144. baseDeviceDynamicManagement.setCameraCode(accountManagement.getCameraCode());
  145. baseDeviceDynamicManagement.setUpdateBy(userId);
  146. baseDeviceDynamicManagementMapper.updateById(baseDeviceDynamicManagement);
  147. successNum++;
  148. successMsg.append(successNum + "、相机编码 " + accountManagement.getCameraCode() + " 更新成功");
  149. // } else {
  150. // failureNum++;
  151. // String msg = failureNum + "、相机所属工务段 " + accountManagement.getDeptName() + "不存在, 导入失败:";
  152. // failureMsg.append(msg);
  153. // log.error(msg);
  154. // }
  155. } else {
  156. failureNum++;
  157. failureMsg.append(failureNum + "、相机编码 " + accountManagement.getCameraCode() + " 已存在");
  158. }
  159. } catch (Exception e) {
  160. failureNum++;
  161. String msg = failureNum + "、相机编码 " + cameraManagementVos.getCameraCode() + " 导入失败:";
  162. failureMsg.append(msg);
  163. log.error(msg, e);
  164. }
  165. }
  166. if (failureNum > 0) {
  167. failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
  168. throw new ServiceException(failureMsg.toString());
  169. } else {
  170. successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条。");
  171. }
  172. return successMsg.toString();
  173. }
  174. /**
  175. * 获取相机列表+数据权限
  176. *
  177. * @return
  178. */
  179. @Override
  180. public List<BaseCameraManagementHomeVo> selectCameraAll(BaseCameraManagementVo baseCameraManagementVo) {
  181. // List<String> userIdList = getUserIds(userId);
  182. // LambdaQueryWrapper<BaseCameraManagement> lw = new LambdaQueryWrapper<BaseCameraManagement>();
  183. // if (!StringUtils.isEmpty(userIdList)) {
  184. // lw.in(BaseCameraManagement::getCreateBy, userIdList);
  185. // }
  186. // List<BaseCameraManagement> baseCameraManagementList = baseCameraManagementMapper.selectList(lw);
  187. List<BaseCameraManagement> baseCameraManagementList = baseCameraManagementMapper.selectCameraManagementList(baseCameraManagementVo);
  188. List<BaseCameraManagementHomeVo> allListVo = BeanUtils.entityListToVOList(baseCameraManagementList, BaseCameraManagementHomeVo.class);
  189. for (BaseCameraManagementHomeVo baseCameraManagementHomeVo : allListVo) {
  190. Integer isRelease = msgAlarmMapper.selectCameraCode(baseCameraManagementHomeVo.getCameraCode());
  191. baseCameraManagementHomeVo.setIsRelease(isRelease != null ? isRelease : 1);
  192. }
  193. return allListVo;
  194. }
  195. /**
  196. * 根据当前登陆用户ID 查询当前用户数据权限
  197. *
  198. * @param userId
  199. * @return
  200. */
  201. /* public List<String> getUserIds(String userId) {
  202. BaseUser baseUser = baseUserService.getUser(userId);
  203. if (StringUtils.isNull(baseUser) || StringUtils.isNull(baseUser.getDataPermission())
  204. || StringUtils.isNull(baseUser.getDeptId())) {
  205. return null;
  206. }
  207. // 数据权限 1:本人;2:本部门;3:本部门及下级部门;4:本人及本级部门;5:本人及本部门及下级部门;6:全部
  208. Integer dataPermission = baseUser.getDataPermission();
  209. Long deptId = baseUser.getDeptId();
  210. Set<String> set = new HashSet<>();
  211. if (1 == dataPermission) {
  212. set = baseUserMapper.getUserIdList(userId);
  213. } else if (2 == dataPermission) {
  214. set = baseUserMapper.getUserIdByDeptId(deptId);
  215. } else if (3 == dataPermission) {
  216. // 获取部门数据
  217. List<Long> deptList = baseUserMapper.getDeptId(deptId);
  218. // 获取用户列表
  219. set = baseUserMapper.getUserIdByDeptIds(deptList);
  220. } else if (4 == dataPermission) {
  221. set = baseUserMapper.getUserIdByDeptIdAndUserId(userId, deptId);
  222. } else if (5 == dataPermission) {
  223. // 获取本人
  224. Set<String> setUser = baseUserMapper.getUserIdListBy5(userId);
  225. // 获取部门数据
  226. List<Long> deptList5 = baseUserMapper.getDeptId(deptId);
  227. // 获取用户列表
  228. Set<String> setUsers = baseUserMapper.getUserIdByDeptIdsBy5(deptList5);
  229. set.addAll(setUser);
  230. set.addAll(setUsers);
  231. } else if (6 == dataPermission) {
  232. set = baseUserMapper.getUserIdList6();
  233. }
  234. List<String> list = new ArrayList<>(set);
  235. return list;
  236. }*/
  237. /**
  238. * 根据当前登陆用户ID 查询当前用户数据权限
  239. *
  240. * @param userId
  241. * @return
  242. */
  243. @Override
  244. public List<String> getUserIdList(String userId) {
  245. BaseUser baseUser = baseUserService.getUser(userId);
  246. if (StringUtils.isNull(baseUser) || StringUtils.isNull(baseUser.getDataPermission())
  247. || StringUtils.isNull(baseUser.getDeptId())) {
  248. return null;
  249. }
  250. // 数据权限 1:本人;2:本部门;3:本部门及下级部门;4:本人及本级部门;5:本人及本部门及下级部门;6:全部
  251. Integer dataPermission = baseUser.getDataPermission();
  252. Long deptId = baseUser.getDeptId();
  253. Set<String> set = new HashSet<>();
  254. if (1 == dataPermission) {
  255. set = baseUserMapper.getUserIdList(userId);
  256. } else if (2 == dataPermission) {
  257. set = baseUserMapper.getUserIdByDeptId(deptId);
  258. } else if (3 == dataPermission) {
  259. // 获取部门数据
  260. List<Long> deptList = baseUserMapper.getDeptId(deptId);
  261. // 获取用户列表
  262. set = baseUserMapper.getUserIdByDeptIds(deptList);
  263. } else if (4 == dataPermission) {
  264. set = baseUserMapper.getUserIdByDeptIdAndUserId(userId, deptId);
  265. } else if (5 == dataPermission) {
  266. // 获取本人
  267. Set<String> setUser = baseUserMapper.getUserIdListBy5(userId);
  268. // 获取部门数据
  269. List<Long> deptList5 = baseUserMapper.getDeptId(deptId);
  270. // 获取用户列表
  271. Set<String> setUsers = baseUserMapper.getUserIdByDeptIdsBy5(deptList5);
  272. set.addAll(setUser);
  273. set.addAll(setUsers);
  274. } else if (6 == dataPermission) {
  275. set = baseUserMapper.getUserIdsList();
  276. }
  277. List<String> list = new ArrayList<>(set);
  278. return list;
  279. }
  280. @Override
  281. public IPage<BaseCameraManagement> queryPage(BaseCameraManagementVo baseCameraManagementVo) {
  282. int pageNum = Integer.parseInt(baseCameraManagementVo.getPageNum().toString());
  283. int pageSize = Integer.parseInt(baseCameraManagementVo.getPageSize().toString());
  284. com.github.pagehelper.Page<BaseCameraManagement> page = PageHelper.startPage(pageNum, pageSize)
  285. .doSelectPage(() -> baseCameraManagementMapper.selectCameraManagementList(baseCameraManagementVo));
  286. com.baomidou.mybatisplus.extension.plugins.pagination.Page<BaseCameraManagement> pageR =
  287. new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(pageNum, pageSize);
  288. pageR.setRecords(page.getResult());
  289. pageR.setTotal(page.getTotal());
  290. return pageR;
  291. }
  292. @Override
  293. public List<BaseCameraManagement> baseCameraManagementList(BaseCameraManagementVo baseCameraManagementVo) {
  294. return baseCameraManagementMapper.selectCameraManagementList(baseCameraManagementVo);
  295. }
  296. }