From efff8d9f3ce782292ab1b1c210bb45726dd67515 Mon Sep 17 00:00:00 2001 From: zhangye <654600784@qq.com> Date: Fri, 3 Apr 2020 15:35:44 +0800 Subject: [PATCH] 0403.1 --- .../ccsens/health/api/HealthController.java | 2 +- .../ccsens/health/bean/dto/AbnormalDto.java | 2 + .../com/ccsens/health/bean/po/HealthType.java | 11 +++ .../health/bean/po/HealthTypeExample.java | 60 ++++++++++++++++ .../com/ccsens/health/bean/vo/AbnormalVo.java | 30 ++++---- .../health/persist/dao/HealthRecordsDao.java | 2 + .../ccsens/health/persist/dao/MemberDao.java | 3 +- .../health/service/AbnormalService.java | 32 ++++++++- .../ccsens/health/service/HealthService.java | 68 +++++-------------- .../src/main/resources/application-prod.yml | 6 +- health/src/main/resources/application.yml | 4 +- .../mapper_dao/HealthAbnormalDao.xml | 46 ++++++------- .../resources/mapper_dao/HealthRecordDao.xml | 40 +++++++++-- .../resources/mapper_dao/SiteClockInDao.xml | 8 +-- .../resources/mapper_raw/HealthTypeMapper.xml | 27 ++++++-- 15 files changed, 226 insertions(+), 115 deletions(-) diff --git a/health/src/main/java/com/ccsens/health/api/HealthController.java b/health/src/main/java/com/ccsens/health/api/HealthController.java index 5f40fe42..e1c90acf 100644 --- a/health/src/main/java/com/ccsens/health/api/HealthController.java +++ b/health/src/main/java/com/ccsens/health/api/HealthController.java @@ -57,7 +57,7 @@ public class HealthController { } @MustLogin - @ApiOperation(value = "查询健康状态类型", notes = "") + @ApiOperation(value = "小程序查询健康状态类型", notes = "") @RequestMapping(value = "type", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public JsonResponse> getHealthType() throws Exception { log.info("查询健康状态类型"); diff --git a/health/src/main/java/com/ccsens/health/bean/dto/AbnormalDto.java b/health/src/main/java/com/ccsens/health/bean/dto/AbnormalDto.java index d262075b..73960c6c 100644 --- a/health/src/main/java/com/ccsens/health/bean/dto/AbnormalDto.java +++ b/health/src/main/java/com/ccsens/health/bean/dto/AbnormalDto.java @@ -6,6 +6,7 @@ import lombok.Data; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import java.math.BigDecimal; @Data @@ -41,6 +42,7 @@ public class AbnormalDto { @ApiModel("新增异常人员信息") public static class AddAbnormal{ @NotEmpty + @Size(max = 16,min = 0,message = "信息格式错误") @ApiModelProperty("学号") private String wkno; @NotEmpty diff --git a/health/src/main/java/com/ccsens/health/bean/po/HealthType.java b/health/src/main/java/com/ccsens/health/bean/po/HealthType.java index 66d47975..582f51fe 100644 --- a/health/src/main/java/com/ccsens/health/bean/po/HealthType.java +++ b/health/src/main/java/com/ccsens/health/bean/po/HealthType.java @@ -14,6 +14,8 @@ public class HealthType implements Serializable { private Byte quarantine; + private Byte scene; + private Date createdAt; private Date updatedAt; @@ -62,6 +64,14 @@ public class HealthType implements Serializable { this.quarantine = quarantine; } + public Byte getScene() { + return scene; + } + + public void setScene(Byte scene) { + this.scene = scene; + } + public Date getCreatedAt() { return createdAt; } @@ -97,6 +107,7 @@ public class HealthType implements Serializable { sb.append(", name=").append(name); sb.append(", independent=").append(independent); sb.append(", quarantine=").append(quarantine); + sb.append(", scene=").append(scene); sb.append(", createdAt=").append(createdAt); sb.append(", updatedAt=").append(updatedAt); sb.append(", recStatus=").append(recStatus); diff --git a/health/src/main/java/com/ccsens/health/bean/po/HealthTypeExample.java b/health/src/main/java/com/ccsens/health/bean/po/HealthTypeExample.java index b2af8e0e..c64b7902 100644 --- a/health/src/main/java/com/ccsens/health/bean/po/HealthTypeExample.java +++ b/health/src/main/java/com/ccsens/health/bean/po/HealthTypeExample.java @@ -425,6 +425,66 @@ public class HealthTypeExample { return (Criteria) this; } + public Criteria andSceneIsNull() { + addCriterion("scene is null"); + return (Criteria) this; + } + + public Criteria andSceneIsNotNull() { + addCriterion("scene is not null"); + return (Criteria) this; + } + + public Criteria andSceneEqualTo(Byte value) { + addCriterion("scene =", value, "scene"); + return (Criteria) this; + } + + public Criteria andSceneNotEqualTo(Byte value) { + addCriterion("scene <>", value, "scene"); + return (Criteria) this; + } + + public Criteria andSceneGreaterThan(Byte value) { + addCriterion("scene >", value, "scene"); + return (Criteria) this; + } + + public Criteria andSceneGreaterThanOrEqualTo(Byte value) { + addCriterion("scene >=", value, "scene"); + return (Criteria) this; + } + + public Criteria andSceneLessThan(Byte value) { + addCriterion("scene <", value, "scene"); + return (Criteria) this; + } + + public Criteria andSceneLessThanOrEqualTo(Byte value) { + addCriterion("scene <=", value, "scene"); + return (Criteria) this; + } + + public Criteria andSceneIn(List values) { + addCriterion("scene in", values, "scene"); + return (Criteria) this; + } + + public Criteria andSceneNotIn(List values) { + addCriterion("scene not in", values, "scene"); + return (Criteria) this; + } + + public Criteria andSceneBetween(Byte value1, Byte value2) { + addCriterion("scene between", value1, value2, "scene"); + return (Criteria) this; + } + + public Criteria andSceneNotBetween(Byte value1, Byte value2) { + addCriterion("scene not between", value1, value2, "scene"); + return (Criteria) this; + } + public Criteria andCreatedAtIsNull() { addCriterion("created_at is null"); return (Criteria) this; diff --git a/health/src/main/java/com/ccsens/health/bean/vo/AbnormalVo.java b/health/src/main/java/com/ccsens/health/bean/vo/AbnormalVo.java index 95dcb186..02301f46 100644 --- a/health/src/main/java/com/ccsens/health/bean/vo/AbnormalVo.java +++ b/health/src/main/java/com/ccsens/health/bean/vo/AbnormalVo.java @@ -23,21 +23,21 @@ public class AbnormalVo { private Integer code; @ApiModelProperty("数量") private int number; - public String getAbnormalName(){ - if(code == null){ - return null; - } - switch (code){ - case 0: return "健康"; - case 1: return "治愈"; - case 2: return "隔离"; - case 3: return "疑似"; - case 4: return "确诊"; - case 5: return "出行异常"; - case 6: return "未上报"; - default:return null; - } - } +// public String getAbnormalName(){ +// if(code == null){ +// return null; +// } +// switch (code){ +// case 0: return "健康"; +// case 1: return "治愈"; +// case 2: return "隔离"; +// case 3: return "疑似"; +// case 4: return "确诊"; +// case 5: return "出行异常"; +// case 6: return "未上报"; +// default:return null; +// } +// } } @Data diff --git a/health/src/main/java/com/ccsens/health/persist/dao/HealthRecordsDao.java b/health/src/main/java/com/ccsens/health/persist/dao/HealthRecordsDao.java index f9e7b79c..134ec757 100644 --- a/health/src/main/java/com/ccsens/health/persist/dao/HealthRecordsDao.java +++ b/health/src/main/java/com/ccsens/health/persist/dao/HealthRecordsDao.java @@ -35,4 +35,6 @@ public interface HealthRecordsDao extends HealthRecordsMapper { List list(HealthDto.QueryList param); List selectHealthTypeNumber(@Param("startTime")Long startTime, @Param("endTime")Long endTime); + + Integer getUploadCount(@Param("startTime")Long startTime, @Param("endTime")Long endTime); } diff --git a/health/src/main/java/com/ccsens/health/persist/dao/MemberDao.java b/health/src/main/java/com/ccsens/health/persist/dao/MemberDao.java index 3cc5f31f..c646c991 100644 --- a/health/src/main/java/com/ccsens/health/persist/dao/MemberDao.java +++ b/health/src/main/java/com/ccsens/health/persist/dao/MemberDao.java @@ -4,9 +4,10 @@ import com.ccsens.health.bean.po.Member; import com.ccsens.health.bean.vo.MemberVo; import com.ccsens.health.persist.mapper.MemberMapper; import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; import java.util.List; - +@Repository public interface MemberDao extends MemberMapper { /** diff --git a/health/src/main/java/com/ccsens/health/service/AbnormalService.java b/health/src/main/java/com/ccsens/health/service/AbnormalService.java index c59f18ab..18de7f79 100644 --- a/health/src/main/java/com/ccsens/health/service/AbnormalService.java +++ b/health/src/main/java/com/ccsens/health/service/AbnormalService.java @@ -11,8 +11,10 @@ import com.ccsens.health.bean.po.HealthQRCode; import com.ccsens.health.bean.po.HealthQRCodeExample; import com.ccsens.health.bean.po.HealthRecords; import com.ccsens.health.bean.vo.AbnormalVo; +import com.ccsens.health.bean.vo.HealthVo; import com.ccsens.health.persist.dao.HealthAbnormalDao; import com.ccsens.health.persist.dao.HealthQRCodeDao; +import com.ccsens.health.persist.dao.HealthRecordsDao; import com.ccsens.util.CodeEnum; import com.ccsens.util.bean.dto.QueryDto; import com.ccsens.util.exception.BaseException; @@ -38,6 +40,8 @@ public class AbnormalService implements IAbnormalService { @Autowired private HealthAbnormalDao healthAbnormalDao; @Autowired + private HealthRecordsDao healthRecordsDao; + @Autowired private HealthQRCodeDao healthQRCodeDao; @Autowired private IAsyncService asyncService; @@ -62,13 +66,39 @@ public class AbnormalService implements IAbnormalService { abnormalOverview.setAbnormalType(1); } } + //健康打卡 + List healthTypeNumberList = healthRecordsDao.selectHealthTypeNumber(selectAbnormal.getStartTime(), selectAbnormal.getEndTime()); + int other = 0; + if(CollectionUtil.isNotEmpty(healthTypeNumberList)){ + for(HealthVo.HealthTypeNumber healthTypeNumber : healthTypeNumberList){ + if(healthTypeNumber.getIndependent() == 0){ + other += healthTypeNumber.getNumber(); + }else { + if("发烧".equalsIgnoreCase(healthTypeNumber.getName())){ + AbnormalVo.AbnormalOverview abnormalOverview = new AbnormalVo.AbnormalOverview(); + abnormalOverview.setAbnormalType(0); + abnormalOverview.setAbnormalName(healthTypeNumber.getName()); + abnormalOverview.setNumber(healthTypeNumber.getNumber()); + abnormalOverviewList.add(abnormalOverview); + } + } + } + AbnormalVo.AbnormalOverview abnormalOverview = new AbnormalVo.AbnormalOverview(); + abnormalOverview.setAbnormalType(0); + abnormalOverview.setAbnormalName("其他"); + abnormalOverview.setNumber(other); + abnormalOverviewList.add(abnormalOverview); + } + //行程异常 int journeyNumber = healthAbnormalDao.selectJourneyNumber(selectAbnormal.getDepartment(), selectAbnormal.getStartTime(), selectAbnormal.getEndTime()); AbnormalVo.AbnormalOverview abnormalOverview = new AbnormalVo.AbnormalOverview(); abnormalOverview.setAbnormalType(2); - abnormalOverview.setCode(5); + abnormalOverview.setAbnormalName("出行异常"); abnormalOverview.setNumber(journeyNumber); abnormalOverviewList.add(abnormalOverview); + //未上报 + return abnormalOverviewList; } diff --git a/health/src/main/java/com/ccsens/health/service/HealthService.java b/health/src/main/java/com/ccsens/health/service/HealthService.java index dae2b5d4..95c076b3 100644 --- a/health/src/main/java/com/ccsens/health/service/HealthService.java +++ b/health/src/main/java/com/ccsens/health/service/HealthService.java @@ -49,6 +49,8 @@ public class HealthService implements IHealthService { @Autowired private HealthQRCodeDao healthQRCodeDao; @Autowired + private MemberDao memberDao; + @Autowired private HealthRemarkFileDao healthRemarkFileDao; @Autowired private HealthAbnormalDao healthAbnormalDao; @@ -280,7 +282,7 @@ public class HealthService implements IHealthService { List healthTypeVoList = new ArrayList<>(); HealthTypeExample healthTypeExample = new HealthTypeExample(); - healthTypeExample.clear(); + healthTypeExample.createCriteria().andSceneEqualTo((byte) 0); List healthTypeList = healthTypeDao.selectByExample(healthTypeExample); if (CollectionUtil.isNotEmpty(healthTypeList)) { for (HealthType healthType : healthTypeList) { @@ -306,7 +308,9 @@ public class HealthService implements IHealthService { JourneyDto.StatisticsDate statisticsDate = params.getParam(); Long startTime = statisticsDate.getStartTime() == null ? DateUtil.getZeroTime(new Date()) : statisticsDate.getStartTime(); Long endTime = statisticsDate.getEndTime() == null ? System.currentTimeMillis() : statisticsDate.getEndTime(); - + if(startTime >= endTime){ + throw new BaseException(CodeEnum.PARAM_ERROR); + } List healthTypeNumberList = healthRecordsDao.selectHealthTypeNumber(startTime, endTime); int other = 0; @@ -327,61 +331,23 @@ public class HealthService implements IHealthService { healthTypeStatisticsList.add(healthTypeStatistics); } + //获取查询的天数(正常应该一天打卡一次) Long days = (endTime - startTime) / (3600 * 24 * 1000) + 1; - //未上报的次数 - HealthVo.NotUpload notUpload = healthRecordsDao.getNotUpload(days, startTime, endTime); - +// //未上报的次数 +// HealthVo.NotUpload notUpload = healthRecordsDao.getNotUpload(days, startTime, endTime); + //总人数 + MemberExample memberExample = new MemberExample(); + memberExample.clear(); + Long memberNumber = memberDao.countByExample(memberExample); + //已经上报的人数 + Integer notUploadNumber = healthRecordsDao.getUploadCount(startTime, endTime); + notUploadNumber = notUploadNumber == null ? 0 : notUploadNumber; HealthVo.HealthTypeStatistics notUploadStatistics = new HealthVo.HealthTypeStatistics(); notUploadStatistics.setName("未上报"); - if (ObjectUtil.isNotNull(notUpload)) { - notUploadStatistics.setNumber((int) (notUpload.getNumber() * days - notUpload.getTimes())); - } else { - notUploadStatistics.setNumber(0); - } + notUploadStatistics.setNumber((int) (memberNumber * days - notUploadNumber)); healthTypeStatisticsList.add(notUploadStatistics); -// //2、获取所有健康状态 -// int otherNumber = 0; -// HealthTypeExample healthTypeExample = new HealthTypeExample(); -// healthTypeExample.clear(); -// List healthTypeList = healthTypeDao.selectByExample(healthTypeExample); -// if(CollectionUtil.isNotEmpty(healthTypeList)){ -// for(HealthType healthType : healthTypeList){ -// //3、若需要单独统计则单独返回,否则都归为其他类返回总数 -// if(healthType.getIndependent() == 1){ -// //查询此状态在时间内的打卡人数 -// int number = healthRecordsDao.selectByTypeId(healthType.getId(),startTime,endTime); -// HealthVo.HealthTypeStatistics healthTypeStatistics = new HealthVo.HealthTypeStatistics(); -// healthTypeStatistics.setName(healthType.getName()); -// healthTypeStatistics.setNumber(number); -// healthTypeStatisticsList.add(healthTypeStatistics); -// }else { -// //查询此状态在时间内的打卡人数 -// int number = healthRecordsDao.selectByTypeId(healthType.getId(),startTime,endTime); -// otherNumber += number; -// } -// } -// HealthVo.HealthTypeStatistics healthTypeStatistics = new HealthVo.HealthTypeStatistics(); -// healthTypeStatistics.setName("其他"); -// healthTypeStatistics.setNumber(otherNumber); -// healthTypeStatisticsList.add(healthTypeStatistics); -// -// -// //获取查询的天数(正常应该一天打卡一次) -// Long days = (endTime - startTime) / (3600 * 24 * 1000) + 1; -// //未上报的次数 -// HealthVo.NotUpload notUpload = healthRecordsDao.getNotUpload(days,startTime,endTime); -// -// HealthVo.HealthTypeStatistics notUploadStatistics = new HealthVo.HealthTypeStatistics(); -// notUploadStatistics.setName("未上报"); -// if(ObjectUtil.isNotNull(notUpload)){ -// notUploadStatistics.setNumber((int) (notUpload.getNumber() * days - notUpload.getTimes())); -// }else { -// notUploadStatistics.setNumber(0); -// } -// healthTypeStatisticsList.add(notUploadStatistics); -// } return healthTypeStatisticsList; } diff --git a/health/src/main/resources/application-prod.yml b/health/src/main/resources/application-prod.yml index 82993fe4..eedec364 100644 --- a/health/src/main/resources/application-prod.yml +++ b/health/src/main/resources/application-prod.yml @@ -1,11 +1,11 @@ server: - port: 7081 + port: 7080 servlet: context-path: spring: snowflake: - datacenterId: 2 - workerId: 2 + datacenterId: 1 + workerId: 1 application: name: health datasource: diff --git a/health/src/main/resources/application.yml b/health/src/main/resources/application.yml index 2fb38e57..c3b11fb6 100644 --- a/health/src/main/resources/application.yml +++ b/health/src/main/resources/application.yml @@ -1,4 +1,4 @@ spring: profiles: - active: dev - include: common, util-dev + active: test + include: common, util-test diff --git a/health/src/main/resources/mapper_dao/HealthAbnormalDao.xml b/health/src/main/resources/mapper_dao/HealthAbnormalDao.xml index 4d60b6b4..4870b2fa 100644 --- a/health/src/main/resources/mapper_dao/HealthAbnormalDao.xml +++ b/health/src/main/resources/mapper_dao/HealthAbnormalDao.xml @@ -16,7 +16,7 @@ - + @@ -55,30 +55,26 @@ diff --git a/health/src/main/resources/mapper_dao/HealthRecordDao.xml b/health/src/main/resources/mapper_dao/HealthRecordDao.xml index d6bfcf89..22ccafea 100644 --- a/health/src/main/resources/mapper_dao/HealthRecordDao.xml +++ b/health/src/main/resources/mapper_dao/HealthRecordDao.xml @@ -128,33 +128,42 @@ ( select t.id as id, - count(r.id) as num + count(distinct r.user_id) as num from t_health_type t left join t_health_records r on t.id = r.health_type_id where + t.scene = 0 + + and (r.time <= #{endTime} or r.time is null) + + and (r.time >= #{startTime} or r.time is null) + GROUP BY t.name ) a on t.id = a.id + WHERE + t.scene = 0 + + + + \ No newline at end of file diff --git a/health/src/main/resources/mapper_dao/SiteClockInDao.xml b/health/src/main/resources/mapper_dao/SiteClockInDao.xml index 8f0bcf38..13c63159 100644 --- a/health/src/main/resources/mapper_dao/SiteClockInDao.xml +++ b/health/src/main/resources/mapper_dao/SiteClockInDao.xml @@ -65,7 +65,7 @@ select i.user_id as userId, a.no, a.name, m.department, s.id as siteId, s.site_name as siteName, i.time, i.out_time as outTime from - t_site_clock_in i left join t_real_name_auth a on i.user_id = a.id + t_site_clock_in i left join t_real_name_auth a on i.user_id = a.user_id left join t_site s on i.site_id = s.id left join t_member m on a.no = m.wkno - - (s.id = #{item.siteId} and i.out_time >= #{item.inTime} and i.time <= #{item.outTime}) + + (s.id = #{item.siteId} and i.out_time >= #{item.time} and i.time <= #{item.outTime}) and i.rec_status = 0 diff --git a/health/src/main/resources/mapper_raw/HealthTypeMapper.xml b/health/src/main/resources/mapper_raw/HealthTypeMapper.xml index 1ed4ae3a..85b343e5 100644 --- a/health/src/main/resources/mapper_raw/HealthTypeMapper.xml +++ b/health/src/main/resources/mapper_raw/HealthTypeMapper.xml @@ -7,6 +7,7 @@ + @@ -70,7 +71,7 @@ - id, code, name, independent, quarantine, created_at, updated_at, rec_status + id, code, name, independent, quarantine, scene, created_at, updated_at, rec_status