Browse Source

药柜预缴金相关修改,job新增预缴金支付结果查询避免易慧无回调

bing 2 năm trước cách đây
mục cha
commit
b9c5cd9f7d

+ 4 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/healthCare/YlzMedicalRechargeDao.java

@ -4,10 +4,14 @@ import com.yihu.jw.entity.hospital.healthCare.YlzMedicalRecharge;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by Bing on 2022/7/18.
 */
public interface YlzMedicalRechargeDao extends PagingAndSortingRepository<YlzMedicalRecharge, String>,
        JpaSpecificationExecutor<YlzMedicalRecharge> {
    YlzMedicalRecharge findByOutChargeNo(String outChargeNo);
    List<YlzMedicalRecharge> findByChargeResult(String chargeResult);
}

+ 48 - 43
svr/svr-base/src/main/java/com/yihu/jw/base/service/a3service/YlzService.java

@ -283,55 +283,60 @@ public class YlzService {
        JSONObject paramObj = responseObj.getJSONObject("param");
        outChargeNo = paramObj.getString("outChargeNo");
        YlzMedicalRecharge ylzMedicalRecharge = ylzMedicalRechargeDao.findByOutChargeNo(outChargeNo);
        if (null!=ylzMedicalRecharge){        //该笔订单与待结算订单有关联
            //  查询预缴金充值结果 如果为succ后  查出该笔订单关联的订单 去调用his确认结算接口
            int i=0;
            do{
                Map<String,String> param = new HashMap<>();
                param.put("orgCode",ylzMedicalRecharge.getOrgCode());
                param.put("equ_num",ylzMedicalRecharge.getEquNum());
                param.put("tradeType","hop.trade.recharge");
                param.put("outTradeNo",outChargeNo);
                JSONObject res = wlyyHttpService.sendWlyyMes("hlwyyQueryDetail_OUT", null,param);
                if (res.getString("status").equalsIgnoreCase("200")) {//i健康返回值
                    JSONObject responseData = res.getJSONObject("data");
                    JSONObject queryDetailParam = responseData.getJSONObject("param");
                    String result = queryDetailParam.getString("result");
                    String resultName = queryDetailParam.getString("resultDesc");
                    if ("exp".equals(result)){
        synchronized (outChargeNo.intern()){//新增同步方法
            YlzMedicalRecharge ylzMedicalRecharge = ylzMedicalRechargeDao.findByOutChargeNo(outChargeNo);
            if (null!=ylzMedicalRecharge){        //该笔订单与待结算订单有关联
                if ("succ".equals(ylzMedicalRecharge.getChargeResult())){
                    return;
                }
                //  查询预缴金充值结果 如果为succ后  查出该笔订单关联的订单 去调用his确认结算接口
                int i=0;
                do{
                    Map<String,String> param = new HashMap<>();
                    param.put("orgCode",ylzMedicalRecharge.getOrgCode());
                    param.put("equ_num",ylzMedicalRecharge.getEquNum());
                    param.put("tradeType","hop.trade.recharge");
                    param.put("outTradeNo",outChargeNo);
                    JSONObject res = wlyyHttpService.sendWlyyMes("hlwyyQueryDetail_OUT", null,param);
                    if (res.getString("status").equalsIgnoreCase("200")) {//i健康返回值
                        JSONObject responseData = res.getJSONObject("data");
                        JSONObject queryDetailParam = responseData.getJSONObject("param");
                        String result = queryDetailParam.getString("result");
                        String resultName = queryDetailParam.getString("resultDesc");
                        if ("exp".equals(result)){
                    }else {
                        /**
                         * 支付状态确认 通知药柜结算状态是什么情况
                         */
                        JSONObject chargeNotice = new JSONObject();
                        chargeNotice.put("result",result);
                        chargeNotice.put("resultName",resultName);
                        medicineServive.sendSocketMessage(ylzMedicalRecharge.getEquNum()+"_T","medical_recharge", URLEncoder.encode(chargeNotice.toJSONString(),"UTF-8"));
                        ylzMedicalRecharge.setChargeResult(result);
                        ylzMedicalRecharge.setChargeResultName(resultName);
                        ylzMedicalRechargeDao.save(ylzMedicalRecharge);
                        if ("succ".equals(result)){//交易成功 (微信/支付宝成功,HIS成功)
                            String recipeNoStr = ylzMedicalRecharge.getValue();
                            if (StringUtils.isNoneBlank(recipeNoStr)){//关联处方号
                                String[] recipeNos = recipeNoStr.split(",");
                                try {
                                    for (String recipeNo:recipeNos){
                                        medOrderService.executeSickSettleMultiNew(recipeNo,ylzMedicalRecharge.getEquNum());
                        }else {
                            /**
                             * 支付状态确认 通知药柜结算状态是什么情况
                             */
                            JSONObject chargeNotice = new JSONObject();
                            chargeNotice.put("result",result);
                            chargeNotice.put("resultName",resultName);
                            medicineServive.sendSocketMessage(ylzMedicalRecharge.getEquNum()+"_T","medical_recharge", URLEncoder.encode(chargeNotice.toJSONString(),"UTF-8"));
                            ylzMedicalRecharge.setChargeResult(result);
                            ylzMedicalRecharge.setChargeResultName(resultName);
                            ylzMedicalRechargeDao.save(ylzMedicalRecharge);
                            if ("succ".equals(result)){//交易成功 (微信/支付宝成功,HIS成功)
                                String recipeNoStr = ylzMedicalRecharge.getValue();
                                if (StringUtils.isNoneBlank(recipeNoStr)){//关联处方号
                                    String[] recipeNos = recipeNoStr.split(",");
                                    try {
                                        for (String recipeNo:recipeNos){
                                            medOrderService.executeSickSettleMultiNew(recipeNo,ylzMedicalRecharge.getEquNum());
                                        }
                                    }catch (Exception e){
                                        e.printStackTrace();
                                    }
                                }catch (Exception e){
                                    e.printStackTrace();
                                }
                            }
                            break;
                        }
                        break;
                    }
                }
                i++;
                System.out.printf("循环"+i);
                Thread.sleep(30000);
            }while (i<10);
                    i++;
                    System.out.printf("循环"+i);
                    Thread.sleep(30000);
                }while (i<10);
            }
        }
        logger.info("回调参数:{}", response);
    }

+ 5 - 6
svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/job/YJJChargeResultOverTimeJob.java

@ -1,5 +1,6 @@
package com.yihu.jw.job;
import com.yihu.jw.service.channel.MedicineService;
import com.yihu.jw.util.DateUtil;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
@ -10,7 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
/**
 * 药柜预交金充值超时job
 * 药柜预交金充值结果更新job
 */
public class YJJChargeResultOverTimeJob implements Job {
@ -18,16 +19,14 @@ public class YJJChargeResultOverTimeJob implements Job {
    private static final Logger logger = LoggerFactory.getLogger(YJJChargeResultOverTimeJob.class);
    @Autowired
    private JdbcTemplate jdbcTemplate;
    private MedicineService medicineService;
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        logger.info("START========YJJChargeResultOverTimeJob========");
        try {
            String nowTime = DateUtil.getStringDate();
            String prTime = DateUtil.getPreTime(nowTime,"-5");
            String sql = " update base_ylz_medical_recharge set charge_result='overTime',charge_result_name='支付超时' where charge_result='ing' and  create_time<='"+prTime+"' ";
            jdbcTemplate.execute(sql);
            medicineService.updateYjjResult();
            logger.info("END========YJJChargeResultOverTimeJob========");
        }catch (Exception e) {
            e.printStackTrace();

+ 49 - 4
svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/service/channel/MedicineService.java

@ -6,9 +6,11 @@ import com.yihu.jw.entity.a1entity.MediicineDrugsNumber;
import com.yihu.jw.entity.a1entity.Mediicinedrugs;
import com.yihu.jw.entity.a1entity.Mediicineorder;
import com.yihu.jw.entity.hospital.DmHospitalDO;
import com.yihu.jw.entity.hospital.healthCare.YlzMedicalRecharge;
import com.yihu.jw.entity.hospital.httplog.WlyyHttpLogDO;
import com.yihu.jw.entity.wlyyinfo.OauthWlyyConfigDO;
import com.yihu.jw.hospital.HospitalDao;
import com.yihu.jw.hospital.healthCare.YlzMedicalRechargeDao;
import com.yihu.jw.hospital.httplog.dao.WlyyHttpLogDao;
import com.yihu.jw.repository.job.MediicinedrugsDao;
@ -26,12 +28,11 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.net.URLEncoder;
import java.util.*;
@Service
public class MedicineService {
@ -54,6 +55,10 @@ public class MedicineService {
    private MediicinedrugsNumberDao mediicinedrugsNumberDao;
    @Value("${spring.profiles}")
    private String springProfiles;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private YlzMedicalRechargeDao ylzMedicalRechargeDao;
    public void getOrgPhysicDict(String orgCode, String name, String orgName, String physicCode) {
@ -375,4 +380,44 @@ public class MedicineService {
    }
    public void updateYjjResult() {
        Date now = new Date();
        String nowTime = com.yihu.jw.util.DateUtil.dateToStrLong(now);
        List<YlzMedicalRecharge> chargeList = ylzMedicalRechargeDao.findByChargeResult("ing");
        for (YlzMedicalRecharge tmp : chargeList) {
            Map<String, String> param = new HashMap<>();
            param.put("orgCode", tmp.getOrgCode());
            param.put("equ_num", tmp.getEquNum());
            param.put("tradeType", "hop.trade.recharge");
            param.put("outTradeNo", tmp.getOutChargeNo());
            JSONObject res = wlyyHttpService.sendWlyyMes("hlwyyQueryDetail_OUT", null, param);
            if (res.getString("status").equalsIgnoreCase("200")) {//i健康返回值
                JSONObject responseData = res.getJSONObject("data");
                JSONObject queryDetailParam = responseData.getJSONObject("param");
                String result = queryDetailParam.getString("result");
                String resultName = queryDetailParam.getString("resultDesc");
                if ("exp".equals(result)) {
                } else {
                    if ("succ".equals(result)) {//交易成功 (微信/支付宝成功,HIS成功)
                        String url = "http://127.0.0.1:10020/baseOrder/open/hlwyyRechargeNotify";
                        List<NameValuePair> params = new ArrayList<>();
                        JSONObject paramTmp = new JSONObject();
                        paramTmp.put("outChargeNo",tmp.getOutChargeNo());
                        JSONObject paramTmpObj = new JSONObject();
                        paramTmpObj.put("param",paramTmp);
                        params.add(new BasicNameValuePair("responsStr",paramTmpObj.toJSONString()));
                        String ret = httpClientUtil.post(url, params, "UTF-8");
                    }
                }
            }
        }
        String mins = com.yihu.jw.util.DateUtil.dateToStr(now,"mm");
        Integer minsInt = Integer.parseInt(mins);
        if (minsInt % 5 == 0) {
            String prTime = com.yihu.jw.util.DateUtil.getPreTime(nowTime, "-5");
            String sql = " update base_ylz_medical_recharge set charge_result='overTime',charge_result_name='支付超时' where charge_result='ing' and  create_time<='" + prTime + "' ";
            jdbcTemplate.execute(sql);
        }
    }
}

+ 1 - 1
svr/svr-internet-hospital-job/src/main/resources/system.properties

@ -33,6 +33,6 @@ syn_physic_storage = 0 0 4 * * ? *
medicine_order_status=0 * * * * ? *
YJJChargeResultOverTimeJob=0 0/5 * * * ? *
YJJChargeResultOverTimeJob=0 * * * * ? *