bug修复及接口文档修改

master
liuqingkun 3 years ago
parent 2dd831d8f8
commit 1a700e4f60
  1. 7
      api_doc.md
  2. 4
      src/main/java/org/springblade/modules/business/controller/ApmConfigController.java
  3. 67
      src/main/java/org/springblade/modules/business/controller/ApmRecordController.java
  4. 2
      src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.java
  5. 16
      src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.xml
  6. 2
      src/main/java/org/springblade/modules/business/service/IApmConfigService.java
  7. 39
      src/main/java/org/springblade/modules/business/service/impl/ApmConfigServiceImpl.java
  8. 1
      src/main/java/org/springblade/modules/business/service/impl/ApmRecordServiceImpl.java
  9. 7
      src/main/java/org/springblade/modules/business/vo/ApmRecordDetailVO.java
  10. 3
      src/main/resources/application-dev.yml
  11. 2
      src/main/resources/application-prod.yml
  12. 2
      src/main/resources/application.yml

@ -280,7 +280,7 @@
```
### 1.11 获取系统时间
##### URL
`GET` `**/blade-business/common-api/get-system-datetime**`
`GET` `/blade-business/common-api/get-system-datetime`
##### 请求参数
@ -643,15 +643,16 @@
用户报到后, 调用接口, 更新预约记录为`已报到`
##### URL
`GET` `blade-business/apm-record/register`
`POST` `blade-business/apm-record/register`
##### 请求参数
|参数名|参数类型|参数说明|
|-----|-----|-----|
|id|Long|预约记录ID|
|ids|String|预约记录ID列表|
##### 返回示例
```json
// todo 返回数据结构已变更, 待更新
{
"code": 200,
"success": true,

@ -62,7 +62,7 @@ public class ApmConfigController extends BladeController {
return R.fail(ErrorMsgEnum.PARAMS_NULL_CREATE_DEPT.getValue());
}
Map<String, List<String>> res = apmConfigService.alreadyConfigDay(createDept, startTime, endTime);
Map<String, Map<String, Object>> res = apmConfigService.alreadyConfigDay(createDept, startTime, endTime);
return R.data(res);
}
@ -145,7 +145,7 @@ public class ApmConfigController extends BladeController {
List<Object> configListVOS = (List<Object>) request.get("configListVOS");
List<ApmConfigListVO> vos = new ArrayList<>();
configListVOS.forEach(vo ->{
configListVOS.forEach(vo -> {
vos.add(BeanUtil.copy(vo, ApmConfigListVO.class));
});

@ -2,10 +2,7 @@ package org.springblade.modules.business.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.*;
import lombok.AllArgsConstructor;
import org.springblade.common.constant.BusinessConstant;
import org.springblade.common.constant.CommonConstant;
@ -15,17 +12,18 @@ 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.service.IApmRecordService;
import org.springblade.modules.business.vo.ApmRecordDetailVO;
import org.springblade.modules.business.vo.ApmRecordListVO;
import org.springblade.modules.business.vo.ApmRecordVO;
import org.springblade.modules.business.wrapper.ApmRecordWrapper;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
import java.util.*;
/**
* 控制器
@ -60,23 +58,56 @@ public class ApmRecordController extends BladeController {
/**
* 体检报到
*/
@GetMapping("/register")
@PostMapping("/register")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "体检报到", notes = "体检报到")
public R register(Long id) {
if (Func.isEmpty(id)) {
return R.fail(ErrorMsgEnum.PARAMS_NULL_OBJECT_ID.getValue());
@ApiOperation(value = "体检报到", notes = "传入id")
public R register(@ApiParam(value = "主键集合") @RequestParam String ids) {
List<ApmRecord> records = recordService.listByIds(Func.toLongList(ids));
String registerFlag = BusinessConstant.BOOLEAN_STR_TRUE;
String resMsg = "";
// 1. 筛选出所有的状态为未报到的体检申请
List<ApmRecord> urRecords = new ArrayList<>();
for (ApmRecord record : records) {
if (record.getApmStatus() == BusinessConstant.RECORD_STATUS_UNREGISTER) {
// 判断预约的体检时间是否为本天, 若不是本天, 返回错误信息
if (!DateUtil.format(DateUtil.now(), DateUtil.PATTERN_DATE).equals(DateUtil.format(record.getApmDay(), DateUtil.PATTERN_DATE))) {
registerFlag = BusinessConstant.BOOLEAN_STR_FALSE;
resMsg = "报到时间与预约时间不符,请按预约时间报道";
}
record.setApmStatus(BusinessConstant.RECORD_STATUS_REGISTER);
urRecords.add(record);
}
}
ApmRecord record = recordService.getById(id);
if (Func.isNotEmpty(record)) {
record.setApmStatus(BusinessConstant.RECORD_STATUS_REGISTER);
recordService.updateById(record);
} else {
return R.fail("报到失败, 未找到对应预约记录");
Map<String, Object> resMap = new HashMap<>();
if (Func.isEmpty(urRecords)) {
registerFlag = BusinessConstant.BOOLEAN_STR_FALSE;
resMsg = "无此人员预约检测项目,请预约后按时间报道";
resMap.put("resStatus", registerFlag);
resMap.put("resMsg", resMsg);
resMap.put("resData", urRecords);
return R.data(resMap);
}
ApmRecordListVO vo = new ApmRecordListVO();
List<ApmRecordDetailVO> details = new ArrayList<>();
for (ApmRecord urRecord : urRecords) {
vo = BeanUtil.copy(urRecord, ApmRecordListVO.class);
details.add(BeanUtil.copy(urRecord, ApmRecordDetailVO.class));
}
vo.setDetails(details);
resMap.put("resStatus", registerFlag);
resMap.put("resMsg", resMsg);
resMap.put("resData", vo);
if (BusinessConstant.BOOLEAN_STR_TRUE.equals(registerFlag)) {
recordService.updateBatchById(urRecords);
}
return R.success("报到成功!");
return R.data(resMap);
}
/**

@ -34,7 +34,7 @@ public interface ApmRecordMapper extends BaseMapper<ApmRecord> {
List<ApmRecord> selectRecordList(@Param("createDept") Long createDept, @Param("startTime") String startTime, @Param("endTime") String endTime,
@Param("cupCardNo") String cupCardNo, @Param("project") String project);
List<ApmRecordCountDTO> countAmpNum(@Param("createDept") Long createDept, @Param("apmDay") String apmDay);
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);

@ -33,7 +33,7 @@
</resultMap>
<select id="selectRecordPage" resultMap="apmRecordResultMap">
SELECT distinct ar.create_dept, ar.cup_card_no, ar.apm_day
SELECT distinct ar.create_dept, ar.apm_day, ar.cup_name,ar.cup_card_no,ar.cup_phone
FROM ca_apm_record ar
WHERE ar.is_deleted = 0
<if test="createDept != '' and createDept != null">
@ -74,11 +74,17 @@
</if>
</select>
<select id="countAmpNum" resultMap="ApmRecordCountDTOResultMap">
select DATE_FORMAT(apm_day, '%Y-%m-%d') apmDay, project, period, time_frame timeFrame, count(id) apmNum
<select id="countAllAmpNumByDept" resultMap="ApmRecordCountDTOResultMap">
select DATE_FORMAT(apm_day, '%Y-%m-%d') apmDay, 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
where is_deleted = 0 and create_dept = #{createDept}
<if test="startTime != '' and startTime != null">
and ar.apm_day &gt;= #{startTime}
</if>
<if test="endTime != '' and endTime != null">
and ar.apm_day &lt;= #{endTime}
</if>
group by DATE_FORMAT(apm_day, '%Y-%m-%d'), project, period, time_frame
</select>
<select id="countAmpNumWithDays" resultMap="ApmRecordCountDTOResultMap">

@ -23,7 +23,7 @@ public interface IApmConfigService extends BaseService<ApmConfig> {
* @param endTime
* @return 格式: {mon:1, days:{1, 2, 3}},{mon:2, days:{1, 2, 3}}
*/
Map<String, List<String>> alreadyConfigDay(Long createDept, String startTime, String endTime);
Map<String, Map<String, Object>> alreadyConfigDay(Long createDept, String startTime, String endTime);
/**
* 自定义分页

@ -4,6 +4,7 @@ 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.beetl.core.util.ArrayMap;
import org.springblade.common.cache.DictBizCache;
import org.springblade.common.constant.BusinessConstant;
import org.springblade.common.utils.CommonDateUtil;
@ -17,6 +18,7 @@ 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.mapper.ApmRecordMapper;
import org.springblade.modules.business.service.IApmConfigService;
import org.springblade.modules.business.service.IApmRecordService;
import org.springblade.modules.business.vo.ApmConfigListVO;
@ -38,17 +40,27 @@ public class ApmConfigServiceImpl extends BaseServiceImpl<ApmConfigMapper, ApmCo
private final IApmRecordService recordService;
private final ApmRecordMapper recordMapper;
@Override
public Map<String, List<String>> alreadyConfigDay(Long createDept, String startTime, String endTime) {
public Map<String, Map<String, Object>> alreadyConfigDay(Long createDept, String startTime, String endTime) {
// 获取已配置的放号天列表
List<Map<String, Object>> days = baseMapper.alreadyConfigDayList(createDept, startTime, endTime);
// 将获取到的天转换为[{mon:1, days:{1, 2, 3}},{mon:2, days:{1, 2, 3}}]格式
Map<String, List<String>> monDaysMap = new HashMap<>();
// 获取已预约的统计
List<ApmRecordCountDTO> apmRecords = recordMapper.countAllAmpNumByDept(createDept, startTime, endTime);
Map<String, Integer> apmRecordsMap = apmRecords.stream().collect(Collectors.toMap(e -> e.getApmDay(), e -> e.getApmNum()));
Map<String, Map<String, Object>> monDaysMap = new HashMap<>();
for (Map<String, Object> day : days) {
String mon = ((String) day.get("apmDay")).split("-")[1];
List<String> daysItem = monDaysMap.containsKey(mon) ? monDaysMap.get(mon) : new ArrayList<>();
daysItem.add((String) day.get("apmDay"));
monDaysMap.put(mon, daysItem);
int allNum = (Integer) day.get("allNum");
Map<String, Object> daysItemMap = new ArrayMap<>();
int apmCount = apmRecordsMap.containsKey(day) ? apmRecordsMap.get(day) : 0;
daysItemMap.put("date", day);
daysItemMap.put("enableApm", apmCount < allNum ? BusinessConstant.BOOLEAN_STR_TRUE : BusinessConstant.BOOLEAN_STR_FALSE);
monDaysMap.put(mon, daysItemMap);
}
return monDaysMap;
@ -100,10 +112,16 @@ public class ApmConfigServiceImpl extends BaseServiceImpl<ApmConfigMapper, ApmCo
.eq(ApmConfig::getCreateDept, createDept)
.eq(ApmConfig::getApmDay, apmDay));
Map<String, List<ApmConfig>> configProjectMap = new HashMap<>();
Map<String, Integer> totalApmNumberMap = new HashMap<>();
allConfigList.forEach(config -> {
List<ApmConfig> itemList = configProjectMap.containsKey(config.getProject()) ? configProjectMap.get(config.getProject()) : new ArrayList<>();
itemList.add(config);
configProjectMap.put(config.getProject(), itemList);
// 总放号数
int totalNum = totalApmNumberMap.containsKey(config.getProject()) ? totalApmNumberMap.get(config.getProject()) : 0;
totalNum += config.getNumberNum();
totalApmNumberMap.put(config.getProject(), totalNum);
});
// 获取用户在该天预约记录
@ -114,19 +132,12 @@ public class ApmConfigServiceImpl extends BaseServiceImpl<ApmConfigMapper, ApmCo
// 获取该天的所有预约统计
List<ApmRecordCountDTO> apmCountList = recordService.countAmpNum(createDept, apmDay);
Map<String, Integer> apmCountMap = new HashMap<>();
apmCountList.forEach(count -> {
int apmNum = apmCountMap.containsKey(count.getProject()) ? apmCountMap.get(count.getProject()) : 0;
apmNum += count.getApmNum();
apmCountMap.put(count.getProject(), apmNum);
});
List<ApmConfigListVO> resultList = new ArrayList<>();
for (Map.Entry<String, List<ApmConfig>> configMap : configProjectMap.entrySet()) {
String project = configMap.getKey();
List<ApmConfig> configList = configMap.getValue();
ApmConfigListVO vo = BeanUtil.copy(configList.get(0), ApmConfigListVO.class);
vo.setTotalNum(apmCountMap.containsKey(project) ? apmCountMap.get(project) : 0);
vo.setTotalNum(totalApmNumberMap.containsKey(project) ? totalApmNumberMap.get(project) : 0);
int totalApmNum = 0;
List<Map<String, Object>> detailList = new ArrayList<>();

@ -107,7 +107,6 @@ public class ApmRecordServiceImpl extends BaseServiceImpl<ApmRecordMapper, ApmRe
@Override
public List<ApmRecordCountDTO> countAmpNum(Long createDept, String apmDay) {
// String[] days = {apmDay};
return baseMapper.countAmpNumWithDays(createDept, Arrays.asList(apmDay));
}

@ -41,4 +41,11 @@ public class ApmRecordDetailVO implements Serializable {
*/
@ApiModelProperty(value = "时段范围, 格式(HH:mm-HH:mm)")
private String timeFrame;
/**
* 预约状态, 0:已保存,1已取消,2:未报到, 3:已报到
*/
@ApiModelProperty(value = "预约状态, 0:已保存,1已取消,2:未报到, 3:已报到")
private Integer apmStatus;
}

@ -12,6 +12,9 @@ spring:
url: jdbc:mysql://47.103.199.45:3306/checkup_apm?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
username: lab_ac
password: lab_ac@123
# url: jdbc:mysql://127.0.0.1:3306/checkup_apm?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
# username: root
# password: CGS@abc123_
#blade配置
blade:

@ -16,7 +16,7 @@ spring:
datasource:
url: jdbc:mysql://localhost:3306/bladex_boot?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
username: root
password: root
password: CGS@abc123_
#第三方登陆
social:

@ -1,6 +1,6 @@
#服务器配置
server:
port: 80
port: 8088
undertow:
threads:
# 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程

Loading…
Cancel
Save