Prechádzať zdrojové kódy

电子社保卡绑定状态查询

wujunjie 7 rokov pred
rodič
commit
8088e8133f

+ 10 - 1
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/event/ApplicationEvent.java

@ -188,7 +188,7 @@ public class ApplicationEvent implements ApplicationListener<ContextRefreshedEve
                logger.info("patient_followup_upload_job  job exist");
            }
            //老年人体检消息发送记录,每天凌晨1点执行一次
            //老年人体检消息发送记录,每天凌晨8点执行一次
            if (!quartzHelper.isExistJob("patient_physical_examination_job")) {
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("patient_physical_examination_job");
                quartzHelper.addJob(PatientPhysicalExaminationJob.class, trigger, "patient_physical_examination_job", new HashMap<String, Object>());
@ -197,6 +197,15 @@ public class ApplicationEvent implements ApplicationListener<ContextRefreshedEve
                logger.info("patient_physical_examination_job  job exist");
            }
            //电子社保卡绑定状态查询,每天每隔6小时执行一次
            if (!quartzHelper.isExistJob("sicard_query_job")) {
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("sicard_query_job");
                quartzHelper.addJob(SicardQueryJob.class, trigger, "sicard_query_job", new HashMap<String, Object>());
                logger.info("sicard_query_job  job success");
            } else {
                logger.info("sicard_query_job  job exist");
            }
            // 启动redis 消息队列线程
            logger.info("redis message start");
            new Thread(redisThread).start();

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

@ -12,6 +12,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
@ -31,13 +33,16 @@ public class SicardQueryJob implements Job {
    public void execute(JobExecutionContext context) throws JobExecutionException {
        logger.info("SicardQueryJob start ..........");
        try {
            List<Patient> patientList = patientDao.listNotupdated();
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
            String time = format.format(new Date());
//            List<String> patientList = patientDao.listNotupdated();
            List<String> patientList = patientDao.listNotupdatedByDate(time);
            if (patientList != null && patientList.size() > 0) {
                for (Patient patient : patientList) {
                for (String openId : patientList) {
                    try {
                        payService.bindCardList(patient.getOpenid());
                        payService.bindCardList(openId);
                    } catch (Exception e) {
                        logger.info("SicardQueryJob error ..........continue this JOB,CODE:" + patient.getCode() + ",message:" + e.getMessage());
                        logger.info("SicardQueryJob error ..........continue this JOB,CODE:" + openId + ",message:" + e.getMessage());
                        continue;
                    }
                }

+ 9 - 3
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/patient/PatientDao.java

@ -70,7 +70,13 @@ public interface PatientDao extends PagingAndSortingRepository<Patient, Long> {
    @Query("update Patient p set p.diseaseCondition = ?2 where p.idcard = ?1")
    void updatePatientDiseascontionByIdcard(String idcard, Integer diseaseCondition);
    //获取已绑定社保卡但状态未更新数据(过滤掉为空情况)
    @Query(" select p from Patient p where password is null ")
    List<Patient> listNotupdated();
    //获取已绑定社保卡但状态未更新数据
    @Query(value = "SELECT DISTINCT openid FROM `wlyy_patient` WHERE `openid` IS NOT NULL AND `openid` <> ' ' " +
            " AND `openid` <> 'undefined' AND ( `sicard_time` IS NOT NULL OR `sicard_status` IS NOT NULL ) ORDER BY `sicard_time`",nativeQuery = true)
    List<String> listNotupdated();
    //获取已绑定社保卡但状态未更新当天数据
    @Query(value = "SELECT DISTINCT openid FROM `wlyy_patient` WHERE `openid` IS NOT NULL AND `openid` <> ' ' AND `openid` <> 'undefined' " +
            " AND `sicard_status` IS NULL AND `sicard_time` >= ?1 ORDER BY `sicard_time`",nativeQuery = true)
    List<String> listNotupdatedByDate(String beginTime);
}

+ 18 - 14
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/app/charge/OnePayService.java

@ -478,32 +478,36 @@ public class OnePayService {
            // 如医保卡绑卡信息返回参数
            if (OnepayDefaultClient.isSuccessful(res)) {
                JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, BindCard.class);
                //获取本人绑卡情况
                String idNo = res.getParam().getString("idNo");
                Patient user = patientDao.findByIdcard(idNo);
                String userCode = user.getCode();
                List<BindCard> result = objectMapper.readValue(objectMapper.writeValueAsString(res.getParam().get("attachList")), javaType);
                //更新患者信息
                if (result != null && result.size() > 0) {
                    String userCode = "";
                    //获取本人绑卡情况
                    for (BindCard card : result) {
                        if (!"98".equals(card.getAttachRelation())) {
                        if ("98".equals(card.getAttachRelation())) {
                            String idcard = card.getAttachIdNo();
                            Patient patient = patientDao.findByIdcard(idcard);
                            userCode = patient.getCode();
                            patient.setSicardStatus(1);
//                            ********************以绑定时为主****************
                            patient.setSicardTime(new Date());
//                            ************************************
                            patient.setPrincipalCode(userCode);
                            patientDao.save(patient);
                            LOGGER.info("myself ==========>  userCode " + userCode);
                        }
                    }
                    //获取家人绑卡情况
                    for (BindCard familyCard : result) {
                        if (!"98".equals(familyCard.getAttachRelation())) {
                            String idcard = familyCard.getAttachIdNo();
                            Patient patient = patientDao.findByIdcard(idcard);
                            patient.setSicardStatus(1);
                            patient.setSicardTime(new Date());
                            patient.setPrincipalCode(userCode);
                            patientDao.save(patient);
                            LOGGER.info("family ==========>  userCode "+userCode +" ========== >> "+patient.getOpenid());
                        }
                    }
                }
                user.setSicardStatus(1);
//                            ********************以绑定时为主****************
                user.setSicardTime(new Date());
//                            ************************************
                user.setPrincipalCode(userCode);
                patientDao.save(user);
            } else {
                isSuccess = false;
                error = "请求失败,返回结果:" + res.getRespCode() + "," + res.getRespMsg();
@ -520,6 +524,6 @@ public class OnePayService {
        if (!isSuccess) {
            throw new Exception(error);
        }
        LOGGER.info(error);
        LOGGER.info("OnePayService SicardQueryJob " + error);
    }
}

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

@ -682,7 +682,22 @@ public class JobController extends BaseController {
        }
    }
    /**
     *电子社保卡绑定状态查询,立即启动
     *@author Reece
     *@date 2017/10/23 13:37
     */
    @RequestMapping(value = "/executeSicardQueryJob", method = RequestMethod.POST)
    @ApiOperation("电子社保卡绑定状态查询")
    public String executeSicardQueryJob() {
        try {
            quartzHelper.startNow(SicardQueryJob.class, "SICARD_QUERY_JOB", null);
            return write(200, "启动成功");
        } catch (Exception e) {
            error(e);
            return error(-1, e.getMessage());
        }
    }
    /**
     * 医生评价分数统计

+ 3 - 0
patient-co/patient-co-wlyy-job/src/main/resources/system.properties

@ -122,6 +122,9 @@ patient_followup_upload_job=0 0/10 * * * ?
# 老年人体检系统发送提醒记录,每天8点执行一次
patient_physical_examination_job=0 0 8 * * ?
# 电子社保卡绑定状态查询,每隔6小时执行一次
sicard_query_job=0 0 6,12,18,23 * * ?
#统一支付平台支付成功后页面跳转地址
return_url={server}/wx/html/qygl/html/pay_result.html
#统一支付平台支付接口地址

+ 3 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/weixin/wxpay/service/OnePayService.java

@ -694,7 +694,9 @@ public class OnePayService {
                Patient p = patientDao.findByCode(patient);
                p.setOpenid(openid);
//            增加绑定电子社保卡信息
                p.setSicardTime(new Date());
                if (!"1".equals(p.getSicardStatus())){
                    p.setSicardTime(new Date());
                }
                patientDao.save(p);
            } else {
                isSuccess = false;