Преглед изворни кода

续方订单自动确认job

wujunjie пре 7 година
родитељ
комит
c5e4ffeed7

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

@ -215,6 +215,15 @@ public class ApplicationEvent implements ApplicationListener<ContextRefreshedEve
                logger.info("sicard_query_job  job exist");
            }
            //续方订单自动确认收货,每天每隔2小时执行一次
            if (!quartzHelper.isExistJob("patient_confirm_receipt_job")) {
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("patient_confirm_receipt_job");
                quartzHelper.addJob(PatientConfirmReceiptJob.class, trigger, "patient_confirm_receipt_job", new HashMap<String, Object>());
                logger.info("patient_confirm_receipt_job  job success");
            } else {
                logger.info("patient_confirm_receipt_job  job exist");
            }
            //待分配健管师消息提醒 从统计工程中转到到job工程
            if (!quartzHelper.isExistJob(HealthMessageJob.jobKey)) {
                quartzHelper.addJob(HealthMessageJob.class, HealthMessageJob.cron, HealthMessageJob.jobKey, new HashMap<String, Object>());

+ 68 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/PatientConfirmReceiptJob.java

@ -0,0 +1,68 @@
package com.yihu.wlyy.job;
import com.yihu.wlyy.entity.patient.prescription.Prescription;
import com.yihu.wlyy.entity.patient.prescription.PrescriptionLog;
import com.yihu.wlyy.repository.dict.SystemDictDao;
import com.yihu.wlyy.repository.prescription.PrescriptionDao;
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.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * 续方订单确认收货接口(支付完成后7天自动确认收货,延长收货1次支付完成后14天自动确认收货)
 * Created by Reece on 2018/02/07
 *
 */
public class PatientConfirmReceiptJob implements Job {
    private static final Logger logger = LoggerFactory.getLogger(PatientConfirmReceiptJob.class);
    @Autowired
    private PrescriptionDao prescriptionDao;
    @Autowired
    private SystemDictDao systemDictDao;
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        logger.info("PatientConfirmReceiptJob start ..........");
        try {
            //job执行开关
            String jobRunning = systemDictDao.findByDictNameAndCode("JOB_RUNNING","PatientConfirmReceiptJob");
            if("1".equals(jobRunning)) {
                List<Prescription> list = new ArrayList<>();
                //1.找出状态是已支付未完成且取药方式不是健管师配送的续方
                List<Prescription> PrescriptionList = prescriptionDao.findUndelivered();
                for (Prescription prescription : PrescriptionList) {
                    //2.取出延长收货的次数及支付时间
                    int extendCount = prescription.getExtendCount();
                    Date payTime = prescription.getPayTime();
                    if (payTime != null) {
                        //3.根据延长收货次数确定确认收货时间
                        Date today = new Date();
                        Date confirm = DateUtil.getPreDays(payTime, ((extendCount + 1) * 7));
                        int result = today.compareTo(confirm);
                        if (result >= 0) {
                            prescription.setStatus(PrescriptionLog.PrescriptionLogStatus.finish.getValue());
                            list.add(prescription);
                        }
                    }
                }
                if (list.size() > 0) {
                    prescriptionDao.save(list);
                }
            }
            logger.info("PatientConfirmReceiptJob end ..........");
        } catch (Exception e) {
            e.printStackTrace();
            logger.info("PatientConfirmReceiptJob error ..........,message:" + e.getMessage());
        }
    }
}

+ 4 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/prescription/PrescriptionDao.java

@ -28,4 +28,8 @@ 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.status >= 50 and p.status< 100 and p.dispensaryType in (1,2) ")
    List<Prescription> findUndelivered();
}

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

@ -730,6 +730,22 @@ public class JobController extends BaseController {
        }
    }
    /**
     * 居民端续方订单自动确认收货
     * @return
     */
    @RequestMapping(value = "startDoctorPrenatalInspectorJob", method = RequestMethod.GET)
    @ApiOperation("居民端续方订单自动确认收货")
    public String startPatientConfirmReceiptJob() {
        try {
            quartzHelper.startNow(PatientConfirmReceiptJob.class, "PatientConfirmReceiptJob", null);
            return success("启动成功!");
        } catch (Exception e) {
            error(e);
            return invalidUserException(e, -1, "启动失败:" + e.getMessage());
        }
    }
    /**
     * 签约数据wlyy_sign_family清洗到续签表wlyy_sign_family_renew_log
     * @return

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

@ -128,6 +128,9 @@ sicard_query_job=0 0 6,12,18,23 * * ?
#\u533B\u751F\u7AEF\u4EA7\u68C0\u7CFB\u7EDF\u63D0\u9192\uFF08\u6BCF\u4E2A\u5DE5\u4F5C\u65E510\u70B9\u6267\u884C\u4E00\u6B21\uFF09
doctor_prenatal_inspector_job=0 0 10 ? * MON-FRI
# \u7EED\u65B9\u8BA2\u5355\u81EA\u52A8\u786E\u8BA4\u6536\u8D27\uFF0C\u6BCF\u5929\u6BCF\u96942\u5C0F\u65F6\u6267\u884C\u4E00\u6B21
patient_confirm_receipt_job=0 0 0/2 * * ?
#\u7EDF\u4E00\u652F\u4ED8\u5E73\u53F0\u652F\u4ED8\u6210\u529F\u540E\u9875\u9762\u8DF3\u8F6C\u5730\u5740
return_url={server}/wx/html/qygl/html/pay_result.html
#\u7EDF\u4E00\u652F\u4ED8\u5E73\u53F0\u652F\u4ED8\u63A5\u53E3\u5730\u5740

+ 2 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/prescription/PatientPrescriptionController.java

@ -247,6 +247,8 @@ public class PatientPrescriptionController extends WeixinBaseController {
                jo.put("prescriptionStatus", prescription.getStatus());//处方状态
                jo.put("prescriptionStatusName", prescription.getStatusName(prescription.getStatus(), "",""));//处方状态名称
                jo.put("ssc",prescription.getSsc());//医保卡号
                jo.put("payTime",prescription.getPayTime());//支付时间
                jo.put("extendCount",prescription.getExtendCount());//延长收货次数
            }
            return write(200, "查询成功", "data", jo);
        } catch (Exception e) {