BaseRailwayManagementServiceImpl.java 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package com.ozs.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  4. import com.ozs.common.exception.ServiceException;
  5. import com.ozs.common.utils.bean.BeanValidators;
  6. import com.ozs.entity.BaseRailwayManagement;
  7. import com.ozs.mapper.BaseRailwayManagementMapper;
  8. import com.ozs.service.BaseRailwayManagementService;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Service;
  11. import org.springframework.util.ObjectUtils;
  12. import javax.annotation.Resource;
  13. import javax.validation.Validator;
  14. import java.math.BigDecimal;
  15. import java.util.List;
  16. /**
  17. * <p>
  18. * 线路管理表 服务实现类
  19. * </p>
  20. *
  21. * @author ozs
  22. * @since 2023-02-17
  23. */
  24. @Service
  25. public class BaseRailwayManagementServiceImpl extends ServiceImpl<BaseRailwayManagementMapper, BaseRailwayManagement> implements BaseRailwayManagementService {
  26. public static final String PATTERN = "^(\\d+.\\d{1,3}|\\d+)$";
  27. @Resource
  28. BaseRailwayManagementMapper baseRailwayManagementMapper;
  29. @Autowired
  30. protected Validator validator;
  31. /**
  32. * 导出线路管理表信息
  33. *
  34. * @param accountManageList 线路管理表信息列表
  35. * @param updateSupport 是否更新支持,如果已存在,则进行更新数据
  36. * @return
  37. */
  38. @Override
  39. public String importBaseLineManagement(List<BaseRailwayManagement> accountManageList, boolean updateSupport, String userId) {
  40. if (com.ozs.common.utils.StringUtils.isNull(accountManageList) || accountManageList.size() == 0) {
  41. throw new ServiceException("导入线路管理信息不能为空!");
  42. }
  43. int successNum = 0;
  44. int failureNum = 0;
  45. StringBuilder successMsg = new StringBuilder();
  46. StringBuilder failureMsg = new StringBuilder();
  47. for (BaseRailwayManagement railwayManagement : accountManageList) {
  48. try {
  49. LambdaQueryWrapper<BaseRailwayManagement> wrapper = new LambdaQueryWrapper<BaseRailwayManagement>();
  50. if (!ObjectUtils.isEmpty(railwayManagement.getRailwayName())) {
  51. wrapper.eq(BaseRailwayManagement::getRailwayName, railwayManagement.getRailwayName());
  52. }
  53. BaseRailwayManagement railwayManagement1 = baseRailwayManagementMapper.selectOne(wrapper);
  54. if (ObjectUtils.isEmpty(railwayManagement1)) {
  55. // 判断相机编码是否存在
  56. LambdaQueryWrapper<BaseRailwayManagement> lw = new LambdaQueryWrapper<BaseRailwayManagement>();
  57. if (!ObjectUtils.isEmpty(railwayManagement.getRailwayCode())) {
  58. lw.eq(BaseRailwayManagement::getRailwayCode, railwayManagement.getRailwayCode());
  59. }
  60. BaseRailwayManagement baseLineManagement = baseRailwayManagementMapper.selectOne(lw);
  61. if (ObjectUtils.isEmpty(baseLineManagement)) {
  62. if (!railwayManagement.getInitialMileageBD().toString().matches(PATTERN) || !railwayManagement.getEndMileageBD().toString().matches(PATTERN)) {
  63. failureNum++;
  64. failureMsg.append(failureNum + "、线路编码: " + railwayManagement.getRailwayCode() + "的数据,里程位置填写格式不正确,请填写数字或小数");
  65. }else {
  66. railwayManagement.setInitialMileage(railwayManagement.getInitialMileageBD().multiply(new BigDecimal("1000")).intValue());
  67. railwayManagement.setEndMileage(railwayManagement.getEndMileageBD().multiply(new BigDecimal("1000")).intValue());
  68. BeanValidators.validateWithException(validator, railwayManagement);
  69. railwayManagement.setUpdateBy(userId);
  70. railwayManagement.setCreateBy(userId);
  71. baseRailwayManagementMapper.insert(railwayManagement);
  72. successNum++;
  73. successMsg.append(successNum + "、线路编码 " + railwayManagement.getRailwayCode() + " 导入成功");
  74. }
  75. } else if (updateSupport) {
  76. BeanValidators.validateWithException(validator, railwayManagement);
  77. railwayManagement.setUpdateBy(userId);
  78. baseRailwayManagementMapper.update(railwayManagement, lw);
  79. successNum++;
  80. successMsg.append(successNum + "、线路编码 " + railwayManagement.getRailwayCode() + " 更新成功");
  81. } else {
  82. failureNum++;
  83. failureMsg.append(failureNum + "、线路编码 " + railwayManagement.getRailwayCode() + " 已存在");
  84. }
  85. } else {
  86. failureNum++;
  87. failureMsg.append( failureNum + "、线路名称 " + railwayManagement.getRailwayName() + " 已存在");
  88. }
  89. } catch (Exception e) {
  90. failureNum++;
  91. String msg = failureNum + "、线路编码 " + railwayManagement.getRailwayCode() + " 导入失败:";
  92. failureMsg.append(msg);
  93. log.error(msg, e);
  94. }
  95. }
  96. if (failureNum > 0) {
  97. failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
  98. throw new ServiceException(failureMsg.toString());
  99. } else {
  100. successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条。");
  101. }
  102. return successMsg.toString();
  103. }
  104. @Override
  105. public String getCameraNameByCameraCode(String cameraCode) {
  106. return baseRailwayManagementMapper.getCameraNameByCameraCode(cameraCode);
  107. }
  108. }