Browse Source

Merge branch 'master' into 'master'

报表开发

See merge request lighter/web-server!2
lighter 3 years ago
parent
commit
1d679e13c7

+ 39 - 0
src/main/java/thyyxxk/webserver/controller/ybkf/YbStatController.java

@@ -0,0 +1,39 @@
+package thyyxxk.webserver.controller.ybkf;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import thyyxxk.webserver.entity.ResultVo;
+import thyyxxk.webserver.entity.ybkf.YbStatDto;
+import thyyxxk.webserver.entity.ybkf.YbStatResult;
+import thyyxxk.webserver.service.ybkf.YbStatService;
+
+import java.util.List;
+
+/**
+ * @ClassName YbStatController
+ * @Description 医保统计
+ * @Author hsh
+ * @Date 2022/6/17 11:30
+ **/
+@RestController
+@RequestMapping("/ybQuery")
+public class YbStatController {
+
+    private final YbStatService service;
+
+    @Autowired
+    public YbStatController(YbStatService service) {
+        this.service = service;
+    }
+
+    @PostMapping("/selectYbStatInfo")
+    public ResultVo<List<YbStatResult>> selectYbStatInfo(@RequestBody @Validated YbStatDto dto) {
+        return service.selectYbStatInfo(dto);
+    }
+
+
+}

+ 139 - 0
src/main/java/thyyxxk/webserver/dao/his/ybkf/YbStatDao.java

@@ -0,0 +1,139 @@
+package thyyxxk.webserver.dao.his.ybkf;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import thyyxxk.webserver.entity.ybkf.YbStatResult;
+
+import java.util.List;
+
+/**
+ *@Author hsh
+ *@Description 医保统计查询
+ *@Date 2022/6/17 9:12
+ *@Param
+ *@Return
+ **/
+@Mapper
+public interface YbStatDao {
+
+    @Select("<script>" +
+            "select psnCount=count(distinct a.setl_id), " +
+            "inDays=sum(datediff(day, zy.admiss_date, zy.dis_date)), " +
+            "avgInDays=cast(round(sum(datediff(day, zy.admiss_date, zy.dis_date))/cast(count(distinct a.setl_id) as decimal(10,2)),2) as decimal(10,2)), " +
+            "totalFee=cast(round(sum(a.medfee_sumamt),2) as decimal(10,2)), " +
+            "fundPooling=cast(round(sum(a.hifp_pay),2) as decimal(10,2)), " +
+            "bigIllFundPooling=cast(round(sum(a.hifmi_pay),2) as decimal(10,2)), " +
+            "civilServiceFund=cast(round(sum(a.cvlserv_pay),2) as decimal(10,2)), " +
+            "otherFunds=cast(round(sum(a.fund_pay_sumamt-a.hifp_pay-a.cvlserv_pay-a.hifmi_pay),2) as decimal(10,2)), " +
+            "allFunds=cast(round(sum(a.fund_pay_sumamt),2) as decimal(10,2)), " +
+            "drugFee=cast(round(sum(t1.ypf),2) as decimal(10,2)), " +
+            "drugFeeRatio=cast(round(sum(t1.ypf)/sum(a.medfee_sumamt)*100,2) as decimal(10,2)), " +
+            "matFee=cast(round(sum(t2.clf),2) as decimal(10,2)), " +
+            "matFeeRatio=cast(round(sum(t2.clf)/sum(a.medfee_sumamt)*100,2) as decimal(10,2)) " +
+            "from t_si_setlinfo a " +
+            "left join zy_inactpatient zy on (zy.inpatient_no = a.pat_no and zy.admiss_times = a.times) " +
+            "left join (select b.setl_id, sum(b.det_item_fee_sumamt) ypf from t_si_setl_fee_detl b where b.med_chrgitm_type in ('09','10','11') group by b.setl_id) t1 " +
+            "on t1.setl_id = a.setl_id " +
+            "left join (select c.setl_id, sum(c.det_item_fee_sumamt) clf from t_si_setl_fee_detl c where c.med_chrgitm_type = '08' group by c.setl_id) t2 " +
+            "on t2.setl_id = a.setl_id " +
+            "where a.revoked=0 and a.setl_type=#{setlType} and a.setl_time&gt;=#{beginTime} and a.setl_time&lt;=#{endTime} " +
+            "<if test=\"insuplcAdmdvs != null and insuplcAdmdvs.size > 0 \">" +
+            " and a.insuplc_admdvs in  " +
+            " <foreach collection='insuplcAdmdvs' item='item' index='index' open='(' close=')' separator=','>  " +
+            "#{item}" +
+            "</foreach>" +
+            "</if>" +
+            "<if test=\"insurtype != null and insurtype.size > 0 \">" +
+            " and a.insutype in  " +
+            " <foreach collection='insurtype' item='item' index='index' open='(' close=')' separator=','>  " +
+            "#{item}" +
+            "</foreach>" +
+            "</if>" +
+            "<if test=\"med_type != null and med_type.size > 0 \">" +
+            " and a.med_type in  " +
+            " <foreach collection='med_type' item='item' index='index' open='(' close=')' separator=','>  " +
+            "#{item}" +
+            "</foreach>" +
+            "</if>" +
+            "</script>")
+    YbStatResult selectYbStatInfo(@Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("setlType") String setlType,
+        @Param("insuplcAdmdvs") List<String> insuplcAdmdvs, @Param("insurtype") List<String> insurtype,
+        @Param("med_type") List<String> med_type);
+
+    @Select("<script>" +
+            "select psnCount=count(distinct a.setl_id), " +
+            "inDays=sum(datediff(day, zy.admiss_date, zy.dis_date)), " +
+            "avgInDays=cast(round(sum(datediff(day, zy.admiss_date, zy.dis_date))/cast(count(distinct a.setl_id) as decimal(10,2)),2) as decimal(10,2)), " +
+            "totalFee=cast(round(sum(a.medfee_sumamt),2) as decimal(10,2)), " +
+            "fundPooling=cast(round(sum(a.hifp_pay),2) as decimal(10,2)), " +
+            "bigIllFundPooling=cast(round(sum(a.hifmi_pay),2) as decimal(10,2)), " +
+            "civilServiceFund=cast(round(sum(a.cvlserv_pay),2) as decimal(10,2)), " +
+            "otherFunds=cast(round(sum(a.fund_pay_sumamt-a.hifp_pay-a.cvlserv_pay-a.hifmi_pay),2) as decimal(10,2)), " +
+            "allFunds=cast(round(sum(a.fund_pay_sumamt),2) as decimal(10,2)), " +
+            "drugFee=cast(round(sum(t1.ypf),2) as decimal(10,2)), " +
+            "drugFeeRatio=cast(round(sum(t1.ypf)/sum(a.medfee_sumamt)*100,2) as decimal(10,2)), " +
+            "matFee=cast(round(sum(t2.clf),2) as decimal(10,2)), " +
+            "matFeeRatio=cast(round(sum(t2.clf)/sum(a.medfee_sumamt)*100,2) as decimal(10,2)) " +
+            "from t_si_setlinfo a " +
+            "left join zy_inactpatient zy on (zy.inpatient_no = a.pat_no and zy.admiss_times = a.times) " +
+            "left join (select b.setl_id, sum(b.det_item_fee_sumamt) ypf from t_si_setl_fee_detl b where b.med_chrgitm_type in ('09','10','11') group by b.setl_id) t1 " +
+            "on t1.setl_id = a.setl_id " +
+            "left join (select c.setl_id, sum(c.det_item_fee_sumamt) clf from t_si_setl_fee_detl c where c.med_chrgitm_type = '08' group by c.setl_id) t2 " +
+            "on t2.setl_id = a.setl_id " +
+            "where a.revoked=0 and a.setl_type=#{setlType} and a.setl_time&gt;=#{beginTime} and a.setl_time&lt;=#{endTime} " +
+            "and a.insuplc_admdvs != '439900' and a.insuplc_admdvs like '43%' and a.insuplc_admdvs not like '4301%' and a.med_type != '2102' " +
+            "</script>")
+    YbStatResult selectYbStatInfoInProvinceOtherCities(@Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("setlType") String setlType);
+
+    @Select("<script>" +
+            "select psnCount=count(distinct a.setl_id), " +
+            "inDays=sum(datediff(day, zy.admiss_date, zy.dis_date)), " +
+            "avgInDays=cast(round(sum(datediff(day, zy.admiss_date, zy.dis_date))/cast(count(distinct a.setl_id) as decimal(10,2)),2) as decimal(10,2)), " +
+            "totalFee=cast(round(sum(a.medfee_sumamt),2) as decimal(10,2)), " +
+            "fundPooling=cast(round(sum(a.hifp_pay),2) as decimal(10,2)), " +
+            "bigIllFundPooling=cast(round(sum(a.hifmi_pay),2) as decimal(10,2)), " +
+            "civilServiceFund=cast(round(sum(a.cvlserv_pay),2) as decimal(10,2)), " +
+            "otherFunds=cast(round(sum(a.fund_pay_sumamt-a.hifp_pay-a.cvlserv_pay-a.hifmi_pay),2) as decimal(10,2)), " +
+            "allFunds=cast(round(sum(a.fund_pay_sumamt),2) as decimal(10,2)), " +
+            "drugFee=cast(round(sum(t1.ypf),2) as decimal(10,2)), " +
+            "drugFeeRatio=cast(round(sum(t1.ypf)/sum(a.medfee_sumamt)*100,2) as decimal(10,2)), " +
+            "matFee=cast(round(sum(t2.clf),2) as decimal(10,2)), " +
+            "matFeeRatio=cast(round(sum(t2.clf)/sum(a.medfee_sumamt)*100,2) as decimal(10,2)) " +
+            "from t_si_setlinfo a " +
+            "left join zy_inactpatient zy on (zy.inpatient_no = a.pat_no and zy.admiss_times = a.times) " +
+            "left join (select b.setl_id, sum(b.det_item_fee_sumamt) ypf from t_si_setl_fee_detl b where b.med_chrgitm_type in ('09','10','11') group by b.setl_id) t1 " +
+            "on t1.setl_id = a.setl_id " +
+            "left join (select c.setl_id, sum(c.det_item_fee_sumamt) clf from t_si_setl_fee_detl c where c.med_chrgitm_type = '08' group by c.setl_id) t2 " +
+            "on t2.setl_id = a.setl_id " +
+            "where a.revoked=0 and a.setl_type=#{setlType} and a.setl_time&gt;=#{beginTime} and a.setl_time&lt;=#{endTime} " +
+            "and a.insuplc_admdvs != '439900' and a.insuplc_admdvs not like '43%' " +
+            "</script>")
+    YbStatResult selectYbStatInfoInOutProvinceCities(@Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("setlType") String setlType);
+
+    @Select("<script>" +
+            "select psnCount=count(distinct a.setl_id), " +
+            "inDays=sum(datediff(day, zy.admiss_date, zy.dis_date)), " +
+            "avgInDays=cast(round(sum(datediff(day, zy.admiss_date, zy.dis_date))/cast(count(distinct a.setl_id) as decimal(10,2)),2) as decimal(10,2)), " +
+            "totalFee=cast(round(sum(a.medfee_sumamt),2) as decimal(10,2)), " +
+            "fundPooling=cast(round(sum(a.hifp_pay),2) as decimal(10,2)), " +
+            "bigIllFundPooling=cast(round(sum(a.hifmi_pay),2) as decimal(10,2)), " +
+            "civilServiceFund=cast(round(sum(a.cvlserv_pay),2) as decimal(10,2)), " +
+            "otherFunds=cast(round(sum(a.fund_pay_sumamt-a.hifp_pay-a.cvlserv_pay-a.hifmi_pay),2) as decimal(10,2)), " +
+            "allFunds=cast(round(sum(a.fund_pay_sumamt),2) as decimal(10,2)), " +
+            "drugFee=cast(round(sum(t1.ypf),2) as decimal(10,2)), " +
+            "drugFeeRatio=cast(round(sum(t1.ypf)/sum(a.medfee_sumamt)*100,2) as decimal(10,2)), " +
+            "matFee=cast(round(sum(t2.clf),2) as decimal(10,2)), " +
+            "matFeeRatio=cast(round(sum(t2.clf)/sum(a.medfee_sumamt)*100,2) as decimal(10,2)) " +
+            "from t_si_setlinfo a " +
+            "left join zy_inactpatient zy on (zy.inpatient_no = a.pat_no and zy.admiss_times = a.times) " +
+            "left join (select b.setl_id, sum(b.det_item_fee_sumamt) ypf from t_si_setl_fee_detl b where b.med_chrgitm_type in ('09','10','11') group by b.setl_id) t1 " +
+            "on t1.setl_id = a.setl_id " +
+            "left join (select c.setl_id, sum(c.det_item_fee_sumamt) clf from t_si_setl_fee_detl c where c.med_chrgitm_type = '08' group by c.setl_id) t2 " +
+            "on t2.setl_id = a.setl_id " +
+            "where a.revoked=0 and a.setl_type=#{setlType} and a.setl_time&gt;=#{beginTime} and a.setl_time&lt;=#{endTime} " +
+            "and a.insuplc_admdvs != '439900' and a.insuplc_admdvs like '43%' and a.insuplc_admdvs not like '4301%' and a.med_type = '2102' " +
+            "</script>")
+    YbStatResult selectYbStatInfoInProvinceOtherCitiesSingleDisease(@Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("setlType") String setlType);
+
+}

+ 22 - 0
src/main/java/thyyxxk/webserver/entity/ybkf/YbStatDto.java

@@ -0,0 +1,22 @@
+package thyyxxk.webserver.entity.ybkf;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @ClassName YbStatDto
+ * @Description 医保报表查询实体类
+ * @Author hsh
+ * @Date 2022/6/17 14:41
+ **/
+@Data
+public class YbStatDto {
+    @NotBlank(message = "请选择年月!")
+    private String month;
+    @NotNull(message = "请选择险种!")
+    private String insurType;
+    private String setlType;
+
+}

+ 31 - 0
src/main/java/thyyxxk/webserver/entity/ybkf/YbStatResult.java

@@ -0,0 +1,31 @@
+package thyyxxk.webserver.entity.ybkf;
+
+import lombok.Data;
+
+/**
+ * @ClassName YbStatResult
+ * @Description 医保报表统计实体类
+ * @Author hsh
+ * @Date 2022/6/17 14:52
+ **/
+@Data
+public class YbStatResult {
+
+    private String insurType;
+    private String insurName;
+    private Integer psnCount;
+    private Integer inDays;
+    private String avgInDays;
+    private String totalFee;
+    private String drugFee;
+    private String drugFeeRatio;
+    private String matFee;
+    private String matFeeRatio;
+    private String fundPooling;
+    private String bigIllFundPooling;
+    private String civilServiceFund;
+    private String otherFunds;
+    private String allFunds;
+
+
+}

+ 456 - 0
src/main/java/thyyxxk/webserver/service/ybkf/YbStatService.java

@@ -0,0 +1,456 @@
+package thyyxxk.webserver.service.ybkf;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+import thyyxxk.webserver.config.exception.ExceptionEnum;
+import thyyxxk.webserver.dao.his.ybkf.YbStatDao;
+import thyyxxk.webserver.entity.ResultVo;
+import thyyxxk.webserver.entity.ybkf.YbStatDto;
+import thyyxxk.webserver.entity.ybkf.YbStatResult;
+import thyyxxk.webserver.utils.DateUtil;
+import thyyxxk.webserver.utils.ResultVoUtil;
+import thyyxxk.webserver.utils.StringUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @ClassName YbStatService
+ * @Description 医保报表统计
+ * @Author hsh
+ * @Date 2022/6/17 9:01
+ **/
+@Service
+public class YbStatService {
+
+    private final YbStatDao dao;
+
+    @Autowired
+    public YbStatService(YbStatDao dao ) {
+        this.dao = dao;
+    }
+
+    public ResultVo<List<YbStatResult>> selectYbStatInfo(YbStatDto dto){
+        String beginTime = dto.getMonth() + "-01 00:00:00.000";
+        String endTime = DateUtil.getMonthEndtime(dto.getMonth());
+        String insurType = dto.getInsurType();
+        String setlType = dto.getSetlType();
+        if (StringUtil.isBlank(insurType)) {
+            insurType = "%%";
+        }
+        // 统筹区域
+        List<String> insuplcAdmdvs = new ArrayList<>();
+        // 险种类型
+        List<String> insurtype = new ArrayList<>();
+        // 医疗类别
+        List<String> med_type = new ArrayList<>();
+        // 返回结果
+        List<YbStatResult> ybStatResult = new ArrayList<>();
+        if("21".equals(setlType)){
+            // 住院
+            if("43010031001".equals(insurType) || "99".equals(insurType)){
+                // 长沙市城职普通住院(包含外伤住院)
+                insuplcAdmdvs.add("430102");
+                insuplcAdmdvs.add("430103");
+                insuplcAdmdvs.add("430104");
+                insuplcAdmdvs.add("430105");
+                insuplcAdmdvs.add("430111");
+                insuplcAdmdvs.add("430140");
+                insuplcAdmdvs.add("430199");
+                insurtype.add("310");
+                med_type.add("2101");
+                med_type.add("22");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("长沙市城职普通住院");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("43010039001".equals(insurType) || "99".equals(insurType)){
+                // 长沙市城居普通住院(包含外伤住院)
+                insuplcAdmdvs.add("430102");
+                insuplcAdmdvs.add("430103");
+                insuplcAdmdvs.add("430104");
+                insuplcAdmdvs.add("430105");
+                insuplcAdmdvs.add("430111");
+                insuplcAdmdvs.add("430140");
+                insuplcAdmdvs.add("430199");
+                insurtype.add("390");
+                med_type.add("2101");
+                med_type.add("22");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("长沙市城居普通住院");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("43010034001".equals(insurType) || "99".equals(insurType)){
+                // 长沙市离休
+                insuplcAdmdvs.add("430102");
+                insuplcAdmdvs.add("430103");
+                insuplcAdmdvs.add("430104");
+                insuplcAdmdvs.add("430105");
+                insuplcAdmdvs.add("430111");
+                insuplcAdmdvs.add("430140");
+                insuplcAdmdvs.add("430199");
+                insurtype.add("340");
+                med_type.add("2101");
+                med_type.add("22");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("长沙市离休");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("43010051052".equals(insurType) || "99".equals(insurType)){
+                // 长沙市生育
+                insuplcAdmdvs.add("430102");
+                insuplcAdmdvs.add("430103");
+                insuplcAdmdvs.add("430104");
+                insuplcAdmdvs.add("430105");
+                insuplcAdmdvs.add("430111");
+                insuplcAdmdvs.add("430140");
+                insuplcAdmdvs.add("430199");
+                med_type.add("52");
+                med_type.add("2106");
+                med_type.add("2107");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("长沙市生育");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("43012131001".equals(insurType) || "99".equals(insurType)){
+                // 长沙县城职普通住院(包含外伤住院)
+                insuplcAdmdvs.add("430121");
+                insurtype.add("310");
+                med_type.add("2101");
+                med_type.add("22");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("长沙县城职普通住院");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("43012139001".equals(insurType) || "99".equals(insurType)){
+                // 长沙县城居普通住院(包含外伤住院)
+                insuplcAdmdvs.add("430121");
+                insurtype.add("390");
+                med_type.add("2101");
+                med_type.add("22");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("长沙县城居普通住院");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("43012134001".equals(insurType) || "99".equals(insurType)){
+                // 长沙县离休
+                insuplcAdmdvs.add("430121");
+                insurtype.add("340");
+                med_type.add("2101");
+                med_type.add("22");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("长沙县离休");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("43012151052".equals(insurType) || "99".equals(insurType)){
+                // 长沙县生育
+                insuplcAdmdvs.add("430121");
+                med_type.add("52");
+                med_type.add("2106");
+                med_type.add("2107");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("长沙县生育");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("43018131001".equals(insurType) || "99".equals(insurType)){
+                // 浏阳县城职普通住院(包含外伤住院)
+                insuplcAdmdvs.add("430181");
+                insurtype.add("310");
+                med_type.add("2101");
+                med_type.add("22");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("浏阳县城职普通住院");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("43018139001".equals(insurType) || "99".equals(insurType)){
+                // 浏阳县城居普通住院(包含外伤住院)
+                insuplcAdmdvs.add("430181");
+                insurtype.add("390");
+                med_type.add("2101");
+                med_type.add("22");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("浏阳县城居普通住院");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("43018134001".equals(insurType) || "99".equals(insurType)){
+                // 浏阳县离休
+                insuplcAdmdvs.add("430181");
+                insurtype.add("340");
+                med_type.add("2101");
+                med_type.add("22");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("浏阳县离休");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("43018151052".equals(insurType) || "99".equals(insurType)){
+                // 浏阳县生育
+                insuplcAdmdvs.add("430181");
+                med_type.add("52");
+                med_type.add("2106");
+                med_type.add("2107");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("浏阳县生育");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("43990031001".equals(insurType) || "99".equals(insurType)){
+                // 湖南省城职普通住院(包含外伤住院)
+                insuplcAdmdvs.add("439900");
+                insurtype.add("310");
+                med_type.add("2101");
+                med_type.add("22");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("湖南省城职普通住院");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("43990034001".equals(insurType) || "99".equals(insurType)){
+                // 湖南省离休
+                insuplcAdmdvs.add("439900");
+                insurtype.add("340");
+                med_type.add("2101");
+                med_type.add("22");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("湖南省离休");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("43990051052".equals(insurType) || "99".equals(insurType)){
+                // 湖南省生育
+                insuplcAdmdvs.add("439900");
+                med_type.add("52");
+                med_type.add("2106");
+                med_type.add("2107");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("湖南省生育");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("43990001".equals(insurType) || "99".equals(insurType)){
+                // 省内异地(包含外伤住院)
+                YbStatResult result = dao.selectYbStatInfoInProvinceOtherCities(beginTime, endTime, setlType);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("省内异地");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("43990002".equals(insurType) || "99".equals(insurType)){
+                // 省外异地(包含外伤住院)
+                YbStatResult result = dao.selectYbStatInfoInOutProvinceCities(beginTime, endTime, setlType);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("省外异地");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("4301002102".equals(insurType) || "99".equals(insurType)){
+                // 市单病种
+                insuplcAdmdvs.add("430102");
+                insuplcAdmdvs.add("430103");
+                insuplcAdmdvs.add("430104");
+                insuplcAdmdvs.add("430105");
+                insuplcAdmdvs.add("430111");
+                insuplcAdmdvs.add("430140");
+                insuplcAdmdvs.add("430199");
+                insuplcAdmdvs.add("430121");
+                insuplcAdmdvs.add("430181");
+                med_type.add("2102");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("市单病种");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("4399002102".equals(insurType) || "99".equals(insurType)){
+                // 省城职单病种
+                insuplcAdmdvs.add("439900");
+                med_type.add("2102");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("省单病种");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("4399012102".equals(insurType) || "99".equals(insurType)){
+                // 省内异地单病种
+                YbStatResult result = dao.selectYbStatInfoInProvinceOtherCitiesSingleDisease(beginTime, endTime, setlType);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("省内异地单病种");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+        } else {
+            // 门诊
+            if("11".equals(insurType) || "99".equals(insurType)){
+                // 普通门诊
+                med_type.add("11");
+                med_type.add("9903");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("普通门诊");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("14".equals(insurType) || "99".equals(insurType)){
+                // 门诊慢特病
+                med_type.add("14");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("特殊门诊");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+            insuplcAdmdvs.clear();
+            insurtype.clear();
+            med_type.clear();
+            if("51".equals(insurType) || "99".equals(insurType)){
+                // 生育门诊
+                med_type.add("51");
+                YbStatResult result = dao.selectYbStatInfo(beginTime, endTime, setlType, insuplcAdmdvs, insurtype, med_type);
+                if(!ObjectUtils.isEmpty(result) && result.getPsnCount() > 0){
+                    result.setInsurName("生育门诊");
+                    result.setInsurType(insurType);
+                    ybStatResult.add(result);
+                }
+            }
+
+        }
+
+        if (null == ybStatResult || ybStatResult.isEmpty()) {
+            return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST);
+        }
+
+        return ResultVoUtil.success(ybStatResult);
+    }
+
+}