diff --git a/api_doc.md b/api_doc.md index e6465d3..9a7d8ac 100644 --- a/api_doc.md +++ b/api_doc.md @@ -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, diff --git a/src/main/java/org/springblade/modules/business/controller/ApmConfigController.java b/src/main/java/org/springblade/modules/business/controller/ApmConfigController.java index 7d6a890..fff9054 100644 --- a/src/main/java/org/springblade/modules/business/controller/ApmConfigController.java +++ b/src/main/java/org/springblade/modules/business/controller/ApmConfigController.java @@ -62,7 +62,7 @@ public class ApmConfigController extends BladeController { return R.fail(ErrorMsgEnum.PARAMS_NULL_CREATE_DEPT.getValue()); } - Map> res = apmConfigService.alreadyConfigDay(createDept, startTime, endTime); + Map> res = apmConfigService.alreadyConfigDay(createDept, startTime, endTime); return R.data(res); } @@ -145,7 +145,7 @@ public class ApmConfigController extends BladeController { List configListVOS = (List) request.get("configListVOS"); List vos = new ArrayList<>(); - configListVOS.forEach(vo ->{ + configListVOS.forEach(vo -> { vos.add(BeanUtil.copy(vo, ApmConfigListVO.class)); }); diff --git a/src/main/java/org/springblade/modules/business/controller/ApmRecordController.java b/src/main/java/org/springblade/modules/business/controller/ApmRecordController.java index 32d5a49..d647a76 100644 --- a/src/main/java/org/springblade/modules/business/controller/ApmRecordController.java +++ b/src/main/java/org/springblade/modules/business/controller/ApmRecordController.java @@ -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 records = recordService.listByIds(Func.toLongList(ids)); + String registerFlag = BusinessConstant.BOOLEAN_STR_TRUE; + + String resMsg = ""; + // 1. 筛选出所有的状态为未报到的体检申请 + List 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 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 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); } /** 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 c673eaf..e62d02c 100644 --- a/src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.java +++ b/src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.java @@ -34,7 +34,7 @@ public interface ApmRecordMapper extends BaseMapper { List selectRecordList(@Param("createDept") Long createDept, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("cupCardNo") String cupCardNo, @Param("project") String project); - List countAmpNum(@Param("createDept") Long createDept, @Param("apmDay") String apmDay); + List countAllAmpNumByDept(@Param("createDept") Long createDept, @Param("startTime") String startTime, @Param("endTime") String endTime); List countAmpNumWithDays(@Param("createDept") Long createDept, @Param("apmDayList") List apmDayList); 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 054c5d3..66203ab 100644 --- a/src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.xml +++ b/src/main/java/org/springblade/modules/business/mapper/ApmRecordMapper.xml @@ -33,7 +33,7 @@ - + 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} + + and ar.apm_day >= #{startTime} + + + and ar.apm_day <= #{endTime} + + group by DATE_FORMAT(apm_day, '%Y-%m-%d'), project, period, time_frame