package com.ozs.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ozs.common.exception.ServiceException; import com.ozs.common.utils.bean.BeanValidators; import com.ozs.entity.BaseRailwayManagement; import com.ozs.mapper.BaseRailwayManagementMapper; import com.ozs.service.BaseRailwayManagementService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import javax.annotation.Resource; import javax.validation.Validator; import java.math.BigDecimal; import java.util.List; /** *

* 线路管理表 服务实现类 *

* * @author ozs * @since 2023-02-17 */ @Service public class BaseRailwayManagementServiceImpl extends ServiceImpl implements BaseRailwayManagementService { public static final String PATTERN = "^(\\d+.\\d{1,3}|\\d+)$"; @Resource BaseRailwayManagementMapper baseRailwayManagementMapper; @Autowired protected Validator validator; /** * 导出线路管理表信息 * * @param accountManageList 线路管理表信息列表 * @param updateSupport 是否更新支持,如果已存在,则进行更新数据 * @return */ @Override public String importBaseLineManagement(List accountManageList, boolean updateSupport, String userId) { if (com.ozs.common.utils.StringUtils.isNull(accountManageList) || accountManageList.size() == 0) { throw new ServiceException("导入线路管理信息不能为空!"); } int successNum = 0; int failureNum = 0; StringBuilder successMsg = new StringBuilder(); StringBuilder failureMsg = new StringBuilder(); for (BaseRailwayManagement railwayManagement : accountManageList) { try { LambdaQueryWrapper wrapper = new LambdaQueryWrapper(); if (!ObjectUtils.isEmpty(railwayManagement.getRailwayName())) { wrapper.eq(BaseRailwayManagement::getRailwayName, railwayManagement.getRailwayName()); } BaseRailwayManagement railwayManagement1 = baseRailwayManagementMapper.selectOne(wrapper); if (ObjectUtils.isEmpty(railwayManagement1)) { // 判断相机编码是否存在 LambdaQueryWrapper lw = new LambdaQueryWrapper(); if (!ObjectUtils.isEmpty(railwayManagement.getRailwayCode())) { lw.eq(BaseRailwayManagement::getRailwayCode, railwayManagement.getRailwayCode()); } BaseRailwayManagement baseLineManagement = baseRailwayManagementMapper.selectOne(lw); if (ObjectUtils.isEmpty(baseLineManagement)) { if (!railwayManagement.getInitialMileageBD().toString().matches(PATTERN) || !railwayManagement.getEndMileageBD().toString().matches(PATTERN)) { failureNum++; failureMsg.append(failureNum + "、线路编码: " + railwayManagement.getRailwayCode() + "的数据,里程位置填写格式不正确,请填写数字或小数"); }else { railwayManagement.setInitialMileage(railwayManagement.getInitialMileageBD().multiply(new BigDecimal("1000")).intValue()); railwayManagement.setEndMileage(railwayManagement.getEndMileageBD().multiply(new BigDecimal("1000")).intValue()); BeanValidators.validateWithException(validator, railwayManagement); railwayManagement.setUpdateBy(userId); railwayManagement.setCreateBy(userId); baseRailwayManagementMapper.insert(railwayManagement); successNum++; successMsg.append(successNum + "、线路编码 " + railwayManagement.getRailwayCode() + " 导入成功"); } } else if (updateSupport) { BeanValidators.validateWithException(validator, railwayManagement); railwayManagement.setUpdateBy(userId); baseRailwayManagementMapper.update(railwayManagement, lw); successNum++; successMsg.append(successNum + "、线路编码 " + railwayManagement.getRailwayCode() + " 更新成功"); } else { failureNum++; failureMsg.append(failureNum + "、线路编码 " + railwayManagement.getRailwayCode() + " 已存在"); } } else { failureNum++; failureMsg.append( failureNum + "、线路名称 " + railwayManagement.getRailwayName() + " 已存在"); } } catch (Exception e) { failureNum++; String msg = failureNum + "、线路编码 " + railwayManagement.getRailwayCode() + " 导入失败:"; failureMsg.append(msg); log.error(msg, e); } } if (failureNum > 0) { failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); throw new ServiceException(failureMsg.toString()); } else { successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条。"); } return successMsg.toString(); } @Override public String getCameraNameByCameraCode(String cameraCode) { return baseRailwayManagementMapper.getCameraNameByCameraCode(cameraCode); } }