liusheng
7 小时以前 fd12c3a4d5c0a247c89ab59faba189075a302ffd
Merge remote-tracking branch 'origin/master'
已修改6个文件
231 ■■■■■ 文件已修改
smartor/src/main/java/com/smartor/domain/ServiceSubtask.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java 81 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
}
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;
}
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;
}
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;
}
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;
    }
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=","