|
@@ -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);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|