Kaynağa Gözat

Merge branch 'dev-1.1.4' into 'dev-1.1.4'

汇总药单打印总金额问题修复

See merge request lihong/thmz_system!62
huangshuhua 1 yıl önce
ebeveyn
işleme
cabb8ccf14

+ 1 - 0
src/main/java/cn/hnthyy/thmz/entity/his/yp/YpSummaryPrint.java

@@ -32,5 +32,6 @@ public class YpSummaryPrint {
     // 打印数量
     private BigDecimal amount;
     private BigDecimal realAmount;
+    private Double retprice;
 
 }

+ 4 - 4
src/main/java/cn/hnthyy/thmz/mapper/his/zy/ZyDrugMapper.java

@@ -16,9 +16,9 @@ public interface ZyDrugMapper {
      */
     @Select({"<script>",
             "SELECT charge_code=rtrim(charge_code)     , " +
-            "       serial=a.serial   , " +
-            "       amount=sum(a.amount)  , " +
-            "       retprice=max(a.retprice), " +
+            "       serial=a.serial, " +
+            "       retprice=a.retprice, " +
+            "       amount=sum(a.amount), " +
             "       page_no=max(a.page_no), " +
             "       amount=sum(a.amount), " +
             "       dept_code=max(a.dept_code), " +
@@ -28,7 +28,7 @@ public interface ZyDrugMapper {
             " FROM zy_drug a WITH(NOLOCK)" +
             " where a.page_no =#{pageNo} " +
             " and isnull(a.confirm_flag,'0')=#{confirmFlag}" +
-            " group by a.charge_code,a.serial " +
+            " group by a.charge_code,a.serial,a.retprice " +
             " order by charge_code,serial "
             , "</script>"})
     List<ZyDrug> selectZyDrugByPageNo(@Param("pageNo") String pageNo, @Param("confirmFlag") String confirmFlag);

+ 11 - 5
src/main/java/cn/hnthyy/thmz/service/impl/his/yf/YfWardPrescriptionServiceImpl.java

@@ -1170,8 +1170,9 @@ public class YfWardPrescriptionServiceImpl implements YfWardPrescriptionService
         if(yfWardVos.isEmpty()){
             return resultMap;
         }
-        Map<String, Map<String, List<YfWardVo>>> map = yfWardVos.stream().collect(
-                Collectors.groupingBy(YfWardVo::getChargeCode, Collectors.groupingBy(YfWardVo::getSerial)));
+        Map<String, Map<String, Map<Double, List<YfWardVo>>>> map = yfWardVos.stream().collect(
+                Collectors.groupingBy(YfWardVo::getChargeCode,
+                        Collectors.groupingBy(YfWardVo::getSerial, Collectors.groupingBy(YfWardVo::getRetprice))));
         String msg = "";
         boolean flag = false;
         int pid = 1;
@@ -1187,14 +1188,19 @@ public class YfWardPrescriptionServiceImpl implements YfWardPrescriptionService
 
             String chargeCode = ypPrint.getChargeCode();
             String serial = ypPrint.getSerial();
+            Double price = ypPrint.getRetprice();
             BigDecimal printAmount = ypPrint.getAmount();
-            Map<String, List<YfWardVo>> ff = map.get(chargeCode);
-            List<YfWardVo> data = ff.get(serial);
+            Map<String, Map<Double, List<YfWardVo>>> ff = map.get(chargeCode);
+            Map<Double, List<YfWardVo>> data = ff.get(serial);
             if(data.isEmpty()){
                 continue;
             }
+            List<YfWardVo> voList = data.get(price);
+            if(voList.isEmpty()){
+                continue;
+            }
             BigDecimal realAmount = BigDecimal.ZERO;
-            for (YfWardVo yf : data){
+            for (YfWardVo yf : voList){
                 realAmount = DecimalUtil.add(realAmount, BigDecimal.valueOf(yf.getAmount()));
             }
             if(realAmount.compareTo(printAmount) != 0){

+ 9 - 0
src/main/resources/static/js/common/pharmacy-com.js

@@ -145,6 +145,15 @@ function keepTwoDecimal(num) {
     return result;
 }
 
+function keepMiDecimal(num, mi) {
+    var result = parseFloat(num);
+    if (isNaN(result)) {
+        return false;
+    }
+    result = Math.round(num * mi) / mi;
+    return result;
+}
+
 //默认打印机下标
 var defaultPrintIndex = -1;
 

+ 5 - 3
src/main/resources/static/js/yf/ward_prescription.js

@@ -987,7 +987,8 @@ function initDetailTable() {
                     if(rowObject.retprice === '合计'){
                         return cellvalue
                     }
-                    return keepTwoDecimal(rowObject.retprice * rowObject.amount)
+                    // 保留4位小数
+                    return keepMiDecimal(rowObject.retprice * rowObject.amount, 10000)
                 }
             },
             {
@@ -1204,12 +1205,13 @@ function printXyCount(flag, pageClassText) {
     let summaryData = [];
     for (var i = 0; i < datas.length; i++) {
         let data = datas[i];
-        let summaryInfo = {chargeCode:'', serial: '',amount:0, printPageNo:'', printPageClass:'' };
+        let summaryInfo = {chargeCode:'', serial: '',amount:0, printPageNo:'', printPageClass:'', retprice:0 };
         summaryInfo.chargeCode = data.chargeCode;
         summaryInfo.serial = data.serial;
         summaryInfo.amount = data.amount;
         summaryInfo.printPageNo = data.pageNo;
         summaryInfo.printPageClass = data.pageClass;
+        summaryInfo.retprice = data.retprice;
         summaryData.push(summaryInfo)
         let handle = data.fybz;
         if (pageClass === "T" || pageClass === "HT") {
@@ -1231,7 +1233,7 @@ function printXyCount(flag, pageClassText) {
         html += '<td class="xtd" style="text-align: center;">' + data.totalMoney + '</td>';
         html += '</tr>';
         totalMoney += parseFloat(data.totalMoney);
-        summaryInfo = {chargeCode:'', serial: '',amount:0, printPageNo:'', printPageClass:''};
+        summaryInfo = {chargeCode:'', serial: '',amount:0, printPageNo:'', printPageClass:'', retprice:0};
     }
     html += '<tr class="sjhHz">';
     html += '<td colspan="8" style="text-align: right;font-weight: 700;">总计:' + keepTwoDecimal(parseFloat(totalMoney)) + '</td>';