|
|
@@ -1,5 +1,6 @@
|
|
|
package thyyxxk.webserver.service.reports;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -9,11 +10,9 @@ import thyyxxk.webserver.entity.ResultVo;
|
|
|
import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
|
|
|
import thyyxxk.webserver.entity.querydata.KeShiFeiiYongTongJi;
|
|
|
import thyyxxk.webserver.entity.querydata.QueryDrugsAndProjects;
|
|
|
+import thyyxxk.webserver.entity.xc.XcPageHelp;
|
|
|
import thyyxxk.webserver.service.PublicServer;
|
|
|
-import thyyxxk.webserver.utils.DateUtil;
|
|
|
-import thyyxxk.webserver.utils.ExcelUtil;
|
|
|
-import thyyxxk.webserver.utils.ResultVoUtil;
|
|
|
-import thyyxxk.webserver.utils.StringUtil;
|
|
|
+import thyyxxk.webserver.utils.*;
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.util.*;
|
|
|
@@ -40,6 +39,20 @@ public class KeShiShouRuServer {
|
|
|
this.publicServer = publicServer;
|
|
|
}
|
|
|
|
|
|
+ static class PersonComparator implements Comparator<KeShiFeiiYongTongJi> {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int compare(KeShiFeiiYongTongJi p1, KeShiFeiiYongTongJi p2) {
|
|
|
+ if (p1.getChargeDateString() != null && p2.getChargeDateString() != null) {
|
|
|
+ Date o1 = DateUtil.parse(p1.getChargeDateString(), DateUtil.DATE);
|
|
|
+ Date o2 = DateUtil.parse(p2.getChargeDateString(), DateUtil.DATE);
|
|
|
+ assert o1 != null;
|
|
|
+ return o1.compareTo(o2);
|
|
|
+ }
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
public ResultVo<KeShiFeiiYongTongJi> getKeShouFei(QueryDrugsAndProjects param) {
|
|
|
if (StringUtil.isBlank(param.getStartTime()) || StringUtil.isBlank(param.getEndTime())) {
|
|
|
@@ -47,9 +60,7 @@ public class KeShiShouRuServer {
|
|
|
}
|
|
|
|
|
|
KeShiFeiiYongTongJi qp = new KeShiFeiiYongTongJi();
|
|
|
- log.info("查询科室收费统计 ==> 执行科室:{},开始{},结束:{}。项目编码:{},录入人:{},申请科室:{},总数:{},当前页:{},页大小:{}",
|
|
|
- param.getExecUnitList(), param.getStartTime(), param.getEndTime(),
|
|
|
- param.getChargeCodeMx(), param.getOpId(), param.getReqDeptCode(), param.getTotal(), param.getCurrentPage(), param.getPageSize());
|
|
|
+ log.info("查询科室收费统计 ==> 执行科室:{},开始{},结束:{}。项目编码:{},录入人:{},申请科室:{},总数:{},当前页:{},页大小:{}", param.getExecUnitList(), param.getStartTime(), param.getEndTime(), param.getChargeCodeMx(), param.getOpId(), param.getReqDeptCode(), param.getTotal(), param.getCurrentPage(), param.getPageSize());
|
|
|
List<String> keShiLieBiao = publicServer.getKeShiLieBiaoList(param.getExecUnitList());
|
|
|
GetDropdownBox renHuanCodeHeCodeRs = new GetDropdownBox();
|
|
|
if (StringUtil.notBlank(param.getOpId())) {
|
|
|
@@ -62,67 +73,145 @@ public class KeShiShouRuServer {
|
|
|
} else {
|
|
|
page = new Page<>(param.getCurrentPage(), param.getPageSize());
|
|
|
}
|
|
|
+
|
|
|
+ QueryWrapper<?> qw = new QueryWrapper<>();
|
|
|
+
|
|
|
if (param.getLaiYuan() == 0) {
|
|
|
+ qw.ge("charge_date", param.getStartTime());
|
|
|
+ qw.le("charge_date", param.getEndTime());
|
|
|
+ if (ListUtil.notBlank(keShiLieBiao)) {
|
|
|
+ qw.in("a.exec_unit", keShiLieBiao);
|
|
|
+ }
|
|
|
+ if (StringUtil.notBlank(param.getChargeCodeMx())) {
|
|
|
+ qw.eq("a.charge_code_mx", param.getChargeCodeMx());
|
|
|
+ }
|
|
|
+ if (StringUtil.notBlank(renHuanCodeHeCodeRs.getCode())) {
|
|
|
+ qw.eq("a.op_id_code", renHuanCodeHeCodeRs.getCode());
|
|
|
+ }
|
|
|
+ if (StringUtil.notBlank(param.getReqDeptCode())) {
|
|
|
+ qw.eq("a.ward_code", param.getReqDeptCode());
|
|
|
+ }
|
|
|
+
|
|
|
switch (param.getFenLei()) {
|
|
|
case 0:
|
|
|
- qp.setData(dao.getZhuYuanFeiYongXiangMuFenLei(page, keShiLieBiao, param.getStartTime(),
|
|
|
- param.getEndTime(), param.getChargeCodeMx(), renHuanCodeHeCodeRs.getCode(), renHuanCodeHeCodeRs.getCodeRs(),
|
|
|
- param.getReqDeptCode(), "CONVERT(varchar(100), charge_date, 23) charge_date_string"));
|
|
|
+ qw.groupBy("CONVERT(varchar(100), charge_date, 23)");
|
|
|
+ qp.setData(dao.getZhuYuanFeiYongXiangMuFenLeiV2(page,
|
|
|
+ qw,
|
|
|
+ "CONVERT(varchar(100), charge_date, 23) charge_date_string,"));
|
|
|
qp.setTotal(page.getTotal());
|
|
|
break;
|
|
|
case 1:
|
|
|
- qp.setData(dao.getZhuYuanFeiYongXiangMuFenLei(page, keShiLieBiao, param.getStartTime(),
|
|
|
- param.getEndTime(), param.getChargeCodeMx(), renHuanCodeHeCodeRs.getCode(), renHuanCodeHeCodeRs.getCodeRs(),
|
|
|
- param.getReqDeptCode(), "op_id_code"));
|
|
|
+ qw.groupBy("op_id_code");
|
|
|
+ qp.setData(dao.getZhuYuanFeiYongXiangMuFenLeiV2(page,
|
|
|
+ qw,
|
|
|
+ "op_id_code,opName = (select rtrim(name) from a_employee_mi where code = op_id_code ),"));
|
|
|
qp.setTotal(page.getTotal());
|
|
|
break;
|
|
|
case 2:
|
|
|
- qp.setData(dao.getZhuYuanFeiYongXiangMuFenLei(page, keShiLieBiao, param.getStartTime(),
|
|
|
- param.getEndTime(), param.getChargeCodeMx(), renHuanCodeHeCodeRs.getCode(), renHuanCodeHeCodeRs.getCodeRs(),
|
|
|
- param.getReqDeptCode(), "charge_code_mx"));
|
|
|
+ qw.groupBy("charge_code_mx,serial");
|
|
|
+ qp.setData(dao.getZhuYuanFeiYongXiangMuFenLeiV2(page,
|
|
|
+ qw,
|
|
|
+ "charge_code_mx,charge_code_name =(select dbo.get_charge_name(charge_code_mx, serial)),"));
|
|
|
qp.setTotal(page.getTotal());
|
|
|
break;
|
|
|
- default:
|
|
|
+ case 3:
|
|
|
+ // todo 肖蟾自定义分页插件
|
|
|
+// XcPageHelp<KeShiFeiiYongTongJi> pageHelp = new XcPageHelp<>(1, 40);
|
|
|
+// QueryWrapper<?> qw2 = new QueryWrapper<>();
|
|
|
+// qw2.ge("charge_date", "2023-02-01 00:00:00")
|
|
|
+// .le("charge_date", "2023-02-28 23:59:59");
|
|
|
+//
|
|
|
+// dao.test(pageHelp, qw2, "3100000");
|
|
|
+// if (true) {
|
|
|
+// return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "测试");
|
|
|
+// }
|
|
|
if (param.getTotal() == 0) {
|
|
|
- qp = dao.getKeShiFeiYongZhuYuanTotal(keShiLieBiao, param.getStartTime(), param.getEndTime(),
|
|
|
- param.getChargeCodeMx(), renHuanCodeHeCodeRs.getCode(), renHuanCodeHeCodeRs.getCodeRs(), param.getReqDeptCode());
|
|
|
+ qp = dao.getKeShiFeiYongZhuYuanTotal(keShiLieBiao, param.getStartTime(), param.getEndTime(), param.getChargeCodeMx(), renHuanCodeHeCodeRs.getCode(), renHuanCodeHeCodeRs.getCodeRs(), param.getReqDeptCode());
|
|
|
}
|
|
|
- qp.setData(dao.getKeShiFeiYongZhuYuan(param.getCurrentPage(), param.getPageSize(), keShiLieBiao, param.getStartTime(), param.getEndTime(),
|
|
|
- param.getChargeCodeMx(), renHuanCodeHeCodeRs.getCode(), renHuanCodeHeCodeRs.getCodeRs(), param.getReqDeptCode()));
|
|
|
+ qp.setData(dao.getKeShiFeiYongZhuYuan(param.getCurrentPage(), param.getPageSize(), keShiLieBiao, param.getStartTime(), param.getEndTime(), param.getChargeCodeMx(), renHuanCodeHeCodeRs.getCode(), renHuanCodeHeCodeRs.getCodeRs(), param.getReqDeptCode()));
|
|
|
+
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ qw.groupBy("a.ward_code");
|
|
|
+ qp.setData(dao.getZhuYuanFeiYongXiangMuFenLeiV2(page,
|
|
|
+ qw,
|
|
|
+ "a.ward_code,wardCodeName = (select rtrim(name) from zd_unit_code where code = a.ward_code),"));
|
|
|
+ qp.setTotal(page.getTotal());
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+
|
|
|
break;
|
|
|
}
|
|
|
} else {
|
|
|
- huanZheBiao = "mz_patient_mi";
|
|
|
+ if (StringUtil.notBlank(param.getStartTime())) {
|
|
|
+ qw.ge("confirm_time", param.getStartTime());
|
|
|
+ qw.le("confirm_time", param.getEndTime());
|
|
|
+ }
|
|
|
+ if (ListUtil.notBlank(param.getExecUnitList())) {
|
|
|
+ qw.in("exec_dept", param.getExecUnitList());
|
|
|
+ }
|
|
|
+ if (StringUtil.notBlank(param.getChargeCodeMx())) {
|
|
|
+ qw.eq("charge_item_code", param.getChargeCodeMx());
|
|
|
+ }
|
|
|
+ if (StringUtil.notBlank(param.getCode())) {
|
|
|
+ qw.eq("confirm_id", param.getCode());
|
|
|
+ }
|
|
|
+ if (StringUtil.notBlank(param.getReqDeptCode())) {
|
|
|
+ qw.eq("warn_dept", param.getReqDeptCode());
|
|
|
+ }
|
|
|
+
|
|
|
switch (param.getFenLei()) {
|
|
|
case 0:
|
|
|
- qp.setData(dao.getMenZhenFeiYongXiangMuFenLei(page, keShiLieBiao, param.getStartTime(), param.getEndTime(),
|
|
|
- param.getChargeCodeMx(), renHuanCodeHeCodeRs.getCode(), renHuanCodeHeCodeRs.getCodeRs(), param.getReqDeptCode(), "CONVERT(varchar(100),charge_date, 23)"));
|
|
|
+ qw.groupBy("CONVERT(varchar(100),confirm_time, 23)");
|
|
|
+ qp.setData(dao.getMenZhenFeiYongXiangMuFenLeiV2(
|
|
|
+ page,
|
|
|
+ qw,
|
|
|
+ "CONVERT(varchar(100),confirm_time, 23) as charge_date_string,"
|
|
|
+ ));
|
|
|
qp.setTotal(page.getTotal());
|
|
|
break;
|
|
|
case 1:
|
|
|
- qp.setData(dao.getMenZhenFeiYongXiangMuFenLei(page, keShiLieBiao, param.getStartTime(), param.getEndTime(),
|
|
|
- param.getChargeCodeMx(), renHuanCodeHeCodeRs.getCode(), renHuanCodeHeCodeRs.getCodeRs(), param.getReqDeptCode(), "confirm_id"));
|
|
|
+ qw.groupBy("confirm_id");
|
|
|
+ qp.setData(
|
|
|
+ dao.getMenZhenFeiYongXiangMuFenLeiV2(page,
|
|
|
+ qw,
|
|
|
+ "confirm_id,opName = (select rtrim(name) from a_employee_mi where code = confirm_id),")
|
|
|
+ );
|
|
|
qp.setTotal(page.getTotal());
|
|
|
break;
|
|
|
case 2:
|
|
|
- qp.setData(dao.getMenZhenFeiYongXiangMuFenLei(page, keShiLieBiao, param.getStartTime(), param.getEndTime(),
|
|
|
- param.getChargeCodeMx(), renHuanCodeHeCodeRs.getCode(), renHuanCodeHeCodeRs.getCodeRs(), param.getReqDeptCode(), "charge_item_code"));
|
|
|
+ qw.groupBy("charge_item_code,group_no");
|
|
|
+ qp.setData(
|
|
|
+ dao.getMenZhenFeiYongXiangMuFenLeiV2(page,
|
|
|
+ qw,
|
|
|
+ "charge_item_code as charge_code_mx,charge_code_name =(select dbo.get_charge_name(charge_item_code, group_no)),")
|
|
|
+ );
|
|
|
qp.setTotal(page.getTotal());
|
|
|
break;
|
|
|
- default:
|
|
|
+ case 3:
|
|
|
if (param.getTotal() == 0) {
|
|
|
- qp = dao.getMenZhenFeiYongTotal(keShiLieBiao, param.getStartTime(), param.getEndTime(),
|
|
|
- param.getChargeCodeMx(), renHuanCodeHeCodeRs.getCode(), renHuanCodeHeCodeRs.getCodeRs(), param.getReqDeptCode());
|
|
|
+ qp = dao.getMenZhenFeiYongTotal(keShiLieBiao, param.getStartTime(), param.getEndTime(), param.getChargeCodeMx(), renHuanCodeHeCodeRs.getCode(), renHuanCodeHeCodeRs.getCodeRs(), param.getReqDeptCode());
|
|
|
}
|
|
|
- qp.setData(dao.getMenZhenFeiYong(param.getCurrentPage(), param.getPageSize(), keShiLieBiao, param.getStartTime(), param.getEndTime(),
|
|
|
- param.getChargeCodeMx(), renHuanCodeHeCodeRs.getCode(), renHuanCodeHeCodeRs.getCodeRs(), param.getReqDeptCode()));
|
|
|
+ qp.setData(dao.getMenZhenFeiYong(param.getCurrentPage(), param.getPageSize(), keShiLieBiao, param.getStartTime(), param.getEndTime(), param.getChargeCodeMx(), renHuanCodeHeCodeRs.getCode(), renHuanCodeHeCodeRs.getCodeRs(), param.getReqDeptCode()));
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ qw.groupBy("warn_dept");
|
|
|
+ qp.setData(dao.getMenZhenFeiYongXiangMuFenLeiV2(
|
|
|
+ page,
|
|
|
+ qw,
|
|
|
+ "warn_dept as wardCode,wardCodeName = (select rtrim(name) from zd_unit_code where code = warn_dept),"));
|
|
|
+ qp.setTotal(page.getTotal());
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- pingJieZiDuanMingChen(qp, huanZheBiao);
|
|
|
+// pingJieZiDuanMingChen(qp, huanZheBiao);
|
|
|
return ResultVoUtil.success(qp);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
private void pingJieZiDuanMingChen(KeShiFeiiYongTongJi qp, String huanZheBiao) {
|
|
|
if (qp.getData() != null && !qp.getData().isEmpty()) {
|
|
|
Set<String> huanZheHaoSet = new HashSet<>();
|
|
|
@@ -139,28 +228,18 @@ public class KeShiShouRuServer {
|
|
|
});
|
|
|
|
|
|
|
|
|
- Map<String, String> huanZheXingMingMap = dao.huanZheXingMing(huanZheHaoSet, huanZheBiao)
|
|
|
- .stream()
|
|
|
- .collect(Collectors.toMap(GetDropdownBox::getCode, GetDropdownBox::getName, (key1, key2) -> key1));
|
|
|
- Map<String, String> xiangMuMingChenMap = dao.xiangMuMingChen(xiangMuSet)
|
|
|
- .stream()
|
|
|
- .collect(Collectors.toMap(GetDropdownBox::getCode, GetDropdownBox::getName, (key1, key2) -> key1));
|
|
|
+ Map<String, String> huanZheXingMingMap = dao.huanZheXingMing(huanZheHaoSet, huanZheBiao).stream().collect(Collectors.toMap(GetDropdownBox::getCode, GetDropdownBox::getName, (key1, key2) -> key1));
|
|
|
+ Map<String, String> xiangMuMingChenMap = dao.xiangMuMingChen(xiangMuSet).stream().collect(Collectors.toMap(GetDropdownBox::getCode, GetDropdownBox::getName, (key1, key2) -> key1));
|
|
|
|
|
|
- Map<String, String> huoQuKeShiMap = dao.huoQuKeShiHuoRenYuan(keShiSet, "zd_unit_code")
|
|
|
- .stream()
|
|
|
- .collect(Collectors.toMap(GetDropdownBox::getCode, GetDropdownBox::getName, (key1, key2) -> key1));
|
|
|
+ Map<String, String> huoQuKeShiMap = dao.huoQuKeShiHuoRenYuan(keShiSet, "zd_unit_code").stream().collect(Collectors.toMap(GetDropdownBox::getCode, GetDropdownBox::getName, (key1, key2) -> key1));
|
|
|
|
|
|
// 获取人员信息
|
|
|
List<GetDropdownBox> RenYuan = dao.huoQuKeShiHuoRenYuan(luRuRenSet, "a_employee_mi");
|
|
|
// 第一次用 code 匹配
|
|
|
- Map<String, String> luRuRenXingMingMap = RenYuan
|
|
|
- .stream()
|
|
|
- .collect(Collectors.toMap(GetDropdownBox::getCode, GetDropdownBox::getName, (key1, key2) -> key1));
|
|
|
+ Map<String, String> luRuRenXingMingMap = RenYuan.stream().collect(Collectors.toMap(GetDropdownBox::getCode, GetDropdownBox::getName, (key1, key2) -> key1));
|
|
|
|
|
|
// 第二次用 code_rs 匹配
|
|
|
- Map<String, String> luRuRenXingMingRenShiMap = RenYuan
|
|
|
- .stream()
|
|
|
- .collect(Collectors.toMap(GetDropdownBox::getCodeRs, GetDropdownBox::getName, (key1, key2) -> key1));
|
|
|
+ Map<String, String> luRuRenXingMingRenShiMap = RenYuan.stream().collect(Collectors.toMap(GetDropdownBox::getCodeRs, GetDropdownBox::getName, (key1, key2) -> key1));
|
|
|
|
|
|
qp.getData().forEach(item -> {
|
|
|
if (huanZheXingMingMap.containsKey(item.getPatient())) {
|