yeguodong 3 months ago
parent
commit
643dafd6f0

+ 1 - 95
src/main/java/cn/hnthyy/thmz/controller/mz/MzChargeDetailController.java

@@ -389,101 +389,7 @@ public class MzChargeDetailController {
     @UserLoginToken
     @RequestMapping(value = "/chargeFee", method = {RequestMethod.POST})
     public Map<String, Object> chargeFee(@RequestBody MzDepositFileVo mzDepositFileVo, HttpServletRequest httpServletRequest) {
-        Map<String, Object> resultMap = new HashMap<>();
-        try {
-            if (mzDepositFileVo == null) {
-                resultMap.put("code", -1);
-                resultMap.put("message", "费用参数不能为空");
-                return resultMap;
-            }
-            if (StringUtils.isBlank(mzDepositFileVo.getPatientId())) {
-                resultMap.put("code", -1);
-                resultMap.put("message", "病人编码不能为空");
-                return resultMap;
-            }
-            if (mzDepositFileVo.getTimes() == null) {
-                resultMap.put("code", -1);
-                resultMap.put("message", "病人就诊次数不能为空");
-                return resultMap;
-            }
-            if (mzDepositFileVo.getReceiptNo() == null) {
-                resultMap.put("code", -1);
-                resultMap.put("message", "病人结算次数不能为空");
-                return resultMap;
-            }
-            if (mzDepositFileVo.getMzDepositFiles() == null || mzDepositFileVo.getMzDepositFiles().size() == 0) {
-                resultMap.put("code", -1);
-                resultMap.put("message", "费用方式不能为空");
-                return resultMap;
-            }
-            String token = TokenUtil.getToken(httpServletRequest);
-            if (StringUtils.isBlank(token)) {
-                resultMap.put("code", -1);
-                resultMap.put("message", "缴费失败,用户Token不存在");
-                return resultMap;
-            }
-            for(MzDepositFile mzDepositFile : mzDepositFileVo.getMzDepositFiles()){
-                if(Constants.DY_TG.equals(mzDepositFile.getChequeType())){
-                    if(StrUtil.isBlank(mzDepositFile.getDyTgNo())){
-                        resultMap.put("code", -1);
-                        resultMap.put("message", "付费方式为抖音团购,必须输入抖音团购码");
-                        return resultMap;
-                    }
-                    mzDepositFile.setContractId(Convert.toLong(mzDepositFile.getDyTgNo()));
-                }
-            }
-            DecodedJWT decodedJWT = TokenUtil.parseJWT(token);
-            User tokenUser = (User) JsonUtil.jsontoObject(decodedJWT.getSubject(), User.class);
-            List<MzReceiptSerial> mzReceiptSerials = mzReceiptSerialService.queryTallyReceiptSerialByIdAndTimes(mzDepositFileVo.getPatientId(), mzDepositFileVo.getTimes(), mzDepositFileVo.getReceiptNo());
-            MzDepositFile tempDepositFile = new MzDepositFile();
-            tempDepositFile.setPatientId(mzDepositFileVo.getPatientId());
-            tempDepositFile.setTimes(mzDepositFileVo.getTimes());
-            tempDepositFile.setPayMark(PayMarkEnum.CHARGED.code);
-            tempDepositFile.setReceiptNo(1);
-            List<MzDepositFile> mzDepositFiles = mzDepositFileService.queryMzDepositFileByTimesAndPayMark(tempDepositFile);
-            if (mzReceiptSerials != null && mzReceiptSerials.size() > 0) {
-                //本院记账退费重收操作
-//                for (MzDepositFile m : mzDepositFileVo.getMzDepositFiles()) {
-//                    if (Constants.BYJZ.equals(m.getChequeType())) {
-//                        resultMap.put("code", -1);
-//                        resultMap.put("message", "本院记账退费重收不能再选择记账收费方式");
-//                        return resultMap;
-//                    }
-//                }
-                int receiptNo = mzChargeDetailService.chargeFeeForByjz(tokenUser.getUserIdCode(), mzDepositFileVo);
-                resultMap.put("receiptNo", receiptNo);
-            }
-             else  if(CollUtil.isNotEmpty(mzDepositFiles)){
-                 if(mzDepositFiles.stream().anyMatch(item->Constants.ZZWX.equals(item.getChequeType()))){
-                     resultMap.put("code", -1);
-                     resultMap.put("message", "缴费失败,已经缴费,缴费方式为微信缴费,请不要重复缴费!");
-                     return resultMap;
-                 }
-                //    修改收费人
-                mzChargeDetailService.updateOpId(HttpUtil.getIPAddress(httpServletRequest),TokenUtil.getUser().getUserIdCode(),mzDepositFileVo);
-                resultMap.put("receiptNo", 1);
-            }
-            else {
-                String ipAddress = HttpUtil.getIPAddress(httpServletRequest);
-                int receiptNo = mzChargeDetailService.chargeFee(tokenUser.getUserIdCode(), mzDepositFileVo, ipAddress);
-                resultMap.put("receiptNo", receiptNo);
-            }
-            resultMap.put("code", 0);
-            resultMap.put("message", "缴费成功");
-            return resultMap;
-        } catch (MzException e) {
-            e.printStackTrace();
-            resultMap.put("code", -1);
-            resultMap.put("message", "缴费失败," + e.getMessage());
-            log.error("缴费失败,系统异常,错误信息【{}】", e);
-            return resultMap;
-        } catch (Exception e) {
-            e.printStackTrace();
-            resultMap.put("code", -1);
-            resultMap.put("message", "缴费失败,系统出错,请联系管理员");
-            log.error("缴费失败,系统异常" + e);
-            return resultMap;
-        }
+        return mzChargeDetailService.chargeFee(mzDepositFileVo, HttpUtil.getIPAddress(httpServletRequest), TokenUtil.getToken(httpServletRequest));
     }
 
 

+ 2 - 0
src/main/java/cn/hnthyy/thmz/service/his/mz/MzChargeDetailService.java

@@ -652,4 +652,6 @@ public interface MzChargeDetailService {
      * @return: java.util.List<cn.hnthyy.thmz.entity.his.mz.YjEntryPrintVo>
      **/
     List<YjEntryPrintVo> queryYjEntryHistory();
+
+    Map<String, Object> chargeFee(MzDepositFileVo mzDepositFileVo, String ip, String token);
 }

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

@@ -63,6 +63,7 @@ import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.StrUtil;
+import com.auth0.jwt.interfaces.DecodedJWT;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
@@ -94,6 +95,8 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
     @SuppressWarnings("all")
     @Autowired
     private MzChargeDetailMapper mzChargeDetailMapper;
+    @Autowired
+    private MzChargeDetailService mzChargeDetailService;
     @SuppressWarnings("all")
     @Autowired
     private ZdAllergenMapper zdAllergenMapper;
@@ -8020,5 +8023,102 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
         return yjEntryPrintVos;
     }
 
+    @Override
+    public Map<String, Object> chargeFee(MzDepositFileVo mzDepositFileVo, String ip, String token) {
+        Map<String, Object> resultMap = new HashMap<>();
+        try {
+            if (mzDepositFileVo == null) {
+                resultMap.put("code", -1);
+                resultMap.put("message", "费用参数不能为空");
+                return resultMap;
+            }
+            if (StringUtils.isBlank(mzDepositFileVo.getPatientId())) {
+                resultMap.put("code", -1);
+                resultMap.put("message", "病人编码不能为空");
+                return resultMap;
+            }
+            if (mzDepositFileVo.getTimes() == null) {
+                resultMap.put("code", -1);
+                resultMap.put("message", "病人就诊次数不能为空");
+                return resultMap;
+            }
+            if (mzDepositFileVo.getReceiptNo() == null) {
+                resultMap.put("code", -1);
+                resultMap.put("message", "病人结算次数不能为空");
+                return resultMap;
+            }
+            if (mzDepositFileVo.getMzDepositFiles() == null || mzDepositFileVo.getMzDepositFiles().size() == 0) {
+                resultMap.put("code", -1);
+                resultMap.put("message", "费用方式不能为空");
+                return resultMap;
+            }
+            if (StringUtils.isBlank(token)) {
+                resultMap.put("code", -1);
+                resultMap.put("message", "缴费失败,用户Token不存在");
+                return resultMap;
+            }
+            for(MzDepositFile mzDepositFile : mzDepositFileVo.getMzDepositFiles()){
+                if(Constants.DY_TG.equals(mzDepositFile.getChequeType())){
+                    if(StrUtil.isBlank(mzDepositFile.getDyTgNo())){
+                        resultMap.put("code", -1);
+                        resultMap.put("message", "付费方式为抖音团购,必须输入抖音团购码");
+                        return resultMap;
+                    }
+                    mzDepositFile.setContractId(Convert.toLong(mzDepositFile.getDyTgNo()));
+                }
+            }
+            DecodedJWT decodedJWT = TokenUtil.parseJWT(token);
+            User tokenUser = (User) JsonUtil.jsontoObject(decodedJWT.getSubject(), User.class);
+            List<MzReceiptSerial> mzReceiptSerials = mzReceiptSerialService.queryTallyReceiptSerialByIdAndTimes(mzDepositFileVo.getPatientId(), mzDepositFileVo.getTimes(), mzDepositFileVo.getReceiptNo());
+            MzDepositFile tempDepositFile = new MzDepositFile();
+            tempDepositFile.setPatientId(mzDepositFileVo.getPatientId());
+            tempDepositFile.setTimes(mzDepositFileVo.getTimes());
+            tempDepositFile.setPayMark(PayMarkEnum.CHARGED.code);
+            tempDepositFile.setReceiptNo(1);
+            List<MzDepositFile> mzDepositFiles = mzDepositFileService.queryMzDepositFileByTimesAndPayMark(tempDepositFile);
+            if (mzReceiptSerials != null && mzReceiptSerials.size() > 0) {
+                //本院记账退费重收操作
+//                for (MzDepositFile m : mzDepositFileVo.getMzDepositFiles()) {
+//                    if (Constants.BYJZ.equals(m.getChequeType())) {
+//                        resultMap.put("code", -1);
+//                        resultMap.put("message", "本院记账退费重收不能再选择记账收费方式");
+//                        return resultMap;
+//                    }
+//                }
+                int receiptNo = mzChargeDetailService.chargeFeeForByjz(tokenUser.getUserIdCode(), mzDepositFileVo);
+                resultMap.put("receiptNo", receiptNo);
+            }
+            else  if(CollUtil.isNotEmpty(mzDepositFiles)){
+                if(mzDepositFiles.stream().anyMatch(item->Constants.ZZWX.equals(item.getChequeType()))){
+                    resultMap.put("code", -1);
+                    resultMap.put("message", "缴费失败,已经缴费,缴费方式为微信缴费,请不要重复缴费!");
+                    return resultMap;
+                }
+                //    修改收费人
+                mzChargeDetailService.updateOpId(ip,TokenUtil.getUser().getUserIdCode(),mzDepositFileVo);
+                resultMap.put("receiptNo", 1);
+            }
+            else {
+                int receiptNo = mzChargeDetailService.chargeFee(tokenUser.getUserIdCode(), mzDepositFileVo, ip);
+                resultMap.put("receiptNo", receiptNo);
+            }
+            resultMap.put("code", 0);
+            resultMap.put("message", "缴费成功");
+            return resultMap;
+        } catch (MzException e) {
+            e.printStackTrace();
+            resultMap.put("code", -1);
+            resultMap.put("message", "缴费失败," + e.getMessage());
+            log.error("缴费失败,系统异常,错误信息【{}】", e);
+            return resultMap;
+        } catch (Exception e) {
+            e.printStackTrace();
+            resultMap.put("code", -1);
+            resultMap.put("message", "缴费失败,系统出错,请联系管理员");
+            log.error("缴费失败,系统异常" + e);
+            return resultMap;
+        }
+    }
+
 
 }

+ 8 - 13
src/main/java/cn/hnthyy/thmz/service/pay/NongPayService.java

@@ -3,9 +3,11 @@ package cn.hnthyy.thmz.service.pay;
 import cn.hnthyy.thmz.common.RestApiUtil;
 import cn.hnthyy.thmz.common.model.ResultCode;
 import cn.hnthyy.thmz.entity.his.mz.MzDepositFile;
+import cn.hnthyy.thmz.service.his.mz.MzChargeDetailService;
 import cn.hnthyy.thmz.vo.MzDepositFileVo;
 import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
@@ -21,6 +23,9 @@ public class NongPayService {
     @Value("${pay.url}")
     private String payUrl;
 
+    @Autowired
+    private MzChargeDetailService mzChargeDetailService;
+
     public JSONObject unifiedOrder(Map<String, String> body) {
         JSONObject result = new JSONObject();
         result.put("code", ResultCode.pay_error.getCode());
@@ -72,12 +77,12 @@ public class NongPayService {
         body.put("subject", body.get("subject"));
         body.put("body", body.get("body"));
         JSONObject channelExtra = new JSONObject();
-        channelExtra.put("payDataType", body.get("codeImgUrl"));
+        channelExtra.put("payDataType", "codeImgUrl");
         body.put("channelExtra", JSONObject.toJSONString(channelExtra));
         JSONObject extParam = new JSONObject();
         extParam.put("patientId", body.get("patientId"));
         extParam.put("times", body.get("times"));
-        extParam.put("amount", body.get("amount"));
+        extParam.put("amount", amount);
         body.put("extParam", JSONObject.toJSONString(extParam));
 
         try {
@@ -121,7 +126,6 @@ public class NongPayService {
         String payOrderId = (String) body.get("payOrderId");
         String mchOrderNo = (String) body.get("mchOrderNo");
         String extParam = (String) body.get("extParam");
-        int amount = (Integer) body.get("amount");
         int state = (Integer) body.get("state");
         if(state == 2) {
             JSONObject extraParam = JSONObject.parseObject(extParam);
@@ -136,12 +140,7 @@ public class NongPayService {
             mzDepositFileVo.setTimes(Integer.valueOf(extraParam.getString("times")));
             mzDepositFileVo.setReceiptNo(1);
             mzDepositFileVo.setMzDepositFiles(mzDepositFiles);
-            Map<String, Object> fee = chargeFee(mzDepositFileVo);
-            Integer code = (Integer) fee.get("code");
-            if(code == 0) {
-
-            }
-
+            mzChargeDetailService.chargeFee(mzDepositFileVo, "0.0.0.0", "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ7XCJ1c2VySWRDb2RlXCI6XCI5OTk5OVwiLFwidXNlckNvZGVcIjpcIjk5OTk5XCIsXCJ1c2VyTmFtZVwiOlwi6Ieq5YqpXCJ9IiwiaXNzIjoidGh5eV9tel9zeXN0ZW0iLCJleHAiOjQxMDA2ODgwMDB9.9TcU-LPMyFVHifXuW8-lhjlVn5g8_YTukc_ds3iH73A");
             return "success";
         } else {
             return "fail";
@@ -149,10 +148,6 @@ public class NongPayService {
 
     }
 
-    private Map<String, Object> chargeFee(MzDepositFileVo mzDepositFileVo) {
-        Map<String, Object> result = new HashMap<>();
-        return result;
-    }
 
     public static void main(String[] args) {
         String amount = "10";