code commit

master
liuqingkun 3 years ago
parent a992eb97f9
commit 770d889248
  1. 7
      src/main/java/org/springblade/modules/business/controller/ApmConfigController.java
  2. 17
      src/main/java/org/springblade/modules/business/controller/ApmRecordController.java
  3. 34
      src/main/java/org/springblade/modules/business/controller/ArticleController.java
  4. 12
      src/main/java/org/springblade/modules/business/controller/BlacklistController.java
  5. 2
      src/main/java/org/springblade/modules/business/entity/ApmConfig.java
  6. 7
      src/main/java/org/springblade/modules/business/entity/ApmRecord.java
  7. 7
      src/main/java/org/springblade/modules/business/entity/Blacklist.java
  8. 5
      src/main/java/org/springblade/modules/business/mapper/ApmConfigMapper.java
  9. 16
      src/main/java/org/springblade/modules/business/mapper/ApmConfigMapper.xml
  10. 2
      src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.java
  11. 21
      src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.xml
  12. 2
      src/main/java/org/springblade/modules/business/mapper/ArticleMapper.xml
  13. 5
      src/main/java/org/springblade/modules/business/mapper/BlackListMapper.xml
  14. 2
      src/main/java/org/springblade/modules/business/service/IApmRecordService.java
  15. 2
      src/main/java/org/springblade/modules/business/service/IArticleService.java
  16. 80
      src/main/java/org/springblade/modules/business/service/impl/ApmConfigServiceImpl.java
  17. 20
      src/main/java/org/springblade/modules/business/service/impl/ApmRecordServiceImpl.java
  18. 12
      src/main/java/org/springblade/modules/business/service/impl/ArticleServiceImpl.java

@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiSort;
import io.swagger.annotations.*;
import lombok.AllArgsConstructor;
import org.springblade.common.constant.BusinessConstant;
import org.springblade.common.constant.CommonConstant;
import org.springblade.common.enums.ErrorMsgEnum;
import org.springblade.common.utils.CommonDateUtil;
@ -14,7 +13,6 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tenant.annotation.TenantDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.business.entity.ApmConfig;
@ -24,7 +22,6 @@ import org.springblade.modules.business.vo.ApmConfigVO;
import org.springblade.modules.business.wrapper.ApmConfigWrapper;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -124,8 +121,8 @@ public class ApmConfigController extends BladeController {
/**
* @param query 分页参数
* @param createDept 医院ID
* @param startTime 查询开始时间, 格式yyyy-MM-dd HH:mm:ss
* @param endTime 查询结束时间, 格式yyyy-MM-dd HH:mm:ss
* @param startTime 查询开始时间, 格式yyyy-MM-dd
* @param endTime 查询结束时间, 格式yyyy-MM-dd
* @param project 体检项目名
* @return
*/

@ -1,7 +1,6 @@
package org.springblade.modules.business.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSort;
import io.swagger.annotations.Api;
@ -12,31 +11,21 @@ import lombok.AllArgsConstructor;
import org.springblade.common.constant.BusinessConstant;
import org.springblade.common.constant.CommonConstant;
import org.springblade.common.enums.ErrorMsgEnum;
import org.springblade.common.utils.CommonDateUtil;
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.tenant.annotation.TenantDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.business.entity.ApmRecord;
import org.springblade.modules.business.entity.Blacklist;
import org.springblade.modules.business.service.IApmRecordService;
import org.springblade.modules.business.service.IBlacklistService;
import org.springblade.modules.business.vo.ApmRecordVO;
import org.springblade.modules.business.vo.DeptCmpVO;
import org.springblade.modules.business.wrapper.ApmRecordWrapper;
import org.springblade.modules.system.entity.Dept;
import org.springblade.modules.system.service.IDeptService;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 控制器
@ -125,7 +114,7 @@ public class ApmRecordController extends BladeController {
})
@ApiOperationSupport(order = 4)
@ApiOperation(value = "分页", notes = "传入notice")
public R<IPage<ApmRecordVO>> selectPage(Query query, @RequestParam Long createDept, @RequestParam String startTime, @RequestParam String endTime, @RequestParam String cupCardNo) {
public R<IPage<ApmRecordVO>> selectPage(Query query, Long createDept, String startTime, String endTime, String cupCardNo) {
IPage<ApmRecordVO> page = recordService.selectPage(Condition.getPage(query), createDept, startTime, endTime, cupCardNo);
return R.data(page);
}
@ -151,11 +140,11 @@ public class ApmRecordController extends BladeController {
cardNo = record.getCupCardNo();
}
if (apmDay != record.getApmDay()) {
if (!DateUtil.format(apmDay, DateUtil.PATTERN_DATE).equals(DateUtil.format(record.getApmDay(), DateUtil.PATTERN_DATE))) {
return R.fail("预约失败, 一次只能预约同一天的体检项目");
}
if (cardNo != record.getCupCardNo()) {
if (!cardNo.equals(record.getCupCardNo())) {
return R.fail("预约失败, 一次只能预约同一个人");
}

@ -40,7 +40,7 @@ public class ArticleController extends BladeController {
@GetMapping("/detail-by-id")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "详情", notes = "传入id")
public R<ArticleVO> detailById(Long id) {
public R<ArticleVO> detailById(@RequestParam Long id) {
Article article = articleService.getById(id);
return R.data(ArticleWrapper.build().entityVO(article));
}
@ -51,7 +51,7 @@ public class ArticleController extends BladeController {
@GetMapping("/detail-publish")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "详情-已发布", notes = "传入医院id")
public R<ArticleVO> detailPublish(Long createDept) {
public R<ArticleVO> detailPublish(@RequestParam Long createDept) {
Article article = articleService.getPublishArticle(createDept);
return R.data(ArticleWrapper.build().entityVO(article));
}
@ -68,7 +68,7 @@ public class ArticleController extends BladeController {
})
@ApiOperationSupport(order = 3)
@ApiOperation(value = "分页", notes = "传入notice")
public R<IPage<ArticleVO>> selectPage(Query query, @RequestParam Long createDept, @RequestParam String startTime, @RequestParam String endTime, @RequestParam String title) {
public R<IPage<ArticleVO>> selectPage(Query query, @RequestParam Long createDept, String startTime, String endTime, String title) {
IPage<Article> pages = articleService.selectPage(Condition.getPage(query), createDept, startTime, endTime, title);
return R.data(ArticleWrapper.build().pageVO(pages));
}
@ -102,7 +102,7 @@ public class ArticleController extends BladeController {
@PostMapping("/publish")
@ApiOperationSupport(order = 5)
@ApiOperation(value = "更新发布状态", notes = "更新发布状态")
public R publish(Long id, String publishFlag) {
public R publish(@RequestParam Long id, @RequestParam String publishFlag) {
if (Func.isEmpty(id)) {
return R.fail("更新失败, 更新对象ID为空");
}
@ -110,14 +110,38 @@ public class ArticleController extends BladeController {
return R.fail("更新失败, 发布状态标记为空为空");
}
return R.status(articleService.publish(id, publishFlag));
}
/**
* 新增
*/
@PostMapping("/save-publish")
@ApiOperationSupport(order = 6)
@ApiOperation(value = "新增", notes = "article")
public R saveAndPublish(@RequestBody Article article) {
if (Func.isEmpty(article)) {
return R.fail("保存失败, 保存对象为空");
}
if (Func.isBlank(article.getTitle())) {
return R.fail("保存失败, 文章标题为空");
}
if (Func.isBlank(article.getContent())) {
return R.fail("保存失败, 文章内容为空");
}
article.setStatus(BusinessConstant.ARTICLE_STATUS_SAVE);
return R.status(articleService.saveAndPublish(article));
}
/**
* 删除
*/
@PostMapping("/remove")
@ApiOperationSupport(order = 6)
@ApiOperationSupport(order = 7)
@ApiOperation(value = "逻辑删除", notes = "传入id")
public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
boolean temp = articleService.deleteLogic(Func.toLongList(ids));

@ -89,19 +89,21 @@ public class BlacklistController extends BladeController {
@GetMapping("/user-blacklist")
@ApiOperationSupport(order = 4)
@ApiOperation(value = "获取正在生效的黑名单", notes = "传入用户证件号")
public R<Blacklist> userBlacklist(String cupCardNo) {
public R userBlacklist(String cupCardNo) {
if (Func.isEmpty(cupCardNo)) {
return R.fail(ErrorMsgEnum.PARAMS_NULL_CUP_CARD_NO.getValue());
}
Blacklist blacklist = blacklistService.getLatelyRecord(cupCardNo);
String currentDayStr = DateUtil.format(DateUtil.now(), CommonDateUtil.PATTERN_DATETIME_MINI);
if ((Integer.parseInt(currentDayStr) - Integer.parseInt(blacklist.getBlacklistTime())) < BusinessConstant.BLACKLIST_RANGE) {
return R.data(blacklist);
if (Func.isNotEmpty(blacklist) && CommonDateUtil.daysBetween(DateUtil.now(), blacklist.getCreateTime()) < BusinessConstant.BLACKLIST_RANGE) {
int days = CommonDateUtil.daysBetween(blacklist.getCreateTime(), DateUtil.now());
return R.data("由于您未及时进行报到,已被拉黑请于" + (BusinessConstant.BLACKLIST_RANGE - days) + "日后再次进行预约");
}
return R.data(null);
return R.data("");
}
}

@ -1,6 +1,8 @@
package org.springblade.modules.business.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

@ -1,10 +1,13 @@
package org.springblade.modules.business.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.tool.utils.DateUtil;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@ -41,6 +44,8 @@ public class ApmRecord extends BaseEntity {
/**
* 放号天
*/
@DateTimeFormat(pattern = DateUtil.PATTERN_DATE)
@JsonFormat(pattern = DateUtil.PATTERN_DATE)
@ApiModelProperty(value = "放号天")
private Date apmDay;
@ -71,6 +76,8 @@ public class ApmRecord extends BaseEntity {
/**
* 预约时间
*/
@DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
@JsonFormat(pattern = DateUtil.PATTERN_DATETIME)
@ApiModelProperty(value = "预约时间")
private Date apmTime;

@ -44,11 +44,4 @@ public class Blacklist extends BaseEntity {
@ApiModelProperty(value = "预约时间")
private Date apmTime;
/**
* 拉黑时间, 格式yyyyMMdd
*/
@ApiModelProperty(value = "拉黑时间, 格式yyyyMMdd")
private String blacklistTime;
}

@ -35,9 +35,10 @@ public interface ApmConfigMapper extends BaseMapper<ApmConfig> {
* @param project
* @return
*/
List<ApmConfig> selectPage(IPage page, @Param("createDept") Long createDept, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("project") String project);
List<ApmConfig> selectConfigPage(IPage page, @Param("createDept") Long createDept, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("project") String project);
List<ApmConfig> selectList(@Param("createDept") Long createDept, @Param("apmDay") String apmDay, @Param("project") String project);
List<ApmConfig> selectConfigList(@Param("createDept") Long createDept, @Param("apmDay") String apmDay, @Param("project") String project);
void deleteConfig(@Param("createDept") Long createDept, @Param("apmDayList") List<String> apmDayList, @Param("projectList") List<String> projectList);
}

@ -19,7 +19,7 @@
<result column="number_num" property="numberNum"/>
</resultMap>
<select id="selectPage" resultMap="apmConfigResultMap">
<select id="selectConfigPage" resultMap="apmConfigResultMap">
SELECT distinct ac.create_dept, ac.project, ac.apm_day
FROM ca_apm_config ac
WHERE ac.is_deleted = 0 and ac.create_dept = #{createDept}
@ -34,7 +34,7 @@
</if>
</select>
<select id="selectList" resultMap="apmConfigResultMap">
<select id="selectConfigList" resultMap="apmConfigResultMap">
SELECT *
FROM ca_apm_config ac
WHERE ac.is_deleted = 0
@ -55,4 +55,16 @@
</if>
group by DATE_FORMAT(ac.apm_day, '%Y-%m-%d')
</select>
<delete id="deleteConfig">
delete from ca_apm_config ac where ac.create_dept = #{createDept}
and ac.project in
<foreach collection="list" item="project" index="index" open="(" close=")" separator=", ">
#{projectList}
</foreach>
and ac.apm_day in
<foreach collection="list" item="dayStr" index="index" open="(" close=")" separator=", ">
#{apmDayList}
</foreach>
</delete>
</mapper>

@ -31,4 +31,6 @@ public interface ApmRecordMapper extends BaseMapper<ApmRecord> {
List<ApmRecordCountDTO> countAmpNum(@Param("createDept") Long createDept, @Param("apmDay") String apmDay);
List<ApmRecordCountDTO> countAmpNumWithDays(@Param("createDept") Long createDept, @Param("apmDay") List<String> apmDayList);
}

@ -35,7 +35,10 @@
<select id="selectPage" resultMap="apmRecordResultMap">
SELECT ar.*
FROM ca_apm_record ar
WHERE ar.is_deleted = 0 and ar.create_dept = #{createDept}
WHERE ar.is_deleted = 0
<if test="createDept != '' and createDept != null">
and ar.create_dept = #{createDept}
</if>
<if test="startTime != '' and startTime != null">
and ar.apm_day &gt;= #{startTime}
</if>
@ -48,9 +51,19 @@
</select>
<select id="countAmpNum" resultMap="ApmRecordCountDTOResultMap">
select DATE_FORMAT(ac.apm_day, '%Y-%m-%d') apmDay, project, period, time_frame timeFrame, count(id) apmNum
select DATE_FORMAT(apm_day, '%Y-%m-%d') apmDay, project, period, time_frame timeFrame, count(id) apmNum
from ca_apm_record
where is_deleted = 0 and create_dept = #{createDept} and apm_day = #{apmDay}
group by DATE_FORMAT(apm_day, '%Y-%m-%d'), project, period, time_frame
</select>
<select id="countAmpNumWithDays" resultMap="ApmRecordCountDTOResultMap">
select DATE_FORMAT(apm_day, '%Y-%m-%d') apmDay, project, period, time_frame timeFrame, count(id) apmNum
from ca_apm_record
where ar.is_deleted = 0 and ar.create_dept = #{createDept} and apm_day = #{apmDay}
group by DATE_FORMAT(ac.apm_day, '%Y-%m-%d'), project, period, time_frame
where is_deleted = 0 and create_dept = #{createDept} and apm_day in
<foreach collection="list" item="dayStr" index="index" open="(" close=")" separator=", ">
#{apmDayList}
</foreach>
group by DATE_FORMAT(apm_day, '%Y-%m-%d'), project, period, time_frame
</select>
</mapper>

@ -35,7 +35,7 @@
<update id="updatePublishSta">
update ca_article
set publish_sta = #{publishVal}
<if test="publishVal = 1">, publish_time = now()</if>
<if test="publishVal == 1">, publish_time = now()</if>
where id = #{id}
</update>
</mapper>

@ -15,7 +15,6 @@
<result column="cup_card_no" property="cupCardNo"/>
<result column="cup_phone" property="cupPhone"/>
<result column="apm_time" property="apmTime"/>
<result column="blacklist_time" property="blacklistTime"/>
</resultMap>
<select id="selectPage" resultMap="blacklistResultMap">
@ -28,7 +27,7 @@
<if test="endTime != '' and endTime != null">
and blkl.apm_time &lt;= #{endTime}
</if>
<if test="title != '' and title != null">
<if test="cardNo != '' and cardNo != null">
and blkl.cup_card_no like concat(concat('%', #{cardNo}), '%')
</if>
</select>
@ -37,7 +36,7 @@
select *
from ca_blacklist
where is_deleted = 0 and cup_card_no = #{cupCardNo}
order by blacklistTime desc
order by create_time desc
limit 1
</select>
</mapper>

@ -35,4 +35,6 @@ 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> apmDayList);
}

@ -25,4 +25,6 @@ public interface IArticleService extends BaseService<Article> {
Article getPublishArticle(Long creteDept);
boolean publish(Long id, String publishFlag);
boolean saveAndPublish(Article article);
}

@ -2,7 +2,7 @@ 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.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import org.springblade.common.constant.BusinessConstant;
import org.springblade.common.utils.CommonDateUtil;
import org.springblade.core.mp.base.BaseServiceImpl;
@ -11,22 +11,17 @@ import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.modules.business.dto.ApmRecordCountDTO;
import org.springblade.modules.business.entity.ApmConfig;
import org.springblade.modules.business.entity.ApmRecord;
import org.springblade.modules.business.mapper.ApmConfigMapper;
import org.springblade.modules.business.service.IApmConfigService;
import org.springblade.modules.business.service.IApmRecordService;
import org.springblade.modules.business.service.IBlacklistService;
import org.springblade.modules.business.vo.ApmConfigListVO;
import org.springblade.modules.business.wrapper.ApmConfigListWrapper;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -36,13 +31,10 @@ import java.util.stream.Collectors;
* @author Chill
*/
@Service
@RequiredArgsConstructor
public class ApmConfigServiceImpl extends BaseServiceImpl<ApmConfigMapper, ApmConfig> implements IApmConfigService {
private static final IApmRecordService recordService;
static {
recordService = SpringUtil.getBean(IApmRecordService.class);
}
private final IApmRecordService recordService;
@Override
public Map<String, List<String>> alreadyConfigDay(Long createDept, String startTime, String endTime) {
@ -63,13 +55,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.selectPage(page, createDept, startTime, endTime, project);
List<ApmConfig> pageRecord = baseMapper.selectConfigPage(page, createDept, startTime, endTime, project);
page.setRecords(pageRecord);
IPage<ApmConfigListVO> result = ApmConfigListWrapper.build().pageVO(page);
result.getRecords().forEach(vo -> {
// 根据(医院, 项目 配置天)获取配置详细
List<ApmConfig> configList = baseMapper.selectList(vo.getCreateDept(), DateUtil.format(vo.getApmDay(), DateUtil.PATTERN_DATETIME), vo.getProject());
List<ApmConfig> configList = baseMapper.selectConfigList(vo.getCreateDept(), DateUtil.format(vo.getApmDay(), DateUtil.PATTERN_DATETIME), vo.getProject());
// 获取该天的所有预约统计
List<ApmRecordCountDTO> apmCountList = recordService.countAmpNum(createDept, DateUtil.format(vo.getApmDay(), DateUtil.PATTERN_DATETIME));
@ -169,23 +161,15 @@ public class ApmConfigServiceImpl extends BaseServiceImpl<ApmConfigMapper, ApmCo
@Override
public String saveCheck(Long createDept, List<String> dayList, List<ApmConfigListVO> configListVOS) {
String msg = "";
List<String> daySearchList = new ArrayList<>();
List<ApmConfig> alreadyConfList = baseMapper.selectList(Wrappers.<ApmConfig>lambdaQuery()
.eq(ApmConfig::getCreateDept, createDept)
.in(ApmConfig::getApmDay, dayList));
Map<String, ApmConfig> alreadyConfMap = new HashMap<>();
if (Func.isNotEmpty(alreadyConfList)) {
alreadyConfMap = alreadyConfList.stream().collect(Collectors.toMap(
config -> config.getProject() + config.getApmDay() + config.getProject() + config.getTimeFrame(), Function.identity()
));
}
// 1. 先根据用户角色判断放号的天是否短于提前几天放号的配置
BladeUser user = AuthUtil.getUser();
int configSubDays = BusinessConstant.ROLE_NAME_HOSPITAL.equals(user.getRoleName()) ? BusinessConstant.HOSPITAL_APM_CONFIG_RANGE : 1;
List<ApmConfig> configList = new ArrayList<>();
for (String day : dayList) {
int subDays = CommonDateUtil.daysBetween(DateUtil.now(), DateUtil.parse(day, DateUtil.PATTERN_DATETIME));
Date configApmDay = DateUtil.parse(day + BusinessConstant.DATE_STR_HMS, DateUtil.PATTERN_DATETIME);
int subDays = CommonDateUtil.daysBetween(DateUtil.now(), configApmDay);
if (subDays < configSubDays) {
return "保存失败, 只能保存" + configSubDays + "天之后的放号配置";
}
@ -197,15 +181,48 @@ 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.setApmDay(DateUtil.parse(day, DateUtil.PATTERN_DATETIME));
config.setApmDay(configApmDay);
config.setPeriod(period);
config.setTimeFrame(timeFrame);
config.setNumberNum(numberNum);
configList.add(config);
}
}
daySearchList.add(day + BusinessConstant.DATE_STR_HMS);
}
// 根据医院, 日期 查询该日期是否已有放号配置, 若有且已被预约, 放号数量只能增加, 不能减少
List<ApmConfig> alreadyConfList = baseMapper.selectList(Wrappers.<ApmConfig>lambdaQuery()
.eq(ApmConfig::getCreateDept, createDept)
.in(ApmConfig::getApmDay, daySearchList));
Map<String, ApmConfig> alreadyConfMap = new HashMap<>();
if (Func.isNotEmpty(alreadyConfList)) {
alreadyConfMap = alreadyConfList.stream().collect(Collectors.toMap(
config -> config.getProject() + config.getApmDay() + config.getProject() + config.getTimeFrame(), Function.identity()
));
List<ApmRecordCountDTO> records = recordService.countAmpNum(createDept, 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()
));
for (ApmConfig config : configList) {
String key = config.getProject() + config.getApmDay() + config.getProject() + config.getTimeFrame();
// 若此次修改的放号没有对应的放号配置或已预约统计为0, 验证通过
if (alreadyConfCountMap.containsKey(key) || alreadyConfCountMap.containsKey(key)) {
continue;
}
if (config.getNumberNum() < alreadyConfCountMap.get(key)) {
return "保存失败, 放号数量不能低于已预约的数量";
}
}
}
return msg;
}
@ -217,9 +234,12 @@ public class ApmConfigServiceImpl extends BaseServiceImpl<ApmConfigMapper, ApmCo
return;
}
List<ApmConfig> configList = new ArrayList<>();
List<String> daySearchList = new ArrayList<>();
List<String> projectList = new ArrayList<>();
for (String day : dayList) {
for (ApmConfigListVO vo : configListVOS) {
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) : "";
@ -233,8 +253,14 @@ public class ApmConfigServiceImpl extends BaseServiceImpl<ApmConfigMapper, ApmCo
configList.add(config);
}
}
daySearchList.add(day + BusinessConstant.DATE_STR_HMS);
}
// 首先, 根据(医院,体检项目,日期)将放号配置删除, 然后重新添加放号配置
baseMapper.deleteConfig(createDept, daySearchList, projectList);
saveBatch(configList);
}
}

@ -2,6 +2,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.springblade.common.constant.BusinessConstant;
import org.springblade.common.enums.ErrorMsgEnum;
import org.springblade.common.utils.CommonDateUtil;
@ -33,12 +34,9 @@ import java.util.Map;
* @author Chill
*/
@Service
@RequiredArgsConstructor
public class ApmRecordServiceImpl extends BaseServiceImpl<ApmRecordMapper, ApmRecord> implements IApmRecordService {
private static final IBlacklistService blacklistService;
static {
blacklistService = SpringUtil.getBean(IBlacklistService.class);
}
private final IBlacklistService blacklistService;
@Override
public IPage<ApmRecordVO> selectPage(IPage<ApmRecordVO> page, Long createDept, String startTime, String endTime, String cupCardNo) {
@ -53,8 +51,7 @@ public class ApmRecordServiceImpl extends BaseServiceImpl<ApmRecordMapper, ApmRe
// 判断用户是否正在被拉黑
Blacklist blacklist = blacklistService.getLatelyRecord(cupCardNo);
String currentDayStr = DateUtil.format(DateUtil.now(), CommonDateUtil.PATTERN_DATETIME_MINI);
if ((Integer.parseInt(currentDayStr) - Integer.parseInt(blacklist.getBlacklistTime())) < BusinessConstant.BLACKLIST_RANGE) {
if (Func.isNotEmpty(blacklist) && CommonDateUtil.daysBetween(DateUtil.now(), blacklist.getCreateTime()) < BusinessConstant.BLACKLIST_RANGE) {
return ErrorMsgEnum.USER_IN_BLACKLIST.getValue();
}
@ -71,12 +68,12 @@ public class ApmRecordServiceImpl extends BaseServiceImpl<ApmRecordMapper, ApmRe
}
if (record.getProject() == apmRecord.getProject()) {
return "预约事变, 本日已有此项目的预约";
return "预约失败, 本日已有此项目的预约";
}
}
}
return null;
return "";
}
@Override
@ -84,4 +81,9 @@ public class ApmRecordServiceImpl extends BaseServiceImpl<ApmRecordMapper, ApmRe
return baseMapper.countAmpNum(createDept, apmDay);
}
@Override
public List<ApmRecordCountDTO> countAmpNum(Long createDept, List<String> apmDayList) {
return baseMapper.countAmpNumWithDays(createDept, apmDayList);
}
}

@ -49,4 +49,16 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleMapper, Article>
return true;
}
@Override
public boolean saveAndPublish(Article article) {
Article articleCheck = getPublishArticle(article.getCreateDept());
if (Func.isNotEmpty(articleCheck)) {
baseMapper.updatePublishSta(articleCheck.getId(), BusinessConstant.ARTICLE_STATUS_CANCEL);
}
article.setPublishSta(BusinessConstant.ARTICLE_STATUS_CANCEL + "");
saveOrUpdate(article);
return true;
}
}

Loading…
Cancel
Save