master
liuqingkun 3 years ago
parent 448167dbcf
commit f645195dab
  1. 8
      src/main/java/org/springblade/modules/business/controller/ApmRecordController.java
  2. 2
      src/main/java/org/springblade/modules/business/mapper/ApmConfigMapper.java
  3. 3
      src/main/java/org/springblade/modules/business/mapper/ApmConfigMapper.xml
  4. 4
      src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.xml
  5. 3
      src/main/java/org/springblade/modules/business/service/IApmConfigService.java
  6. 31
      src/main/java/org/springblade/modules/business/service/impl/ApmConfigServiceImpl.java
  7. 8
      src/main/java/org/springblade/modules/business/service/impl/ApmRecordServiceImpl.java
  8. 6
      src/main/java/org/springblade/modules/business/vo/ApmConfigListVO.java
  9. 19
      src/main/resources/application-dev.yml
  10. 12
      src/main/resources/application.yml

@ -4,12 +4,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.*;
import lombok.AllArgsConstructor;
import org.springblade.common.cache.DictBizCache;
import org.springblade.common.constant.BusinessConstant;
import org.springblade.common.constant.CommonConstant;
import org.springblade.common.enums.ErrorMsgEnum;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tenant.annotation.TenantDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
@ -146,6 +149,11 @@ public class ApmRecordController extends BladeController {
@ApiOperationSupport(order = 4)
@ApiOperation(value = "分页", notes = "分页")
public R<IPage<ApmRecordListVO>> selectPage(Query query, Long createDept, String startTime, String endTime, String cupCardNo, String project) {
BladeUser user = AuthUtil.getUser();
if (!BusinessConstant.ROLE_NAME_HOSPITAL.equals(user.getRoleName())) {
createDept = null;
}
IPage<ApmRecordListVO> page = recordService.selectRecordPage(Condition.getPage(query), createDept, startTime, endTime, cupCardNo, project);
return R.data(page);
}

@ -35,7 +35,7 @@ public interface ApmConfigMapper extends BaseMapper<ApmConfig> {
* @param project
* @return
*/
List<ApmConfig> selectConfigPage(IPage page, @Param("createDept") Long createDept, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("project") String project);
IPage<ApmConfig> selectConfigPage(IPage page, @Param("createDept") Long createDept, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("project") String project);
List<ApmConfig> selectConfigList(@Param("createDept") Long createDept, @Param("apmDay") String apmDay, @Param("project") String project);

@ -42,7 +42,7 @@
FROM ca_apm_config ac
WHERE ac.is_deleted = 0
and ac.create_dept = #{createDept}
and ac.apm_day &gt;= #{apmDay}
and ac.apm_day = #{apmDay}
and ac.project = #{project}
</select>
@ -70,6 +70,7 @@
#{dayStr}
</foreach>
</delete>
<delete id="deleteConfigA">
delete from ca_apm_config where create_dept = #{createDept}
and project in ${projectListStr}

@ -94,10 +94,12 @@
<if test="createDept != '' and createDept != null">
and create_dept = #{createDept}
</if>
<if test="apmDayList != null">
and apm_day in
<foreach collection="apmDayList" item="dayStr" index="index" open="(" close=")" separator=", ">
#{apmDayList}
#{dayStr}
</foreach>
</if>
group by DATE_FORMAT(apm_day, '%Y-%m-%d'), project, period, time_frame
</select>

@ -1,6 +1,7 @@
package org.springblade.modules.business.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.core.mp.base.BaseService;
import org.springblade.modules.business.entity.ApmConfig;
import org.springblade.modules.business.vo.ApmConfigListVO;
@ -13,7 +14,7 @@ import java.util.Map;
*
* @author Chill
*/
public interface IApmConfigService extends BaseService<ApmConfig> {
public interface IApmConfigService extends IService<ApmConfig> {
/**
* 获取时间范围内, 已配置放号的天列表

@ -2,11 +2,14 @@ package org.springblade.modules.business.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.apache.ibatis.annotations.Param;
import org.beetl.core.util.ArrayMap;
import org.springblade.common.cache.DeptCache;
import org.springblade.common.cache.DictBizCache;
import org.springblade.common.constant.BusinessConstant;
import org.springblade.common.constant.CommonConstant;
import org.springblade.common.utils.CommonDateUtil;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
@ -23,6 +26,7 @@ import org.springblade.modules.business.service.IApmConfigService;
import org.springblade.modules.business.service.IApmRecordService;
import org.springblade.modules.business.vo.ApmConfigListVO;
import org.springblade.modules.business.wrapper.ApmConfigListWrapper;
import org.springblade.modules.system.entity.Dept;
import org.springframework.stereotype.Service;
import java.util.*;
@ -31,12 +35,14 @@ import java.util.stream.Collectors;
/**
* 服务实现类
* <p>
* BaseServiceImpl中的存储对象方法会自动更新bean中的公共字段, 如create_time, update_time等
*
* @author Chill
*/
@Service
@RequiredArgsConstructor
public class ApmConfigServiceImpl extends BaseServiceImpl<ApmConfigMapper, ApmConfig> implements IApmConfigService {
public class ApmConfigServiceImpl extends ServiceImpl<ApmConfigMapper, ApmConfig> implements IApmConfigService {
private final IApmRecordService recordService;
@ -73,11 +79,13 @@ public class ApmConfigServiceImpl extends BaseServiceImpl<ApmConfigMapper, ApmCo
@Override
public IPage<ApmConfigListVO> selectPage(IPage<ApmConfig> page, Long createDept, String startTime, String endTime, String project) {
// 由于每个时段保存了一条记录, 故分页时, 先使用distinct查询(医院, 项目 配置天)进行分页
List<ApmConfig> pageRecord = baseMapper.selectConfigPage(page, createDept, startTime, endTime, project);
page.setRecords(pageRecord);
IPage<ApmConfig> pageRecord = baseMapper.selectConfigPage(page, createDept, startTime, endTime, project);
IPage<ApmConfigListVO> result = ApmConfigListWrapper.build().pageVO(page);
IPage<ApmConfigListVO> result = ApmConfigListWrapper.build().pageVO(pageRecord);
result.getRecords().forEach(vo -> {
Dept hospital = DeptCache.getDept(vo.getCreateDept());
vo.setCreateDeptName(Func.isNotEmpty(hospital) ? hospital.getDeptName() : "");
// 根据(医院, 项目 配置天)获取配置详细
List<ApmConfig> configList = baseMapper.selectConfigList(vo.getCreateDept(), DateUtil.format(vo.getApmDay(), DateUtil.PATTERN_DATETIME), vo.getProject());
@ -201,6 +209,7 @@ public class ApmConfigServiceImpl extends BaseServiceImpl<ApmConfigMapper, ApmCo
Integer numberNum = detail.containsKey(BusinessConstant.MAP_KEY_APM_CONFIG_LIST_NUMBER_NUM) ? (Integer) detail.get(BusinessConstant.MAP_KEY_APM_CONFIG_LIST_NUMBER_NUM) : 0;
ApmConfig config = BeanUtil.copy(vo, ApmConfig.class);
config.setCreateDept(createDept);
config.setApmDay(configApmDay);
config.setPeriod(period);
config.setTimeFrame(timeFrame);
@ -235,14 +244,18 @@ public class ApmConfigServiceImpl extends BaseServiceImpl<ApmConfigMapper, ApmCo
));
for (ApmConfig config : configList) {
String key = config.getProject() + config.getApmDay() + config.getProject() + config.getTimeFrame();
String key = config.getProject() + DateUtil.format(config.getApmDay(), DateUtil.PATTERN_DATE) + config.getProject() + config.getTimeFrame();
if (Func.isEmpty(config.getNumberNum()) || config.getNumberNum() <= 0) {
return "保存失败, 放号数量必须大于0";
}
// 若此次修改的放号没有对应的放号配置或已预约统计为0, 验证通过
if (alreadyConfMap.containsKey(key) || alreadyConfCountMap.containsKey(key)) {
continue;
}
if (config.getNumberNum() < alreadyConfCountMap.get(key)) {
if (alreadyConfCountMap.containsKey(key) && config.getNumberNum() < alreadyConfCountMap.get(key)) {
return "保存失败, 放号数量不能低于已预约的数量";
}
}
@ -266,6 +279,12 @@ public class ApmConfigServiceImpl extends BaseServiceImpl<ApmConfigMapper, ApmCo
Integer numberNum = detail.containsKey(BusinessConstant.MAP_KEY_APM_CONFIG_LIST_NUMBER_NUM) ? (Integer) detail.get(BusinessConstant.MAP_KEY_APM_CONFIG_LIST_NUMBER_NUM) : 0;
ApmConfig config = BeanUtil.copy(vo, ApmConfig.class);
config.setCreateDept(createDept);
config.setCreateUser(AuthUtil.getUserId());
config.setCreateTime(DateUtil.now());
config.setUpdateUser(AuthUtil.getUserId());
config.setUpdateTime(DateUtil.now());
config.setStatus(BusinessConstant.BOOLEAN_INT_TRUE);
config.setApmDay(DateUtil.parse(day, DateUtil.PATTERN_DATE));
config.setPeriod(period);
config.setTimeFrame(timeFrame);

@ -92,11 +92,11 @@ public class ApmRecordServiceImpl extends BaseServiceImpl<ApmRecordMapper, ApmRe
// 若用户在该天有预约, 1. 判断预约医院是否相同, 2. 判断预约项目是否重复
for (ApmRecord record : currentApmList) {
for (ApmRecord apmRecord : apmRecordList) {
if (record.getCreateDept() != apmRecord.getCreateDept()) {
if (!record.getCreateDept().equals(apmRecord.getCreateDept())) {
return "预约失败, 本日已有其他医院的预约";
}
if (record.getProject() == apmRecord.getProject()) {
if (record.getProject().equals(apmRecord.getProject())) {
return "预约失败, 本日已有此项目的预约";
}
}
@ -107,7 +107,9 @@ public class ApmRecordServiceImpl extends BaseServiceImpl<ApmRecordMapper, ApmRe
@Override
public List<ApmRecordCountDTO> countAmpNum(Long createDept, String apmDay) {
return baseMapper.countAmpNumWithDays(createDept, Arrays.asList(apmDay));
List<String> apmDayList = new ArrayList<>();
apmDayList.add(apmDay);
return baseMapper.countAmpNumWithDays(createDept, apmDayList);
}
@Override

@ -24,6 +24,12 @@ public class ApmConfigListVO implements Serializable {
@ApiModelProperty(value = "创建部门")
private Long createDept;
/**
* 创建部门名称
*/
@ApiModelProperty(value = "创建部门名称")
private String createDeptName;
/**
* 体检项目
*/

@ -26,7 +26,20 @@ blade:
address: redis://127.0.0.1:6379
#本地文件上传
file:
remote-mode: false
upload-domain: http://localhost:8999
remote-path: /usr/share/nginx/html
remote-mode: true
upload-domain: http://127.0.0.1:8999
remote-path: D:\WorkSoft\minio\data
#oss默认配置
oss:
enabled: false
name: minio
tenant-mode: false
endpoint: http://127.0.0.1:9000
access-key: admin
secret-key: 12345678
# access-key: minioadmin
# secret-key: minioadmin
# access-key: Ycu4QN8np3TrTJDd
# secret-key: WGwePhEBJE6ekD8Etv7tJh8GCDwZd7zp
bucket-name: hcu-cgs

@ -1,6 +1,6 @@
#服务器配置
server:
port: 8088
port: 80
undertow:
threads:
# 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
@ -112,16 +112,6 @@ report:
provider:
prefix: blade-
#oss默认配置
oss:
enabled: true
name: qiniu
tenant-mode: true
endpoint: http://prt1thnw3.bkt.clouddn.com
access-key: N_Loh1ngBqcJovwiAJqR91Ifj2vgOWHOf8AwBA_h
secret-key: AuzuA1KHAbkIndCU0dB3Zfii2O3crHNODDmpxHRS
bucket-name: bladex
#blade配置
blade:
#token配置

Loading…
Cancel
Save