瀏覽代碼

预交金优化

lihong 2 月之前
父節點
當前提交
9d5b666838

+ 20 - 0
src/main/java/thyyxxk/webserver/controller/inpatient/charge/MzsfBillnoRecController.java

@@ -38,4 +38,24 @@ public class MzsfBillnoRecController {
         return ResultVoUtil.success(data);
     }
 
+    @PostMapping("/saveYjjSjh")
+    @PassToken
+    public ResultVo<String> saveYjjSjh(@RequestBody MzsfBillnoRec param) {
+        service.saveYjjSjh(param);
+        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE);
+    }
+    /**
+     * @description: 查询当前预交金收据号
+     * @author: lihong
+     * @date: 2025/6/11 8:50
+     * @param: param
+     * @return: thyyxxk.webserver.entity.ResultVo<thyyxxk.webserver.entity.inpatient.charge.MzsfBillnoRec>
+     **/
+    @PostMapping("/queryYjjSjh")
+    @PassToken
+    public ResultVo<MzsfBillnoRec> queryYjjSjh(@RequestBody MzsfBillnoRec param) {
+        MzsfBillnoRec data = service.queryYjjSjh(param);
+        return ResultVoUtil.success(data);
+    }
+
 }

+ 14 - 0
src/main/java/thyyxxk/webserver/dao/his/inpatient/charge/MzsfBillnoRecDao.java

@@ -39,5 +39,19 @@ public interface MzsfBillnoRecDao extends BaseMapper<MzsfBillnoRec> {
 
     @Update(" update mzsf_billno_rec set current_no =current_no + 1 where status_flag ='1' and receipt_type ='2' and cash_id =#{userCode} ")
     int updateCurrentNo(String userCode);
+    /**
+     * @description: 查询预交金当前收据号
+     * @author: lihong
+     * @date: 2025/6/11 8:29
+     * @param: userCode
+     * @return: thyyxxk.webserver.entity.inpatient.charge.MzsfBillnoRec
+     **/
+    @Select(" select cash_id,current_no from mzsf_billno_rec where cash_id = #{userCode} and receipt_type = '9'")
+    MzsfBillnoRec selectCurYjjSjh(String userCode);
+
+    @Update(" update mzsf_billno_rec set current_no =#{currentNo}   where  cash_id =#{cashId}  and receipt_type = '9' ")
+    int updateYjjSj(MzsfBillnoRec mzsfBillnoRec);
 
+    @Update(" update mzsf_billno_rec set current_no =current_no + 1  where  cash_id =#{userCode} and receipt_type='9' ")
+    int addYjjSj(String userCode);
 }

+ 2 - 1
src/main/java/thyyxxk/webserver/dao/his/zygl/ZyDepositFileDao.java

@@ -164,5 +164,6 @@ public interface ZyDepositFileDao {
             "</when>",
             "</script>"})
     ZyDepositFile selectZyDepositFileByAgtordnum(@Param("psordnum") String psordnum, @Param("agtordnum") String agtordnum, @Param("tableName") String tableName);
-
+    @Select(" select count(*) from zy_deposit_file where receipt_no=#{receiptNo} ")
+    Integer countReceiptNo(String receiptNo);
 }

+ 2 - 2
src/main/java/thyyxxk/webserver/entity/inpatient/charge/MzsfBillnoRec.java

@@ -37,9 +37,9 @@ public class MzsfBillnoRec  implements Serializable {
     private Integer currentNo;
     @TableField(exist = false)
     private String currentNoStr;
-
+    //1 有效 2失效
     private String statusFlag;
-          
+    //2 住院发票  9 收据号
     private String receiptType;
 
 

+ 34 - 0
src/main/java/thyyxxk/webserver/service/inpatient/charge/MzsfBillnoRecService.java

@@ -8,6 +8,7 @@ import org.springframework.transaction.annotation.Transactional;
 import thyyxxk.webserver.config.exception.BizException;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.dao.his.inpatient.charge.MzsfBillnoRecDao;
+import thyyxxk.webserver.dao.his.zygl.ZyDepositFileDao;
 import thyyxxk.webserver.entity.inpatient.charge.MzsfBillnoRec;
 import thyyxxk.webserver.utils.AssertUtil;
 import thyyxxk.webserver.utils.TokenUtil;
@@ -26,6 +27,10 @@ public class MzsfBillnoRecService {
     @Resource
     private MzsfBillnoRecDao dao;
 
+    @Resource
+    private ZyDepositFileDao zyDepositFileDao;
+
+
     /**
      * @description: 登记收费发票
      * @author: lihong
@@ -63,4 +68,33 @@ public class MzsfBillnoRecService {
         return data;
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    public void saveYjjSjh(MzsfBillnoRec param) {
+        AssertUtil.isnotBlank(param.getCurrentNo(), "当前收据号不能为空");
+        if (StrUtil.isBlank(param.getCashId())) {
+            param.setCashId(TokenUtil.getInstance().getTokenUserId());
+        }
+        Integer count = zyDepositFileDao.countReceiptNo(Convert.toStr(param.getCurrentNo()));
+        if(count > 0){
+            throw new BizException(ExceptionEnum.LOGICAL_ERROR, "当前收据号已经存在,请重新设置");
+        }
+        param.setInputDate(new Date());
+        param.setStatusFlag("2");
+        param.setReceiptType("9");
+        param.setStartNo(0);
+        param.setEndNo(0);
+        MzsfBillnoRec mzsfBillnoRec = dao.selectCurYjjSjh(param.getCashId());
+        if(mzsfBillnoRec == null){
+            dao.insert(param);
+        }else {
+            dao.updateYjjSj(param);
+        }
+    }
+
+    public MzsfBillnoRec queryYjjSjh(MzsfBillnoRec param) {
+        if (StrUtil.isBlank(param.getCashId())) {
+            param.setCashId(TokenUtil.getInstance().getTokenUserId());
+        }
+        return dao.selectCurYjjSjh(param.getCashId());
+    }
 }

+ 15 - 3
src/main/java/thyyxxk/webserver/service/zygl/ZyDepositFileService.java

@@ -2,7 +2,6 @@ package thyyxxk.webserver.service.zygl;
 
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ReflectUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -16,12 +15,14 @@ import thyyxxk.webserver.constants.SettleTypeEnum;
 import thyyxxk.webserver.constants.YesOrNo;
 import thyyxxk.webserver.constants.ZyDepositFileStatusEnum;
 import thyyxxk.webserver.dao.his.datamodify.ZyDetailChargeDao;
+import thyyxxk.webserver.dao.his.inpatient.charge.MzsfBillnoRecDao;
 import thyyxxk.webserver.dao.his.zygl.ZyActpatientDao;
 import thyyxxk.webserver.dao.his.zygl.ZyDepositFileDao;
 import thyyxxk.webserver.dao.his.zygl.ZyLedgerFileDao;
 import thyyxxk.webserver.dao.his.zygl.ZyReceiptDao;
 import thyyxxk.webserver.entity.executeItem.ZyLedgerFile;
 import thyyxxk.webserver.entity.inpatient.ZyActpatient;
+import thyyxxk.webserver.entity.inpatient.charge.MzsfBillnoRec;
 import thyyxxk.webserver.entity.inpatient.charge.ZyDepositFile;
 import thyyxxk.webserver.entity.inpatient.charge.ZyReceipt;
 import thyyxxk.webserver.utils.AssertUtil;
@@ -53,6 +54,8 @@ public class ZyDepositFileService {
     private ZyReceiptDao zyReceiptMapper;
     @Resource
     private ZyDetailChargeDao zyDetailChargeMapper;
+    @Resource
+    private MzsfBillnoRecDao mzsfBillnoRecDao;
 
     public List<ZyDepositFile> queryZyDepositFileByInpatientNoAndTimes(ZyDepositFile zyDepositFile) {
         return zyDepositFileMapper.selectZyDepositFileByInpatientNoAndTimes(zyDepositFile);
@@ -96,13 +99,22 @@ public class ZyDepositFileService {
         if (ZyDepositFileStatusEnum.PREPAY.code.equals(zyDepositFile.getStatus())) {
             AssertUtil.isnotBlank(zyDepositFile.getDepoAmount(),"缴费金额不能为空");
             //非自助或者非聚合支付与银联卡的需要传缴费流水号
+            MzsfBillnoRec mzsfBillnoRec = mzsfBillnoRecDao.selectCurYjjSjh(TokenUtil.getInstance().getTokenUserId());
+            if(mzsfBillnoRec == null || mzsfBillnoRec.getCurrentNo() == null){
+                throw new BizException(ExceptionEnum.LOGICAL_ERROR, "请先设置收据号!");
+            }
+            Integer countReceiptNo =  zyDepositFileMapper.countReceiptNo(Convert.toStr(mzsfBillnoRec.getCurrentNo()));
+            if(countReceiptNo > 0){
+                throw new BizException(ExceptionEnum.LOGICAL_ERROR, "当前收据号已经存在,请重新设置!");
+            }
+            mzsfBillnoRecDao.addYjjSj(TokenUtil.getInstance().getTokenUserId());
             if (YesOrNo.YES.getCode().equals(zyDepositFile.getAutoFlag()) && Arrays.asList(Constants.ZZWX, Constants.ZZZFB, Constants.JHZF, Constants.YLK).contains(zyDepositFile.getDepoType())) {
                 AssertUtil.isnotBlank(zyDepositFile.getReceiptNo(),"his缴费订单号不能为空");
                 AssertUtil.isnotBlank(zyDepositFile.getAgtordnum(),"流水号不能为空");
                 AssertUtil.isnotBlank(zyDepositFile.getPsordnum(),"订单号不能为空");
-            }else {
-                zyDepositFile.setReceiptNo(IdUtil.getSnowflake().nextIdStr());
+                zyDepositFile.setChequeNo(zyDepositFile.getReceiptNo());
             }
+            zyDepositFile.setReceiptNo(Convert.toStr(mzsfBillnoRec.getCurrentNo()));
             zyDepositFile.setPrinted(0);
         }
         else{