|
@@ -6151,6 +6151,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
|
|
|
}
|
|
|
}
|
|
|
if (mzChargeDetailList != null && !mzChargeDetailList.isEmpty()) {
|
|
|
+ String discountLv = shareholderCardService.queryDiscountLvByPatientId(mzChargeDetailList.get(0).getPatientId());
|
|
|
if(needDiscount){
|
|
|
String zyDiscountGroup = dictDataService.queryDictVlaue("2.0","zy_discount_group","81");
|
|
|
List<String> zyDiscountGroups = CollUtil.newArrayList(zyDiscountGroup.split(","));
|
|
@@ -6177,7 +6178,9 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
|
|
|
if(mzChargeDetail.getOrigPrice()!=null && mzChargeDetail.getOrigPrice().compareTo(mzChargeDetail.getUnitPrice())==0){
|
|
|
mzChargeDetail.setOrigPrice(unitPrice);
|
|
|
}
|
|
|
- if(CollUtil.isNotEmpty(zdDiscountDetailMap)){
|
|
|
+ // 0 套餐优惠优先 1 股东卡优先
|
|
|
+ String disLv = getDisocuntLv(zdDiscountDetailMap,chargeItemCodes,mzChargeDetail.getWarnDept(),mzChargeDetail.getChargeItemCode(),discountLv);
|
|
|
+ if(NumberEnum.ONE.getCode().equals(disLv)){
|
|
|
ZdDiscountDetail zdDiscountDetail;
|
|
|
if("1".equals(Convert.toStr(mzChargeDetail.getReqYj(),"0")) && CollUtil.isNotEmpty(ReqNoGroup) && mzChargeDetail.getReqNo() != null && CollUtil.isNotEmpty(ReqNoGroup.get(mzChargeDetail.getReqNo()))){
|
|
|
|
|
@@ -6256,6 +6259,37 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
|
|
|
return totalPayable.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
}
|
|
|
|
|
|
+ private String getDisocuntLv(Map<String, ZdDiscountDetail> zdDiscountDetailMap, List<String> chargeItemCodes, String warnDept, String chargeItemCode,String disocuntLv) {
|
|
|
+ String disLv = NumberEnum.ZERO.getCode();
|
|
|
+ boolean tcDiscount = false;
|
|
|
+ Map<String, BigDecimal> discountMap = discountService.getTcDiscountRate(2, null, chargeItemCodes);
|
|
|
+ if(CollUtil.isEmpty(discountMap) && StrUtil.isNotBlank(warnDept)){
|
|
|
+ discountMap = discountService.getTcDiscountRate(0, warnDept, chargeItemCodes);
|
|
|
+ }
|
|
|
+ if(CollUtil.isNotEmpty(discountMap)){
|
|
|
+ tcDiscount = true;
|
|
|
+ }else {
|
|
|
+ Discount discount ;
|
|
|
+ discount = discountService.getDiscountRate(2, null, chargeItemCode);
|
|
|
+ if (discount ==null && StringUtils.isNotBlank(warnDept)) {
|
|
|
+ discount = discountService.getDiscountRate(YesNoEnum.NO.code, warnDept, chargeItemCode);
|
|
|
+ }
|
|
|
+ if(discount != null){
|
|
|
+ tcDiscount = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //同时又股东卡优惠 和套餐优惠 根据优先级判断
|
|
|
+ if(CollUtil.isNotEmpty(zdDiscountDetailMap) && tcDiscount){
|
|
|
+ if(NumberEnum.ONE.getCode().equals(Convert.toStr(disocuntLv,"0"))){
|
|
|
+ disLv = NumberEnum.ONE.getCode();
|
|
|
+ }
|
|
|
+ }else if (CollUtil.isNotEmpty(zdDiscountDetailMap)){
|
|
|
+ disLv = NumberEnum.ONE.getCode();
|
|
|
+ }
|
|
|
+ return disLv;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
private void setChargeCodes(List<MzChargeDetail> mzChargeDetailList, List<String> chargeItemCodes, List<MzYjReq> tempMzYjReq) {
|
|
|
List<Integer> collect = tempMzYjReq.stream().map(item -> item.getReqNo()).collect(Collectors.toList());
|
|
|
Map<Integer, List<MzYjReq>> ReqNoGroup = tempMzYjReq.stream().collect(Collectors.groupingBy(item -> item.getReqNo()));
|