diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java index f237c60..fe9d690 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java @@ -72,6 +72,7 @@ public interface ErrorCodeConstants { ErrorCode PLAN_RATE_EXISTS = new ErrorCode(1-200-200-001, "养护频次已存在"); ErrorCode PLAN_RATE_LEVEL_ID_DUPLICATE = new ErrorCode(1-200-200-002, "养护等级重复"); ErrorCode PLAN_RATE_NOT_EXISTS = new ErrorCode(1-200-200-002, "未配置计划频次"); + ErrorCode PLAN_RATE_DETAIL_EXISTS = new ErrorCode(1-200-200-003, "计划频次已存在"); ErrorCode MATERIAL_TYPE_NOT_EXISTS = new ErrorCode(1-100-004-001, "物料类型不存在"); ErrorCode MATERIAL_TYPE_MANAGER_NOT_EXISTS = new ErrorCode(1-100-004-002, "耗材类别管理不存在"); diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/PlanConstants.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/PlanConstants.java index 96663d4..aeb4fb4 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/PlanConstants.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/PlanConstants.java @@ -7,4 +7,8 @@ public class PlanConstants { /*周期-cycle_id_type-字典key*/ public static final String CYCLE_ID_TYPE = "cycle_id_type"; + + /*养护级别-字典key*/ + public static final String CONSERVE_LEVEL = "conserve_level"; + } diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/planrate/PlanRateServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/planrate/PlanRateServiceImpl.java index 7c372dc..65def1d 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/planrate/PlanRateServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/planrate/PlanRateServiceImpl.java @@ -4,6 +4,9 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.RandomUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.zteits.urbanops.framework.common.biz.system.dict.DictDataCommonApi; +import com.zteits.urbanops.framework.common.biz.system.dict.dto.DictDataRespDTO; +import com.zteits.urbanops.framework.common.exception.ServiceException; import com.zteits.urbanops.framework.common.util.object.BeanUtils; import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; import com.zteits.urbanops.module.garden.dal.dataobject.planrate.PlanRateDetailDO; @@ -24,6 +27,7 @@ import com.zteits.urbanops.module.garden.dal.mysql.planrate.PlanRateMapper; import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; +import static com.zteits.urbanops.module.garden.enums.PlanConstants.CONSERVE_LEVEL; /** * 计划频次 Service 实现类 @@ -40,6 +44,9 @@ public class PlanRateServiceImpl implements PlanRateService { @Resource private PlanRateDetailMapper planRateDetailMapper; + @Resource + private DictDataCommonApi dictDataCommonApi; + @Transactional(rollbackFor = Exception.class) @Override public Long createPlanRate(PlanRateSaveReqVO createReqVO) { @@ -75,6 +82,7 @@ public class PlanRateServiceImpl implements PlanRateService { detailDO.setUpdater(userName); detailDO.setUpdateTime(now); list.add(detailDO); + validatePlanRateDetailExists(createReqVO.getBusiLine(), createReqVO.getPlanTypeId(), detail.getLevelId()); }); /*2.插入频次明细*/ planRateDetailMapper.insertBatch(list); @@ -112,6 +120,7 @@ public class PlanRateServiceImpl implements PlanRateService { detailDO.setUpdater(userName); detailDO.setUpdateTime(now); list.add(detailDO); + validatePlanRateDetailExists(updateReqVO.getBusiLine(), updateReqVO.getPlanTypeId(), detail.getLevelId()); }); /*3.插入频次明细*/ planRateDetailMapper.insertBatch(list); @@ -146,6 +155,22 @@ public class PlanRateServiceImpl implements PlanRateService { } } + /** + * 养护明细是否重复 + * @param planTypeId 养护类型 + * @param busiLine 业务线 + * @param levelId 道路等级 + */ + private void validatePlanRateDetailExists(String busiLine, Integer planTypeId, Integer levelId) { + QueryWrapper sql = new QueryWrapper<>(); + sql.lambda().eq(PlanRateDetailDO::getPlanTypeId, planTypeId).eq(PlanRateDetailDO::getBusiLine, busiLine) + .eq(PlanRateDetailDO::getLevelId, levelId); + if (planRateDetailMapper.selectCount(sql) > 0) { + DictDataRespDTO dictData = dictDataCommonApi.getDictData(CONSERVE_LEVEL, levelId.toString()); + throw new ServiceException(PLAN_RATE_DETAIL_EXISTS.getCode(), "养护等级[" + dictData.getLabel() + "]已存在"); + } + } + @Override public PlanRateDO getPlanRate(Long id) { return planRateMapper.selectById(id);