From 895f3924d25a3509ebbeec12f30c83ca583e3360 Mon Sep 17 00:00:00 2001 From: ma <1062634917@qq.com> Date: Wed, 17 Nov 2021 09:14:40 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=8E=A5=E5=8F=A3=E7=9A=84?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=8E=E9=97=AE=E5=8D=B7=E8=B0=83=E6=9F=A5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E7=9A=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../carbasics/bean/dto/QuestionnaireDto.java | 12 ++ .../carbasics/bean/vo/StatisticsVo.java | 2 + .../persist/dao/OrganizationDao.java | 10 ++ .../service/QuestionnaireService.java | 124 +++++++++++------- .../com/ccsens/carbasics/util/Constant.java | 42 +++++- src/main/resources/druid-dev.yml | 4 +- .../mapper_dao/DataStatisticsDao.xml | 105 +++++++++++---- .../resources/mapper_dao/OrganizationDao.xml | 31 +++++ .../QuestionnaireDataDatumLineDao.xml | 3 +- 9 files changed, 254 insertions(+), 79 deletions(-) diff --git a/src/main/java/com/ccsens/carbasics/bean/dto/QuestionnaireDto.java b/src/main/java/com/ccsens/carbasics/bean/dto/QuestionnaireDto.java index bc72d5b..bb25a0d 100644 --- a/src/main/java/com/ccsens/carbasics/bean/dto/QuestionnaireDto.java +++ b/src/main/java/com/ccsens/carbasics/bean/dto/QuestionnaireDto.java @@ -56,6 +56,18 @@ public class QuestionnaireDto { @NotNull(message = "医院名称不能为空") @ApiModelProperty("医院名称") private String name; + @NotNull(message = "部门名称不能为空") + @ApiModelProperty("部门名称") + private String departmentName; + @NotNull(message = "职位名称不能为空") + @ApiModelProperty("职位名称") + private String positionName; + @NotNull(message = "提交人姓名不能为空") + @ApiModelProperty("提交人姓名") + private String submitter; + @NotNull(message = "提交人手机号不能为空") + @ApiModelProperty("提交人手机号") + private String phone; } @Data diff --git a/src/main/java/com/ccsens/carbasics/bean/vo/StatisticsVo.java b/src/main/java/com/ccsens/carbasics/bean/vo/StatisticsVo.java index 4304d4c..d603379 100644 --- a/src/main/java/com/ccsens/carbasics/bean/vo/StatisticsVo.java +++ b/src/main/java/com/ccsens/carbasics/bean/vo/StatisticsVo.java @@ -214,6 +214,8 @@ public class StatisticsVo { private String fqjxgnzlzs; @ApiModelProperty("总血管内治疗率") private BigDecimal zxgnzll; + @ApiModelProperty("总血管内治疗率(城市)") + private BigDecimal zxgnzllCity; } @Data diff --git a/src/main/java/com/ccsens/carbasics/persist/dao/OrganizationDao.java b/src/main/java/com/ccsens/carbasics/persist/dao/OrganizationDao.java index 84e997a..3ecb9ac 100644 --- a/src/main/java/com/ccsens/carbasics/persist/dao/OrganizationDao.java +++ b/src/main/java/com/ccsens/carbasics/persist/dao/OrganizationDao.java @@ -117,4 +117,14 @@ public interface OrganizationDao extends OrganizationMapper { * @return QCP医院ID */ Long getQcpHospitalId(@Param("id") Long hospitalId); + + /** + * 查询用户是否已有职位角色 + * @param departmentName 部门名称 + * @param positionName 职位名称 + * @param name 医院名称 + * @param userId 用户id + * @return 0否,1是 + */ + Integer queryUserIsExist(@Param("departmentName") String departmentName,@Param("positionName") String positionName,@Param("name") String name,@Param("userId") Long userId); } diff --git a/src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java b/src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java index b450c58..1cf2506 100644 --- a/src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java +++ b/src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java @@ -85,6 +85,8 @@ public class QuestionnaireService implements IQuestionnaireService{ private RedisUtil redisUtil; @Resource private Tall3FeignClient tall3FeignClient; + @Resource + private AccountManageDao accountManageDao; @Override public List queryArea(QuestionnaireDto.QueryArea param, Long userId) { @@ -109,27 +111,34 @@ public class QuestionnaireService implements IQuestionnaireService{ @Override public void saveQuestionnaire(QuestionnaireDto.SaveQuestionnaire param, Long userId) throws Exception { - //查询是否已经提交,已提交不能保存修改 - QuestionnaireDetail questionnaireDetail = questionnaireDetailDao.selectByPrimaryKey(param.getDetailId()); - if (Constant.SubmitStatus.submit.status == questionnaireDetail.getSubmitStatus()) { - throw new BaseException(DefaultCodeError.HOSPITAL_REPEAT_SUBMIT); - } - Long recordId = recordDao.queryIsExist(param.getDetailId(),param.getCode()); - if (ObjectUtil.isNotNull(recordId)) { - QuestionnaireRecord record = new QuestionnaireRecord(); - record.setId(recordId); - record.setQuestionCode(param.getCode()); - record.setAnswer(param.getAnswer()); - recordDao.updateByPrimaryKeySelective(record); - }else { - QuestionnaireRecord record = new QuestionnaireRecord(); - record.setId(snowflake.nextId()); - record.setQuestionnaireDetailId(param.getDetailId()); - record.setQuestionCode(param.getCode()); - record.setAnswer(param.getAnswer()); - recordDao.insertSelective(record); + //redis判断是否已有 + Object o = redisUtil.get(String.valueOf(param.getDetailId() + userId)); + if (ObjectUtil.isNull(o)) { + redisUtil.set(String.valueOf(param.getDetailId() + userId),userId); + //查询是否已经提交,已提交不能保存修改 + QuestionnaireDetail questionnaireDetail = questionnaireDetailDao.selectByPrimaryKey(param.getDetailId()); + if (Constant.SubmitStatus.submit.status == questionnaireDetail.getSubmitStatus()) { + throw new BaseException(DefaultCodeError.HOSPITAL_REPEAT_SUBMIT); + } + Long recordId = recordDao.queryIsExist(param.getDetailId(),param.getCode()); + if (ObjectUtil.isNotNull(recordId)) { + QuestionnaireRecord record = new QuestionnaireRecord(); + record.setId(recordId); + record.setQuestionCode(param.getCode()); + record.setAnswer(param.getAnswer()); + recordDao.updateByPrimaryKeySelective(record); + }else { + QuestionnaireRecord record = new QuestionnaireRecord(); + record.setId(snowflake.nextId()); + record.setQuestionnaireDetailId(param.getDetailId()); + record.setQuestionCode(param.getCode()); + record.setAnswer(param.getAnswer()); + recordDao.insertSelective(record); + } + redisUtil.del(String.valueOf(param.getDetailId()+userId)); } + } @@ -182,34 +191,57 @@ public class QuestionnaireService implements IQuestionnaireService{ } //2.校验是否已经有提交 Long submitId = questionnaireDetailDao.queryIsSubmit(param.getName()); - if (ObjectUtil.isNotNull(submitId)) { - //加入项目 - Long projectId = createHospitalOfNotExit(phone, userId); - List infoList = questionnaireDetailDao.querySubmitter(submitId); - HashMap codeAndAnswer = new HashMap<>(); - if (ObjectUtil.isNotNull(infoList)) { - for (QuestionnaireVo.QuestionnaireInfo questionnaireInfo : infoList) { - codeAndAnswer.put(questionnaireInfo.getCode(),questionnaireInfo.getAnswer()); - } - } - QuestionnaireVo.SubmitInfo submitInfo = new QuestionnaireVo.SubmitInfo(); - submitInfo.setProjectId(projectId); - submitInfo.setType((byte)1); - submitInfo.setDepartment(codeAndAnswer.get(Constant.BasicInformation.department.code)); - submitInfo.setName(codeAndAnswer.get(Constant.BasicInformation.person.code)); - submitInfo.setPosition(codeAndAnswer.get(Constant.BasicInformation.position.code)); - return submitInfo; + if (ObjectUtil.isNull(submitId)) { + QuestionnaireDetail detail = new QuestionnaireDetail(); + detail.setId(param.getDetailId()); + detail.setSubmitStatus(Constant.SubmitStatus.submit.status); + questionnaireDetailDao.updateByPrimaryKeySelective(detail); + } + //查询用户是否此医院此角色此部门 + Integer isExist = organizationDao.queryUserIsExist(param.getDepartmentName(),param.getPositionName(),param.getName(),userId); + if (0 < isExist) { + return new QuestionnaireVo.SubmitInfo(); } - QuestionnaireDetail detail = new QuestionnaireDetail(); - detail.setId(param.getDetailId()); - detail.setSubmitStatus(Constant.SubmitStatus.submit.status); - questionnaireDetailDao.updateByPrimaryKeySelective(detail); - //创建项目 - Long projectId = createHospitalOfNotExit(phone,userId); - QuestionnaireVo.SubmitInfo submitInfo = new QuestionnaireVo.SubmitInfo(); - submitInfo.setProjectId(projectId); - submitInfo.setType((byte)0); - return submitInfo; + AccountManage accountManage = new AccountManage(); + accountManage.setId(snowflake.nextId()); + accountManage.setDepartmentName(param.getDepartmentName()); + accountManage.setDepartmentCode(Constant.DepartmentAndCode.getDepartmentCode(param.getDepartmentName())); + accountManage.setPositionName(param.getPositionName()); + accountManage.setPositionCode(Constant.PositionIdAndRole.getPositionCode(param.getPositionName())); + accountManage.setSubmitter(param.getSubmitter()); + accountManage.setSubmitterPhone(param.getPhone()); + accountManage.setSubmitterUserId(userId); + accountManage.setAuditStatus((byte) 0); + accountManageDao.insertSelective(accountManage); + return new QuestionnaireVo.SubmitInfo(); +// if (ObjectUtil.isNotNull(submitId)) { +// //加入项目 +// Long projectId = createHospitalOfNotExit(phone, userId); +// List infoList = questionnaireDetailDao.querySubmitter(submitId); +// HashMap codeAndAnswer = new HashMap<>(); +// if (ObjectUtil.isNotNull(infoList)) { +// for (QuestionnaireVo.QuestionnaireInfo questionnaireInfo : infoList) { +// codeAndAnswer.put(questionnaireInfo.getCode(),questionnaireInfo.getAnswer()); +// } +// } +// QuestionnaireVo.SubmitInfo submitInfo = new QuestionnaireVo.SubmitInfo(); +// submitInfo.setProjectId(projectId); +// submitInfo.setType((byte)1); +// submitInfo.setDepartment(codeAndAnswer.get(Constant.BasicInformation.department.code)); +// submitInfo.setName(codeAndAnswer.get(Constant.BasicInformation.person.code)); +// submitInfo.setPosition(codeAndAnswer.get(Constant.BasicInformation.position.code)); +// return submitInfo; +// } +// QuestionnaireDetail detail = new QuestionnaireDetail(); +// detail.setId(param.getDetailId()); +// detail.setSubmitStatus(Constant.SubmitStatus.submit.status); +// questionnaireDetailDao.updateByPrimaryKeySelective(detail); +// //创建项目 +// Long projectId = createHospitalOfNotExit(phone,userId); +// QuestionnaireVo.SubmitInfo submitInfo = new QuestionnaireVo.SubmitInfo(); +// submitInfo.setProjectId(projectId); +// submitInfo.setType((byte)0); +// return submitInfo; } diff --git a/src/main/java/com/ccsens/carbasics/util/Constant.java b/src/main/java/com/ccsens/carbasics/util/Constant.java index 35e300a..107f065 100644 --- a/src/main/java/com/ccsens/carbasics/util/Constant.java +++ b/src/main/java/com/ccsens/carbasics/util/Constant.java @@ -275,6 +275,22 @@ public class Constant { } return false; } + public static String getDepartmentCode(String name) { + if (CU_ZHONG_ZHONG_XIN.name.equals(name)) { + return CU_ZHONG_ZHONG_XIN.code; + }else if (CU_ZHONG_ZHONG_XIN_BAN_GONG_SHI.name.equals(name)) { + return CU_ZHONG_ZHONG_XIN_BAN_GONG_SHI.code; + }else if (JI_ZHEN.name.equals(name)) { + return JI_ZHEN.code; + }else if (SHEN_NEI.name.equals(name)) { + return SHEN_NEI.code; + }else if(SHEN_WAI.name.equals(name)) { + return SHEN_WAI.code; + }else if (NEI_KE.name.equals(name)) { + return NEI_KE.code; + } + return null; + } } /**职位相关*/ @@ -384,6 +400,30 @@ public class Constant { this.positionCode = positionCode; this.roleName = roleName; } + public static String getPositionCode(String name) { + if (HuSHi.roleName.equals(name)) { + return HuSHi.positionCode; + }else if (YiSheng.roleName.equals(name)) { + return YiSheng.positionCode; + }else if (ZhiKong.roleName.equals(name)) { + return ZhiKong.positionCode; + }else if (MiShu.roleName.equals(name)) { + return MiShu.positionCode; + }else if (KeZhuRen.roleName.equals(name)) { + return KeZhuRen.positionCode; + }else if (FuZhuRen.roleName.equals(name)) { + return FuZhuRen.positionCode; + }else if (WeiJianWei.roleName.equals(name)) { + return WeiJianWei.positionCode; + }else if (CuZhongZhongXinZhuRen.roleName.equals(name)) { + return CuZhongZhongXinZhuRen.positionCode; + }else if (CuZhongZhongXinBanGongShiZhuRen.roleName.equals(name)) { + return CuZhongZhongXinBanGongShiZhuRen.positionCode; + }else if (HuShiZhang.roleName.equals(name)) { + return HuShiZhang.positionCode; + } + return null; + } } public enum DataStatus { /** @@ -528,7 +568,7 @@ public class Constant { Create((byte) 0,"创建"), FirstAidPass((byte) 1,"急救审核通过"), FirstAidRefuse((byte) 2,"急救审核拒绝"), - DischargePass((byte) 3,"3出院审核通过"), + DischargePass((byte) 3,"出院审核通过"), DischargeRefuse((byte) 4,"出院审核拒绝"), ApplyFor((byte) 5,"申请修改"), ApplyForPass((byte) 6,"申请通过"), diff --git a/src/main/resources/druid-dev.yml b/src/main/resources/druid-dev.yml index e779080..4892fc6 100644 --- a/src/main/resources/druid-dev.yml +++ b/src/main/resources/druid-dev.yml @@ -28,8 +28,8 @@ spring: testOnReturn: false testWhileIdle: true timeBetweenEvictionRunsMillis: 60000 -# url: jdbc:mysql://49.233.89.188:3306/carbasics?useUnicode=true&characterEncoding=UTF-8 - url: jdbc:mysql://www.tall.wiki:3306/carbasics?useUnicode=true&characterEncoding=UTF-8 + url: jdbc:mysql://49.233.89.188:3306/carbasics?useUnicode=true&characterEncoding=UTF-8 +# url: jdbc:mysql://www.tall.wiki:3306/carbasics?useUnicode=true&characterEncoding=UTF-8 username: root validationQuery: SELECT 1 FROM DUAL # env: CCSENS_GAME diff --git a/src/main/resources/mapper_dao/DataStatisticsDao.xml b/src/main/resources/mapper_dao/DataStatisticsDao.xml index cf99431..f7dec19 100644 --- a/src/main/resources/mapper_dao/DataStatisticsDao.xml +++ b/src/main/resources/mapper_dao/DataStatisticsDao.xml @@ -552,6 +552,7 @@ AND answer45.area = answer45all.area AND answer45all.area = answer60all.area AND answer60all.area = answer61all.area + ORDER BY dntLess60 DESC SELECT - a.id AS areaId, - a.area_name AS name, - answer1.qjxgnzlzs, - answer2.fqjxgnzlzs, - IFNULL(round((answer1.qjxgnzlzs+answer2.fqjxgnzlzs)*100/(answer3.rshfhxgnzlzzzrs+answer4.fhxgnzlzzzrs),2),0.00) AS zxgnzll + a1.areaId, + a1.name, + a1.fqjxgnzlzs, + a1.qjxgnzlzs, + a1.zxgnzll, + a2.zxgnzllCity + FROM + (SELECT + a.id AS areaId, + a.area_name AS name, + answer1.qjxgnzlzs, + answer2.fqjxgnzlzs, + IFNULL(round((answer1.qjxgnzlzs+answer2.fqjxgnzlzs)*100/(answer3.rshfhxgnzlzzzrs+answer4.fhxgnzlzzzrs),2),0.00) + AS zxgnzll FROM ( SELECT - SUBSTRING_INDEX(area.answer,',',1) AS area, - SUM(actual.answer) AS qjxgnzlzs + SUBSTRING_INDEX(area.answer,',',1) AS area, + SUM(actual.answer) AS qjxgnzlzs FROM - t_qcp_questionnaire_record AS actual - LEFT JOIN t_qcp_questionnaire_detail AS qd ON actual.questionnaire_detail_id = qd.id - LEFT JOIN t_qcp_questionnaire_record AS yes ON qd.id = yes.questionnaire_detail_id - LEFT JOIN t_qcp_questionnaire_record AS level ON qd.id = level.questionnaire_detail_id - LEFT JOIN t_qcp_questionnaire_record AS area ON qd.id = area.questionnaire_detail_id + t_qcp_questionnaire_record AS actual + LEFT JOIN t_qcp_questionnaire_detail AS qd ON actual.questionnaire_detail_id = qd.id + LEFT JOIN t_qcp_questionnaire_record AS yes ON qd.id = yes.questionnaire_detail_id + LEFT JOIN t_qcp_questionnaire_record AS level ON qd.id = level.questionnaire_detail_id + LEFT JOIN t_qcp_questionnaire_record AS area ON qd.id = area.questionnaire_detail_id WHERE - actual.rec_status = 0 - AND qd.rec_status = 0 - AND qd.submit_status = 1 - AND actual.question_code = 'XGZL-sICH-Nnt' - AND yes.rec_status = 0 - AND yes.question_code = 'XGZL' - AND yes.answer = '是' - - -- 等级 - AND `level`.rec_status = 0 - AND `level`.question_code = 'HOS-LEVEL' - AND `level`.answer = '三级' - + actual.rec_status = 0 + AND qd.rec_status = 0 + AND qd.submit_status = 1 + AND actual.question_code = 'XGZL-sICH-Nnt' + AND yes.rec_status = 0 + AND yes.question_code = 'XGZL' + AND yes.answer = '是' + -- 等级 + AND `level`. + rec_status = 0 + AND `level`.question_code = 'HOS-LEVEL' + AND `level`.answer = '三级' + -- 等级 AND `level`.rec_status = 0 @@ -1226,12 +1236,49 @@ AND answer1.area = answer2.area AND answer2.area = answer3.area AND answer3.area = answer4.area - ORDER BY (answer1.qjxgnzlzs+answer2.fqjxgnzlzs) DESC,zxgnzll DESC + ) AS a1 + LEFT JOIN + ( + SELECT + a.id, + a.area_name, + IFNULL(round((SUM(answer1.answer)+SUM(answer2.answer))*100/(SUM(answer3.answer)+SUM(answer4.answer)),2),0.00) AS zxgnzllCity + FROM + t_qcp_questionnaire_record AS answer1 + LEFT JOIN t_qcp_questionnaire_detail AS qd ON answer1.questionnaire_detail_id = qd.id + LEFT JOIN t_qcp_questionnaire_record AS yes ON qd.id = yes.questionnaire_detail_id + LEFT JOIN t_qcp_questionnaire_record AS area ON qd.id = area.questionnaire_detail_id + LEFT JOIN t_area AS a ON SUBSTRING_INDEX(area.answer,',',1) = a.id + LEFT JOIN t_qcp_questionnaire_record AS hospital ON qd.id = hospital.questionnaire_detail_id + LEFT JOIN t_qcp_questionnaire_record AS answer2 ON qd.id = answer2.questionnaire_detail_id + LEFT JOIN t_qcp_questionnaire_record AS answer3 ON qd.id = answer3.questionnaire_detail_id + LEFT JOIN t_qcp_questionnaire_record AS answer4 ON qd.id = answer4.questionnaire_detail_id + WHERE + answer1.rec_status = 0 + AND qd.rec_status = 0 + AND qd.submit_status = 1 + AND answer1.question_code = 'XGZL-sICH-Nnt' + AND answer2.rec_status = 0 + AND answer2.question_code = 'XGZL-actual-Nnt' + AND answer3.rec_status = 0 + AND answer3.question_code = 'XGZL-RSH-Nnt' + AND answer4.rec_status = 0 + AND answer4.question_code = 'XGZL-FIT-Nnt' + AND yes.rec_status = 0 + AND yes.question_code = 'XGZL' + AND yes.answer = '是' + AND hospital.rec_status = 0 + AND hospital.question_code = 'HOS-NAME' + AND area.rec_status = 0 + AND area.question_code = 'CITY-COUNTY' + GROUP BY SUBSTRING_INDEX(area.answer,',',1) + ) AS a2 ON a1.areaId = a2.id + ORDER BY (a1.qjxgnzlzs+a1.fqjxgnzlzs) DESC,zxgnzll DESC + SELECT a1.detail_id as detail_id, @@ -815,4 +816,34 @@ and a2.detail_id = a3.detail_id and a1.detail_id = a3.detail_id + + diff --git a/src/main/resources/mapper_dao/QuestionnaireDataDatumLineDao.xml b/src/main/resources/mapper_dao/QuestionnaireDataDatumLineDao.xml index 4264229..521c358 100644 --- a/src/main/resources/mapper_dao/QuestionnaireDataDatumLineDao.xml +++ b/src/main/resources/mapper_dao/QuestionnaireDataDatumLineDao.xml @@ -31,7 +31,8 @@