|
|
@@ -43,6 +43,7 @@ public class MzChargeDetailController {
|
|
|
private YpZdDictService ypZdDictService;
|
|
|
@Autowired
|
|
|
private MzPatientMiService mzPatientMiService;
|
|
|
+
|
|
|
/**
|
|
|
* 查询费用列表
|
|
|
*
|
|
|
@@ -50,7 +51,7 @@ public class MzChargeDetailController {
|
|
|
*/
|
|
|
@UserLoginToken
|
|
|
@RequestMapping(value = "/listMzChargeDetail", method = {RequestMethod.POST})
|
|
|
- public Map<String, Object> listMzChargeDetail(@RequestBody MzChargeDetailPageDto mzChargeDetailPageDto,HttpServletRequest httpServletRequest) {
|
|
|
+ public Map<String, Object> listMzChargeDetail(@RequestBody MzChargeDetailPageDto mzChargeDetailPageDto, HttpServletRequest httpServletRequest) {
|
|
|
Map<String, Object> resultMap = new HashMap<>();
|
|
|
try {
|
|
|
if (mzChargeDetailPageDto == null || mzChargeDetailPageDto.getMzChargeDetail() == null) {
|
|
|
@@ -60,16 +61,16 @@ public class MzChargeDetailController {
|
|
|
}
|
|
|
PageViewVo pageViewVo = new PageViewVo();
|
|
|
MzChargeDetail mzChargeDetail = mzChargeDetailPageDto.getMzChargeDetail();
|
|
|
- List<MzChargeDetail> mzChargeDetails=new ArrayList<>();
|
|
|
+ List<MzChargeDetail> mzChargeDetails = new ArrayList<>();
|
|
|
if (PayMarkEnum.NO_CHARGE.code.equals(mzChargeDetail.getPayMark())) {
|
|
|
if (StringUtils.isNotBlank(mzChargeDetail.getPatientId())) {
|
|
|
- mzChargeDetails.addAll( mzChargeDetailService.unPaidToFullChargeDetail(mzChargeDetail.getPatientId()));
|
|
|
+ mzChargeDetails.addAll(mzChargeDetailService.unPaidToFullChargeDetail(mzChargeDetail.getPatientId()));
|
|
|
}
|
|
|
- if(StringUtils.isNotBlank(mzChargeDetail.getName())){
|
|
|
- List<MzPatientMi> mzPatientMis=mzPatientMiService.queryByName(mzChargeDetail.getName());
|
|
|
- if(mzPatientMis!=null && mzPatientMis.size()>0){
|
|
|
- for (MzPatientMi m:mzPatientMis){
|
|
|
- if(m!=null && StringUtils.isNotBlank(m.getPatientId())){
|
|
|
+ if (StringUtils.isNotBlank(mzChargeDetail.getName())) {
|
|
|
+ List<MzPatientMi> mzPatientMis = mzPatientMiService.queryByName(mzChargeDetail.getName());
|
|
|
+ if (mzPatientMis != null && mzPatientMis.size() > 0) {
|
|
|
+ for (MzPatientMi m : mzPatientMis) {
|
|
|
+ if (m != null && StringUtils.isNotBlank(m.getPatientId())) {
|
|
|
mzChargeDetails.addAll(mzChargeDetailService.unPaidToFullChargeDetail(m.getPatientId()));
|
|
|
}
|
|
|
}
|
|
|
@@ -106,7 +107,7 @@ public class MzChargeDetailController {
|
|
|
if (StringUtils.isBlank(mzChargeDetail.getDoctorCode())) {
|
|
|
mzChargeDetail.setDoctorCode(null);
|
|
|
}
|
|
|
- if(YesNoEnum.YES.equals(mzChargeDetailPageDto.getOwnData())){
|
|
|
+ if (YesNoEnum.YES.equals(mzChargeDetailPageDto.getOwnData())) {
|
|
|
User tokenUser = TokenUtil.getUser(httpServletRequest);
|
|
|
mzChargeDetailPageDto.setOpId(tokenUser.getUserIdCode());
|
|
|
}
|
|
|
@@ -122,12 +123,12 @@ public class MzChargeDetailController {
|
|
|
resultMap.put("message", "查询费用列表信息成功");
|
|
|
resultMap.put("pageViewVo", pageViewVo);
|
|
|
return resultMap;
|
|
|
- }catch (MzException e) {
|
|
|
+ } catch (MzException e) {
|
|
|
log.error("查询费用列表失败,错误信息{}", e);
|
|
|
resultMap.put("code", -1);
|
|
|
- resultMap.put("message", "查询费用列表失败"+e.getMessage());
|
|
|
+ resultMap.put("message", "查询费用列表失败" + e.getMessage());
|
|
|
return resultMap;
|
|
|
- } catch (Exception e) {
|
|
|
+ } catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
resultMap.put("code", -1);
|
|
|
resultMap.put("message", "查询费用列表失败,系统出错,请联系管理员");
|
|
|
@@ -312,7 +313,7 @@ public class MzChargeDetailController {
|
|
|
// return resultMap;
|
|
|
// }
|
|
|
// }
|
|
|
- int receiptNo=mzChargeDetailService.chargeFeeForByjz(tokenUser.getUserIdCode(), mzDepositFileVo);
|
|
|
+ int receiptNo = mzChargeDetailService.chargeFeeForByjz(tokenUser.getUserIdCode(), mzDepositFileVo);
|
|
|
resultMap.put("receiptNo", receiptNo);
|
|
|
} else {
|
|
|
mzChargeDetailService.chargeFee(tokenUser.getUserIdCode(), mzDepositFileVo);
|
|
|
@@ -331,7 +332,7 @@ public class MzChargeDetailController {
|
|
|
e.printStackTrace();
|
|
|
resultMap.put("code", -1);
|
|
|
resultMap.put("message", "缴费失败,系统出错,请联系管理员");
|
|
|
- log.error("缴费失败,系统异常"+e);
|
|
|
+ log.error("缴费失败,系统异常" + e);
|
|
|
return resultMap;
|
|
|
}
|
|
|
}
|
|
|
@@ -339,6 +340,7 @@ public class MzChargeDetailController {
|
|
|
|
|
|
/**
|
|
|
* 修改病人姓名 120病人缴费时调用
|
|
|
+ *
|
|
|
* @param mzChargeDetail
|
|
|
* @return
|
|
|
*/
|
|
|
@@ -347,7 +349,7 @@ public class MzChargeDetailController {
|
|
|
public Map<String, Object> changePatientIdName(@RequestBody MzChargeDetail mzChargeDetail) {
|
|
|
Map<String, Object> resultMap = new HashMap<>();
|
|
|
try {
|
|
|
- if(mzChargeDetail==null){
|
|
|
+ if (mzChargeDetail == null) {
|
|
|
resultMap.put("code", -1);
|
|
|
resultMap.put("message", "参数不能为空");
|
|
|
return resultMap;
|
|
|
@@ -362,16 +364,16 @@ public class MzChargeDetailController {
|
|
|
resultMap.put("message", "病人编码不能为空");
|
|
|
return resultMap;
|
|
|
}
|
|
|
- if (mzChargeDetail.getTimes()==null) {
|
|
|
+ if (mzChargeDetail.getTimes() == null) {
|
|
|
resultMap.put("code", -1);
|
|
|
resultMap.put("message", "病人就诊次数集合不能为空");
|
|
|
return resultMap;
|
|
|
}
|
|
|
- mzChargeDetailService.modifyNameByPatientIdAndTimes(mzChargeDetail.getName(),mzChargeDetail.getPatientId(),mzChargeDetail.getTimes());
|
|
|
+ mzChargeDetailService.modifyNameByPatientIdAndTimes(mzChargeDetail.getName(), mzChargeDetail.getPatientId(), mzChargeDetail.getTimes());
|
|
|
resultMap.put("code", 0);
|
|
|
resultMap.put("message", "病人姓名更新成功");
|
|
|
return resultMap;
|
|
|
- }catch (Exception e) {
|
|
|
+ } catch (Exception e) {
|
|
|
resultMap.put("code", -1);
|
|
|
resultMap.put("message", "病人姓名更新失败,系统出错,请联系管理员");
|
|
|
log.error("病人姓名更新失败,系统异常,错误信息{}", e.getMessage());
|
|
|
@@ -771,7 +773,7 @@ public class MzChargeDetailController {
|
|
|
BigDecimal totalPriceCount = BigDecimal.ZERO;
|
|
|
totalPriceCount = getBigDecimal(data, totalPriceCount);
|
|
|
User tokenUser = TokenUtil.getUser(httpServletRequest);
|
|
|
- MzReceiptSerial mzReceiptSerial=mzReceiptSerialService.queryReceiptDetailsByReceiptSn(Integer.valueOf(chargeFeeParamsVo.getSerialNo()));
|
|
|
+ MzReceiptSerial mzReceiptSerial = mzReceiptSerialService.queryReceiptDetailsByReceiptSn(Integer.valueOf(chargeFeeParamsVo.getSerialNo()));
|
|
|
resultMap.put("code", 0);
|
|
|
resultMap.put("data", data);
|
|
|
resultMap.put("totalPriceCount", totalPriceCount);
|
|
|
@@ -794,7 +796,6 @@ public class MzChargeDetailController {
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 查询病人的所有缴费明细
|
|
|
*
|
|
|
@@ -825,13 +826,13 @@ public class MzChargeDetailController {
|
|
|
resultMap.put("message", "病人id不能为空");
|
|
|
return resultMap;
|
|
|
}
|
|
|
- List<Map<String,Object>> mzChargeDetailList= mzChargeDetailService.queryChargeListByPatient(chargeFeeParamsVo.getHisData(), "%" + chargeFeeParamsVo.getPatientId() + "%", null, null, chargeFeeParamsVo.getBeginDate(), chargeFeeParamsVo.getEndDate());
|
|
|
- List<Map<String, Object>> data=new ArrayList<>();
|
|
|
- if(mzChargeDetailList!=null){
|
|
|
- for(Map<String,Object> map:mzChargeDetailList){
|
|
|
- if(map!=null){
|
|
|
- Integer realNo= (Integer)map.get("real_no");
|
|
|
- data.addAll(mzChargeDetailService.queryChargeDetailByPatient(chargeFeeParamsVo.getHisData(), chargeFeeParamsVo.getPatientId(),realNo.toString()));
|
|
|
+ List<Map<String, Object>> mzChargeDetailList = mzChargeDetailService.queryChargeListByPatient(chargeFeeParamsVo.getHisData(), "%" + chargeFeeParamsVo.getPatientId() + "%", null, null, chargeFeeParamsVo.getBeginDate(), chargeFeeParamsVo.getEndDate());
|
|
|
+ List<Map<String, Object>> data = new ArrayList<>();
|
|
|
+ if (mzChargeDetailList != null) {
|
|
|
+ for (Map<String, Object> map : mzChargeDetailList) {
|
|
|
+ if (map != null) {
|
|
|
+ Integer realNo = (Integer) map.get("real_no");
|
|
|
+ data.addAll(mzChargeDetailService.queryChargeDetailByPatient(chargeFeeParamsVo.getHisData(), chargeFeeParamsVo.getPatientId(), realNo.toString()));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -854,7 +855,7 @@ public class MzChargeDetailController {
|
|
|
}
|
|
|
|
|
|
private BigDecimal getBigDecimal(List<Map<String, Object>> data, BigDecimal totalPriceCount) {
|
|
|
- if (data != null &&data.size() > 0) {
|
|
|
+ if (data != null && data.size() > 0) {
|
|
|
for (Map<String, Object> entity : data) {
|
|
|
Double totalPriceD = (Double) entity.get("total_price");
|
|
|
BigDecimal totalPrice = BigDecimal.ZERO;
|
|
|
@@ -882,8 +883,6 @@ public class MzChargeDetailController {
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* 查询科室核算报表 caseType = 1 申请科室核算报表 0 执行科室核算报表
|
|
|
*
|
|
|
@@ -923,24 +922,24 @@ public class MzChargeDetailController {
|
|
|
List<Map<String, Object>> depetBusinessReports = mzChargeDetailService.queryDepetBusinessReport(thmzmxsrParamsVo);
|
|
|
thmzmxsrParamsVo.setHisData(YesNoEnum.YES);
|
|
|
List<Map<String, Object>> depetBusinessReportsHis = mzChargeDetailService.queryDepetBusinessReport(thmzmxsrParamsVo);
|
|
|
- BigDecimal totalAmount = fomartThmzmxsr(depetBusinessReports,depetBusinessReportsHis);
|
|
|
- resultMap.put("data", depetBusinessReports);
|
|
|
- resultMap.put("totalAmount", totalAmount);
|
|
|
+
|
|
|
+
|
|
|
+ if (fomartThmzBussinessReport(resultMap, depetBusinessReports, depetBusinessReportsHis)) return resultMap;
|
|
|
+ resultMap.put("code", -1);
|
|
|
+ resultMap.put("message", "未查询到科室核算报表");
|
|
|
return resultMap;
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
- log.error("查询门诊收费明细失败,错误信息{}", e.getMessage());
|
|
|
+ log.error("查询科室核算报表失败,错误信息{}", e.getMessage());
|
|
|
resultMap.put("code", -1);
|
|
|
- resultMap.put("message", "查询门诊收费明细失败");
|
|
|
+ resultMap.put("message", "查询科室核算报表失败");
|
|
|
return resultMap;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- private BigDecimal fomartThmzmxsr(List<Map<String, Object>> depetBusinessReports,List<Map<String, Object>> depetBusinessReportsHis) {
|
|
|
- BigDecimal totalAmount = BigDecimal.ZERO;
|
|
|
+ private boolean fomartThmzBussinessReport(Map<String, Object> resultMap, List<Map<String, Object>> depetBusinessReports, List<Map<String, Object>> depetBusinessReportsHis) {
|
|
|
if (depetBusinessReports != null && depetBusinessReports.size() > 0) {
|
|
|
+ String defaultDept ="defaultDept";
|
|
|
List<MzBillItem> mzBillItems = mzBillItemService.queryMzBillItem();
|
|
|
Map<String, String> mzBillItemMap = null;
|
|
|
if (mzBillItems != null) {
|
|
|
@@ -954,26 +953,109 @@ public class MzChargeDetailController {
|
|
|
//科室排重集
|
|
|
Set<String> depetSet = new HashSet<>();
|
|
|
//父类码与核算码的关系
|
|
|
- Map<String,List<String>> parentMap = new HashMap<>();
|
|
|
+ Map<String, List<String>> parentMap = new HashMap<>();
|
|
|
for (Map<String, Object> map : depetBusinessReports) {
|
|
|
- repeatSet.add((Date)map.get("charge_dcount_date"));
|
|
|
+ repeatSet.add((Date) map.get("charge_dcount_date"));
|
|
|
fomartData(mzBillItemMap, parentList, depetList, depetSet, parentMap, map);
|
|
|
-
|
|
|
}
|
|
|
for (Map<String, Object> map : depetBusinessReportsHis) {
|
|
|
- if(repeatSet.contains(map.get("charge_dcount_date"))){
|
|
|
+ if (repeatSet.contains(map.get("charge_dcount_date"))) {
|
|
|
continue;
|
|
|
}
|
|
|
depetBusinessReports.add(map);
|
|
|
fomartData(mzBillItemMap, parentList, depetList, depetSet, parentMap, map);
|
|
|
}
|
|
|
+ Map<String,BigDecimal> formatMap = new HashMap<>();
|
|
|
|
|
|
+ StringBuffer sbf = new StringBuffer();
|
|
|
+ for (Map<String, Object> map : depetBusinessReports) {
|
|
|
+ sbf.setLength(0);
|
|
|
+ sbf.append(map.get("audit_code")).append("_").append(map.get("exec_dept"));
|
|
|
+ String key = sbf.toString();
|
|
|
+ BigDecimal hadAmount= formatMap.get(key);
|
|
|
+ BigDecimal thisAmount=(BigDecimal)map.get("total_charge");
|
|
|
+ if(hadAmount==null){
|
|
|
+ hadAmount=BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+ if(thisAmount==null){
|
|
|
+ thisAmount=BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+ hadAmount=hadAmount.add(thisAmount);
|
|
|
+ formatMap.put(key,hadAmount);
|
|
|
+ }
|
|
|
+ //按部门统计的总额
|
|
|
+ Map<String,BigDecimal> depeAmounts = new HashMap<>();
|
|
|
+ //按核算码统计的总额
|
|
|
+ Map<String,BigDecimal> auditCodeAmounts = new HashMap<>();
|
|
|
+ List<List<BigDecimal>> realDatas = new ArrayList<>();
|
|
|
+ boolean hasNullKey = false;
|
|
|
+ for (int j=0;j<parentList.size();j++){
|
|
|
+ Map<String, Object> parent = parentList.get(j);
|
|
|
+ List<String> auditCodeList = (List<String>)parent.get("hsmList");
|
|
|
+ for (int k = 0;k<auditCodeList.size();k++){
|
|
|
+ List<BigDecimal> tempList = new ArrayList<>();
|
|
|
+ for (int i =0;i<depetList.size();i++){
|
|
|
+ sbf.setLength(0);
|
|
|
+ sbf.append(auditCodeList.get(k)).append("_").append(depetList.get(i).get("exec_dept"));
|
|
|
+ BigDecimal tempAmount=formatMap.get(sbf.toString());
|
|
|
+ tempList.add(tempAmount);
|
|
|
+ if(tempAmount!=null){
|
|
|
+ String execDept =(String) depetList.get(i).get("exec_dept");
|
|
|
+ if(execDept==null){
|
|
|
+ execDept=defaultDept;
|
|
|
+ hasNullKey=true;
|
|
|
+ }
|
|
|
+ BigDecimal countDeptAmont=depeAmounts.get(execDept);
|
|
|
+ if(countDeptAmont==null){
|
|
|
+ countDeptAmont=BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+ countDeptAmont=countDeptAmont.add(tempAmount);
|
|
|
+ depeAmounts.put(execDept,countDeptAmont);
|
|
|
+
|
|
|
+ BigDecimal countAuditAmont=auditCodeAmounts.get(auditCodeList.get(k));
|
|
|
+ if(countAuditAmont==null){
|
|
|
+ countAuditAmont=BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+ countAuditAmont=countAuditAmont.add(tempAmount);
|
|
|
+ auditCodeAmounts.put(auditCodeList.get(k),countAuditAmont);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ realDatas.add(tempList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ BigDecimal totalAmount = BigDecimal.ZERO;
|
|
|
+ for (Map<String, Object> map:depetList){
|
|
|
+ BigDecimal deptAmount=depeAmounts.get(map.get("exec_dept"));
|
|
|
+ if(hasNullKey && map.get("exec_dept")==null){
|
|
|
+ deptAmount=depeAmounts.get(defaultDept);
|
|
|
+ }
|
|
|
+ if(deptAmount!=null){
|
|
|
+ totalAmount=totalAmount.add(deptAmount);
|
|
|
+ }
|
|
|
+ map.put("amount",deptAmount);
|
|
|
+ }
|
|
|
+ List<BigDecimal> hsmAmounts = new ArrayList<>();
|
|
|
+ for (Map<String, Object> map:parentList){
|
|
|
+ List<String> auditCodeList = (List<String>)map.get("hsmList");
|
|
|
+ for (String str:auditCodeList){
|
|
|
+ hsmAmounts.add(auditCodeAmounts.get(str));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ resultMap.put("message", "查询科室核算报表成功");
|
|
|
+ resultMap.put("depetList", depetList);
|
|
|
+ resultMap.put("parentList", parentList);
|
|
|
+ resultMap.put("realDatas", realDatas);
|
|
|
+ resultMap.put("hsmAmounts", hsmAmounts);
|
|
|
+ resultMap.put("totalAmount", totalAmount);
|
|
|
+ return true;
|
|
|
}
|
|
|
- return totalAmount.setScale(2, BigDecimal.ROUND_FLOOR);
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 将数据库数据格式转成页面表格需要格式 结构化数据
|
|
|
+ *
|
|
|
* @param mzBillItemMap
|
|
|
* @param parentList
|
|
|
* @param depetList
|
|
|
@@ -982,28 +1064,28 @@ public class MzChargeDetailController {
|
|
|
* @param map
|
|
|
*/
|
|
|
private void fomartData(Map<String, String> mzBillItemMap, List<Map<String, Object>> parentList, List<Map<String, Object>> depetList, Set<String> depetSet, Map<String, List<String>> parentMap, Map<String, Object> map) {
|
|
|
- String execDept=(String) map.get("exec_dept");
|
|
|
- if(!depetSet.contains(execDept)){
|
|
|
+ String execDept = (String) map.get("exec_dept");
|
|
|
+ if (!depetSet.contains(execDept)) {
|
|
|
depetSet.add(execDept);
|
|
|
Map<String, Object> deptTemp = new HashMap<>();
|
|
|
- deptTemp.put("execDeptName",zdUnitCodeService.queryDeptNameByIdInCache(execDept));
|
|
|
- deptTemp.put("execDeptCode",execDept);
|
|
|
+ // deptTemp.put("execDeptName", zdUnitCodeService.queryDeptNameByIdInCache(execDept));
|
|
|
+ deptTemp.put("exec_dept", execDept);
|
|
|
depetList.add(deptTemp);
|
|
|
}
|
|
|
- String parent=(String) map.get("parent");
|
|
|
+ String parent = (String) map.get("parent");
|
|
|
List<String> auditCodeList = parentMap.get(parent);
|
|
|
- if(auditCodeList==null){
|
|
|
+ if (auditCodeList == null) {
|
|
|
Map<String, Object> parentTemp = new HashMap<>();
|
|
|
parentTemp.put("parentName", mzBillItemMap.get(parent));
|
|
|
- parentTemp.put("parentCode",parent);
|
|
|
+ parentTemp.put("parentCode", parent);
|
|
|
auditCodeList = new ArrayList<>();
|
|
|
auditCodeList.add((String) map.get("audit_code"));
|
|
|
- parentTemp.put("hsmList",auditCodeList);
|
|
|
+ parentTemp.put("hsmList", auditCodeList);
|
|
|
parentList.add(parentTemp);
|
|
|
- parentMap.put(parent,auditCodeList);
|
|
|
- }else {
|
|
|
- String auditCode=(String) map.get("audit_code");
|
|
|
- if(!auditCodeList.contains(auditCode)){
|
|
|
+ parentMap.put(parent, auditCodeList);
|
|
|
+ } else {
|
|
|
+ String auditCode = (String) map.get("audit_code");
|
|
|
+ if (!auditCodeList.contains(auditCode)) {
|
|
|
auditCodeList.add(auditCode);
|
|
|
}
|
|
|
}
|