master
liuqingkun 3 years ago
parent c829c49917
commit 55dc6dd0e9
  1. 2
      src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.java
  2. 6
      src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.xml
  3. 4
      src/main/java/org/springblade/modules/business/service/IApmRecordService.java
  4. 31
      src/main/java/org/springblade/modules/business/service/impl/ApmConfigServiceImpl.java
  5. 11
      src/main/java/org/springblade/modules/business/service/impl/ApmRecordServiceImpl.java
  6. 42
      src/main/resources/log/logback-dev.xml

@ -32,7 +32,7 @@ public interface ApmRecordMapper extends BaseMapper<ApmRecord> {
List<ApmRecordCountDTO> countAllAmpNumByDept(@Param("createDept") Long createDept, @Param("startTime") String startTime, @Param("endTime") String endTime);
List<ApmRecordCountDTO> countAmpNumWithDays(@Param("createDept") Long createDept, @Param("apmDayList") List<String> apmDayList);
List<ApmRecordCountDTO> countAmpNumWithDays(@Param("createDept") Long createDept, @Param("projectList") List<String> projectList, @Param("apmDayList") List<String> apmDayList);
/**
* 统计所有违约预约记录, 查询条件: blacklistFlag = 0 and apmTime < DateUtil.now() and apmStatus in [0, 2]

@ -152,6 +152,12 @@
<if test="createDept != '' and createDept != null">
and create_dept = #{createDept}
</if>
<if test="projectList != null">
and project in
<foreach collection="projectList" item="proj" index="index" open="(" close=")" separator=", ">
#{proj}
</foreach>
</if>
<if test="apmDayList != null">
and apm_day in
<foreach collection="apmDayList" item="dayStr" index="index" open="(" close=")" separator=", ">

@ -41,9 +41,9 @@ public interface IApmRecordService extends BaseService<ApmRecord> {
String checkApmRecordSave(List<ApmRecord> apmRecordList);
List<ApmRecordCountDTO> countAmpNum(Long createDept, String apmDay);
List<ApmRecordCountDTO> countAmpNum(Long createDept, List<String> projectList, String apmDay);
List<ApmRecordCountDTO> countAmpNum(Long createDept, List<String> apmDayList);
List<ApmRecordCountDTO> countAmpNum(Long createDept, List<String> projectList, List<String> apmDayList);
/**
* 统计所有违约预约记录, 查询条件: blacklistFlag = 0 and apmTime < DateUtil.now() and apmStatus = 2

@ -87,7 +87,7 @@ public class ApmConfigServiceImpl extends ServiceImpl<ApmConfigMapper, ApmConfig
List<ApmConfig> configList = baseMapper.selectConfigList(vo.getCreateDept(), DateUtil.format(vo.getApmDay(), DateUtil.PATTERN_DATETIME), vo.getProject());
// 获取该天的所有已预约统计
List<ApmRecordCountDTO> recordCountList = recordService.countAmpNum(createDept, DateUtil.format(vo.getApmDay(), DateUtil.PATTERN_DATETIME));
List<ApmRecordCountDTO> recordCountList = recordService.countAmpNum(createDept, null, DateUtil.format(vo.getApmDay(), DateUtil.PATTERN_DATETIME));
List<Map<String, Object>> detailList = new ArrayList<>();
for (ApmConfig config : configList) {
@ -101,7 +101,7 @@ public class ApmConfigServiceImpl extends ServiceImpl<ApmConfigMapper, ApmConfig
if (dto.getApmDay().equals(DateUtil.format(config.getApmDay(), DateUtil.PATTERN_DATE))
&& dto.getProject().equals(config.getProject())
&& dto.getPeriod().equals(config.getPeriod())
&& dto.getTimeFrame().equals(config.getTimeFrame()) ) {
&& dto.getTimeFrame().equals(config.getTimeFrame())) {
apmNum = dto.getApmNum();
}
}
@ -117,7 +117,7 @@ public class ApmConfigServiceImpl extends ServiceImpl<ApmConfigMapper, ApmConfig
@Override
public List<ApmConfigListVO> detailForApm(Long createDept, String apmDay, String cupCardNo) {
List<ApmConfig> allConfigList = baseMapper.selectList(Wrappers.<ApmConfig>lambdaQuery()
List<ApmConfig> allConfigList = baseMapper.selectList(Wrappers.<ApmConfig>lambdaQuery()
.eq(ApmConfig::getCreateDept, createDept)
.eq(ApmConfig::getApmDay, apmDay));
Map<String, List<ApmConfig>> configProjectMap = new HashMap<>();
@ -141,7 +141,7 @@ public class ApmConfigServiceImpl extends ServiceImpl<ApmConfigMapper, ApmConfig
Map<String, ApmRecord> cupApmMap = currentApmList.stream().collect(Collectors.toMap(ApmRecord::getProject, Function.identity()));
// 获取该天的所有预约统计
List<ApmRecordCountDTO> apmCountList = recordService.countAmpNum(createDept, apmDay);
List<ApmRecordCountDTO> apmCountList = recordService.countAmpNum(createDept, null, apmDay);
List<ApmConfigListVO> resultList = new ArrayList<>();
for (Map.Entry<String, List<ApmConfig>> configMap : configProjectMap.entrySet()) {
String project = configMap.getKey();
@ -162,7 +162,7 @@ public class ApmConfigServiceImpl extends ServiceImpl<ApmConfigMapper, ApmConfig
if (dto.getApmDay().equals(DateUtil.format(config.getApmDay(), DateUtil.PATTERN_DATE))
&& dto.getProject().equals(config.getProject())
&& dto.getPeriod().equals(config.getPeriod())
&& dto.getTimeFrame().equals(config.getTimeFrame()) ) {
&& dto.getTimeFrame().equals(config.getTimeFrame())) {
cupApm = dto.getApmNum();
}
}
@ -185,6 +185,7 @@ public class ApmConfigServiceImpl extends ServiceImpl<ApmConfigMapper, ApmConfig
public String saveCheck(Long createDept, List<String> dayList, List<ApmConfigListVO> configListVOS) {
String msg = "";
List<String> daySearchList = new ArrayList<>();
List<String> projectList = new ArrayList<>();
// 1. 先根据用户角色判断放号的天是否短于提前几天放号的配置
BladeUser user = AuthUtil.getUser();
@ -201,6 +202,9 @@ public class ApmConfigServiceImpl extends ServiceImpl<ApmConfigMapper, ApmConfig
}
for (ApmConfigListVO vo : configListVOS) {
if (!projectList.contains(vo.getProject())) {
projectList.add(vo.getProject());
}
for (Map<String, Object> 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<ApmConfigMapper, ApmConfig
Map<String, ApmConfig> 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<ApmRecordCountDTO> records = recordService.countAmpNum(createDept, daySearchList);
List<ApmRecordCountDTO> records = recordService.countAmpNum(createDept, projectList, daySearchList);
if (Func.isEmpty(records)) {
records = new ArrayList<>();
}
Map<String, Integer> 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;

@ -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<ApmRecordMapper, ApmRe
}
}
// 获取用户未报到且体检日期大于当前的预约记录, 限制用户每项只能有一个预约
// 获取用户未报到且体检日期大于等于今天的预约记录, 限制用户每项只能有一个预约
List<ApmRecord> recordsCheckProject = list(
Wrappers.<ApmRecord>lambdaQuery()
.eq(ApmRecord::getCupCardNo, cupCardNo)
@ -157,15 +158,15 @@ public class ApmRecordServiceImpl extends BaseServiceImpl<ApmRecordMapper, ApmRe
}
@Override
public List<ApmRecordCountDTO> countAmpNum(Long createDept, String apmDay) {
public List<ApmRecordCountDTO> countAmpNum(Long createDept, List<String> projectList, String apmDay) {
List<String> apmDayList = new ArrayList<>();
apmDayList.add(apmDay);
return baseMapper.countAmpNumWithDays(createDept, apmDayList);
return baseMapper.countAmpNumWithDays(createDept, projectList, apmDayList);
}
@Override
public List<ApmRecordCountDTO> countAmpNum(Long createDept, List<String> apmDayList) {
return baseMapper.countAmpNumWithDays(createDept, apmDayList);
public List<ApmRecordCountDTO> countAmpNum(Long createDept, List<String> projectList, List<String> apmDayList) {
return baseMapper.countAmpNumWithDays(createDept, projectList, apmDayList);
}
@Override

@ -74,26 +74,26 @@
<logger name="java.sql.PreparedStatement" level="WARN"/>
<!-- 减少部分debug日志 -->
<logger name="druid.sql" level="INFO"/>
<logger name="org.apache.shiro" level="INFO"/>
<logger name="org.mybatis.spring" level="INFO"/>
<logger name="org.springframework" level="INFO"/>
<logger name="druid.sql" level="WARN"/>
<logger name="org.apache.shiro" level="WARN"/>
<logger name="org.mybatis.spring" level="WARN"/>
<logger name="org.springframework" level="WARN"/>
<logger name="org.springframework.context" level="WARN"/>
<logger name="org.springframework.beans" level="WARN"/>
<logger name="com.baomidou.mybatisplus" level="INFO"/>
<logger name="org.apache.ibatis.io" level="INFO"/>
<logger name="org.apache.velocity" level="INFO"/>
<logger name="org.eclipse.jetty" level="INFO"/>
<logger name="io.undertow" level="INFO"/>
<logger name="org.xnio.nio" level="INFO"/>
<logger name="org.thymeleaf" level="INFO"/>
<logger name="springfox.documentation" level="INFO"/>
<logger name="org.hibernate.validator" level="INFO"/>
<logger name="com.netflix.loadbalancer" level="INFO"/>
<logger name="com.netflix.hystrix" level="INFO"/>
<logger name="com.netflix.zuul" level="INFO"/>
<logger name="de.codecentric" level="INFO"/>
<!-- cache INFO -->
<logger name="com.baomidou.mybatisplus" level="WARN"/>
<logger name="org.apache.ibatis.io" level="WARN"/>
<logger name="org.apache.velocity" level="WARN"/>
<logger name="org.eclipse.jetty" level="WARN"/>
<logger name="io.undertow" level="WARN"/>
<logger name="org.xnio.nio" level="WARN"/>
<logger name="org.thymeleaf" level="WARN"/>
<logger name="springfox.documentation" level="WARN"/>
<logger name="org.hibernate.validator" level="WARN"/>
<logger name="com.netflix.loadbalancer" level="WARN"/>
<logger name="com.netflix.hystrix" level="WARN"/>
<logger name="com.netflix.zuul" level="WARN"/>
<logger name="de.codecentric" level="WARN"/>
<!-- cache WARN -->
<logger name="net.sf.ehcache" level="WARN"/>
<logger name="org.springframework.cache" level="WARN"/>
<!-- cloud -->
@ -101,9 +101,9 @@
<logger name="com.netflix.discovery" level="WARN"/>
<logger name="com.netflix.eureka" level="WARN"/>
<!-- 业务日志 -->
<Logger name="org.springblade" level="INFO"/>
<Logger name="org.springblade.core.tenant" level="INFO"/>
<Logger name="org.springblade.core.version" level="INFO"/>
<Logger name="org.springblade" level="WARN"/>
<Logger name="org.springblade.core.tenant" level="WARN"/>
<Logger name="org.springblade.core.version" level="WARN"/>
<!-- 减少nacos日志 -->
<logger name="com.alibaba.nacos" level="ERROR"/>

Loading…
Cancel
Save