diff --git a/src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.java b/src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.java index acb1959..dc8bbd5 100644 --- a/src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.java +++ b/src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.java @@ -32,7 +32,7 @@ public interface ApmRecordMapper extends BaseMapper { List countAllAmpNumByDept(@Param("createDept") Long createDept, @Param("startTime") String startTime, @Param("endTime") String endTime); - List countAmpNumWithDays(@Param("createDept") Long createDept, @Param("apmDayList") List apmDayList); + List countAmpNumWithDays(@Param("createDept") Long createDept, @Param("projectList") List projectList, @Param("apmDayList") List apmDayList); /** * 统计所有违约预约记录, 查询条件: blacklistFlag = 0 and apmTime < DateUtil.now() and apmStatus in [0, 2] diff --git a/src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.xml b/src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.xml index afe49be..85c0f92 100644 --- a/src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.xml +++ b/src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.xml @@ -152,6 +152,12 @@ and create_dept = #{createDept} + + and project in + + #{proj} + + and apm_day in diff --git a/src/main/java/org/springblade/modules/business/service/IApmRecordService.java b/src/main/java/org/springblade/modules/business/service/IApmRecordService.java index bfa3722..f838480 100644 --- a/src/main/java/org/springblade/modules/business/service/IApmRecordService.java +++ b/src/main/java/org/springblade/modules/business/service/IApmRecordService.java @@ -41,9 +41,9 @@ public interface IApmRecordService extends BaseService { String checkApmRecordSave(List apmRecordList); - List countAmpNum(Long createDept, String apmDay); + List countAmpNum(Long createDept, List projectList, String apmDay); - List countAmpNum(Long createDept, List apmDayList); + List countAmpNum(Long createDept, List projectList, List apmDayList); /** * 统计所有违约预约记录, 查询条件: blacklistFlag = 0 and apmTime < DateUtil.now() and apmStatus = 2 diff --git a/src/main/java/org/springblade/modules/business/service/impl/ApmConfigServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/ApmConfigServiceImpl.java index be92aac..c2a4fec 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/ApmConfigServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/ApmConfigServiceImpl.java @@ -87,7 +87,7 @@ public class ApmConfigServiceImpl extends ServiceImpl configList = baseMapper.selectConfigList(vo.getCreateDept(), DateUtil.format(vo.getApmDay(), DateUtil.PATTERN_DATETIME), vo.getProject()); // 获取该天的所有已预约统计 - List recordCountList = recordService.countAmpNum(createDept, DateUtil.format(vo.getApmDay(), DateUtil.PATTERN_DATETIME)); + List recordCountList = recordService.countAmpNum(createDept, null, DateUtil.format(vo.getApmDay(), DateUtil.PATTERN_DATETIME)); List> detailList = new ArrayList<>(); for (ApmConfig config : configList) { @@ -101,7 +101,7 @@ public class ApmConfigServiceImpl extends ServiceImpl detailForApm(Long createDept, String apmDay, String cupCardNo) { - List allConfigList = baseMapper.selectList(Wrappers.lambdaQuery() + List allConfigList = baseMapper.selectList(Wrappers.lambdaQuery() .eq(ApmConfig::getCreateDept, createDept) .eq(ApmConfig::getApmDay, apmDay)); Map> configProjectMap = new HashMap<>(); @@ -141,7 +141,7 @@ public class ApmConfigServiceImpl extends ServiceImpl cupApmMap = currentApmList.stream().collect(Collectors.toMap(ApmRecord::getProject, Function.identity())); // 获取该天的所有预约统计 - List apmCountList = recordService.countAmpNum(createDept, apmDay); + List apmCountList = recordService.countAmpNum(createDept, null, apmDay); List resultList = new ArrayList<>(); for (Map.Entry> configMap : configProjectMap.entrySet()) { String project = configMap.getKey(); @@ -162,7 +162,7 @@ public class ApmConfigServiceImpl extends ServiceImpl dayList, List configListVOS) { String msg = ""; List daySearchList = new ArrayList<>(); + List projectList = new ArrayList<>(); // 1. 先根据用户角色判断放号的天是否短于提前几天放号的配置 BladeUser user = AuthUtil.getUser(); @@ -201,6 +202,9 @@ public class ApmConfigServiceImpl extends ServiceImpl detail : vo.getDetailList()) { String period = detail.containsKey(BusinessConstant.MAP_KEY_APM_CONFIG_LIST_PERIOD) ? (String) detail.get(BusinessConstant.MAP_KEY_APM_CONFIG_LIST_PERIOD) : ""; String timeFrame = detail.containsKey(BusinessConstant.MAP_KEY_APM_CONFIG_LIST_TIME_FRAME) ? (String) detail.get(BusinessConstant.MAP_KEY_APM_CONFIG_LIST_TIME_FRAME) : ""; @@ -226,37 +230,44 @@ public class ApmConfigServiceImpl extends ServiceImpl alreadyConfMap = new HashMap<>(); if (Func.isNotEmpty(alreadyConfList)) { for (ApmConfig config : alreadyConfList) { - String key = config.getProject() + config.getApmDay() + config.getProject() + config.getTimeFrame(); + String key = config.getProject() + config.getApmDay() + config.getPeriod() + config.getTimeFrame(); if (alreadyConfMap.containsKey(key)) { continue; } alreadyConfMap.put(key, config); } - List records = recordService.countAmpNum(createDept, daySearchList); + List records = recordService.countAmpNum(createDept, projectList, daySearchList); if (Func.isEmpty(records)) { records = new ArrayList<>(); } Map alreadyConfCountMap = records.stream().collect(Collectors.toMap( - dto -> dto.getProject() + dto.getApmDay() + dto.getProject() + dto.getTimeFrame(), dto -> dto.getApmNum() + dto -> dto.getProject() + dto.getApmDay() + dto.getPeriod() + dto.getTimeFrame(), dto -> dto.getApmNum() )); for (ApmConfig config : configList) { - String key = config.getProject() + DateUtil.format(config.getApmDay(), DateUtil.PATTERN_DATE) + config.getProject() + config.getTimeFrame(); + String key = config.getProject() + DateUtil.format(config.getApmDay(), DateUtil.PATTERN_DATE) + config.getPeriod() + config.getTimeFrame(); if (Func.isEmpty(config.getNumberNum()) || config.getNumberNum() <= 0) { return "保存失败, 放号数量必须大于0"; } // 若此次修改的放号没有对应的放号配置或已预约统计为0, 验证通过 - if (alreadyConfMap.containsKey(key) || alreadyConfCountMap.containsKey(key)) { + if (!alreadyConfMap.containsKey(key) || !alreadyConfCountMap.containsKey(key)) { continue; } + // 若此次修改的放号有对应的放号记录, 且已被人预约, 验证放号数量与预约数量 if (alreadyConfCountMap.containsKey(key) && config.getNumberNum() < alreadyConfCountMap.get(key)) { + return "保存失败, 放号数量不能低于已预约的数量"; } } + + // 若已预约map不为空, 证明此次修改没有覆盖到全部的时间段, 且该时间段已被人预约, 放号失败 + if (Func.isNotEmpty(alreadyConfCountMap)) { + return "保存失败, 原放号时段已有预约, 本次修改未覆盖该时段"; + } } return msg; diff --git a/src/main/java/org/springblade/modules/business/service/impl/ApmRecordServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/ApmRecordServiceImpl.java index bbd6cdc..cc59394 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/ApmRecordServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/ApmRecordServiceImpl.java @@ -3,6 +3,7 @@ package org.springblade.modules.business.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.apache.ibatis.annotations.Param; import org.springblade.common.cache.DeptCache; import org.springblade.common.cache.DictBizCache; import org.springblade.common.constant.BusinessConstant; @@ -137,7 +138,7 @@ public class ApmRecordServiceImpl extends BaseServiceImpl recordsCheckProject = list( Wrappers.lambdaQuery() .eq(ApmRecord::getCupCardNo, cupCardNo) @@ -157,15 +158,15 @@ public class ApmRecordServiceImpl extends BaseServiceImpl countAmpNum(Long createDept, String apmDay) { + public List countAmpNum(Long createDept, List projectList, String apmDay) { List apmDayList = new ArrayList<>(); apmDayList.add(apmDay); - return baseMapper.countAmpNumWithDays(createDept, apmDayList); + return baseMapper.countAmpNumWithDays(createDept, projectList, apmDayList); } @Override - public List countAmpNum(Long createDept, List apmDayList) { - return baseMapper.countAmpNumWithDays(createDept, apmDayList); + public List countAmpNum(Long createDept, List projectList, List apmDayList) { + return baseMapper.countAmpNumWithDays(createDept, projectList, apmDayList); } @Override diff --git a/src/main/resources/log/logback-dev.xml b/src/main/resources/log/logback-dev.xml index 8c5a7f2..cfb9926 100644 --- a/src/main/resources/log/logback-dev.xml +++ b/src/main/resources/log/logback-dev.xml @@ -74,26 +74,26 @@ - - - - + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -101,9 +101,9 @@ - - - + + +