瀏覽代碼

财务收费四舍五入的问题解决

hurugang 2 年之前
父節點
當前提交
4b63d61f44

+ 3 - 0
src/main/java/cn/hnthyy/thmz/controller/mz/ClinicController.java

@@ -559,6 +559,9 @@ public class ClinicController {
                 resultMap.put("message", "异常数据修复失败,就诊次数为空");
                 return resultMap;
             }
+            if(PayMarkEnum.NO_CHARGE.code.equals(payMark)){
+                receiptNo=0;
+            }
             Clinic clinic = clinicService.queryByPatientIdAndTimesAndReceiptNo(patientId,times,receiptNo);
             if(clinic!=null){
                 resultMap.put("code", -1);

+ 57 - 57
src/main/java/cn/hnthyy/thmz/service/impl/his/mz/MzChargeDetailServiceImpl.java

@@ -748,7 +748,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
         //实际应付金额
         BigDecimal totalPayable = getTotalPayable(mzChargeDetailList, feeMap, false);
         //实际应付金额  四舍五入后的值 收费员收的钱小数点后只有一位有效值
-        BigDecimal totalPayableRound = totalPayable.setScale(1, BigDecimal.ROUND_HALF_UP);
+        BigDecimal totalPayableRound = totalPayable.setScale(2, BigDecimal.ROUND_HALF_UP);
         //单病种收费不设置金额,所以自动设置金额
         if (Constants.DBZJF_CODE.equals(opId)) {
             mzDepositFileVo.getMzDepositFiles().get(0).setAmount(totalPayableRound);
@@ -1044,10 +1044,10 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
                     mzChargeDetail.setDoctorCode(doctorCode == null ? "" : doctorCode);
                 }
                 if (mzChargeDetail.getAmount() != null) {
-                    mzChargeDetail.setAmount(mzChargeDetail.getAmount().setScale(1, BigDecimal.ROUND_HALF_UP));
+                    mzChargeDetail.setAmount(mzChargeDetail.getAmount().setScale(2, BigDecimal.ROUND_HALF_UP));
                     if (mzChargeDetail.getNotDiscountAmount() != null) {
-                        mzChargeDetail.setNotDiscountAmount(mzChargeDetail.getNotDiscountAmount().setScale(1, BigDecimal.ROUND_HALF_UP));
-                        mzChargeDetail.setDiscountAmount(mzChargeDetail.getNotDiscountAmount().subtract(mzChargeDetail.getAmount()).setScale(1, BigDecimal.ROUND_HALF_UP));
+                        mzChargeDetail.setNotDiscountAmount(mzChargeDetail.getNotDiscountAmount().setScale(2, BigDecimal.ROUND_HALF_UP));
+                        mzChargeDetail.setDiscountAmount(mzChargeDetail.getNotDiscountAmount().subtract(mzChargeDetail.getAmount()).setScale(2, BigDecimal.ROUND_HALF_UP));
                     }
                 }
             }
@@ -3039,7 +3039,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
             amountList.add((BigDecimal) resultMap.get(String.valueOf(i)));
             resultMap.remove(String.valueOf(i));
         }
-        discountAmount = notDiscountAmount.subtract(amount).setScale(1, BigDecimal.ROUND_HALF_UP);
+        discountAmount = notDiscountAmount.subtract(amount).setScale(2, BigDecimal.ROUND_HALF_UP);
         resultMap.put("amount", amount);
         resultMap.put("notDiscountAmount", notDiscountAmount);
         resultMap.put("discountAmount", discountAmount);
@@ -5122,58 +5122,58 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
             Map<String, BigDecimal> feeMap = new HashMap<>();
             //实际应付金额
             getTotalPayable(temp, feeMap, needDiscount);
-            for (String key : feeMap.keySet()) {
-                BigDecimal amount = feeMap.get(key).setScale(2, BigDecimal.ROUND_HALF_UP);
-                totalFee = totalFee.add(amount);
-            }
-            totalFee = totalFee.setScale(2, BigDecimal.ROUND_HALF_UP);
-            BigDecimal realTotal = totalFee.setScale(1, BigDecimal.ROUND_HALF_UP);
-            BigDecimal sZero = realTotal.subtract(totalFee);
-            if (sZero.compareTo(BigDecimal.ZERO) != 0) {
-                MzChargeDetail newMzChargeDetail = new MzChargeDetail();
-                newMzChargeDetail.setPatientId(mzChargeDetail.getPatientId());
-                newMzChargeDetail.setTimes(mzChargeDetail.getTimes());
-                newMzChargeDetail.setReceiptNo(receiptNo);
-                newMzChargeDetail.setOrderNo(maxOrderNo);
-                newMzChargeDetail.setItemNo(itemNo++);
-                newMzChargeDetail.setChargeItemCode(Constants.SSWR_CHARGE_ITEM_CODE);
-                newMzChargeDetail.setBillItemCode(Constants.SSWRF);
-                newMzChargeDetail.setQuantity(1D);
-                newMzChargeDetail.setUnitPrice(sZero);
-                newMzChargeDetail.setPayMark(PayMarkEnum.NO_CHARGE.code);
-                newMzChargeDetail.setSerial(Constants.YJ_GROUP_NO);
-                newMzChargeDetail.setSerialNo(0);
-                newMzChargeDetail.setName(mzPatientMi != null ? mzPatientMi.getName() : "");
-                newMzChargeDetail.setGroupNo(Constants.YJ_GROUP_NO);
-                newMzChargeDetail.setDrugWin(1);
-                newMzChargeDetail.setPriceId(temp.get(0).getPriceId());
-                newMzChargeDetail.setPriceTime(temp.get(0).getPriceTime());
-                newMzChargeDetail.setExecDept(temp.get(0).getExecDept());
-                newMzChargeDetail.setPrintFlag(YesNoEnum.NO.code.toString());
-                newMzChargeDetail.setConfirmFlag(ConfirmFlagEnum.NOT_CONFIRM.code);
-                newMzChargeDetail.setWarnDept(temp.get(0).getWarnDept());
-                newMzChargeDetail.setJzFlag(temp.get(0).getJzFlag());
-                newMzChargeDetail.setDoctorCode(temp.get(0).getDoctorCode());
-                newMzChargeDetail.setDoctorFlag(YesNoEnum.YES.code.toString());
-                newMzChargeDetail.setInjectRes(Double.valueOf(YesNoEnum.YES.code));
-                newMzChargeDetail.setRealNo(0);
-                newMzChargeDetail.setYbbxFlag(YesNoEnum.NO.code.toString());
-                newMzChargeDetail.setDetailFlag(YesNoEnum.NO.code.toString());
-                newMzChargeDetail.setOrderType(YesNoEnum.YES.code.toString());
-                newMzChargeDetail.setSupplyNo("Y");
-                newMzChargeDetail.setReqNo(0);
-                newMzChargeDetail.setGroupType(GroupTypeEnum.DIAGNOSIS.code);
-                newMzChargeDetail.setOrderBill(0);
-                newMzChargeDetail.setChargeBillCode(Constants.SSWR_BILL_ITEM_CODE);
-                newMzChargeDetail.setSelfFlag(YesNoEnum.NO.code.toString());
-                newMzChargeDetail.setResponceType(mzPatientMi == null ? Constants.SELF_PAYING_RESPONCE_TYPE : mzPatientMi.getResponseType());
-                newMzChargeDetail.setGlPercentFt(BigDecimal.ONE);
-                newMzChargeDetail.setOrigPrice(newMzChargeDetail.getUnitPrice());
-                newMzChargeDetail.setTcName("四舍五入");
-                newMzChargeDetail.setReqYj(YesNoEnum.YES.code.toString());
-                newMzChargeDetail.setGroupId(YesNoEnum.NO.code);
-                mzChargeDetails.add(newMzChargeDetail);
-            }
+//            for (String key : feeMap.keySet()) {
+//                BigDecimal amount = feeMap.get(key).setScale(2, BigDecimal.ROUND_HALF_UP);
+//                totalFee = totalFee.add(amount);
+//            }
+//            totalFee = totalFee.setScale(2, BigDecimal.ROUND_HALF_UP);
+//            BigDecimal realTotal = totalFee.setScale(1, BigDecimal.ROUND_HALF_UP);
+//            BigDecimal sZero = realTotal.subtract(totalFee);
+//            if (sZero.compareTo(BigDecimal.ZERO) != 0) {
+//                MzChargeDetail newMzChargeDetail = new MzChargeDetail();
+//                newMzChargeDetail.setPatientId(mzChargeDetail.getPatientId());
+//                newMzChargeDetail.setTimes(mzChargeDetail.getTimes());
+//                newMzChargeDetail.setReceiptNo(receiptNo);
+//                newMzChargeDetail.setOrderNo(maxOrderNo);
+//                newMzChargeDetail.setItemNo(itemNo++);
+//                newMzChargeDetail.setChargeItemCode(Constants.SSWR_CHARGE_ITEM_CODE);
+//                newMzChargeDetail.setBillItemCode(Constants.SSWRF);
+//                newMzChargeDetail.setQuantity(1D);
+//                newMzChargeDetail.setUnitPrice(sZero);
+//                newMzChargeDetail.setPayMark(PayMarkEnum.NO_CHARGE.code);
+//                newMzChargeDetail.setSerial(Constants.YJ_GROUP_NO);
+//                newMzChargeDetail.setSerialNo(0);
+//                newMzChargeDetail.setName(mzPatientMi != null ? mzPatientMi.getName() : "");
+//                newMzChargeDetail.setGroupNo(Constants.YJ_GROUP_NO);
+//                newMzChargeDetail.setDrugWin(1);
+//                newMzChargeDetail.setPriceId(temp.get(0).getPriceId());
+//                newMzChargeDetail.setPriceTime(temp.get(0).getPriceTime());
+//                newMzChargeDetail.setExecDept(temp.get(0).getExecDept());
+//                newMzChargeDetail.setPrintFlag(YesNoEnum.NO.code.toString());
+//                newMzChargeDetail.setConfirmFlag(ConfirmFlagEnum.NOT_CONFIRM.code);
+//                newMzChargeDetail.setWarnDept(temp.get(0).getWarnDept());
+//                newMzChargeDetail.setJzFlag(temp.get(0).getJzFlag());
+//                newMzChargeDetail.setDoctorCode(temp.get(0).getDoctorCode());
+//                newMzChargeDetail.setDoctorFlag(YesNoEnum.YES.code.toString());
+//                newMzChargeDetail.setInjectRes(Double.valueOf(YesNoEnum.YES.code));
+//                newMzChargeDetail.setRealNo(0);
+//                newMzChargeDetail.setYbbxFlag(YesNoEnum.NO.code.toString());
+//                newMzChargeDetail.setDetailFlag(YesNoEnum.NO.code.toString());
+//                newMzChargeDetail.setOrderType(YesNoEnum.YES.code.toString());
+//                newMzChargeDetail.setSupplyNo("Y");
+//                newMzChargeDetail.setReqNo(0);
+//                newMzChargeDetail.setGroupType(GroupTypeEnum.DIAGNOSIS.code);
+//                newMzChargeDetail.setOrderBill(0);
+//                newMzChargeDetail.setChargeBillCode(Constants.SSWR_BILL_ITEM_CODE);
+//                newMzChargeDetail.setSelfFlag(YesNoEnum.NO.code.toString());
+//                newMzChargeDetail.setResponceType(mzPatientMi == null ? Constants.SELF_PAYING_RESPONCE_TYPE : mzPatientMi.getResponseType());
+//                newMzChargeDetail.setGlPercentFt(BigDecimal.ONE);
+//                newMzChargeDetail.setOrigPrice(newMzChargeDetail.getUnitPrice());
+//                newMzChargeDetail.setTcName("四舍五入");
+//                newMzChargeDetail.setReqYj(YesNoEnum.YES.code.toString());
+//                newMzChargeDetail.setGroupId(YesNoEnum.NO.code);
+//                mzChargeDetails.add(newMzChargeDetail);
+//            }
         }
     }
 

+ 5 - 2
src/main/resources/static/js/mz/clinic.js

@@ -5838,11 +5838,11 @@ function calculateTotalAmount(needRemoveLastObject) {
                 return;
             }
             if (res.code == 0) {
-                $("#totalAmount").html(res.data.amount.toFixed(1));
+                $("#totalAmount").html(res.data.amount.toFixed(2));
                 var arrs = $("span.cf_amount");
                 for (var i = 0; i < arrs.length; i++) {
                     if (res.data.amountList[i] != undefined && res.data.amountList[i] != null) {
-                        $(arrs[i]).html(res.data.amountList[i].toFixed(1));
+                        $(arrs[i]).html(res.data.amountList[i].toFixed(2));
                     }
                 }
             } else {
@@ -5864,6 +5864,9 @@ function calculateTotalAmount(needRemoveLastObject) {
                     } else if (index == 4) {
                         //入院
                         tabId = "zyReqTab";
+                    }else if (index == 5) {
+                        //手术
+                        tabId = "opRecordTab";
                     }
                     var tableId = $("#" + tabId + " li.active").find("a").attr("href");
                     var last = $(tableId).find("div:eq(0)").find("div:last");