|
|
@@ -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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|