Browse Source

Merge branch 'dev' of huangwenjie/patient-co-management into dev

trick9191 7 years ago
parent
commit
95ef5070dd
16 changed files with 516 additions and 14 deletions
  1. 1 1
      common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/prescription/Prescription.java
  2. 2 1
      common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/prescription/PrescriptionLog.java
  3. 14 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/PrescriptionController.java
  4. 3 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/prescription/PrescriptionDao.java
  5. 2 1
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/prescription/PrescriptionLog.java
  6. 5 3
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/prescription/VO/PrescriptionExpressageVO.java
  7. 50 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/prescription/PrescriptionService.java
  8. 9 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/event/ApplicationEvent.java
  9. 2 2
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/PrescriptionExecuteSickSettleJob.java
  10. 4 4
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/SFExpressJob.java
  11. 36 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/SignFamilyPayResultJob.java
  12. 3 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/charge/ChargeDao.java
  13. 234 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/app/prescription/PatientPrescriptionPayService.java
  14. 129 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/weixin/wxpay/common/Configure.java
  15. 17 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/web/quota/JobController.java
  16. 5 2
      patient-co/patient-co-wlyy-job/src/main/resources/system.properties

+ 1 - 1
common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/prescription/Prescription.java

@ -37,7 +37,7 @@ public class Prescription extends IdEntity {
    private String patientName;             //患者名称
    private String ssc;//社保卡号
    private Integer type;                    //1 处方 2 续方
    private Integer status;                  //(-3 支付过期 -2 患者自己取消 )续方取消,-1 审核不通过 ,
    private Integer status;                  //(-4线下退费 -3 支付过期 -2 患者自己取消 )续方取消,-1 审核不通过 ,
    // (0 待审核, 2调整中,3调整成功, 4调整失败 ,10 医生审核(CA)通过)审核中,
    // 20药师审核中,21.药师审核失败,30 开方中/药师审核成功,31.开方失败/预结算失败,
    // (40开方完成/待支付 ,41 支付失败 )待支付,  50 支付成功/待配药,(60配药成功/待配送)等待领药,

+ 2 - 1
common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/prescription/PrescriptionLog.java

@ -55,6 +55,7 @@ public class PrescriptionLog extends IdEntity {
    //状态枚举
    public enum PrescriptionLogStatus {
        pay_refund("线下退费",-4),
        //续方取消
        pay_outtime("支付超时", -3),
        patient_canel("患者自己取消", -2),
@ -124,7 +125,7 @@ public class PrescriptionLog extends IdEntity {
    private String code;                    //业务流程
    private String prescriptionCode;      //处方code 关联表wlyy_prescription code
    private Date createTime;               //处方创建时间
    private Integer status;                 //状态 (-3 支付过期 -2 患者自己取消 )续方取消,-1 审核不通过 ,
    private Integer status;                 //状态 (-4线下退费 -3 支付过期 -2 患者自己取消 )续方取消,-1 审核不通过 ,
                                               // (0 待审核, 2调整中,3调整成功, 4调整失败 ,10 医生审核(CA)通过)审核中,
                                            // 20药师审核中,21.药师审核失败,30 开方中/药师审核成功,31.开方失败/预结算失败,
                                            // (40开方完成/待支付 ,41 支付失败 )待支付,  50 支付成功/待配药,(60配药成功/待配送)等待领药,

+ 14 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/PrescriptionController.java

@ -99,6 +99,20 @@ public class PrescriptionController extends BaseController{
		}
	}
	
	
	@RequestMapping(value = "cancelPrescription",method = RequestMethod.POST)
	@ApiOperation("接收订单退费消息")
	public Result cancelPrescription(@ApiParam(name="data",value="json串",defaultValue = "{}")
	                                 @RequestParam(value = "data",required = true) String data){
		try {
			
			return prescriptionService.cancelPrescription(data);
		}catch (Exception e){
			e.printStackTrace();
			return Result.error(e.getMessage());
		}
	}
	/***************************************获取im消息*****************************************************/
	@RequestMapping(value = "getLoglist",method = RequestMethod.GET)

+ 3 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/prescription/PrescriptionDao.java

@ -34,4 +34,7 @@ public interface PrescriptionDao extends PagingAndSortingRepository<Prescription
    @Modifying
    @Query("update Prescription p set p.jwPayStatus=1 where p.code=?1")
    void updatejwPayStatus(String prescriptionCode);
    
    @Query("from Prescription p where p.visitNo=?1")
    Prescription findByVisitNo(String visitNo);
}

+ 2 - 1
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/prescription/PrescriptionLog.java

@ -53,6 +53,7 @@ public class PrescriptionLog extends IdEntity {
    //状态枚举
    public enum PrescriptionLogStatus {
        //续方取消
        pay_refund("线下退费",-4),
        pay_outtime("支付超时", -3),
        patient_canel("患者自己取消", -2),
@ -121,7 +122,7 @@ public class PrescriptionLog extends IdEntity {
    private String code;                    //业务流程
    private String prescriptionCode;      //处方code 关联表wlyy_prescription code
    private Date createTime;               //处方创建时间
    private Integer status;                 //状态 (-3 支付过期 -2 患者自己取消 -1 审核不通过 , 0 待审核, 2调整中 10 审核通过/开方中  , 20开方完成/待支付, 21 支付失败 , 30 支付成功/待配药 , 40配药成功/待配送  41配送失败 42分配健管师 45配送中   49配送到服务站  100配送到患者手中/已完成)
    private Integer status;                 //状态 (-4线下退费,-3 支付过期 -2 患者自己取消 -1 审核不通过 , 0 待审核, 2调整中 10 审核通过/开方中  , 20开方完成/待支付, 21 支付失败 , 30 支付成功/待配药 , 40配药成功/待配送  41配送失败 42分配健管师 45配送中   49配送到服务站  100配送到患者手中/已完成)
    private Integer type;                   //类型: 1智业对接 2易联众对接  3创建处方 4 审核  5付款 6 配送 7完成
    private String userCode;                  //医生或者患者code

+ 5 - 3
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/prescription/VO/PrescriptionExpressageVO.java

@ -48,10 +48,12 @@ public class PrescriptionExpressageVO extends Result {
    //付款方式:1:寄方付,2:收方付 3:第三方付
    private Integer pay_method;
    private String receive_time;//收件时间
    
    private Integer dispensaryType;//取药类型:1 自取 2快递配送 3健管师配送
    //收件时间
    private String receive_time;
    
    //取药类型:1 自取 2快递配送 3健管师配送
    private Integer dispensaryType;
    //订单的药品详情
    private List<PrescriptionInfo> infos = new ArrayList<>();

+ 50 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/prescription/PrescriptionService.java

@ -1087,6 +1087,56 @@ public class PrescriptionService extends ZysoftBaseService{
        return Result.success("查询成功",vo);
    }
    
    
    /*********************************************智业请求顺丰快递接口数据 END**************************************************/
    public Result cancelPrescription(String data) {
        String error = null;
        String status = "1";
        String errMsg = null;
        try{
            JSONObject json = JSONObject.parseObject(data);
            Integer code = json.getInteger("CODE");
            if(code==1){
                String visit_no = json.getString("ORDER_NO");//挂号编号
                String msg = json.getString("MSG");//退费原因
            
                Prescription prescription = prescriptionDao.findByVisitNo(visit_no);
    
                prescription.setStatus(-4);//线下退费
    
                prescriptionDao.save(prescription);
    
                //新增log表
                PrescriptionLog log = new PrescriptionLog();
                log.setPrescriptionCode(prescription.getCode());
                log.setCode(getCode());
                log.setCreateTime(new Date());
                log.setType(PrescriptionLog.PrescriptionLogType.zy.getValue());
                log.setUserType(2);
                log.setHospital(prescription.getHospital());
                log.setHospitalName(prescription.getHospitalName());
                log.setUserName(prescription.getDoctorName());
                log.setFlag(1);
                log.setRemark("退费成功");
                log.setUserCode(prescription.getDoctor());
                log.setStatus(PrescriptionLog.PrescriptionLogStatus.pay_refund.getValue());
                prescriptionLogDao.save(log);
            }
        
        }catch (JSONException ex){
            ex.printStackTrace();
            error = ex.getMessage();
            errMsg = ex.getMessage();
            status = "0";
        }catch (Exception e){
            e.printStackTrace();
            error = e.getMessage();
            status = "0";
        }
        //添加日志
        return addZyPushLog(data,"cancelPrescription","接收订单退费消息",error,"POST",status,"1",errMsg);
    }
}

+ 9 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/event/ApplicationEvent.java

@ -125,6 +125,15 @@ public class ApplicationEvent implements ApplicationListener<ContextRefreshedEve
            } else {
                logger.info("patient_disease_contion_syn_job  job exist");
            }
    
            //查询家庭签约支付结果,补更新医保签约号,3分钟跑一次
            if (!quartzHelper.isExistJob("sign_family_pay_result_migisterno_job")) {
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("sign_family_pay_result_migisterno_job");
                quartzHelper.addJob(SignFamilyPayResultJob.class, trigger, "sign_family_pay_result_migisterno_job", new HashMap<String, Object>());
                logger.info("sign_family_pay_result_migisterno_job  job success");
            } else {
                logger.info("sign_family_pay_result_migisterno_job  job exist");
            }

+ 2 - 2
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/PrescriptionExecuteSickSettleJob.java

@ -28,7 +28,7 @@ public class PrescriptionExecuteSickSettleJob implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        logger.info("START=====开始执行长处方支付成功,院内结算失败,重新执行院内结算的JOB");
//        logger.info("START=====开始执行长处方支付成功,院内结算失败,重新执行院内结算的JOB");
        try {
            //获取支付完成,院内结算失败的 处方CODE 集合
            List<String> prescriptionCodeList = prescriptionService.findCodesByPayStautsAndExecuteSickStatus();
@ -43,7 +43,7 @@ public class PrescriptionExecuteSickSettleJob implements Job {
                    }
                }
            }
        logger.info("END========执行长处方支付成功,院内结算失败,重新执行院内结算的JOB");
//        logger.info("END========执行长处方支付成功,院内结算失败,重新执行院内结算的JOB");
        }catch (Exception e){
            e.printStackTrace();
            logger.info("END===ERROE===执行长处方支付成功,院内结算失败,重新执行院内结算的JOB,message:"+e.getMessage());

+ 4 - 4
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/SFExpressJob.java

@ -38,15 +38,15 @@ public class SFExpressJob implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        try {
            logger.info("顺丰快递JOB开始:搜索已支付成功,但是顺丰快递下单失败的处方物流记录,重新下单---------时间:"+ DateUtil.getNowDate());
//            logger.info("顺丰快递JOB开始:搜索已支付成功,但是顺丰快递下单失败的处方物流记录,重新下单---------时间:"+ DateUtil.getNowDate());
            List<PrescriptionExpressage> expresslist = prescriptionExpressageService.findByPrescriptionPaidExpressOrderFail();
            if(!expresslist.isEmpty()){
                logger.info("顺丰快递JOB:找到"+expresslist.size()+"条下单失败记录,开始重新下单"+ DateUtil.getNowDate());
//                logger.info("顺丰快递JOB:找到"+expresslist.size()+"条下单失败记录,开始重新下单"+ DateUtil.getNowDate());
                sfexpressService.reOrderExpress(expresslist);
            }else{
                logger.info("顺丰快递JOB:未找到下单失败的处方快递记录"+ DateUtil.getNowDate());
//                logger.info("顺丰快递JOB:未找到下单失败的处方快递记录"+ DateUtil.getNowDate());
            }
            logger.info("顺丰快递JOB结束:搜索已支付成功,但是顺丰快递下单失败的处方物流记录,重新下单---------时间:"+ DateUtil.getNowDate());
//            logger.info("顺丰快递JOB结束:搜索已支付成功,但是顺丰快递下单失败的处方物流记录,重新下单---------时间:"+ DateUtil.getNowDate());
        } catch (Exception e) {
            e.printStackTrace();
            logger.info("顺丰快递JOB执行出错:错误信息"+ e.getMessage());

+ 36 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/SignFamilyPayResultJob.java

@ -0,0 +1,36 @@
package com.yihu.wlyy.job;
import com.yihu.wlyy.service.app.prescription.PatientPrescriptionPayService;
import com.yihu.wlyy.util.DateUtil;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Date;
/**
 * 遍历没有医保签约号的家庭签约支付记录,
 * 查询家庭签约支付结果,补更新医保签约号
 * @author huangwenjie
 * @date 2017/9/29 11:04
 */
public class SignFamilyPayResultJob implements Job {
	private static final Logger logger = LoggerFactory.getLogger(SignFamilyPayResultJob.class);
	
	@Autowired
	private PatientPrescriptionPayService payService;
	
	@Override
	public void execute(JobExecutionContext context) throws JobExecutionException {
		try {
			//根据起止时间查询家签慢病患者定标情况,并同步到本地数据库
			payService.getSignFamilyPayResultJob(new Date(),DateUtil.getNextMin(new Date(),-(60*24)));
		}catch (Exception e){
			e.printStackTrace();
			logger.info("END===ERROE==遍历没有医保签约号的家庭签约支付记录JOB,message:"+e.getMessage());
		}
	}
}

+ 3 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/charge/ChargeDao.java

@ -59,4 +59,7 @@ public interface ChargeDao extends PagingAndSortingRepository<WlyyCharge, Long>,
    int updateByChargeCode(String chargeCode, String chargeTime, Date updateTime, Integer totalAmount, Integer insuranceAmount, Integer selfPayAmount, String billNo, String miRegisterNo,String tradeStatus);
    List<WlyyCharge> findByPatient(String patient, Pageable pageRequest);
    
    @Query(value = "select * from wlyy_charge where trade_status = ?1 AND (mi_register_no IS null OR mi_register_no = '') AND update_time BETWEEN ?2  and ?3",nativeQuery = true)
    List<WlyyCharge> findByTradeStatusAndMiRegisterNoAndUpdateTime(int tradestatus, Date enddate, Date startdate);
}

+ 234 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/app/prescription/PatientPrescriptionPayService.java

@ -0,0 +1,234 @@
package com.yihu.wlyy.service.app.prescription;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yihu.wlyy.entity.charge.WlyyCharge;
import com.yihu.wlyy.entity.organization.HospitalMapping;
import com.yihu.wlyy.entity.patient.SignFamily;
import com.yihu.wlyy.entity.security.AccessToken;
import com.yihu.wlyy.repository.charge.ChargeDao;
import com.yihu.wlyy.repository.organization.HospitalMappingDao;
import com.yihu.wlyy.repository.patient.SignFamilyDao;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.service.common.account.AccessTokenService;
import com.yihu.wlyy.service.weixin.wxpay.common.Configure;
import com.yihu.wlyy.util.SystemConf;
import com.ylzinfo.onepay.sdk.OnepayDefaultClient;
import com.ylzinfo.onepay.sdk.domain.RequestParams;
import com.ylzinfo.onepay.sdk.domain.ResponseParams;
import com.ylzinfo.onepay.sdk.utils.DateUtil;
import org.apache.commons.lang.StringUtils;
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.stereotype.Service;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.*;
/**
 * Created by Reece on 2017/7/28/028.
 * 患者支付
 */
@Service
public class PatientPrescriptionPayService extends BaseService {
    private Logger logger = LoggerFactory.getLogger(PatientPrescriptionPayService.class);
    //公共配置文件
    Properties systemConf = SystemConf.getInstance().getSystemProperties();
    //    各环境对应配置
    @Value("${server.server_url}")
    private String serverUrl;
    
    //    Java配置文件 后续删除
    private String signType = "MD5";
    private String encryptType = "AES";
    
    @Value("${wechat.appId}")
    private String appId;
    @Value("${wechat.appSecret}")
    private String appSecret;
    @Value("${wechat.accId}")
    private String accId;
    
    //    引入实例
    @Autowired
    private Configure config;
    
    @Autowired
    private ChargeDao chargeDao;
    
    @Autowired
    private SignFamilyDao signFamilyDao;
    
    @Autowired
    private HospitalMappingDao hospitalMappingDao;
    
    @Autowired
    private AccessTokenService accessTokenService;
    
    @Autowired
    private com.yihu.wlyy.util.HttpUtil HttpUtil;
    
    
    public String getSignFamilyPayResult(String outChargeNo, String accessToken, String appId, String appSecret) throws Exception {
        Boolean isSuccess = true;
        String msgBody = "";
        String response = "";
        String error = "";
        String result = null;
//      ***************************  测通流程 ***************************************
        OnepayDefaultClient onepayClient = new OnepayDefaultClient(config.getOnepayApi(), appId, appSecret, signType, encryptType);
    
        try {
            RequestParams requestParams = new RequestParams();
            requestParams.setAppId(appId);
            requestParams.setTimestamp(DateUtil.getCurrentDateTime());
            requestParams.setSignType(signType);
            requestParams.setEncryptType(encryptType);
            requestParams.setTransType(config.getChargeQueryType());
        
            //业务参数
            JSONObject params = new JSONObject();
            params.put("outChargeNo", outChargeNo);  //接入应用结算业务流水号
            params.put("wxToken", accessToken);
        
            requestParams.setParam(params);
            msgBody = JSON.toJSONString(requestParams);
//              ***************************  测通流程 ***************************************
            //执行支付 返回原生返回值
            ResponseParams<JSONObject> res = onepayClient.execute(requestParams);
            response = JSON.toJSONString(res);
        
            if (OnepayDefaultClient.isSuccessful(res)) {
                //业务处理*******************
//                只返回业务出参
                result = JSON.toJSONString(res.getParam());
            
//                logger.info("请求成功,返回参数: " + result);
            } else {
                isSuccess = false;
                error = "请求失败,返回结果:" + res.getRespCode() + "," + res.getRespMsg();
            }
        } catch (Exception ex) {
            isSuccess = false;
            StringWriter sw = new StringWriter();
            PrintWriter pw = new PrintWriter(sw);
            ex.printStackTrace(pw);
            error = sw.toString();
        }
    
        //type = 3易联众接口保存http日志
//        logger.info("api - " + config.getChargeQueryType());
//        logger.info("request - " + msgBody);
//        logger.info("responses - " + response);
//        logger.info("error - " + error);
        if (!isSuccess) {
            throw new Exception(error);
        }
    
        return result;
    }
    
    /**
     * 1.根据时间范围遍历没有医保签约号的家庭签约支付记录
     * 2.询家庭签约支付结果,补更新医保签约号
     * @param startdate
     * @param enddate
     */
    public void getSignFamilyPayResultJob(Date startdate, Date enddate) throws Exception {
    
        //根据时间范围遍历没有医保签约号的家庭签约支付记录
        List<WlyyCharge> charges = chargeDao.findByTradeStatusAndMiRegisterNoAndUpdateTime(0,enddate,startdate);
        
        if(!charges.isEmpty()){
    
            logger.info("根据时间范围遍历没有医保签约号的家庭签约支付记录:"+charges.size()+"条");
            String accessToken = this.getAccessToken();
            for (WlyyCharge charge:charges) {
                try {
                    
                    //1.根据签约ID获取家庭签约记录,判断是否有效
                    SignFamily signFamily = signFamilyDao.findByCode(charge.getChargeRelation());
                    
                    if(1 == signFamily.getStatus()){
                        HospitalMapping hospitalMapping = hospitalMappingDao.findByCode(charge.getHospital());
                        String appid = hospitalMapping.getAppId();
                        String appsecert =  hospitalMapping.getAppSecret();
                        String signFamilyPayResultJson = this.getSignFamilyPayResult(charge.getCode(),"",appid,appsecert);
                        
                        if(StringUtils.isNotBlank(signFamilyPayResultJson)){
                            JSONObject reobj =  JSON.parseObject(signFamilyPayResultJson);
                            if(reobj.containsKey("responseContent")){
                                JSONObject responseContent = reobj.getJSONObject("responseContent");
                                
                                if(responseContent.containsKey("miRegisterNo") && StringUtils.isNotBlank(responseContent.getString("miRegisterNo"))){
                                        String miRegisterNo = responseContent.getString("miRegisterNo");
                                    charge.setMiRegisterNo(miRegisterNo);
                                    charge.setNeedUpload("1");
                                    charge.setUpdateTime(new Date());
                                    chargeDao.save(charge);
                                }else{
                                    logger.info("ERROR======获取家庭签约支付医保签约号JOB,CODE:"+charge.getCode()+",message:miRegisterNo不存在");
                                }
                            
                            }else{
                                logger.info("ERROR======获取家庭签约支付医保签约号JOB,CODE:"+charge.getCode()+",message:responseContent不存在");
                            }
                        }else{
                            logger.info("ERROR======获取家庭签约支付医保签约号JOB,CODE:"+charge.getCode()+",message:接口无返回值");
                        }
                        
                    }else{
                        logger.info("ERROR======获取家庭签约支付医保签约号JOB,CODE:"+charge.getCode()+",message:对应的签约记录无效");
                    }
                    
                }catch (Exception e){
                    logger.info("ERROR======获取家庭签约支付医保签约号JOB,CODE:"+charge.getCode()+",message:" +e.getMessage());
                    continue;
                }
            }
        }
    }
    /**
     * 获取微信的access_token
     *
     * @return
     */
    public String getAccessToken() throws Exception{
        Iterable<AccessToken> accessTokens = accessTokenService.findAccessToken();
        if (accessTokens != null) {
            for (AccessToken accessToken : accessTokens) {
                if ((System.currentTimeMillis() - accessToken.getAdd_timestamp()) < (accessToken.getExpires_in() * 1000)) {
                    return accessToken.getAccess_token();
                } else {
                    accessTokenService.delAccessToken(accessToken);
                    break;
                }
            }
        }
        String token_url = "https://api.weixin.qq.com/cgi-bin/token";
        String params = "grant_type=client_credential&appid=" + appId + "&secret=" + appSecret;
        String result = HttpUtil.sendGet(token_url, params);
        org.json.JSONObject json = new org.json.JSONObject(result);
        if (json.has("access_token")) {
            String token = json.get("access_token").toString();
            String expires_in = json.get("expires_in").toString();
            AccessToken newaccessToken = new AccessToken();
            newaccessToken.setAccess_token(token);
            newaccessToken.setExpires_in(Long.parseLong(expires_in));
            newaccessToken.setAcc_id(accId);
            accessTokenService.addAccessToken(newaccessToken);
            return token;
        } else {
            return null;
        }
    }
}

+ 129 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/weixin/wxpay/common/Configure.java

@ -0,0 +1,129 @@
package com.yihu.wlyy.service.weixin.wxpay.common;
import org.springframework.context.annotation.Configuration;
/**
 * User: hzp
 * Date: 20170518
 * 这里放置各种配置数据
 */
@Configuration
public class Configure {
	/******************************* 易联众统一支付平台 ***********************************************************/
//	private String onepayApi = "http://120.42.37.94:1301/onepay-web/";
//	private String onepayAppId = "1BGKM1UHM03P7B2CA8C000005626EB0E";
//	private String onepayAppSecret = "1BGKM1UHM03I7B2CA8C00000AB682E9A";
//			开发环境应用信息
//	private String onepayApi = "https://xmhealth.ylzpay.com:8080/";
	private String onepayApi = "http://xmhealth.ylzpay.com:8070/";
	private String onepayAppId = "1BLF5SEGN00087165F0A000027362BE5";
	private String onepayAppSecret = "1BLF5SCBO01V3E78A8C00000F3A0FFE7";
	private String bindCardType = "onepay.sicard.bind.info";
	private String chargeType = "onepay.trade.medical.charge";
	private String chargeQueryType = "onepay.trade.medical.charge.query";
	private String createSicardType = "onepay.sicard.createurl";
//	易联众异步回调
	private String receiveNotify = "wlyy.onepay.receiveNotify";
	private String returnUrl = "wlyy.onepay.returnUrl";
//  长处方系列
	private String recipeChargeType = "onepay.trade.long.recipe.charge";
	private String recipeReturnUrl = "wlyy.patient.prescription.pay.recipeReturnUrl";
	private String receiveRecipeNotify = "wlyy.patient.prescription.pay.receiveRecipeNotify";
	public String getRecipeChargeType() {
		return recipeChargeType;
	}
	public void setRecipeChargeType(String recipeChargeType) {
		this.recipeChargeType = recipeChargeType;
	}
	public String getRecipeReturnUrl() {
		return recipeReturnUrl;
	}
	public void setRecipeReturnUrl(String recipeReturnUrl) {
		this.recipeReturnUrl = recipeReturnUrl;
	}
	public String getReceiveRecipeNotify() {
		return receiveRecipeNotify;
	}
	public void setReceiveRecipeNotify(String receiveRecipeNotify) {
		this.receiveRecipeNotify = receiveRecipeNotify;
	}
	public String getReturnUrl() {
		return returnUrl;
	}
	public void setReturnUrl(String returnUrl) {
		this.returnUrl = returnUrl;
	}
	public String getReceiveNotify() {
		return receiveNotify;
	}
	public void setReceiveNotify(String receiveNotify) {
		this.receiveNotify = receiveNotify;
	}
	public String getOnepayApi() {
		return onepayApi;
	}
	public String getOnepayAppId() {
		return onepayAppId;
	}
	public String getOnepayAppSecret() {
		return onepayAppSecret;
	}
	public String getBindCardType() {
		return bindCardType;
	}
	public String getChargeType() {
		return chargeType;
	}
	public String getChargeQueryType() {
		return chargeQueryType;
	}
	public String getCreateSicardType() {
		return createSicardType;
	}
	/******************* 微信社保支付配置 ******************************************/
	//这个就是自己要保管好的私有Key了(切记只能放在自己的后台代码里,不能放在任何可能被看到源代码的客户端程序中)
	// 每次自己Post数据给API的时候都要用这个key来对所有字段进行签名,生成的签名会放在Sign这个字段,API收到Post数据的时候也会用同样的签名算法对Post过来的数据进行签名和验证
	// 收到API的返回的时候也要用这个key来对返回的数据算下签名,跟API的Sign数据进行比较,如果值不一致,有可能数据被第三方给篡改
	private String key = "2935b54b53a957d9516c920a544f2537";
	//微信分配的公众号ID(开通公众号之后可以获取到)
	private String appID = "wxd03f859efdf0873d";
	public String getKey(){
		return key;
	}
	public String getAppid(){
		return appID;
	}
	//获取token地址
	public String TOKEN_API = "https://api.weixin.qq.com/payinsurance/gettoken";
	//挂号/诊间支付统一下单 API 接口
	public String ORDER_API = "https://api.weixin.qq.com/payinsurance/unifiedorder?access_token ACCESS_TOKEN";
}

+ 17 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/web/quota/JobController.java

@ -521,4 +521,21 @@ public class JobController extends BaseController {
            return error(-1, e.getMessage());
        }
    }
    /**
     *立即执行:查询家庭签约支付结果,补更新医保签约号
     *@author huangwenjie
     *@date 2017/9/29 13:37
     */
    @RequestMapping(value = "/executeSignFamilyPayResultJob", method = RequestMethod.POST)
    @ApiOperation("立即执行查询家庭签约支付结果,补更新医保签约号")
    public String executeSignFamilyPayResultJob() {
        try {
            quartzHelper.startNow(SignFamilyPayResultJob.class, "SIGN_FAMILY_PAY_RESULT_MIRESISTERNO_JOB", null);
            return write(200, "启动成功");
        } catch (Exception e) {
            error(e);
            return error(-1, e.getMessage());
        }
    }
}

+ 5 - 2
patient-co/patient-co-wlyy-job/src/main/resources/system.properties

@ -87,8 +87,8 @@ sfexpress_reorder_job=0 0/10 * * * ?
#同步智业字典
zy_dict_job=0 0 1 * * ?
#遍历支付成功,院内结算失败的的记录,重新结算,10分钟跑一次
zy_execute_sick_settle_job=0 0/10 * * * ?
#遍历支付成功,院内结算失败的的记录,重新结算,3分钟跑一次
zy_execute_sick_settle_job=0 0/3 * * * ?
#处理当天支付,页面回调及异步回调失败的支付,每3分钟一次去主动查询并保存
prescription_pay_query_job=0 0/3 * * * ?
@ -101,6 +101,9 @@ doctor_feldsher_template_job=0 0/29 * * * ?
# 病患者定标情况同步JOB (每天2点一次)
patient_disease_contion_syn_job=0 0 2 * * ?
#查询家庭签约支付结果,补更新医保签约号,3分钟跑一次
sign_family_pay_result_migisterno_job=0 0/3 * * * ?
#统一支付平台支付成功后页面跳转地址
return_url={server}/wx/html/qygl/html/pay_result.html