|  | @@ -0,0 +1,193 @@
 | 
	
		
			
				|  |  | +package thyyxxk.webserver.service.ybkf;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | +import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | +import thyyxxk.webserver.dao.his.ybkf.YbCssBzDao;
 | 
	
		
			
				|  |  | +import thyyxxk.webserver.entity.ResultVo;
 | 
	
		
			
				|  |  | +import thyyxxk.webserver.entity.ybkf.YbkfShareDto;
 | 
	
		
			
				|  |  | +import thyyxxk.webserver.utils.DecimalUtil;
 | 
	
		
			
				|  |  | +import thyyxxk.webserver.utils.ResultVoUtil;
 | 
	
		
			
				|  |  | +import thyyxxk.webserver.utils.StringUtil;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import java.text.MessageFormat;
 | 
	
		
			
				|  |  | +import java.util.ArrayList;
 | 
	
		
			
				|  |  | +import java.util.HashMap;
 | 
	
		
			
				|  |  | +import java.util.List;
 | 
	
		
			
				|  |  | +import java.util.Map;
 | 
	
		
			
				|  |  | +import java.util.stream.Collectors;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * @Description: 长沙市病种统计
 | 
	
		
			
				|  |  | + * @Author: hsh
 | 
	
		
			
				|  |  | + * @CreateTime: 2022-09-20 10:26
 | 
	
		
			
				|  |  | + * @Version: 1.0
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +@Service
 | 
	
		
			
				|  |  | +public class YbCssBzService {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private final YbCssBzDao dao;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    public YbCssBzService(YbCssBzDao dao) {
 | 
	
		
			
				|  |  | +        this.dao = dao;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * @description: 查询长沙市病种
 | 
	
		
			
				|  |  | +     * @author: hsh
 | 
	
		
			
				|  |  | +     * @date: 2022/9/20 10:38
 | 
	
		
			
				|  |  | +     * @param: [dto]
 | 
	
		
			
				|  |  | +     * @return: ResultVo<List<Map<String,Object>>>
 | 
	
		
			
				|  |  | +     **/
 | 
	
		
			
				|  |  | +    public ResultVo<List<Map<String, Object>>> selectCssYbBzTj(YbkfShareDto dto){
 | 
	
		
			
				|  |  | +        String beginTime = dto.getStartTime();
 | 
	
		
			
				|  |  | +        String endTime = dto.getEndTime();
 | 
	
		
			
				|  |  | +        String dept = dto.getDept();
 | 
	
		
			
				|  |  | +        String insurName = dto.getInsurName();
 | 
	
		
			
				|  |  | +        String bzmc = dto.getBzmc();
 | 
	
		
			
				|  |  | +        String doctor = dto.getDoctor();
 | 
	
		
			
				|  |  | +        String yk = dto.getYk();
 | 
	
		
			
				|  |  | +        List<Map<String, Object>> result = dao.selectCssYbBzTj(beginTime, endTime, dept, insurName, bzmc, doctor);
 | 
	
		
			
				|  |  | +        List<Map<String, Object>> bzTjmx = dao.selectCssYbBzTjMx(beginTime, endTime, dept, insurName, bzmc, doctor);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Map<String, List<Map<String, Object>>> bzMap = bzTjmx.stream().collect(Collectors.groupingBy(f -> String.valueOf(f.get("zdmc")), Collectors.toList()));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if(StringUtil.isBlank(yk)){
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            callBzMxInfo(result, bzMap);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            return ResultVoUtil.success(result);
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            List<Map<String, Object>> ls = new ArrayList<>();
 | 
	
		
			
				|  |  | +            if("y".equals(yk)){
 | 
	
		
			
				|  |  | +                for(Map<String, Object> map : result){
 | 
	
		
			
				|  |  | +                    double bal = Double.parseDouble(map.get("bal") + "");
 | 
	
		
			
				|  |  | +                    if(bal >= 0d){
 | 
	
		
			
				|  |  | +                        ls.add(map);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                for(Map<String, Object> map : result){
 | 
	
		
			
				|  |  | +                    double bal = Double.parseDouble(map.get("bal") + "");
 | 
	
		
			
				|  |  | +                    if(bal < 0d){
 | 
	
		
			
				|  |  | +                        ls.add(map);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                ls = ls.stream().sorted((e1,e2) -> -Double.compare(Double.valueOf(e1.get("bal") + ""), Double.valueOf(e2.get("bal") + ""))).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            callBzMxInfo(ls, bzMap);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            return ResultVoUtil.success(ls);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * @description: 病种添加明细信息
 | 
	
		
			
				|  |  | +     * @author: hsh
 | 
	
		
			
				|  |  | +     * @date: 2022/9/21 8:44
 | 
	
		
			
				|  |  | +     * @param: [list, bzMap]
 | 
	
		
			
				|  |  | +     * @return: void
 | 
	
		
			
				|  |  | +     **/
 | 
	
		
			
				|  |  | +    private void callBzMxInfo(List<Map<String, Object>> list, Map<String, List<Map<String, Object>>> bzMap) {
 | 
	
		
			
				|  |  | +        if(null != bzMap || bzMap.size() != 0){
 | 
	
		
			
				|  |  | +            for(Map<String, Object> map : list){
 | 
	
		
			
				|  |  | +                String zdbm = map.get("zdbm") + "";
 | 
	
		
			
				|  |  | +                String zdmc = map.get("zdmc") + "";
 | 
	
		
			
				|  |  | +                List<Map<String, Object>> bzmx = bzMap.get(zdmc);
 | 
	
		
			
				|  |  | +                List<Map<String, Object>> childrenList = new ArrayList<>();
 | 
	
		
			
				|  |  | +                if(bzmx.size() > 0){
 | 
	
		
			
				|  |  | +                    Map<String, List<Map<String, Object>>> m2 = bzmx.stream().collect(Collectors.groupingBy(f -> formatString(f.get("zlfs"), f.get("sblx"))));
 | 
	
		
			
				|  |  | +                    for(Map.Entry<String, List<Map<String, Object>>> entry : m2.entrySet()){
 | 
	
		
			
				|  |  | +                        Map<String, Object> m1 = new HashMap<>();
 | 
	
		
			
				|  |  | +                        String key = entry.getKey();
 | 
	
		
			
				|  |  | +                        String[] gb = key.split("\\|");
 | 
	
		
			
				|  |  | +                        List<Map<String, Object>> l = entry.getValue();
 | 
	
		
			
				|  |  | +                        String yjzf = "0";
 | 
	
		
			
				|  |  | +                        String tczf = "0";
 | 
	
		
			
				|  |  | +                        int rs = 0;
 | 
	
		
			
				|  |  | +                        String fz = "0";
 | 
	
		
			
				|  |  | +                        String bal = "0";
 | 
	
		
			
				|  |  | +                        for(Map<String, Object> m3 : l){
 | 
	
		
			
				|  |  | +                            String o1 = m3.get("yjzf") + "";
 | 
	
		
			
				|  |  | +                            String o2 = m3.get("tczf") + "";
 | 
	
		
			
				|  |  | +                            String o4 = m3.get("fz") + "";
 | 
	
		
			
				|  |  | +                            String o5 = m3.get("bal") + "";
 | 
	
		
			
				|  |  | +                            yjzf = DecimalUtil.add(yjzf, o1);
 | 
	
		
			
				|  |  | +                            tczf = DecimalUtil.add(tczf, o2);
 | 
	
		
			
				|  |  | +                            fz = DecimalUtil.add(fz, o4);
 | 
	
		
			
				|  |  | +                            bal = DecimalUtil.add(bal, o5);
 | 
	
		
			
				|  |  | +                            rs ++;
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        m1.put("zdmc", zdmc);
 | 
	
		
			
				|  |  | +                        m1.put("zdbm", zdbm);
 | 
	
		
			
				|  |  | +                        m1.put("yjzf", yjzf);
 | 
	
		
			
				|  |  | +                        m1.put("tczf", tczf);
 | 
	
		
			
				|  |  | +                        m1.put("rs", rs);
 | 
	
		
			
				|  |  | +                        m1.put("cjyjzf", DecimalUtil.divide(yjzf, String.valueOf(rs), 2));
 | 
	
		
			
				|  |  | +                        m1.put("cjtczf", DecimalUtil.divide(tczf, String.valueOf(rs), 2));
 | 
	
		
			
				|  |  | +                        m1.put("zlfs", gb[0]);
 | 
	
		
			
				|  |  | +                        m1.put("sblx", gb[1]);
 | 
	
		
			
				|  |  | +                        m1.put("fz", fz);
 | 
	
		
			
				|  |  | +                        m1.put("bal", bal);
 | 
	
		
			
				|  |  | +                        childrenList.add(m1);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                if(childrenList.size() > 0){
 | 
	
		
			
				|  |  | +                    map.put("children", childrenList);
 | 
	
		
			
				|  |  | +                    map.put("childKey", zdmc);
 | 
	
		
			
				|  |  | +                    map.put("isChildren", true);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * @description: 病种对比信息查询
 | 
	
		
			
				|  |  | +     * @author: hsh
 | 
	
		
			
				|  |  | +     * @date: 2022/9/21 11:20
 | 
	
		
			
				|  |  | +     * @param: [dto]
 | 
	
		
			
				|  |  | +     * @return: ResultVo<List<Map<String,Object>>>
 | 
	
		
			
				|  |  | +     **/
 | 
	
		
			
				|  |  | +    public ResultVo<List<Map<String, Object>>> selectBzDbTj(YbkfShareDto dto){
 | 
	
		
			
				|  |  | +        String beginTime = dto.getStartTime();
 | 
	
		
			
				|  |  | +        String endTime = dto.getEndTime();
 | 
	
		
			
				|  |  | +        String dept = dto.getDept();
 | 
	
		
			
				|  |  | +        String insurName = dto.getInsurName();
 | 
	
		
			
				|  |  | +        String bzmc = dto.getBzmc();
 | 
	
		
			
				|  |  | +        String doctor = dto.getDoctor();
 | 
	
		
			
				|  |  | +        String zlfs = dto.getZlfs();
 | 
	
		
			
				|  |  | +        String sblx = dto.getSblx();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        List<Map<String, Object>> list = dao.selectBzDbTj(beginTime, endTime, dept, insurName, bzmc, doctor, zlfs, sblx);
 | 
	
		
			
				|  |  | +        return ResultVoUtil.success(list);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * @description: 病种对比病人信息查询
 | 
	
		
			
				|  |  | +     * @author: hsh
 | 
	
		
			
				|  |  | +     * @date: 2022/9/21 15:30
 | 
	
		
			
				|  |  | +     * @param: [dto]
 | 
	
		
			
				|  |  | +     * @return: ResultVo<List<Map<String,Object>>>
 | 
	
		
			
				|  |  | +     **/
 | 
	
		
			
				|  |  | +    public ResultVo<List<Map<String, Object>>> selectBzDbBrTj(YbkfShareDto dto){
 | 
	
		
			
				|  |  | +        String beginTime = dto.getStartTime();
 | 
	
		
			
				|  |  | +        String endTime = dto.getEndTime();
 | 
	
		
			
				|  |  | +        String dept = dto.getDept();
 | 
	
		
			
				|  |  | +        String insurName = dto.getInsurName();
 | 
	
		
			
				|  |  | +        String bzmc = dto.getBzmc();
 | 
	
		
			
				|  |  | +        String doctor = dto.getDoctor();
 | 
	
		
			
				|  |  | +        String zlfs = dto.getZlfs();
 | 
	
		
			
				|  |  | +        String sblx = dto.getSblx();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        List<Map<String, Object>> list = dao.selectBzDbBrTj(beginTime, endTime, dept, insurName, bzmc, doctor, zlfs, sblx);
 | 
	
		
			
				|  |  | +        return ResultVoUtil.success(list);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private String formatString(Object... paras) {
 | 
	
		
			
				|  |  | +        return MessageFormat.format("{0}|{1}", paras);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 |