Browse Source

退号修复

hurugang 6 năm trước cách đây
mục cha
commit
943d945829

+ 17 - 0
src/main/java/cn/hnthyy/thmz/common/Constants.java

@@ -149,4 +149,21 @@ public class Constants {
      * 本院记账付款方式
      */
     public static final String BYJZ="Y";
+
+
+
+    /**
+     * 医技分组编号
+     */
+    public static final String YJ_GROUP_NO="00";
+
+    /**
+     * 静脉采血编码
+     */
+    public static final String JM_CAI_XUE_CODE="008910";
+
+    /**
+     * 静脉采血名称
+     */
+    public static final String JM_CAI_XUE_NAME="静脉采血";
 }

+ 12 - 31
src/main/java/cn/hnthyy/thmz/controller/MzChargeDetailController.java

@@ -38,6 +38,8 @@ public class MzChargeDetailController {
     private MzBillItemService mzBillItemService;
     @Autowired
     private MzReceiptSerialService mzReceiptSerialService;
+    @Autowired
+    private YpZdDictService ypZdDictService;
     /**
      * 查询费用列表
      *
@@ -193,7 +195,7 @@ public class MzChargeDetailController {
                 }
                 mzChargeDetailList = mzChargeDetailService.queryMzChargeDetailByBillItemCode(mzChargeDetail.getPatientId(), mzChargeDetail.getTimes(),mzChargeDetail.getPayMark(), mzChargeDetail.getBillItemCode(), billItemTypes);
             }
-            mzChargeDetailList = getMzChargeDetails(mzChargeDetail.getBillItemCode(), mzChargeDetailList);
+            mzChargeDetailList = getMzChargeDetails(mzChargeDetailList);
             resultMap.put("code", 0);
             resultMap.put("message", "查询费用明细列表信息成功");
             resultMap.put("data", mzChargeDetailList);
@@ -214,41 +216,19 @@ public class MzChargeDetailController {
     /**
      * 将套餐归类,并计算总费用
      *
-     * @param billItemCode
      * @param mzChargeDetailList
      * @return
      */
-    private List<MzChargeDetail> getMzChargeDetails(String billItemCode, List<MzChargeDetail> mzChargeDetailList) {
+    private List<MzChargeDetail> getMzChargeDetails(List<MzChargeDetail> mzChargeDetailList) {
         if (mzChargeDetailList != null) {
-            //诊疗与医技费用
-            if ("2".equals(billItemCode)) {
-                Map<String, MzChargeDetail> tempMap = new HashMap<>();
-                List<MzChargeDetail> resultMzChargeDetails = new ArrayList<>();
-                for (MzChargeDetail md : mzChargeDetailList) {
-                    //套餐编号为空的。直接设置总金额
-                    if (StringUtils.isBlank(md.getTcNo())) {
-                        md.setAmount((md.getUnitPrice() == null ? BigDecimal.ZERO : md.getUnitPrice()).multiply(BigDecimal.valueOf(md.getQuantity() == null ? 1D : md.getQuantity())).multiply(BigDecimal.valueOf(md.getDrugWin() == null ? 1D : md.getDrugWin())));
-                        resultMzChargeDetails.add(md);
-                    } else {
-                        //是套餐,归类,再计算总金额
-                        MzChargeDetail tmd = tempMap.get(md.getTcNo());
-                        if (tmd == null) {
-                            tempMap.put(md.getTcNo(), md);
-                        } else {
-                            tmd.setUnitPrice((tmd.getUnitPrice() == null ? BigDecimal.ZERO : tmd.getUnitPrice()).add(md.getUnitPrice() == null ? BigDecimal.ZERO : md.getUnitPrice()));
-                        }
+            for (MzChargeDetail md : mzChargeDetailList) {
+                md.setAmount((md.getUnitPrice() == null ? BigDecimal.ZERO : md.getUnitPrice()).multiply(BigDecimal.valueOf(md.getQuantity() == null ? 1D : md.getQuantity())).multiply(BigDecimal.valueOf(md.getDrugWin() == null ? 1D : md.getDrugWin())));
+                if(!Constants.YJ_GROUP_NO.equals(md.getGroupNo())){
+                    YpZdDict ypZdDict= ypZdDictService.queryYpZdDictByCode(md.getChargeItemCode(),md.getSerial());
+                    if(ypZdDict!=null){
+                        md.setTcName(ypZdDict.getName());
                     }
                 }
-                for (String key : tempMap.keySet()) {
-                    MzChargeDetail md = tempMap.get(key);
-                    md.setAmount((md.getUnitPrice() == null ? BigDecimal.ZERO : md.getUnitPrice()).multiply(BigDecimal.valueOf(md.getQuantity() == null ? 1D : md.getQuantity())).multiply(BigDecimal.valueOf(md.getDrugWin() == null ? 1D : md.getDrugWin())));
-                    resultMzChargeDetails.add(md);
-                }
-                mzChargeDetailList = resultMzChargeDetails;
-            } else {
-                for (MzChargeDetail md : mzChargeDetailList) {
-                    md.setAmount((md.getUnitPrice() == null ? BigDecimal.ZERO : md.getUnitPrice()).multiply(BigDecimal.valueOf(md.getQuantity() == null ? 1D : md.getQuantity())).multiply(BigDecimal.valueOf(md.getDrugWin() == null ? 1D : md.getDrugWin())));
-                }
             }
             Collections.sort(mzChargeDetailList); // 按处方号排序
         }
@@ -416,6 +396,7 @@ public class MzChargeDetailController {
                 }
             }
             mzChargeDetailList.removeAll(removeList);
+            getMzChargeDetails(mzChargeDetailList);
             resultMap.put("code", 0);
             resultMap.put("message", "查询退费明细列表信息成功");
             resultMap.put("data", mzChargeDetailList);
@@ -601,7 +582,7 @@ public class MzChargeDetailController {
             DecodedJWT decodedJWT = TokenUtil.parseJWT(token);
             User tokenUser = (User) JsonUtil.jsontoObject(decodedJWT.getSubject(), User.class);
             List<MzChargeDetail> mzChargeDetails = mzChargeDetailService.getTempMzChargeDetailListForNewListForRefundFee(tokenUser.getUserIdCode(),mzDepositFileVo,YesNoEnum.NO);
-            mzChargeDetails = getMzChargeDetails(mzDepositFileVo.getBillItemCode(), mzChargeDetails);
+            mzChargeDetails = getMzChargeDetails(mzChargeDetails);
             resultMap.put("code", 0);
             resultMap.put("message", "查询费用明细列表信息成功");
             resultMap.put("data", mzChargeDetails);

+ 3 - 3
src/main/java/cn/hnthyy/thmz/controller/MzyReqrecController.java

@@ -502,12 +502,12 @@ public class MzyReqrecController {
 
 
     /**
-     * 获取当前挂号的发票信息
+     * 打印当前挂号的发票信息
      * @return
      */
     @UserLoginToken
-    @RequestMapping(value = "/getSerialLastMzyReqrec", method = {RequestMethod.GET})
-    public Map<String, Object> getSerialLastMzyReqrec(@RequestParam("patientId") String patientId,@RequestParam("times") Integer times) {
+    @RequestMapping(value = "/printMzyReqrecRecept", method = {RequestMethod.GET})
+    public Map<String, Object> printMzyReqrecRecept(@RequestParam("patientId") String patientId,@RequestParam("times") Integer times) {
         Map<String, Object> resultMap = new HashMap<>();
         try {
             if (StringUtils.isBlank(patientId)) {

+ 10 - 0
src/main/java/cn/hnthyy/thmz/controller/NavigationController.java

@@ -76,4 +76,14 @@ public class NavigationController {
     public String receipt() {
         return "receipt";
     }
+
+
+    /**
+     * 打开日结处理页面
+     * @return
+     */
+    @RequestMapping("/daily")
+    public String daily() {
+        return "daily";
+    }
 }

+ 3 - 3
src/main/java/cn/hnthyy/thmz/mapper/his/YpZdDictMapper.java

@@ -8,13 +8,13 @@ import java.util.List;
 
 public interface YpZdDictMapper {
     /**
-     * 根据药品编码查询药品信息
+     * 根据药品编码和规格查询药品信息
      *
      * @param code
      * @return
      */
-    @Select("select code,name,specification from yp_zd_dict where code = #{code,jdbcType=VARCHAR}")
-    YpZdDict selectYpZdDictByCode(@Param("code") String code);
+    @Select("select code,name,specification from yp_zd_dict where code = #{code,jdbcType=VARCHAR} and serial = #{serial}")
+    YpZdDict selectYpZdDictByCode(@Param("code") String code,@Param("serial") String serial);
 
     /**
      * 根据药品编码集合查询药品字典列表

+ 3 - 2
src/main/java/cn/hnthyy/thmz/service/his/YpZdDictService.java

@@ -6,11 +6,12 @@ import java.util.List;
 
 public interface YpZdDictService {
     /**
-     * 根据药品编码查询药品信息
+     * 根据药品编码和规格查询药品信息
      * @param code
+     * @param serial
      * @return
      */
-    YpZdDict queryYpZdDictByCode(String code);
+    YpZdDict queryYpZdDictByCode(String code,String serial);
 
     /**
      * 根据药品编码集合查询药品字典列表

+ 46 - 14
src/main/java/cn/hnthyy/thmz/service/impl/his/MzChargeDetailServiceImpl.java

@@ -657,14 +657,14 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
         }
         List<MzChargeDetail> newMzChargeDetailList = new ArrayList<>();
         Integer itemNo = 100;
-        List<String> billItemCodeList = Arrays.asList(Constants.SSWRF,Constants.TC);
+        List<String> billItemCodeList = Arrays.asList(Constants.SSWRF);
         Set<String> tcNos = new HashSet<>();
         int receiptNo = 1;
         for (MzChargeDetail md:mzChargeDetails){
             MzChargeDetail temp=null;
             if(chargeItemCodeList.contains(md.getChargeItemCode())){
                 tcNos.add(md.getTcNo());
-                if(Constants.XYF.equals(md.getBillItemCode()) && !Constants.KOU_FU_SUPPLY_CODE.equals(md.getSupplyCode())){
+                if(Constants.XYF.equals(md.getBillItemCode())){
                     if(ConfirmFlagEnum.DONE.code.equals(md.getConfirmFlag()) && md.getDecAmount()!=null && md.getDecAmount().compareTo(BigDecimal.ZERO)==1){
                         BigDecimal surplus = BigDecimal.valueOf(md.getQuantity()).subtract(md.getDecAmount());
                         if(surplus.compareTo(BigDecimal.ZERO)==1){
@@ -723,9 +723,41 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
         }
         newMzChargeDetailList.removeAll(removeList);
         newMzChargeDetailList.addAll(supplyFeeMzChargeDetails);
+        removeOnlyTcItem(newMzChargeDetailList);
         return newMzChargeDetailList;
     }
 
+    /**
+     * 将仅剩套餐本身,无明细的套餐删除
+     * @param newMzChargeDetailList
+     */
+    private void removeOnlyTcItem(List<MzChargeDetail> newMzChargeDetailList) {
+        if(newMzChargeDetailList.size()>0){
+            Map<String,MzChargeDetail> chargeItemMap = new HashMap<>();
+            Map<String,Integer> chargeItemCountMap = new HashMap<>();
+            for (MzChargeDetail md:newMzChargeDetailList){
+                if(Constants.TC.equals(md.getBillItemCode())){
+                    chargeItemMap.put(md.getChargeItemCode(),md);
+                }else if(StringUtils.isNotBlank(md.getTcNo())){
+                    Integer count=chargeItemCountMap.get(md.getTcNo());
+                    if(count==null){
+                        count=0;
+                    }
+                    count++;
+                    chargeItemCountMap.put(md.getTcNo(),count);
+                }
+            }
+            if(chargeItemMap.size()>0){
+                for (String key:chargeItemMap.keySet()){
+                    Integer count=chargeItemCountMap.get(key);
+                    if(count==null || count==0){
+                        newMzChargeDetailList.remove(chargeItemMap.get(key));
+                    }
+                }
+            }
+        }
+    }
+
     @Override
     public List<MzChargeDetail> getTempMzChargeDetailListForNewListForRefundFee(String opId, MzDepositFileVo mzDepositFileVo,YesNoEnum yesNo) throws MzException {
         List<MzChargeDetail> mzChargeDetails = getNewListForRefundFee(opId,mzDepositFileVo,YesNoEnum.NO);
@@ -815,7 +847,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
      * @throws MzException
      */
     private void setChargeDetail(Map<String, MzDrugWin> mzDrugWinMap, Map<String, Integer> yffyNoMap, Map<String, Integer> orderNoMap, MzChargeDetail m) throws MzException {
-        if (StringUtils.isNotBlank(m.getGroupNo()) && !"00".equals(m.getGroupNo())) {
+        if (StringUtils.isNotBlank(m.getGroupNo()) && !Constants.YJ_GROUP_NO.equals(m.getGroupNo())) {
             MzDrugWin mzDrugWin = mzDrugWinMap.get(m.getGroupNo());
             if (mzDrugWin == null) {
                 mzDrugWin = mzDrugWinService.queryMinMzDrugWin(m.getGroupNo());
@@ -1188,10 +1220,10 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
                 newMzChargeDetail.setQuantity(1D);
                 newMzChargeDetail.setUnitPrice(sZero);
                 newMzChargeDetail.setPayMark(PayMarkEnum.NO_CHARGE.code);
-                newMzChargeDetail.setSerial("00");
+                newMzChargeDetail.setSerial(Constants.YJ_GROUP_NO);
                 newMzChargeDetail.setSerialNo(0);
                 newMzChargeDetail.setName(mzPatientMi.getName());
-                newMzChargeDetail.setGroupNo("00");
+                newMzChargeDetail.setGroupNo(Constants.YJ_GROUP_NO);
                 newMzChargeDetail.setDrugWin(1);
                 newMzChargeDetail.setPriceId(mzChargeDetailList.get(0).getPriceId());
                 newMzChargeDetail.setPriceTime(mzChargeDetailList.get(0).getPriceTime());
@@ -1256,7 +1288,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
             newMzChargeDetail.setReceiptNo(1);
             newMzChargeDetail.setOrderNo(maxOrderNo);
             newMzChargeDetail.setItemNo(itemNo++);
-            newMzChargeDetail.setChargeItemCode("008910");
+            newMzChargeDetail.setChargeItemCode(Constants.JM_CAI_XUE_CODE);
             if (zdChargeItem.getChargeAmount() == null || zdChargeItem.getPercentag1() == null) {
                 newMzChargeDetail.setUnitPrice(BigDecimal.ZERO);
                 newMzChargeDetail.setOrigPrice(BigDecimal.ZERO);
@@ -1270,7 +1302,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
             newMzChargeDetail.setSerial("");
             newMzChargeDetail.setSerialNo(0);
             newMzChargeDetail.setName(mzYjReq.getPatientName());
-            newMzChargeDetail.setGroupNo("00");
+            newMzChargeDetail.setGroupNo(Constants.YJ_GROUP_NO);
             newMzChargeDetail.setDrugWin(1);
             newMzChargeDetail.setPriceId(priceId == null ? mzYjReq.getReqDoctor() : priceId);
             newMzChargeDetail.setPriceTime(priceTime == null ? mzYjReq.getReqDate() : priceTime);
@@ -1284,8 +1316,8 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
             newMzChargeDetail.setInjectRes(Double.valueOf(YesNoEnum.YES.code));
             newMzChargeDetail.setRealNo(0);
             newMzChargeDetail.setYbbxFlag(YesNoEnum.NO.code.toString());
-            newMzChargeDetail.setTcNo(tcNoMap.get(jianYans.get(0)).getTcNo());
-            newMzChargeDetail.setTcName(tcNoMap.get(jianYans.get(0)).getTcName());
+            newMzChargeDetail.setTcNo(tcNoMap.get(jianYans.get(0)).getChargeItemCode());
+            newMzChargeDetail.setTcName(Constants.JM_CAI_XUE_NAME);
             newMzChargeDetail.setDetailFlag(YesNoEnum.NO.code.toString());
             newMzChargeDetail.setOrderType(YesNoEnum.YES.code.toString());
             newMzChargeDetail.setSupplyNo("Y");
@@ -1341,7 +1373,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
             newMzChargeDetail.setSerial("");
             newMzChargeDetail.setSerialNo(0);
             newMzChargeDetail.setName(mzYjReq.getPatientName());
-            newMzChargeDetail.setGroupNo("00");
+            newMzChargeDetail.setGroupNo(Constants.YJ_GROUP_NO);
             newMzChargeDetail.setDrugWin(1);
             newMzChargeDetail.setPriceId(priceId == null ? mzYjReq.getReqDoctor() : priceId);
             newMzChargeDetail.setPriceTime(priceTime == null ? mzYjReq.getReqDate() : priceTime);
@@ -1403,7 +1435,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
                             }
                             newMzChargeDetail.setSerial("");
                             newMzChargeDetail.setPayMark(PayMarkEnum.NO_CHARGE.code);
-                            newMzChargeDetail.setGroupNo("00");
+                            newMzChargeDetail.setGroupNo(Constants.YJ_GROUP_NO);
                             newMzChargeDetail.setSupplyCode(null);
                             newMzChargeDetail.setFrequency(null);
                             newMzChargeDetail.setDrugQuan(null);
@@ -1460,7 +1492,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
         newMzChargeDetail.setSerial("");
         newMzChargeDetail.setSerialNo(0);
         newMzChargeDetail.setName(mzYjReq.getPatientName());
-        newMzChargeDetail.setGroupNo("00");
+        newMzChargeDetail.setGroupNo(Constants.YJ_GROUP_NO);
         newMzChargeDetail.setDrugWin(1);
         newMzChargeDetail.setPriceId(priceId == null ? mzYjReq.getReqDoctor() : priceId);
         newMzChargeDetail.setPriceTime(priceTime == null ? mzYjReq.getReqDate() : priceTime);
@@ -1534,7 +1566,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
         newMzChargeDetail.setSerial("");
         newMzChargeDetail.setSerialNo(0);
         newMzChargeDetail.setName(mzPatientMi.getName());
-        newMzChargeDetail.setGroupNo("00");
+        newMzChargeDetail.setGroupNo(Constants.YJ_GROUP_NO);
         newMzChargeDetail.setDrugWin(1);
         newMzChargeDetail.setPriceId(priceId == null ? mzYjReq.getReqDoctor() : priceId);
         newMzChargeDetail.setPriceTime(priceTime == null ? mzYjReq.getReqDate() : priceTime);
@@ -1548,7 +1580,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
         newMzChargeDetail.setInjectRes(Double.valueOf(YesNoEnum.YES.code));
         newMzChargeDetail.setRealNo(0);
         newMzChargeDetail.setYbbxFlag(YesNoEnum.NO.code.toString());
-        newMzChargeDetail.setTcNo(tcNoMap.get(jcJyItemCharge.getCode()).getTcNo());
+        newMzChargeDetail.setTcNo(tcNoMap.get(jcJyItemCharge.getCode()).getChargeItemCode());
         newMzChargeDetail.setTcName(tcNoMap.get(jcJyItemCharge.getCode()).getTcName());
         newMzChargeDetail.setDetailFlag(YesNoEnum.NO.code.toString());
         newMzChargeDetail.setOrderType(YesNoEnum.YES.code.toString());

+ 2 - 2
src/main/java/cn/hnthyy/thmz/service/impl/his/YpZdDictServiceImpl.java

@@ -13,8 +13,8 @@ public class YpZdDictServiceImpl implements YpZdDictService {
     @Autowired
     private YpZdDictMapper ypZdDictMapper;
     @Override
-    public YpZdDict queryYpZdDictByCode(String code) {
-        return ypZdDictMapper.selectYpZdDictByCode(code);
+    public YpZdDict queryYpZdDictByCode(String code,String serial) {
+        return ypZdDictMapper.selectYpZdDictByCode(code,serial);
     }
 
     @Override

+ 1 - 1
src/main/resources/static/js/registration.js

@@ -2083,7 +2083,7 @@ function prn1Print(patientId,times) {
     setPrint();
     $.ajax({
         type: "GET",
-        url: '/thmz/getSerialLastMzyReqrec?patientId=' + patientId+"&times="+times,
+        url: '/thmz/printMzyReqrecRecept?patientId=' + patientId+"&times="+times,
         contentType: "application/json;charset=UTF-8",
         dataType: "json",
         headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},

+ 9 - 1
src/main/resources/static/js/toll_administration.js

@@ -1401,9 +1401,17 @@ function initRefundFeeDetailTable(patientId, times) {
                 title: '数量',
                 align: "center",
                 valign: 'middle'
+            }, {
+                field: 'unitPrice',
+                title: '单价(元)',
+                align: "center",
+                valign: 'middle',
+                formatter: function (value, row, index) {
+                    return value.toFixed(2);
+                }
             }, {
                 field: 'amount',
-                title: '金额(元)',
+                title: '金额(元)',
                 align: "center",
                 valign: 'middle',
                 formatter: function (value, row, index) {

+ 7 - 1
src/main/resources/templates/menu.html

@@ -63,7 +63,13 @@
                             </li>
                             <li><a href="#" onclick="changeContent('/thmz/registration')"><i class="fa fa-edit"></i> 挂号 </a>
                             </li>
-                            <li><a href="#" onclick="changeContent('/thmz/toll-administration')"><i class="fa fa-rmb"></i> 收费管理 </a>
+                            <li><a><i class="fa fa-table"></i> 收费管理 <span class="fa fa-chevron-down"></span></a>
+                                <ul class="nav child_menu">
+                                    <li><a href="#" onclick="changeContent('/thmz/toll-administration')">收费退费</a></li>
+                                    <li><a href="#" onclick="changeContent('/thmz/daily')">日结处理</a></li>
+                                    <li><a href="#" onclick="changeContent('/thmz/toll-administration')">日结汇总</a></li>
+                                    <li><a href="#" onclick="changeContent('/thmz/toll-administration')">日结列表</a></li>
+                                </ul>
                             </li>
                             <li><a><i class="fa fa-table"></i> 列表管理 <span class="fa fa-chevron-down"></span></a>
                                 <ul class="nav child_menu">

+ 1 - 1
src/main/resources/templates/toll_administration.html

@@ -365,7 +365,7 @@
 <!--退费明细弹窗开始-->
 <div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-hidden="true" id="refundFeeDetailModal">
     <div class="modal-dialog modal-lg">
-        <div class="modal-content" style="width: 980px;">
+        <div class="modal-content" style="width: 1080px;">
             <div class="modal-header">
                 <button type="button" class="close" onclick="closeRefundFeeDetailModal()"><span
                         aria-hidden="true">×</span>