From fd12c3a4d5c0a247c89ab59faba189075a302ffd Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期一, 09 六月 2025 18:50:19 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- smartor/src/main/java/com/smartor/domain/ServiceSubtask.java | 11 ++ smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java | 81 +++++++++++++++++--- smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 101 ++++++++++++++++++++++++ smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java | 5 + smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml | 24 +++++- smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java | 9 ++ 6 files changed, 211 insertions(+), 20 deletions(-) diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java index 1c6ca80..97c62ff 100644 --- a/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java +++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java @@ -587,9 +587,20 @@ @ApiModelProperty(value = "闅忚鏃堕棿") private Date visitTime; + /** + * 闅忚鏂瑰紡 + */ + @ApiModelProperty(value = "闅忚鏂瑰紡") + private String visitType; + + + @ApiModelProperty(value = "闅忚閮ㄩ棬缂栫爜") private String visitDeptCode; @ApiModelProperty(value = "闅忚閮ㄩ棬鍚嶇О") private String visitDeptName; + + @ApiModelProperty(value = "闅忚閮ㄩ棬缂栫爜闆嗗悎") + private List<String> visitDeptCodes; } diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java index a95e1e7..86a77cc 100644 --- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java +++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java @@ -39,4 +39,9 @@ @ApiModelProperty(value = "鐥呭尯Code闆嗗悎") private List<String> leavehospitaldistrictcodes; + @ApiModelProperty(value = "绉戝Code闆嗗悎") + private List<String> deptcodes; + + @ApiModelProperty(value = "绉戝鐥呭尯") + private Integer statisticaltype; } diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java index 6f187ee..4c6ff11 100644 --- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java +++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java @@ -16,19 +16,6 @@ public class ServiceSubtaskStatistic { private static final long serialVersionUID = 1L; - /** - * 鍑洪櫌鐥呭尯缂栧彿 - */ - @ApiModelProperty(value = "鍑洪櫌鐥呭尯缂栧彿") - private String leavehospitaldistrictcode; - - /** - * 鍑洪櫌鐥呭尯鍚嶇О - */ - @ApiModelProperty(value = "鍑洪櫌鐥呭尯鍚嶇О") - @Excel(name = " 鍑洪櫌鐥呭尯鍚嶇О ") - private String leavehospitaldistrictname; - @ApiModelProperty(value = "鏈嶅姟鎬婚噺") @Excel(name = " 鏈嶅姟鎬婚噺 ") private Integer serviceCount = 0; @@ -87,4 +74,72 @@ @ApiModelProperty(value = "鍥炲寮傚父鏁�") @Excel(name = " 鍥炲寮傚父鏁� ") private Long hfycs = 0L; + + /** + * 06-04鏂扮粺璁¢〉闈㈠瓧娈� + */ + + @ApiModelProperty(value = "鍑洪櫌鐥呭尯缂栧彿") + private String leavehospitaldistrictcode; + + @ApiModelProperty(value = "鍑洪櫌鐥呭尯鍚嶇О") + @Excel(name = " 鍑洪櫌鐥呭尯鍚嶇О ") + private String leavehospitaldistrictname; + + @ApiModelProperty(value = "鍑洪櫌绉戝缂栧彿") + private String deptcode; + + @ApiModelProperty(value = "鍑洪櫌绉戝鍚嶇О") + @Excel(name = " 鍑洪櫌鐥呭尯鍚嶇О ") + private String deptname; + + @ApiModelProperty(value = "鍑洪櫌浜烘") + @Excel(name = " 鍑洪櫌浜烘 ") + private Integer dischargeCount = 0; + + @ApiModelProperty(value = "鏃犻渶闅忚浜烘") + @Excel(name = " 鏃犻渶闅忚浜烘 ") + private Long nonFollowUp = 0L; + + @ApiModelProperty(value = "搴旈殢璁夸汉娆�") + @Excel(name = " 搴旈殢璁夸汉娆� ") + private Long followUpNeeded = 0L; + + @ApiModelProperty(value = "棣栨搴旈殢璁�") + private Long needFollowUp = 0L; + @ApiModelProperty(value = "棣栨寰呴殢璁�") + private Long pendingFollowUp = 0L; + @ApiModelProperty(value = "棣栨闅忚鎴愬姛") + private Long followUpSuccess = 0L; + @ApiModelProperty(value = "棣栨闅忚澶辫触") + private Long followUpFail = 0L; + @ApiModelProperty(value = "棣栨闅忚鐜�") + private String followUpRate; + @ApiModelProperty(value = "棣栨浜哄伐") + private Long manual = 0L; + @ApiModelProperty(value = "棣栨鐭俊") + private Long sms = 0L; + @ApiModelProperty(value = "棣栨寰俊") + private Long weChat = 0L; + @ApiModelProperty(value = "缁撴灉寮傚父") + private Long abnormal = 0L; + + @ApiModelProperty(value = "浜屾搴旈殢璁�") + private Long needFollowUpAgain = 0L; + @ApiModelProperty(value = "浜屾寰呴殢璁�") + private Long pendingFollowUpAgain = 0L; + @ApiModelProperty(value = "浜屾闅忚鎴愬姛") + private Long followUpSuccessAgain = 0L; + @ApiModelProperty(value = "浜屾闅忚澶辫触") + private Long followUpFailAgain = 0L; + @ApiModelProperty(value = "浜屾闅忚鐜�") + private String followUpRateAgain; + @ApiModelProperty(value = "浜屾浜哄伐") + private Long manualAgain = 0L; + @ApiModelProperty(value = "浜屾鐭俊") + private Long smsAgain = 0L; + @ApiModelProperty(value = "浜屾寰俊") + private Long weChatAgain = 0L; + @ApiModelProperty(value = "缁撴灉寮傚父") + private Long abnormalAgain = 0L; } diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java index 993341f..4b7783d 100644 --- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java +++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java @@ -683,10 +683,19 @@ @ApiModelProperty(value = "闅忚鏃堕棿") private Date visitTime; + + /** + * 闅忚鏂瑰紡 + */ + @ApiModelProperty(value = "闅忚鏂瑰紡") + private String visitType; @ApiModelProperty(value = "闅忚閮ㄩ棬缂栫爜") private String visitDeptCode; @ApiModelProperty(value = "闅忚閮ㄩ棬鍚嶇О") private String visitDeptName; + + @ApiModelProperty(value = "闅忚閮ㄩ棬缂栫爜闆嗗悎") + private List<String> visitDeptCodes; } diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java index e389236..52382bf 100644 --- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java +++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java @@ -24,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.time.Duration; import java.time.LocalDate; @@ -359,6 +360,9 @@ serviceSubtask2.setSendstate(2L); serviceSubtask2.setCreateTime(new Date()); serviceSubtask2.setUpdateTime(new Date()); + serviceSubtask2.setVisitType(serviceSubtask.getVisitType()); + serviceSubtask2.setVisitDeptCode(serviceSubtask.getVisitDeptCode()); + serviceSubtask2.setVisitDeptName(serviceSubtask.getVisitDeptName()); int i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask2); if (i == 1) { //鏂板鎴愬姛鍚庯紝闇�瑕佸皢涔嬪墠鐨勪换鍔¤缃负涓嶈鍐嶉殢璁匡紙闃叉閲嶅鐐癸紝鐒跺悗閲嶅鐢熸垚锛� @@ -2177,7 +2181,14 @@ public List<ServiceSubtaskStatistic> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq) { log.error("getSfStatistics鐨勫叆鍙備负锛歿}", serviceSubtaskCountReq); List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>(); - Map<String, List<ServiceSubtask>> collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse("Unknown"))); + //Map<String, List<ServiceSubtask>> collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse("Unknown"))); + Map<String, List<ServiceSubtask>> collect = new HashMap<>(); + if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 1) { + collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse("Unknown"))); + + }else if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 2){ + collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptname()).orElse("Unknown"))); + } for (List<ServiceSubtask> serviceSubtaskList : collect.values()) { if (CollectionUtils.isEmpty(serviceSubtaskList)) { continue; @@ -2192,9 +2203,92 @@ private ServiceSubtaskStatistic getStatistic(List<ServiceSubtask> serviceSubtaskList) { ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic(); + //鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮 + DecimalFormat percentFormat = new DecimalFormat("##.##%"); + serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getDeptname()); + serviceSubtaskStatistic.setDeptcode(serviceSubtaskList.get(0).getDeptcode()); serviceSubtaskStatistic.setLeavehospitaldistrictname(serviceSubtaskList.get(0).getLeavehospitaldistrictname()); serviceSubtaskStatistic.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode()); - serviceSubtaskStatistic.setServiceCount(serviceSubtaskList.size()); + //鍑洪櫌浜烘 + serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size()); + for (ServiceSubtask serviceSubtask : serviceSubtaskList){ + //鏃犻渶闅忚浜烘 + if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) { + serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L); + } + //搴旈殢璁夸汉娆� + if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) { + serviceSubtaskStatistic.setFollowUpNeeded(serviceSubtaskStatistic.getFollowUpNeeded() + 1L); + } + //棣栨鍑洪櫌闅忚 + if(serviceSubtask.getVisitCount() == 1){ + if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) { + serviceSubtaskStatistic.setNeedFollowUp(serviceSubtaskStatistic.getNeedFollowUp() + 1L); + } + if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) { + serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L); + } + if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)){ + serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L); + } + if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5){ + serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L); + } + if (serviceSubtaskStatistic.getNeedFollowUp() > 0) { + double rate = (double)(serviceSubtaskStatistic.getFollowUpSuccess() + serviceSubtaskStatistic.getFollowUpFail()) / serviceSubtaskStatistic.getNeedFollowUp(); + serviceSubtaskStatistic.setFollowUpRate(percentFormat.format(rate)); + } else { + serviceSubtaskStatistic.setFollowUpRate("0.00%"); + } + if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")){ + serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L); + } + if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")){ + serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L); + } + if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")){ + serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L); + } + if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")){ + serviceSubtaskStatistic.setAbnormal(serviceSubtaskStatistic.getAbnormal() + 1L); + } + }//浜屾鍑洪櫌闅忚 + else if (serviceSubtask.getVisitCount() > 1){ + if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) { + serviceSubtaskStatistic.setNeedFollowUpAgain(serviceSubtaskStatistic.getNeedFollowUpAgain() + 1L); + } + if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) { + serviceSubtaskStatistic.setPendingFollowUpAgain(serviceSubtaskStatistic.getPendingFollowUpAgain() + 1L); + } + if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)){ + serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L); + } + if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5){ + serviceSubtaskStatistic.setFollowUpFailAgain(serviceSubtaskStatistic.getFollowUpFailAgain() + 1L); + } + if (serviceSubtaskStatistic.getNeedFollowUp() > 0) { + double rate = (double)(serviceSubtaskStatistic.getFollowUpSuccessAgain() + serviceSubtaskStatistic.getFollowUpFailAgain()) / serviceSubtaskStatistic.getNeedFollowUpAgain(); + serviceSubtaskStatistic.setFollowUpRateAgain(percentFormat.format(rate)); + } else { + serviceSubtaskStatistic.setFollowUpRateAgain("0.00%"); + } + if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")){ + serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L); + } + if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")){ + serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L); + } + if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")){ + serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L); + } + if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")){ + serviceSubtaskStatistic.setAbnormalAgain(serviceSubtaskStatistic.getAbnormalAgain() + 1L); + } + } + + + } + /*serviceSubtaskStatistic.setServiceCount(serviceSubtaskList.size()); for (ServiceSubtask serviceSubtask : serviceSubtaskList) { //涓嶉殢璁挎暟閲� if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) { @@ -2235,7 +2329,8 @@ // BigDecimal multiply = BigDecimal.valueOf(serviceSubtaskStatistic.getYfsCount()).divide(BigDecimal.valueOf(serviceSubtaskList.size()), 2, BigDecimal.ROUND_HALF_UP); BigDecimal multiply = new BigDecimal(serviceSubtaskStatistic.getYwcCount().toString()).divide(new BigDecimal(serviceSubtaskStatistic.getYsfCount().toString()), 2, BigDecimal.ROUND_HALF_UP); serviceSubtaskStatistic.setSfwcl(multiply.toString()); - } + }*/ + return serviceSubtaskStatistic; } diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml index 2ffd536..98673e3 100644 --- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml +++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml @@ -169,7 +169,8 @@ leavehospitaldistrictcode, leavehospitaldistrictname, leavediagname, - leaveicd10code + leaveicd10code, + visit_type from service_subtask </sql> @@ -306,8 +307,16 @@ <if test="taskGuid != null">and task_guid = #{taskGuid}</if> <if test="isVisitAgain != null">and is_visit_again = #{isVisitAgain}</if> <if test="visitTime != null">and visit_time = #{visitTime}</if> - <if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if> - <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if> + <!--<if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if> + <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if>--> + <if test="visitCount != null and visitCount > 1 and visitDeptCodes != null and visitDeptCodes.size() > 0"> + AND visit_dept_code IN + <foreach collection="visitDeptCodes" item="visitDeptCodes" open="(" + separator="," + close=")"> + #{visitDeptCodes} + </foreach> + </if> </where> <if test="sort != null and sort==0">order by endtime asc</if> <if test="sort != null and sort==1">order by endtime desc</if> @@ -487,7 +496,7 @@ <if test="visitCount != null ">visit_count,</if> <if test="isVisitAgain != null ">is_visit_again,</if> <if test="upid != null ">upid,</if> - <if test="visit_time != null ">visitTime,</if> + <if test="visitTime != null ">visit_Time,</if> <if test="visitDeptCode != null">visit_dept_code,</if> <if test="visitDeptName != null">visit_dept_name,</if> </trim> @@ -952,6 +961,13 @@ #{leavehospitaldistrictcode} </foreach> </if> + <if test="deptcodes != null and deptcodes.size() > 0"> + AND leavehospitaldistrictcode IN + <foreach collection="deptcodes" item="deptcode" open="(" separator="," + close=")"> + #{leavehospitaldistrictcode} + </foreach> + </if> <if test="serviceType != null and serviceType.size() > 0"> AND service_type IN <foreach collection="serviceType" item="serviceType" open="(" separator="," -- Gitblit v1.9.3