LIJU 1 місяць тому
батько
коміт
02e551d2a2

+ 106 - 0
src/main/java/cn/hnthyy/thmz/controller/mz/MzyReqrecController.java

@@ -709,6 +709,112 @@ public class MzyReqrecController {
         }
     }
 
+    /**
+     * 更新挂号信息 宿迁健康通专用
+     *
+     * @return
+     */
+    @UserLoginToken
+    @RequestMapping(value = "/updateReqrecSQJKT", method = {RequestMethod.POST})
+    public Map<String, Object> updateReqrecSQJKT(@RequestBody MzyReqrec mzyReqrec, HttpServletRequest httpServletRequest) {
+        Map<String, Object> resultMap = new HashMap<>();
+        try {
+            if (mzyReqrec == null) {
+                resultMap.put("code", -1);
+                resultMap.put("message", "更新挂号信息参数不能为空");
+                return resultMap;
+            }
+            if (StringUtils.isBlank(mzyReqrec.getPatientId())) {
+                resultMap.put("code", -1);
+                resultMap.put("message", "病人id不能为空");
+                return resultMap;
+            }
+            if (mzyReqrec.getTimes() == null) {
+                resultMap.put("code", -1);
+                resultMap.put("message", "病人挂号次数不能为空");
+                return resultMap;
+            }
+            if (mzyReqrec.getRefundType() == null) {
+                resultMap.put("code", -1);
+                resultMap.put("message", "退费类型不能为空");
+                return resultMap;
+            }
+            User tokenUser = TokenUtil.getUser(httpServletRequest);
+            if (tokenUser == null) {
+                resultMap.put("code", -1);
+                resultMap.put("message", "查询窗口号失败,用户Token不存在");
+                return resultMap;
+            }
+//            mzyReqrec.setOpId(tokenUser.getUserIdCode());
+            //这里491 ,用淮海员工号
+            mzyReqrec.setOpId("491");
+
+
+            MzyReqrec dbMzyReqrec = mzyReqrecService.queryMzyReqrecByPatientIdAndTimes(mzyReqrec.getPatientId(), mzyReqrec.getTimes(), "mzy_reqrec");
+            if (dbMzyReqrec == null) {
+                resultMap.put("code", -1);
+                resultMap.put("message", "需要退号的挂号记录不存在");
+                return resultMap;
+            }
+            Windows windowsDb = null;
+            boolean isPos = YesNoEnum.YES.code.equals(mzyReqrec.getRefundType()) && Arrays.asList(Constants.BYJZ, Constants.YLK, Constants.JHZF).contains(dbMzyReqrec.getPaymode());
+            if (isPos) {
+                String ipAddress = HttpUtil.getIPAddress(httpServletRequest);
+                windowsDb = windowsService.queryLastWindowsIpAddress(ipAddress);
+                if (windowsDb == null || StringUtils.isBlank(windowsDb.getMisPosRouterCode())) {
+                    resultMap.put("code", -1);
+                    resultMap.put("message", "您暂未配置只能POS机的【路由识别码】,请配置完后重试!");
+                    return resultMap;
+                }
+            }
+            BigDecimal amt = dbMzyReqrec.getTotalAmount();
+            //String lsOrderNo = dbMzyReqrec.getPatientId() + "_" + dbMzyReqrec.getTimes();
+            String lsOrderNo = dbMzyReqrec.getPsordnum() + "_" + dbMzyReqrec.getTotalAmountStr();
+            //这里491 ,用淮海员工号
+            int num = mzyReqrecService.modifyMzyReqrec(mzyReqrec, "491");
+            if (YesNoEnum.YES.code.equals(mzyReqrec.getCancelMark())) {
+                if (isPos && StringUtils.isNotBlank(windowsDb.getMisPosRouterCode())) {
+                    JSONObject jsonObject = transactionService.refund(windowsDb.getMisPosRouterCode(), amt, lsOrderNo, null, dbMzyReqrec.getPaymode(), dbMzyReqrec.getParChannel(), dbMzyReqrec.getPsordnum(), dbMzyReqrec.getTransDate(), dbMzyReqrec.getAgtordnum());
+                    if (jsonObject == null) {
+                        resultMap.put("code", -2);
+                        resultMap.put("message", "挂号记录已退,但是患者智能POS退款失败,请去财务工具查询并退款!");
+                        return resultMap;
+                    }
+                    String resCode = (String) jsonObject.get("resCode");
+                    if (!"00".equals(resCode)) {
+                        resultMap.put("code", -2);
+                        resultMap.put("message", "挂号记录已退,但是患者智能POS退款失败,错误信息为:" + jsonObject.get("resMsg") + "请去财务工具查询并退款!");
+                        return resultMap;
+                    }
+                }
+                if (!(YesNoEnum.YES.code.equals(mzyReqrec.getRefundType()) &&Arrays.asList(Constants.BYJZ, Constants.YLK, Constants.JHZF,Constants.DJZ,Constants.YH_HD,Constants.GCP,Constants.DY_TG).contains(dbMzyReqrec.getPaymode()))) {
+                    dbMzyReqrec.setPaymode(Constants.CASH);
+                }
+                ZdChequeType zdChequeType = zdChequeTypeService.queryChequeTypeByCode(dbMzyReqrec.getPaymode());
+                dbMzyReqrec.setPaymode(zdChequeType == null ? dbMzyReqrec.getPaymode() : zdChequeType.getName());
+                resultMap.put("data", dbMzyReqrec);
+            }
+            if (num == 1) {
+                resultMap.put("code", 0);
+                resultMap.put("message", "更新挂号信息成功");
+                return resultMap;
+            }
+            resultMap.put("code", -1);
+            resultMap.put("message", "更新挂号信息失败");
+            return resultMap;
+        } catch (MzException e) {
+            resultMap.put("code", -1);
+            resultMap.put("message", e.getMessage());
+            return resultMap;
+        } catch (Exception e) {
+            e.printStackTrace();
+            resultMap.put("code", -1);
+            resultMap.put("message", "更新挂号信息失败,系统出错,请联系管理员");
+            log.error("更新挂号信息失败,系统异常,错误信息{}", e);
+            return resultMap;
+        }
+    }
+
 
     /**
      * 打印当前挂号的发票信息