package com.ruoyi.alarmpoints.tube.service.impl; import java.util.List; import com.ruoyi.alarmpoints.tube.domain.ArdTubes; import com.ruoyi.alarmpoints.tube.domain.ArdTubesDetails; import com.ruoyi.alarmpoints.tube.mapper.ArdTubesDetailsMapper; import com.ruoyi.alarmpoints.tube.mapper.ArdTubesMapper; import com.ruoyi.alarmpoints.tube.service.IArdTubesDetailsService; import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell; import com.ruoyi.alarmpoints.well.service.impl.ArdAlarmpointsWellServiceImpl; import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bean.BeanValidators; import com.ruoyi.common.utils.spring.SpringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.validation.Validator; /** * 管线详细Service业务层处理 * * @author 刘苏义 * @date 2023-03-13 */ @Service public class ArdTubesDetailsServiceImpl implements IArdTubesDetailsService { private static final Logger log = LoggerFactory.getLogger(ArdTubesDetailsServiceImpl.class); @Resource private ArdTubesMapper ardTubesMapper; @Resource private ArdTubesDetailsMapper ardTubesDetailsMapper; @Autowired protected Validator validator; /** * 查询管线详细 * * @param id 管线详细主键 * @return 管线详细 */ @Override public ArdTubesDetails selectArdTubesDetailsById(String id) { return ardTubesDetailsMapper.selectArdTubesDetailsById(id); } /** * 查询管线详细列表 * * @param ardTubesDetails 管线详细 * @return 管线详细 */ @Override @DataScope(deptAlias = "d", userAlias = "u") public List selectArdTubesDetailsList(ArdTubesDetails ardTubesDetails) { return ardTubesDetailsMapper.selectArdTubesDetailsList(ardTubesDetails); } /** * 新增管线详细 * * @param ardTubesDetails 管线详细 * @return 结果 */ @Override public int insertArdTubesDetails(ArdTubesDetails ardTubesDetails) { ardTubesDetails.setUserId(SecurityUtils.getUserId()); ardTubesDetails.setCreateBy(SecurityUtils.getUsername()); ardTubesDetails.setCreateTime(DateUtils.getNowDate()); return ardTubesDetailsMapper.insertArdTubesDetails(ardTubesDetails); } /** * 修改管线详细 * * @param ardTubesDetails 管线详细 * @return 结果 */ @Override public int updateArdTubesDetails(ArdTubesDetails ardTubesDetails) { ardTubesDetails.setUpdateBy(SecurityUtils.getUsername()); ardTubesDetails.setUpdateTime(DateUtils.getNowDate()); return ardTubesDetailsMapper.updateArdTubesDetails(ardTubesDetails); } /** * 修改管线详细 * * @param ardTubesDetails 管线详细 * @return 结果 */ @Override public int updateArdTubesDetailsByReelNumber(ArdTubesDetails ardTubesDetails) { return ardTubesDetailsMapper.updateArdTubesDetailsByReelNumber(ardTubesDetails); } /** * 批量删除管线详细 * * @param ids 需要删除的管线详细主键 * @return 结果 */ @Override public int deleteArdTubesDetailsByIds(String[] ids) { return ardTubesDetailsMapper.deleteArdTubesDetailsByIds(ids); } /** * 删除管线详细信息 * * @param id 管线详细主键 * @return 结果 */ @Override public int deleteArdTubesDetailsById(String id) { return ardTubesDetailsMapper.deleteArdTubesDetailsById(id); } @Override public String importArdTubesDetails(List ardTubesDetailsList, Boolean isUpdateSupport, String operName, String tubeId) { if (StringUtils.isNull(ardTubesDetailsList) || ardTubesDetailsList.size() == 0) { throw new ServiceException("导入管线数据不能为空!"); } ArdTubes tubes = ardTubesMapper.selectArdTubesById(tubeId); int successNum = 0; int failureNum = 0; StringBuilder successMsg = new StringBuilder(); StringBuilder failureMsg = new StringBuilder(); for (ArdTubesDetails tubesDetails : ardTubesDetailsList) { try { //获取当前登录用户id String userId = SecurityUtils.getUserId(); tubesDetails.setUserId(userId); // 验证是否存在这个管线编号详情 ArdTubesDetails atd = ardTubesDetailsMapper.selectArdTubesDetailsByReelNumber(tubesDetails.getReelNumber(),tubesDetails.getInflectionPointNumber()); if (StringUtils.isNull(atd)) { BeanValidators.validateWithException(validator, tubesDetails); tubesDetails.setCreateBy(operName); tubesDetails.setTubeId(tubeId); tubesDetails.setDeptId(tubes.getDeptId()); this.insertArdTubesDetails(tubesDetails); successNum++; successMsg.append("
" + successNum + "、管线编号 " + tubesDetails.getReelNumber() +"-"+tubesDetails.getInflectionPointNumber()+ " 导入成功"); } else if (isUpdateSupport) { BeanValidators.validateWithException(validator, tubesDetails); checkTubesDetailAllowed(tubesDetails); checkTubesDetailDataScope(tubesDetails.getUserId()); tubesDetails.setUpdateBy(operName); tubesDetails.setTubeId(tubeId); tubesDetails.setDeptId(tubes.getDeptId()); this.updateArdTubesDetailsByReelNumber(tubesDetails); successNum++; successMsg.append("
" + successNum + "、管线编号 " + tubesDetails.getReelNumber() +"-"+tubesDetails.getInflectionPointNumber()+ " 更新成功"); } else { failureNum++; failureMsg.append("
" + failureNum + "、管线编号 " + tubesDetails.getReelNumber()+"-"+tubesDetails.getInflectionPointNumber() + " 已存在"); } } catch (Exception e) { failureNum++; String msg = "
" + failureNum + "、管线编号 " + tubesDetails.getReelNumber() +"-"+tubesDetails.getInflectionPointNumber()+ " 导入失败:"; failureMsg.append(msg + e.getMessage()); log.error(msg, e); } } if (failureNum > 0) { failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); throw new ServiceException(failureMsg.toString()); } else { successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); ArdTubesDetails tubesDetails = new ArdTubesDetails(); tubesDetails.setTubeId(tubeId); int size = selectArdTubesDetailsList(tubesDetails).size(); tubes.setChildCount(size); ardTubesMapper.updateArdTubes(tubes); } return successMsg.toString(); } /** * 校验管线详情是否允许操作 * * @param tubesDetails 管线详情信息 */ @Override public void checkTubesDetailAllowed(ArdTubesDetails tubesDetails) { if (StringUtils.isNotNull(tubesDetails.getId())) { throw new ServiceException("不允许操作管线详情"); } } /** * 校验用户是否有数据权限 * * @param userId 用户id */ @Override public void checkTubesDetailDataScope(String userId) { if (!SysUser.isAdmin(SecurityUtils.getUserId())) { ArdTubesDetails tubesDetail = new ArdTubesDetails(); tubesDetail.setUserId(userId); List tubesDetails = SpringUtils.getAopProxy(this).selectArdTubesDetailsList(tubesDetail); if (StringUtils.isEmpty(tubesDetails)) { throw new ServiceException("没有权限访问管线详情数据!"); } } } }