Browse Source

核酸检测

wangjun 4 years ago
parent
commit
27ea43f41f

+ 15 - 0
business/base-service/src/main/java/com/yihu/jw/dict/dao/BaseJobCategoryDao.java

@ -0,0 +1,15 @@
package com.yihu.jw.dict.dao;
import com.yihu.jw.entity.base.dict.BaseJobCategoryDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface BaseJobCategoryDao extends PagingAndSortingRepository<BaseJobCategoryDO, Integer>, JpaSpecificationExecutor<BaseJobCategoryDO> {
    @Query("from BaseJobCategoryDO t where t.pid = '0' and t.del = 1")
    List<BaseJobCategoryDO> findFirstCategoryList();
    @Query("from BaseJobCategoryDO t where t.pid = ?1 and t.del = 1")
    List<BaseJobCategoryDO> findSecondCategoryList(String pid);
}

+ 8 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/doctor/dao/DoctorTimeMappingDao.java

@ -0,0 +1,8 @@
package com.yihu.jw.hospital.doctor.dao;
import com.yihu.jw.entity.base.doctor.BaseDoctorTimeMappingDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface DoctorTimeMappingDao extends PagingAndSortingRepository<BaseDoctorTimeMappingDO, Integer>, JpaSpecificationExecutor<BaseDoctorTimeMappingDO> {
}

+ 13 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/dao/BaseNatAppointmentDao.java

@ -0,0 +1,13 @@
package com.yihu.jw.hospital.prescription.dao;
import com.yihu.jw.entity.hospital.prescription.BaseNatAppointmentDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface BaseNatAppointmentDao extends PagingAndSortingRepository<BaseNatAppointmentDO, Integer>, JpaSpecificationExecutor<BaseNatAppointmentDO> {
    @Query("from BaseNatAppointmentDO t where t.payStatus = 0 ")
    List<BaseNatAppointmentDO> findByPayStatus();
}

+ 8 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/dao/BaseNatInspectionDao.java

@ -0,0 +1,8 @@
package com.yihu.jw.hospital.prescription.dao;
import com.yihu.jw.entity.hospital.prescription.BaseNatInspectionDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface BaseNatInspectionDao extends PagingAndSortingRepository<BaseNatInspectionDO, Integer>, JpaSpecificationExecutor<BaseNatInspectionDO> {
}

+ 250 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java

@ -69,6 +69,7 @@ import com.yihu.jw.restmodel.hospital.consult.WlyyHospitalSysDictVO;
import com.yihu.jw.restmodel.hospital.doctor.WlyyDoctorWorkTimeVO;
import com.yihu.jw.restmodel.hospital.prescription.*;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
@ -107,6 +108,7 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.checkerframework.checker.units.qual.A;
import org.checkerframework.checker.units.qual.MixedUnits;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
@ -272,6 +274,8 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
    private HttpClientUtil httpClientUtil;
    @Autowired
    private YxTokenMappingDao yxTokenMappingDao;
    @Autowired
    private BaseNatAppointmentDao baseNatAppointmentDao;
@ -4682,6 +4686,42 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
    }
    //核算检测预约模板消息
    public void sendNatWxTemplat(String name,String idcard,String mobile,String time,String orderNo,String relationName){
        String first = "";
        String contentMsg = "";
        String msgUrl="";
        String remark="";
        String responseMsg="";
        if ("natAppointmentRemind".equalsIgnoreCase(relationName)){
            first = "尊敬的用户"+name+",您已完成线上自助核酸检测开单预约";
            contentMsg = "申请人:"+name+";预约时间:"+time+";发票流水号:"+orderNo;
            remark="请您持核酸开单预约信息和结算发票号、医保卡、就诊卡、电子健康卡,提前15分钟至我院五号楼北侧(急诊部后侧)核酸检测点2号窗口绑定检测。";
        }
        if ("xm_zsyy_wx".equalsIgnoreCase(wechatId)) {
            String prefix = "https://hlwyy.xmzsh.com";
            responseMsg = entranceService.ehospitalNotice(
                    name,
                   idcard,
                    mobile,
                    first,
                    prefix + msgUrl,
                    contentMsg,
                    remark);
                logger.info("中山发送模板消息返回结果="+responseMsg);
                System.out.println("结束发送模板消息");
        }
        //保存发送模板记录,
        WxPushLogDO wxPushLogDO = new WxPushLogDO();
        wxPushLogDO.setCreateTime(new Date());
        wxPushLogDO.setWechatId(wechatId);
        wxPushLogDO.setReceiverName(name);
        wxPushLogDO.setRequest(first+contentMsg+msgUrl);
        wxPushLogDO.setResponse(responseMsg);
        wxPushLogDO.setTempName("核算检测预约模板消息");
        wxPushLogDao.save(wxPushLogDO);
    }
    public List<WlyyHospitalSysDictDO> findCancelReasonList() {
@ -10337,5 +10377,215 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
       }
       return doorServiceCount;
    }
    public MixEnvelop findJobCategory(){
        String sqlPid = "select id as \"id\",name as \"name\",pid as \"pid\" from base_job_category  where pid = 0 and del = 1";
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sqlPid);
        if (list.size()>0){
            for (Map<String,Object> map:list){
                String child = "select id as \"id\",name as \"name\",pid as \"pid\" from base_job_category  where del = 1";
                String pid = map.get("id").toString();
                child+=" and pid = "+pid;
                List<Map<String,Object>> childList = hibenateUtils.createSQLQuery(child);
                map.put("childList",childList);
            }
        }
        MixEnvelop envelop = new MixEnvelop();
        envelop.setDetailModelList(list);
        return  envelop;
    }
    public Map<String,Object> findRandomDoctor(){
        String sql = "select t.id as \"id\"," +
                "t.doctor_mapping_code as \"doctorMappingCode\"," +
                "t.doctor_code as \"doctorCode\"," +
                "t.dept_code as \"deptCode\"," +
                "t.start_time as \"startTime\"," +
                "t.end_time as \"endTime\"," +
                "t.doctor_name as \"doctorName\"," +
                "t.dept_name  as \"deptName\" from base_doctor_time_mapping t where 1=1 ";
        if ("xm_ykyy_wx".equalsIgnoreCase(wechatId)){
            sql+=" order by dbms_random.value";
        }else {
            sql+=" ORDER BY RAND() ";
        }
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql);
        if (list!=null&&list.size()>0){
            return list.get(0);
        }
        return null;
    }
    public void saveNatAppointment(String mediaCard,String patientId,String name,String cardNo,String cardType,String mobile,
                                   String firstJobCode,String firstJobName,String secondJobCode,String secondJobName,String natTime,String address,
                                   String province,String provinceName,String city,String cityName,String town,String townName,String street,String streetName){
        BaseNatAppointmentDO baseNatAppointmentDO= new BaseNatAppointmentDO();
        net.sf.json.JSONObject jsondate = new JSONObject();
        jsondate.put("checkPart","鼻/咽拭子");
        jsondate.put("cardNo",mediaCard);
        jsondate.put("chargeFlag","2");
        jsondate.put("chargeCode","361322");
        jsondate.put("icdCode","Z00.000");
        jsondate.put("socialNo",cardNo);
        jsondate.put("tellPhone",mobile);
        jsondate.put("address1",province);
        jsondate.put("address2",city);
        jsondate.put("address3",town);
        jsondate.put("address4",street);
        jsondate.put("address5",2);
        jsondate.put("area",address);
        jsondate.put("target",2);
        Map<String,Object> map = findRandomDoctor();
        net.sf.json.JSONObject rs = new JSONObject();
        if (map!=null){
            try {
                rs = entranceService.BS10111(cardNo, map.get("doctorMappingCode").toString(), map.get("deptCode").toString(), "31", "6", demoFlag);
                net.sf.json.JSONObject res = rs.getJSONObject("resquest");
                logger.info("挂号结果 res: " + res.toString());
                String rsCode = res.getString("@RESULT");
                if ("0".equals(rsCode)) {
                    //存储挂号号
                    // {"resquest":{"@RESULT":"0","@MSG":"完成","@serial_no":"47770476","@times":"28"}}
                    String serialNo = (String) res.get("@serial_no");
                    String conNo = (String) res.get("@times");
                    String xtgzh = (String) res.get("@xtgzh");
                    String realOrder = (String) res.get("@real_order");
                    logger.info("挂号流水 @serial_no: " + serialNo + " @times: " + conNo);
                    jsondate.put("serialNo",serialNo);
                    jsondate.put("dept",map.get("deptCode").toString());
                    jsondate.put("doctor",map.get("doctorMappingCode").toString());
                    //存储就诊记录
                    WlyyPatientRegisterDO registerDO = new WlyyPatientRegisterDO();
                    // 存储挂号医生与挂号科室
                    registerDO.setDoctor(map.get("doctorCode").toString());
                    registerDO.setDoctorName(map.get("doctorName").toString());
                    registerDO.setDept(map.get("deptCode").toString());
                    registerDO.setDeptName(map.get("deptName").toString());
                    registerDO.setRealOrder(realOrder);
                    registerDO.setXtgzh(xtgzh);
                    registerDO.setPatient(patientId);
                    registerDO.setPatientName(name);
                    //挂号流水号与挂号次数
                    registerDO.setRegisterNo(serialNo);
                    registerDO.setConNo(conNo);
                    registerDO.setCreateTime(new Date());
                    registerDO.setDel(1);
                    registerDO.setDate(DateUtil.dateToStr(new Date(), "yyyy-MM-dd"));
                    patientRegisterDao.save(registerDO);
                } else if ("-2".equals(rsCode)) {
                    String serialNo = (String) res.get("@serial_no");
                    String xtgzh = (String) res.get("@xtgzh");
                    String realOrder = (String) res.get("@real_order");
                    String conNo = (String) res.get("@times");
                    jsondate.put("serialNo",serialNo);
                    jsondate.put("dept",map.get("deptCode").toString());
                    jsondate.put("doctor",map.get("doctorMappingCode").toString());
                    logger.info("挂号流水 @serial_no: " + serialNo + " @times: " + conNo);
                    //存储就诊记录
                    WlyyPatientRegisterDO registerDO = new WlyyPatientRegisterDO();
                    registerDO.setDoctor(map.get("doctorCode").toString());
                    registerDO.setDoctorName(map.get("doctorName").toString());
                    registerDO.setDept(map.get("deptCode").toString());
                    registerDO.setDeptName(map.get("deptName").toString());
                    registerDO.setRealOrder(realOrder);
                    registerDO.setXtgzh(xtgzh);
                    registerDO.setPatient(patientId);
                    registerDO.setPatientName(name);
                    registerDO.setRegisterNo(serialNo);
                    registerDO.setConNo(conNo);
                    registerDO.setCreateTime(new Date());
                    registerDO.setDate(DateUtil.dateToStr(new Date(), "yyyy-MM-dd"));
                    patientRegisterDao.save(registerDO);
                }
                //保存日志
                WlyyHttpLogDO log = new WlyyHttpLogDO();
                log.setCode("registerOutPatient");
                log.setName("挂号");
                log.setPatient(patientId);
                log.setDoctor(map.get("doctorCode").toString());
                log.setResponse(rs.toString());
                log.setStatus(rsCode);
                log.setCreateTime(new Date());
                wlyyHttpLogDao.save(log);
            } catch (Exception e) {
                e.printStackTrace();
            }
            logger.info("saveNatAppointment params:"+jsondate.toString());
            try {
                JSONObject jsonObject  = entranceService.BS10112(jsondate.toString(),flag);
                //判断返回结果
                String prers = jsonObject.getString("@RESULT");
                //保存日志
                WlyyHttpLogDO log = new WlyyHttpLogDO();
                log.setCode("saveNatAppointment");
                log.setName("核酸检测开方");
                log.setPatient(patientId);
                log.setDoctor(map.get("doctorCode").toString());
                log.setResponse(jsonObject.toString());
                log.setRequest(jsondate.toString());
                log.setCreateTime(new Date());
                wlyyHttpLogDao.save(log);
                if ("0".equals(prers)) {
                    String realOrder = jsonObject.getString("@real_order");
                    baseNatAppointmentDO.setRealOrder(realOrder);
                    //成功后发送模板消息
                    sendNatWxTemplat(name,cardNo,mobile,natTime,realOrder,"natAppointmentRemind");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        baseNatAppointmentDO.setMedicard(mediaCard);
        baseNatAppointmentDO.setName(name);
        baseNatAppointmentDO.setCardNo(cardNo);
        baseNatAppointmentDO.setCardType(cardType);
        baseNatAppointmentDO.setAddress(address);
        baseNatAppointmentDO.setAppointmentTime(DateUtil.strToDate(natTime,"yyyy-MM-dd hh:mm:ss"));
        baseNatAppointmentDO.setCity(city);
        baseNatAppointmentDO.setCityName(cityName);
        baseNatAppointmentDO.setFirstJobCode(firstJobCode);
        baseNatAppointmentDO.setFirstJobName(firstJobName);
        baseNatAppointmentDO.setSecondJobCode(secondJobCode);
        baseNatAppointmentDO.setSecondJobName(secondJobName);
        baseNatAppointmentDO.setProvince(province);
        baseNatAppointmentDO.setProvinceName(provinceName);
        baseNatAppointmentDO.setTown(town);
        baseNatAppointmentDO.setTownName(townName);
        baseNatAppointmentDO.setStreet(street);
        baseNatAppointmentDO.setStreet(streetName);
        baseNatAppointmentDO.setPatientId(patientId);
        baseNatAppointmentDO.setIsSuccess("0");
        baseNatAppointmentDO.setPayStatus("0");
        baseNatAppointmentDO.setCreateTime(new Date());
        baseNatAppointmentDO.setMobile(mobile);
        baseNatAppointmentDao.save(baseNatAppointmentDO);
    }
    public MixEnvelop getNatRecords(String patientId,Integer page ,Integer pageSize){
        String sql = "select t.name as \"name\"," +
                "t.card_no as \"cardNo\"," +
                "t.card_type as \"cardType\"," +
                "t.mobile as \"mobile\"," +
                "t.inspection_name as \"inspectionName\"," +
                "t.real_order as \"realOrder\"," +
                "t.real_order as \"realOrder\"," +
                "t.is_success as \"isSuccess\"," +
                "t.create_time as \"createTime\"," +
                "t.appointment_time as \"appointmentTime\" " +
                " from base_nat_appointment t where 1=1 ";
        if (StringUtils.isNoneBlank(patientId)){
            sql+=" and t.patient_id ='"+patientId+"'";
        }
        List<Map<String ,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
        List<Map<String ,Object>> listCount = hibenateUtils.createSQLQuery(sql);
        MixEnvelop mixnvelop = new MixEnvelop();
        if (listCount!=null&&listCount.size()>0){
            mixnvelop.setCurrPage(page);
            mixnvelop.setPageSize(pageSize);
            mixnvelop.setTotalCount(listCount.size());
            mixnvelop.setDetailModelList(list);
        }
        return mixnvelop;
    }
}

+ 59 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/dict/BaseJobCategoryDO.java

@ -0,0 +1,59 @@
package com.yihu.jw.entity.base.dict;
import com.yihu.jw.entity.IntegerIdentityEntity;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "base_job_category")
@SequenceGenerator(name="id_generated", sequenceName="base_job_category")
public class BaseJobCategoryDO extends IntegerIdentityEntity {
    private String name;
    private Integer del;
    private Date createTime;
    private Date updateTime;
    private String pid;//父级id
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    public String getPid() {
        return pid;
    }
    public void setPid(String pid) {
        this.pid = pid;
    }
}

+ 77 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/doctor/BaseDoctorTimeMappingDO.java

@ -0,0 +1,77 @@
package com.yihu.jw.entity.base.doctor;
import com.yihu.jw.entity.IntegerIdentityEntity;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "base_doctor_time_mapping")
@SequenceGenerator(name="id_generated", sequenceName="base_doctor_time_mapping")
public class BaseDoctorTimeMappingDO extends IntegerIdentityEntity {
    private String doctorMappingCode;
    private String doctorCode;
    private String deptCode;
    private Date startTime;
    private Date endTime;
    private String doctorName;
    private String deptName;
    public String getDoctorName() {
        return doctorName;
    }
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
    public String getDeptName() {
        return deptName;
    }
    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }
    public String getDoctorMappingCode() {
        return doctorMappingCode;
    }
    public void setDoctorMappingCode(String doctorMappingCode) {
        this.doctorMappingCode = doctorMappingCode;
    }
    public String getDoctorCode() {
        return doctorCode;
    }
    public void setDoctorCode(String doctorCode) {
        this.doctorCode = doctorCode;
    }
    public String getDeptCode() {
        return deptCode;
    }
    public void setDeptCode(String deptCode) {
        this.deptCode = deptCode;
    }
    public Date getStartTime() {
        return startTime;
    }
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }
    public Date getEndTime() {
        return endTime;
    }
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }
}

+ 382 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/prescription/BaseNatAppointmentDO.java

@ -0,0 +1,382 @@
package com.yihu.jw.entity.hospital.prescription;
import com.yihu.jw.entity.IntegerIdentityEntity;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "base_nat_appointment")
@SequenceGenerator(name="id_generated", sequenceName="base_nat_appointment")
public class BaseNatAppointmentDO extends IntegerIdentityEntity {
    private String cardType;
    private String cardNo;
    private Date appointmentTime;
    private String isSuccess;
    private String appointmentTode;
    private Date endTime;
    private Date createTime;
    private String address;
    private String province;
    private String provinceName;
    private String city;
    private String cityName;
    private String town;
    private String townName;
    private String street;
    private String streetName;
    private String name;
    private String mobile;
    private String payStatus;
    private String realOrder;
    private String inspectionCode;
    private String inspectionName;
    private String dept;
    private String deptName;
    private String doctorId;
    private String patientId;
    private String chargeAmount;
    private String cancelBy;
    private String cancelReson;
    private Date cancelTime;
    private String secondJobCode;
    private String secondJobName;
    private String firstJobCode;
    private String firstJobName;
    private String medicare;
    private String checkPart;
    private String chargeFlag;
    private String winNo;
    private String chargeCode;
    private String icdCode;
    public String getMedicare() {
        return medicare;
    }
    public void setMedicare(String medicare) {
        this.medicare = medicare;
    }
    public String getCheckPart() {
        return checkPart;
    }
    public void setCheckPart(String checkPart) {
        this.checkPart = checkPart;
    }
    public String getChargeFlag() {
        return chargeFlag;
    }
    public void setChargeFlag(String chargeFlag) {
        this.chargeFlag = chargeFlag;
    }
    public String getWinNo() {
        return winNo;
    }
    public void setWinNo(String winNo) {
        this.winNo = winNo;
    }
    public String getChargeCode() {
        return chargeCode;
    }
    public void setChargeCode(String chargeCode) {
        this.chargeCode = chargeCode;
    }
    public String getIcdCode() {
        return icdCode;
    }
    public void setIcdCode(String icdCode) {
        this.icdCode = icdCode;
    }
    public String getMedicard() {
        return medicare;
    }
    public void setMedicard(String medicare) {
        this.medicare = medicare;
    }
    public String getSecondJobCode() {
        return secondJobCode;
    }
    public void setSecondJobCode(String secondJobCode) {
        this.secondJobCode = secondJobCode;
    }
    public String getSecondJobName() {
        return secondJobName;
    }
    public void setSecondJobName(String secondJobName) {
        this.secondJobName = secondJobName;
    }
    public String getFirstJobCode() {
        return firstJobCode;
    }
    public void setFirstJobCode(String firstJobCode) {
        this.firstJobCode = firstJobCode;
    }
    public String getFirstJobName() {
        return firstJobName;
    }
    public void setFirstJobName(String firstJobName) {
        this.firstJobName = firstJobName;
    }
    public String getCancelBy() {
        return cancelBy;
    }
    public void setCancelBy(String cancelBy) {
        this.cancelBy = cancelBy;
    }
    public String getCancelReson() {
        return cancelReson;
    }
    public void setCancelReson(String cancelReson) {
        this.cancelReson = cancelReson;
    }
    public Date getCancelTime() {
        return cancelTime;
    }
    public void setCancelTime(Date cancelTime) {
        this.cancelTime = cancelTime;
    }
    public String getPayStatus() {
        return payStatus;
    }
    public void setPayStatus(String payStatus) {
        this.payStatus = payStatus;
    }
    public String getRealOrder() {
        return realOrder;
    }
    public void setRealOrder(String realOrder) {
        this.realOrder = realOrder;
    }
    public String getInspectionCode() {
        return inspectionCode;
    }
    public void setInspectionCode(String inspectionCode) {
        this.inspectionCode = inspectionCode;
    }
    public String getInspectionName() {
        return inspectionName;
    }
    public void setInspectionName(String inspectionName) {
        this.inspectionName = inspectionName;
    }
    public String getDept() {
        return dept;
    }
    public void setDept(String dept) {
        this.dept = dept;
    }
    public String getDeptName() {
        return deptName;
    }
    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }
    public String getDoctorId() {
        return doctorId;
    }
    public void setDoctorId(String doctorId) {
        this.doctorId = doctorId;
    }
    public String getPatientId() {
        return patientId;
    }
    public void setPatientId(String patientId) {
        this.patientId = patientId;
    }
    public String getChargeAmount() {
        return chargeAmount;
    }
    public void setChargeAmount(String chargeAmount) {
        this.chargeAmount = chargeAmount;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getProvince() {
        return province;
    }
    public void setProvince(String province) {
        this.province = province;
    }
    public String getProvinceName() {
        return provinceName;
    }
    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    public String getCityName() {
        return cityName;
    }
    public void setCityName(String cityName) {
        this.cityName = cityName;
    }
    public String getTown() {
        return town;
    }
    public void setTown(String town) {
        this.town = town;
    }
    public String getTownName() {
        return townName;
    }
    public void setTownName(String townName) {
        this.townName = townName;
    }
    public String getStreet() {
        return street;
    }
    public void setStreet(String street) {
        this.street = street;
    }
    public String getStreetName() {
        return streetName;
    }
    public void setStreetName(String streetName) {
        this.streetName = streetName;
    }
    public String getCardType() {
        return cardType;
    }
    public void setCardType(String cardType) {
        this.cardType = cardType;
    }
    public String getCardNo() {
        return cardNo;
    }
    public void setCardNo(String cardNo) {
        this.cardNo = cardNo;
    }
    public Date getAppointmentTime() {
        return appointmentTime;
    }
    public String getIsSuccess() {
        return isSuccess;
    }
    public void setIsSuccess(String isSuccess) {
        this.isSuccess = isSuccess;
    }
    public void setAppointmentTime(Date appointmentTime) {
        this.appointmentTime = appointmentTime;
    }
    public String getAppointmentTode() {
        return appointmentTode;
    }
    public void setAppointmentTode(String appointmentTode) {
        this.appointmentTode = appointmentTode;
    }
    public Date getEndTime() {
        return endTime;
    }
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

+ 149 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/prescription/BaseNatInspectionDO.java

@ -0,0 +1,149 @@
package com.yihu.jw.entity.hospital.prescription;
import com.yihu.jw.entity.IntegerIdentityEntity;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "base_nat_inspection")
@SequenceGenerator(name="id_generated", sequenceName="base_nat_inspection")
public class BaseNatInspectionDO  extends IntegerIdentityEntity {
    private Integer appointmentId;
    private String realOrder;
    private String prescriptionId;
    private String code;
    private String name;
    private String chargeAmount;
    private String patientId;
    private String doctorId;
    private String dept;
    private String deptName;
    private String quantity;
    private String checkTtype;
    private String chekcTypeName;
    private Date createTime;
    private Integer del;
    public Integer getAppointmentId() {
        return appointmentId;
    }
    public void setAppointmentId(Integer appointmentId) {
        this.appointmentId = appointmentId;
    }
    public String getRealOrder() {
        return realOrder;
    }
    public void setRealOrder(String realOrder) {
        this.realOrder = realOrder;
    }
    public String getPrescriptionId() {
        return prescriptionId;
    }
    public void setPrescriptionId(String prescriptionId) {
        this.prescriptionId = prescriptionId;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getChargeAmount() {
        return chargeAmount;
    }
    public void setChargeAmount(String chargeAmount) {
        this.chargeAmount = chargeAmount;
    }
    public String getPatientId() {
        return patientId;
    }
    public void setPatientId(String patientId) {
        this.patientId = patientId;
    }
    public String getDoctorId() {
        return doctorId;
    }
    public void setDoctorId(String doctorId) {
        this.doctorId = doctorId;
    }
    public String getDept() {
        return dept;
    }
    public void setDept(String dept) {
        this.dept = dept;
    }
    public String getDeptName() {
        return deptName;
    }
    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }
    public String getQuantity() {
        return quantity;
    }
    public void setQuantity(String quantity) {
        this.quantity = quantity;
    }
    public String getCheckTtype() {
        return checkTtype;
    }
    public void setCheckTtype(String checkTtype) {
        this.checkTtype = checkTtype;
    }
    public String getChekcTypeName() {
        return chekcTypeName;
    }
    public void setChekcTypeName(String chekcTypeName) {
        this.chekcTypeName = chekcTypeName;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
}

+ 8 - 1
common/common-request-mapping/src/main/java/com/yihu/jw/rm/hospital/BaseHospitalRequestMapping.java

@ -107,7 +107,14 @@ public class BaseHospitalRequestMapping {
         * 上门复诊
         */
        public static final String appointmentRevisitOnDoor = "/appointmentRevisitOnDoor";
        /**
         * 查询业务字典
         */
        public static final String findJobCategory ="/findJobCategory";getNatRecords
        /**
         * 查询getNatRecords
         */
        public static final String getNatRecords ="/getNatRecords";
        /**
         * 查询所有机构
         */

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

@ -3,18 +3,18 @@ package com.yihu.jw.service.channel;
import com.yihu.jw.entity.base.im.ConsultDo;
import com.yihu.jw.entity.base.im.ConsultTeamDo;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalWaitingRoomDO;
import com.yihu.jw.entity.hospital.doctor.WlyyPatientRegisterTimeDO;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.entity.hospital.prescription.BaseNatAppointmentDO;
import com.yihu.jw.entity.hospital.prescription.WlyyOutpatientDO;
import com.yihu.jw.entity.order.BusinessOrderDO;
import com.yihu.jw.hospital.consult.dao.HospitalWaitingRoomDao;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.hospital.doctor.dao.PatientRegisterTimeDao;
import com.yihu.jw.hospital.message.service.SystemMessageService;
import com.yihu.jw.hospital.prescription.dao.OutpatientDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionDiagnosisDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionInfoDao;
import com.yihu.jw.hospital.prescription.dao.*;
import com.yihu.jw.hospital.prescription.service.PrescriptionLogService;
import com.yihu.jw.hospital.prescription.service.PrescriptionService;
import com.yihu.jw.hospital.ykyy.service.YkyyService;
@ -80,6 +80,10 @@ public class TimeoutOverDueService {
    private ConsultTeamDao consultTeamDao;
    @Autowired
    private ConsultDao consultDao;
    @Autowired
    private BaseNatAppointmentDao baseNatAppointmentDao;
    @Autowired
    private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
    /**
     *  取消未结束门诊
     */
@ -201,5 +205,27 @@ public class TimeoutOverDueService {
                }
            }
        }
    public void CancelNotPay(){
        List<BaseNatAppointmentDO> list =  baseNatAppointmentDao.findByPayStatus();
        long defaultTime=30;
        WlyyHospitalSysDictDO wlyyHospitalSysDictDO = wlyyHospitalSysDictDao.findById("CancelNotPayTime");
        if (wlyyHospitalSysDictDO!=null&&StringUtils.isNoneBlank(wlyyHospitalSysDictDO.getDictValue())){
            defaultTime= Long.parseLong(wlyyHospitalSysDictDO.getDictValue());
        }
        if (list!=null&&list.size()>0){
            for (BaseNatAppointmentDO baseNatAppointmentDO:list){
                long currentTime = new Date().getTime();
                long outpatientTime = baseNatAppointmentDO.getCreateTime().getTime();
                if (currentTime-outpatientTime>defaultTime*60*60*1000){
                    baseNatAppointmentDO.setCancelBy("system");
                    baseNatAppointmentDO.setCancelReson("超时系统取消");
                    baseNatAppointmentDO.setCancelTime(new Date());
                    baseNatAppointmentDO.setIsSuccess("-1");
                    baseNatAppointmentDao.save(baseNatAppointmentDO);
                }
            }
        }
    }
    }

+ 59 - 0
svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/util/CancelNotPay.java

@ -0,0 +1,59 @@
package com.yihu.jw.util;
import com.yihu.jw.service.channel.TimeoutOverDueService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
import java.util.Date;
@Lazy(false)
@Component
@EnableScheduling
public class CancelNotPay implements SchedulingConfigurer {
    private static final Logger logger = LoggerFactory.getLogger(CancelNotPay.class);
    private static String cron = "0 */1 * * * ?";//"0 0 0 * * ?";0 */5 * * * ?
    @Autowired
    private TimeoutOverDueService timeoutOverDueService;
    public String change(String corIn) {
        if (StringUtils.isNotBlank(corIn)) {
            cron = corIn;
        }
        return cron;
    }
    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.addTriggerTask(new Runnable() {
            @Override
            public void run() {
                logger.info("START========CancelNotPay========");
                try {
                    timeoutOverDueService.CancelNotPay();
                    logger.info("END========CancelNotPay========");
                } catch (Exception e) {
                    e.printStackTrace();
                    logger.error("END===ERROE===CancelNotPay,message:"+e.getMessage());
                }
            }
        }, new Trigger() {
            @Override
            public Date nextExecutionTime(TriggerContext triggerContext) {
                // 任务触发,可修改任务的执行周期
                CronTrigger trigger = new CronTrigger(cron);
                System.out.println("CancelNotPay,可修改任务的执行周期"+cron);
                Date nextExec = trigger.nextExecutionTime(triggerContext);
                return nextExec;
            }
        });
    }
}

+ 19 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/patient/PatientNoLoginEndPoint.java

@ -1417,5 +1417,24 @@ public class PatientNoLoginEndPoint extends EnvelopRestEndpoint {
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.findJobCategory)
    @ApiOperation(value = "查询所有业务分类", notes = "查询所有业务分类")
    public MixEnvelop findJobCategory() {
        return prescriptionService.findJobCategory();
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.getNatRecords)
    @ApiOperation(value = "查询预约记录", notes = "查询预约记录")
    public MixEnvelop getNatRecords(@ApiParam(name = "patientId", value = "居民id")
                                        @RequestParam(value = "patientId", required = false)String patientId,
                                    @ApiParam(name = "page", value = "页数")
                                    @RequestParam(value = "page", required = false)Integer page,
                                    @ApiParam(name = "pageSize", value = "每页大小")
                                        @RequestParam(value = "pageSize", required = false)Integer pageSize) {
        return  prescriptionService.getNatRecords(patientId,page,pageSize);
    }
}