Browse Source

Merge branch 'dev' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into dev

humingfen 5 years ago
parent
commit
fa71eec76c

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

@ -40,6 +40,8 @@ import com.yihu.jw.hospital.message.service.SystemMessageService;
import com.yihu.jw.hospital.prescription.dao.*;
import com.yihu.jw.hospital.prescription.service.entrance.EntranceService;
import com.yihu.jw.hospital.prescription.service.entrance.YkyyEntranceService;
import com.yihu.jw.hospital.ykyy.service.YkyyService;
import com.yihu.jw.order.BusinessOrderService;
import com.yihu.jw.order.dao.BusinessOrderDao;
import com.yihu.jw.org.dao.BaseOrgDao;
import com.yihu.jw.patient.dao.BaseDoctorPatientFollowDao;
@ -170,6 +172,10 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
    private BusinessOrderDao businessOrderDao;
    @Autowired
    private YkyyEntranceService ykyyEntranceService;
    @Autowired
    private BusinessOrderService businessOrderService;
    @Autowired
    private YkyyService ykyyService;
    @Value("${demo.flag}")
@ -1807,8 +1813,6 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        prescriptionDO.setDoctor(outpatientDO.getDoctor());
        prescriptionDO.setDoctorName(outpatientDO.getDoctorName());
        if (wechatId.equalsIgnoreCase("xm_ykyy_wx")){
            BusinessOrderDO businessOrderDO = businessOrderDao.selectByRelationCode(prescriptionDO.getOutpatientId());
            prescriptionDO.setOrderNo(businessOrderDO.getOrderNo());
            prescriptionDO.setAdmNo(outpatientDO.getAdmNo());
        }
        WlyyPrescriptionDO prescription = prescriptionDao.save(prescriptionDO);
@ -1924,10 +1928,16 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            prescriptionDao.save(prescription);
            if (wechatId.equalsIgnoreCase("xm_ykyy_wx")){
                ykyyEntranceService.findByRealOrder(prescription.getId());
            }
            if (wechatId.equalsIgnoreCase("xm_ykyy_wx")){
                outpatientDO.setStatus("2");
                outpatientDao.save(outpatientDO);
                businessOrderService.savePrescriptionOrder(prescription.getId());
                BusinessOrderDO businessOrderDO = businessOrderDao.selectByRelationCode(outpatientDO.getId());
                BusinessOrderDO businessOrderDO1 = businessOrderDao.selectByRelationCode(prescription.getId());
                List<WlyyPrescriptionDO> prescriptionDOList = prescriptionDao.findById(prescription.getId());
                if(prescriptionDOList!=null&&prescriptionDOList.size()!=0){
                    WlyyPrescriptionDO wlyyPrescriptionDO = prescriptionDOList.get(0);
                    ykyyService.updateDrugorderInfo(businessOrderDO.getOrderNo(),businessOrderDO1.getYkOrderId(),wlyyPrescriptionDO.getRealOrder());
                }
                result.put("code", 1);
                result.put("mes", "诊断完成");
                return result;

+ 10 - 30
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/YkyyPrescriptionService.java

@ -446,37 +446,17 @@ public class YkyyPrescriptionService extends BaseJpaService<WlyyPrescriptionDO,
        if(wxWechatDO==null){
            throw new Exception("can't find wechat:the wxId is "+wechatId);
        }
        List<WlyyPrescriptionDO> wlyyPrescriptionDOS = prescriptionDao.findById(code);
        if (wlyyPrescriptionDOS!=null&&wlyyPrescriptionDOS.size()!=0){
            WlyyPrescriptionDO wlyyPrescriptionDO = wlyyPrescriptionDOS.get(0);
            BusinessOrderDO businessOrderDO = new BusinessOrderDO();
            businessOrderDO.setCreateTime(new Date());
            businessOrderDO.setUpdateTime(new Date());
            businessOrderDO.setStatus(0);
            businessOrderDO.setOrderNo("VAS"+businessOrderDO.getOrderType()+System.currentTimeMillis()+(int)(Math.random()*900)+100);
            businessOrderDO.setUploadStatus(0);
            businessOrderDO.setPayType(1);
            businessOrderDO.setRelationCode(code);
            businessOrderDO.setRelationName("处方结算");
            businessOrderDO.setOrderCategory("4");
            businessOrderDO.setOrderType(4);
            businessOrderDO.setDoctor(wlyyPrescriptionDO.getDoctor());
            businessOrderDO.setPatient(wlyyPrescriptionDO.getPatientCode());
            businessOrderDO.setPatientName(wlyyPrescriptionDO.getPatientName());
            businessOrderDO.setPayPrice(wlyyPrescriptionDO.getDrugFee()*100);
            businessOrderDO.setDescription("处方结算");
            businessOrderDO = businessOrderDao.save(businessOrderDO);
            if (businessOrderDO!=null){
                List<BasePatientWechatDo> patientWechatDos = patientWechatDao.findByWechatIdAndPatientId(wechatId,businessOrderDO.getPatient());
                String openId = "";
                if (patientWechatDos!=null&&patientWechatDos.size()!=0){
                    openId = patientWechatDos.get(0).getOpenid();
                }
                String url = wxWechatDO.getBaseUrl();
                String notifyUrl =url;
                String totalFee =businessOrderDO.getPayPrice().intValue()+"";
                map = businessOrderService.unifiedorder(wechatId,businessOrderDO.getDescription(),totalFee, WeChatConfig.TRADE_TYPE_JSAPI,openId,businessOrderDO.getOrderNo(),notifyUrl);
        BusinessOrderDO businessOrderDO = businessOrderDao.selectByRelationCode(code);
        if (businessOrderDO!=null){
            List<BasePatientWechatDo> patientWechatDos = patientWechatDao.findByWechatIdAndPatientId(wechatId,businessOrderDO.getPatient());
            String openId = "";
            if (patientWechatDos!=null&&patientWechatDos.size()!=0){
                openId = patientWechatDos.get(0).getOpenid();
            }
            String url = wxWechatDO.getBaseUrl();
            String notifyUrl =url;
            String totalFee =businessOrderDO.getPayPrice().intValue()+"";
            map = businessOrderService.unifiedorder(wechatId,businessOrderDO.getDescription(),totalFee, WeChatConfig.TRADE_TYPE_JSAPI,openId,businessOrderDO.getOrderNo(),notifyUrl);
        }
        return map;
    }

+ 6 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/YkyyEntranceService.java

@ -1181,6 +1181,12 @@ public class YkyyEntranceService {
                    hlwCf02DO.setGYTJ(wlyyPrescriptionInfoVO.getYpyf());
                    hlwCf02DO.setPSPB(0);
                    hlwCf02DO.setYYTS(1);
                    hlwCf02DO.setYCJL(wlyyPrescriptionInfoVO.getDosage()!=null?Double.parseDouble(wlyyPrescriptionInfoVO.getDosage()):0);
                    hlwCf02DO.setZBBZ(0);
                    hlwCf02DO.setYDFYBZ(0);
                    hlwCf02DO.setTYSQSL(0);
                    hlwCf02DO.setZJFLAG(0);
                    hlwCf02DO.setSPZT(0);
                    if (wlyyPrescriptionInfoVO.getHisCode()!=null){
                        hlwCf02DO.setSBXH(wlyyPrescriptionInfoVO.getHisCode());
                    }

+ 70 - 5
business/base-service/src/main/java/com/yihu/jw/hospital/ykyy/service/YkyyService.java

@ -299,13 +299,70 @@ public class YkyyService {
  /*  public String forgetPassword(String tel,String password){
    /**
     * 更新药品订单信息
     * @param orderNo 订单号
     * @param drugorder 药品订单[商城订单编号]
     * @param cfsb 处方识别号
     * @return
     */
    public String updateDrugorderInfo(String orderNo,String drugorder,String cfsb){
        String response="";
        String url = yktUrl+"doc_jkzl/update_drugorder_infor?order_no="+orderNo+"&drugorder="+drugorder+"$cfsb="+cfsb;
        response = httpClientUtil.get(url,"GBK");
        logger.info("更新药品订单信息:"+response);
        return response;
    }
    /**增加处方订单接口
     *
     * drugType	String	药品类型【1,到院 2、到商城】
    orderId	String	订单Id
    userId	String	用户Id
    Shopping	String	药品列表
    commodityName	String	药品名称
    commodityPrice	String	价格
    purchaseQuantity	String	数量
    DrugUnit	String	单位
    MedicineDoctor	String	医生Id
    [{"commodityName":"","commodityPrice":"","DrugUnit":"","MedicineDoctor":""}]
     * @return
     */
    public String addOrder4Jkzl(String drugType,String orderId,String userId,JSONArray array ){
        String response="";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("drugType",drugType);//药品类型【1,到院 2、到商城】
        jsonObject.put("orderId","");//订单Id
        jsonObject.put("userId",userId);//用户Id
        jsonObject.put("Shopping",array);//药品列表
        String url = "http://www.yanketong.com:90/api/Doctor/AddOrder4Jkzl";
        response = httpClientUtil.sendPost(url,jsonObject.toJSONString());
        logger.info("增加处方订单接口:"+response);
        return response;
    }
    /**获取眼科通忘记密码信息
     *
     * @param tel
     * @param password
     * @param vercode
     * @return
     */
    public String forgetPassword(String tel,String password,String vercode){
        String response="";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("loginid",tel);
        jsonObject.put("password",password);
        jsonObject.put("VerCode",vercode);
        String url = "http://www.yanketong.com:90/api/Patient/ForgotPassword";
        response = httpClientUtil.httpPost(url,"GBK");
        logger.info("获取眼科通登录信息:"+response);
        response = httpClientUtil.sendPost(url,jsonObject.toJSONString());
        logger.info("获取眼科通忘记密码信息:"+response);
        return response;
    }*/
    }
    /**
     * 同步眼科通数据
@ -313,7 +370,8 @@ public class YkyyService {
     * @return
     * @throws Exception
     */
    public void registerYkt(String patient) throws Exception {
    public String registerYkt(String patient) throws Exception {
        String yktId1 = "";
        BasePatientDO basePatientDO  = patientDao.findById(patient);
        if (basePatientDO!=null){
            String userId = basePatientDO.getUserId();
@ -327,6 +385,7 @@ public class YkyyService {
                        JSONObject jsonObject = array.getJSONObject(0);
                        if (jsonObject!=null){
                            String yktId = jsonObject.getString("ID");
                            yktId1=yktId;
                            basePatientDO.setYktId(yktId);
                            patientDao.save(basePatientDO);
                        }
@ -339,6 +398,7 @@ public class YkyyService {
                        if (object2.getString("code").equalsIgnoreCase("200")){
                            JSONObject object3 = object2.getJSONObject("data");
                            String yktId = object3.getString("ID");
                            yktId1=yktId;
                            basePatientDO.setYktId(yktId);
                            patientDao.save(basePatientDO);
                        }
@ -369,6 +429,7 @@ public class YkyyService {
                                    JSONObject jsonObject1 = array.getJSONObject(0);
                                    if (jsonObject1!=null){
                                        String yktId = jsonObject1.getString("ID");
                                        yktId1=yktId;
                                        userId = jsonObject1.getString("ASSUSERID");
                                        basePatientDO.setYktId(yktId);
                                        basePatientDO.setUserId(userId);
@ -383,6 +444,7 @@ public class YkyyService {
                                    if (object2.getString("code").equalsIgnoreCase("200")){
                                        JSONObject object3 = object2.getJSONObject("data");
                                        String yktId = object3.getString("ID");
                                        yktId1=yktId;
                                        basePatientDO.setYktId(yktId);
                                        userId = object3.getString("ASSUSERID");
                                        basePatientDO.setUserId(userId);
@ -407,6 +469,7 @@ public class YkyyService {
                            JSONObject jsonObject1 = array.getJSONObject(0);
                            if (jsonObject1!=null){
                                String yktId = jsonObject1.getString("ID");
                                yktId1=yktId;
                                userId = jsonObject1.getString("ASSUSERID");
                                basePatientDO.setYktId(yktId);
                                basePatientDO.setUserId(userId);
@ -422,6 +485,7 @@ public class YkyyService {
                            if (object2.getString("code").equalsIgnoreCase("200")){
                                JSONObject object3 = object2.getJSONObject("data");
                                String yktId = object3.getString("ID");
                                yktId1=yktId;
                                basePatientDO.setYktId(yktId);
                                userId = object3.getString("ASSUSERID");
                                basePatientDO.setUserId(userId);
@ -436,6 +500,7 @@ public class YkyyService {
                }
            }
        }
        return yktId1;
    }

+ 96 - 1
business/base-service/src/main/java/com/yihu/jw/order/BusinessOrderService.java

@ -12,12 +12,14 @@ import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.mapping.DoctorMappingDO;
import com.yihu.jw.entity.hospital.prescription.WlyyOutpatientDO;
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionDO;
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionInfoDO;
import com.yihu.jw.entity.order.BusinessOrderDO;
import com.yihu.jw.entity.order.BusinessOrderRefundDO;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.hospital.mapping.dao.DoctorMappingDao;
import com.yihu.jw.hospital.prescription.dao.OutpatientDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionInfoDao;
import com.yihu.jw.hospital.prescription.service.entrance.YkyyEntranceService;
import com.yihu.jw.hospital.ykyy.service.YkyyService;
import com.yihu.jw.order.dao.BusinessOrderDao;
@ -79,10 +81,98 @@ public class BusinessOrderService {
    private PrescriptionDao prescriptionDao;
    @Autowired
    private YkyyEntranceService ykyyEntranceService;
    @Autowired
    private PrescriptionInfoDao prescriptionInfoDao;
    /**
     *
     * 处方下单
     * drugType	String	药品类型【1,到院 2、到商城】
     orderId	String	订单Id
     userId	String	用户Id
     Shopping	String	药品列表
     commodityName	String	药品名称
     commodityPrice	String	价格
     purchaseQuantity	String	数量
     DrugUnit	String	单位
     MedicineDoctor	String	医生Id
     [{"commodityName":"","commodityPrice":"","DrugUnit":"","MedicineDoctor":""}]
     * @return
     * @throws Exception
     */
    public List<BusinessOrderDO> savePrescriptionOrder(String code) throws Exception {
        List<WlyyPrescriptionDO> wlyyPrescriptionDOS = prescriptionDao.findById(code);
        List<BusinessOrderDO> businessOrderDOS = new ArrayList<>();
        if (wlyyPrescriptionDOS!=null&&wlyyPrescriptionDOS.size()!=0){
            WlyyPrescriptionDO wlyyPrescriptionDO = wlyyPrescriptionDOS.get(0);
            BusinessOrderDO businessOrderDO = new BusinessOrderDO();
            businessOrderDO.setCreateTime(new Date());
            businessOrderDO.setUpdateTime(new Date());
            businessOrderDO.setStatus(0);
            businessOrderDO.setOrderNo("VAS"+businessOrderDO.getOrderType()+System.currentTimeMillis()+(int)(Math.random()*900)+100);
            businessOrderDO.setUploadStatus(0);
            businessOrderDO.setPayType(1);
            businessOrderDO.setRelationCode(code);
            businessOrderDO.setRelationName("处方结算");
            businessOrderDO.setOrderCategory("4");
            businessOrderDO.setOrderType(4);
            businessOrderDO.setDoctor(wlyyPrescriptionDO.getDoctor());
            businessOrderDO.setPatient(wlyyPrescriptionDO.getPatientCode());
            businessOrderDO.setPatientName(wlyyPrescriptionDO.getPatientName());
            businessOrderDO.setPayPrice(wlyyPrescriptionDO.getDrugFee()*100);
            businessOrderDO.setDescription("处方结算");
            businessOrderDO = businessOrderDao.save(businessOrderDO);
            businessOrderDOS.add(businessOrderDO);
            wlyyPrescriptionDO.setOrderNo(businessOrderDO.getOrderNo());
            prescriptionDao.save(wlyyPrescriptionDO);
            JSONArray array = new JSONArray();
            List<WlyyPrescriptionInfoDO> wlyyPrescriptionInfoDOS = prescriptionInfoDao.findByPrescriptionId(code);
            for (WlyyPrescriptionInfoDO prescriptionInfoDO:wlyyPrescriptionInfoDOS){
                JSONObject object = new JSONObject();
                //{"commodityName":"","commodityPrice":"","DrugUnit":"","MedicineDoctor":""}
                object.put("commodityName",prescriptionInfoDO.getDrugName());
                object.put("commodityPrice",prescriptionInfoDO.getPackRetprice());
                object.put("DrugUnit",prescriptionInfoDO.getPackUnitName());
                DoctorMappingDO doctorMappingDO = doctorMappingDao.findByDoctor(businessOrderDO.getDoctor());
                String yktDoctor ="";
                if (doctorMappingDO!=null&&StringUtils.isNoneBlank(doctorMappingDO.getMappingCode())){
                    String doctorResponse = ykyyService.getYktDoctor(doctorMappingDO.getMappingCode());
                    JSONObject jsonObject = JSONObject.parseObject(doctorResponse);
                    if (jsonObject.getInteger("code")==200){
                        JSONArray array1 = jsonObject.getJSONArray("data");
                        if (array1!=null&&array1.size()!=0){
                            yktDoctor=array.getJSONObject(0).getString("DOCTORUSERID");
                        }
                    }
                }else {
                    throw new Exception("医生映射表不存在!");
                }
                object.put("MedicineDoctor",yktDoctor);
                array.add(object);
            }
            BasePatientDO patientDO = patientDao.findById(businessOrderDO.getPatient());
            String userId =null;
            if (patientDO!=null){
                userId = patientDO.getUserId();
            }
            String response = ykyyService.addOrder4Jkzl("1","",userId,array);
            if (StringUtils.isNoneBlank(response)){
                JSONObject jsonObject = JSONObject.parseObject(response);
                if (jsonObject.getString("code").equalsIgnoreCase("10000")){
                    String orderId = jsonObject.getString("orderId");
                    String orderNo = jsonObject.getString("orderNo");
                    businessOrderDO.setYkOrderId(orderId);
                    businessOrderDO.setYkOrderNo(orderNo);
                    businessOrderDao.save(businessOrderDO);
                }
            }
        }
        return businessOrderDOS;
    }
    /**
     * @param businessOrderDO
     * @return
@ -112,7 +202,12 @@ public class BusinessOrderService {
        String patient = businessOrderDO.getPatient();
        BasePatientDO basePatientDO = patientDao.findById(patient);
        String orderNo = businessOrderDO.getOrderNo();
        String patientId = basePatientDO.getYktId();
        String patientId = "";
        if (StringUtils.isNoneBlank(basePatientDO.getYktId())){
            patientId = basePatientDO.getYktId();
        }else {
            patientId = ykyyService.registerYkt(basePatientDO.getId());
        }
        String orderAmout = businessOrderDO.getPayPrice().toString();
        String description = businessOrderDO.getDescription();
        String state = businessOrderDO.getStatus().toString();

+ 488 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/prescription/HlwGhmxDO.java

@ -0,0 +1,488 @@
package com.yihu.jw.entity.hospital.prescription;
import com.fasterxml.jackson.annotation.JsonFormat;
import javax.persistence.*;
import java.util.Date;
/**
 * 眼科处方表1数据
 *
 * */
//@ApiModel(value = "HlwCf01VO", description = "眼科处方表1数据")
@Entity
@Table(name = "HLW_GHMX")
public class HlwGhmxDO {
    private Integer sBXH;//NUMBER(18)N0识别序号
    private Integer bRID;//NUMBER(18)Y病人ID号
    private Integer bRXZ;//NUMBER(4)Y病人性质
    private Date gHSJ;//DATEY挂号时间
    private Integer gHLB;//NUMBER(4)Y挂号类别
    private String kSDM;//VARCHAR2(6)Y科室代码
    private String ySDM;//VARCHAR2(10)Y医生代码
    private String jZYS;//VARCHAR2(10)Y接诊医生;该字段院长查询使用,用于按医生统计挂号人数,导数据时根据处方、检查单及发票将医生写入到该字段中
    private Integer jZXH;//NUMBER(4)N1就诊序号
    private Integer gHCS;//NUMBER(4)N1挂号次数
    private Integer gHJE;//NUMBER(10;2)N0挂号金额
    private Integer zLJE;//NUMBER(10;2)N0诊疗金额
    private Integer zJFY;//NUMBER(10;2)N0专家费用
    private Integer bLJE;//NUMBER(10;2)N0病历金额
    private Integer xJJE;//NUMBER(10;2)N0现金金额
    private Integer zPJE;//NUMBER(10;2)N0支票金额
    private Integer zHJE;//NUMBER(10;2)N0帐户金额
    private Integer hBWC;//NUMBER(10;2)N0货币误差
    private Integer qTYS;//NUMBER(10;2)N0其他应收
    private Integer zHLB;//NUMBER(2)Y帐户类别
    private Integer jZJS;//NUMBER(1)Y0就诊结束
    private Integer zDJG;//NUMBER(6)Y诊断结果
    private Integer tHBZ;//NUMBER(1)N0退号标志:0正常、1退号、9申请退号
    private String cZGH;//VARCHAR2(10)Y操作工号
    private Date jZRQ;//DATEY结帐日期
    private Date hZRQ;//DATEY汇总日期
    private Integer cZPB;//NUMBER(4)N0初诊判别
    private Integer jZHM;//VARCHAR2(12)Y就诊号码
    private Integer mZLB;//NUMBER(2)N0门诊类别
    private Integer yYBZ;//NUMBER(1)Y0预约标志
    private Integer ySPB;//NUMBER(1)N0医生判别
    private Integer dZSB;//NUMBER(1)Y导诊识别;导诊识别标志;0表示导诊台未处理;1表示导诊台已经处理
    private Integer sFFS;//NUMBER(1)N0收费方式
    private Integer jZZT;//NUMBER(1)N0就诊状态;0:挂号  1:就诊中  2:就诊结束
    private Integer ySLB;//NUMBER(1)Y
    private String gHLSH;//VARCHAR2(16)Y
    private Integer sLJCFY;//NUMBER(10;2)Y0视力检查费用
    private Integer gLYJXH;//NUMBER(18)Y关联医技序号
    private Integer jZPB;//NUMBER(1)Y
    private Integer yGJB;//NUMBER(5)Y
    private Integer pJBZ;//NUMBER(1)Y0配镜标志
    private Integer wLYY;//NUMBER(1)Y00表示HIS,1表示网络预约未到,2表示网络预约已到医院就诊
    private Integer ySFY;//NUMBER(10;2)Y药事费用
    private String ySZJDJ;//VARCHAR2(12)Y医师诊察费收费等级
    private Integer sLJZFS;//NUMBER(1)Y力矫正方式:1角塑、2框架、3训练
    private String aKA078;//VARCHAR2(10)Y医疗就诊方式
    private String bKE241;//VARCHAR2(10)Y数据来源
    @Id
    @Column(name = "SBXH")
    public Integer getSBXH() {
        return sBXH;
    }
    public void setSBXH(Integer sBXH) {
        this.sBXH = sBXH;
    }
    @Column(name = "BRID")
    public Integer getBRID() {
        return bRID;
    }
    public void setBRID(Integer bRID) {
        this.bRID = bRID;
    }
    @Column(name = "BRXZ")
    public Integer getBRXZ() {
        return bRXZ;
    }
    public void setBRXZ(Integer bRXZ) {
        this.bRXZ = bRXZ;
    }
    @Column(name = "GHSJ")
    public Date getGHSJ() {
        return gHSJ;
    }
    public void setGHSJ(Date gHSJ) {
        this.gHSJ = gHSJ;
    }
    @Column(name = "GHLB")
    public Integer getGHLB() {
        return gHLB;
    }
    public void setGHLB(Integer gHLB) {
        this.gHLB = gHLB;
    }
    @Column(name = "KSDM")
    public String getKSDM() {
        return kSDM;
    }
    public void setKSDM(String kSDM) {
        this.kSDM = kSDM;
    }
    @Column(name = "YSDM")
    public String getYSDM() {
        return ySDM;
    }
    public void setYSDM(String ySDM) {
        this.ySDM = ySDM;
    }
    @Column(name = "JZYS")
    public String getJZYS() {
        return jZYS;
    }
    public void setJZYS(String jZYS) {
        this.jZYS = jZYS;
    }
    @Column(name = "JZXH")
    public Integer getJZXH() {
        return jZXH;
    }
    public void setJZXH(Integer jZXH) {
        this.jZXH = jZXH;
    }
    @Column(name = "GHCS")
    public Integer getGHCS() {
        return gHCS;
    }
    public void setGHCS(Integer gHCS) {
        this.gHCS = gHCS;
    }
    @Column(name = "GHJE")
    public Integer getGHJE() {
        return gHJE;
    }
    public void setGHJE(Integer gHJE) {
        this.gHJE = gHJE;
    }
    @Column(name = "ZLJE")
    public Integer getZLJE() {
        return zLJE;
    }
    public void setZLJE(Integer zLJE) {
        this.zLJE = zLJE;
    }
    @Column(name = "ZJFY")
    public Integer getZJFY() {
        return zJFY;
    }
    public void setZJFY(Integer zJFY) {
        this.zJFY = zJFY;
    }
    @Column(name = "BLJE")
    public Integer getBLJE() {
        return bLJE;
    }
    public void setBLJE(Integer bLJE) {
        this.bLJE = bLJE;
    }
    @Column(name = "XJJE")
    public Integer getXJJE() {
        return xJJE;
    }
    public void setXJJE(Integer xJJE) {
        this.xJJE = xJJE;
    }
    @Column(name = "ZPJE")
    public Integer getZPJE() {
        return zPJE;
    }
    public void setZPJE(Integer zPJE) {
        this.zPJE = zPJE;
    }
    @Column(name = "ZHJE")
    public Integer getZHJE() {
        return zHJE;
    }
    public void setZHJE(Integer zHJE) {
        this.zHJE = zHJE;
    }
    @Column(name = "HBWC")
    public Integer getHBWC() {
        return hBWC;
    }
    public void setHBWC(Integer hBWC) {
        this.hBWC = hBWC;
    }
    @Column(name = "QTYS")
    public Integer getQTYS() {
        return qTYS;
    }
    public void setQTYS(Integer qTYS) {
        this.qTYS = qTYS;
    }
    @Column(name = "ZHLB")
    public Integer getZHLB() {
        return zHLB;
    }
    public void setZHLB(Integer zHLB) {
        this.zHLB = zHLB;
    }
    @Column(name = "JZJS")
    public Integer getJZJS() {
        return jZJS;
    }
    public void setJZJS(Integer jZJS) {
        this.jZJS = jZJS;
    }
    @Column(name = "ZDJG")
    public Integer getZDJG() {
        return zDJG;
    }
    public void setZDJG(Integer zDJG) {
        this.zDJG = zDJG;
    }
    @Column(name = "THBZ")
    public Integer getTHBZ() {
        return tHBZ;
    }
    public void setTHBZ(Integer tHBZ) {
        this.tHBZ = tHBZ;
    }
    @Column(name = "CZGH")
    public String getCZGH() {
        return cZGH;
    }
    public void setCZGH(String cZGH) {
        this.cZGH = cZGH;
    }
    @Column(name = "JZRQ")
    public Date getJZRQ() {
        return jZRQ;
    }
    public void setJZRQ(Date jZRQ) {
        this.jZRQ = jZRQ;
    }
    @Column(name = "HZRQ")
    public Date getHZRQ() {
        return hZRQ;
    }
    public void setHZRQ(Date hZRQ) {
        this.hZRQ = hZRQ;
    }
    @Column(name = "CZPB")
    public Integer getCZPB() {
        return cZPB;
    }
    public void setCZPB(Integer cZPB) {
        this.cZPB = cZPB;
    }
    @Column(name = "JZHM")
    public Integer getJZHM() {
        return jZHM;
    }
    public void setJZHM(Integer jZHM) {
        this.jZHM = jZHM;
    }
    @Column(name = "MZLB")
    public Integer getMZLB() {
        return mZLB;
    }
    public void setMZLB(Integer mZLB) {
        this.mZLB = mZLB;
    }
    @Column(name = "YYBZ")
    public Integer getYYBZ() {
        return yYBZ;
    }
    public void setYYBZ(Integer yYBZ) {
        this.yYBZ = yYBZ;
    }
    @Column(name = "YSPB")
    public Integer getYSPB() {
        return ySPB;
    }
    public void setYSPB(Integer ySPB) {
        this.ySPB = ySPB;
    }
    @Column(name = "DZSB")
    public Integer getDZSB() {
        return dZSB;
    }
    public void setDZSB(Integer dZSB) {
        this.dZSB = dZSB;
    }
    @Column(name = "SFFS")
    public Integer getSFFS() {
        return sFFS;
    }
    public void setsFFS(Integer sFFS) {
        this.sFFS = sFFS;
    }
    @Column(name = "JZZT")
    public Integer getJZZT() {
        return jZZT;
    }
    public void setJZZT(Integer jZZT) {
        this.jZZT = jZZT;
    }
    @Column(name = "YSLB")
    public Integer getYSLB() {
        return ySLB;
    }
    public void setYSLB(Integer ySLB) {
        this.ySLB = ySLB;
    }
    @Column(name = "GHLSH")
    public String getGHLSH() {
        return gHLSH;
    }
    public void setGHLSH(String gHLSH) {
        this.gHLSH = gHLSH;
    }
    @Column(name = "SLJCFY")
    public Integer getSLJCFY() {
        return sLJCFY;
    }
    public void setSLJCFY(Integer sLJCFY) {
        this.sLJCFY = sLJCFY;
    }
    @Column(name = "GLYJXH")
    public Integer getGLYJXH() {
        return gLYJXH;
    }
    public void setGLYJXH(Integer gLYJXH) {
        this.gLYJXH = gLYJXH;
    }
    @Column(name = "JZPB")
    public Integer getJZPB() {
        return jZPB;
    }
    public void setJZPB(Integer jZPB) {
        this.jZPB = jZPB;
    }
    @Column(name = "YGJB")
    public Integer getYGJB() {
        return yGJB;
    }
    public void setYGJB(Integer yGJB) {
        this.yGJB = yGJB;
    }
    @Column(name = "PJBZ")
    public Integer getPJBZ() {
        return pJBZ;
    }
    public void setPJBZ(Integer pJBZ) {
        this.pJBZ = pJBZ;
    }
    @Column(name = "WLYY")
    public Integer getWLYY() {
        return wLYY;
    }
    public void setWLYY(Integer wLYY) {
        this.wLYY = wLYY;
    }
    @Column(name = "YSFY")
    public Integer getYSFY() {
        return ySFY;
    }
    public void setYSFY(Integer ySFY) {
        this.ySFY = ySFY;
    }
    @Column(name = "YSZJDJ")
    public String getYSZJDJ() {
        return ySZJDJ;
    }
    public void setYSZJDJ(String ySZJDJ) {
        this.ySZJDJ = ySZJDJ;
    }
    @Column(name = "SLJZFS")
    public Integer getSLJZFS() {
        return sLJZFS;
    }
    public void setSLJZFS(Integer sLJZFS) {
        this.sLJZFS = sLJZFS;
    }
    @Column(name = "AKA078")
    public String getAKA078() {
        return aKA078;
    }
    public void setAKA078(String aKA078) {
        this.aKA078 = aKA078;
    }
    @Column(name = "BKE241")
    public String getBKE241() {
        return bKE241;
    }
    public void setBKE241(String bKE241) {
        this.bKE241 = bKE241;
    }
}

+ 318 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/prescription/HlwYsMzJbzdDO.java

@ -0,0 +1,318 @@
package com.yihu.jw.entity.hospital.prescription;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
 * 眼科处方表1数据
 *
 * */
//@ApiModel(value = "HlwCf01VO", description = "眼科处方表1数据")
@Entity
@Table(name = "HLW_GHMX")
public class HlwYsMzJbzdDO {
    private Integer jLBH;//N	NUMBER(18)	N			主键
    private Integer jZXH;//N	NUMBER(18)	N			就诊序号
    private Integer bRBH;//N	NUMBER(18)	Y			病人ID号
    private Integer jBBH;//N	NUMBER(18)	Y			V_HLW_ICD10.FLAG
    private Integer zDLB;//N	NUMBER(9)	Y			11 诊断类别
    private Integer jBZG;//N	NUMBER(9)	Y
    private String  ySDM;//N	VARCHAR2(10)	N			医生代码
    private Date    zDSJ;//N	DATE	Y			诊断时间
    private Integer zFPB;//N	NUMBER(1)	Y	0		作废判别
    private String  iCD;//N	VARCHAR2(20)	Y			icd编码
    private String  mSZD;//N	VARCHAR2(100)	Y			诊断名称
    private Integer zZBJ;//N	NUMBER(1)	Y
    private Integer qZBZ;//N	NUMBER(1)	Y			确诊标志
    private String bZXX;//N	VARCHAR2(100)	Y			备注信息
    private Date qZSJ;//N	DATE	Y			确诊时间
    private Integer zXLB;//N	NUMBER(1)	Y	1		诊断类别 1.西医 2.中医
    private Integer zNXH;//N	NUMBER(2)	Y			组内序号,同一个组内,疾病排列
    private String jBMC;//N	VARCHAR2(50)	Y			诊断名称
    private Integer fJBS;//N	NUMBER(18)	Y
    private Integer tJBZ;//N	NUMBER(1)	Y			提交标志
    private Integer bKZT;//N	NUMBER(1)	Y
    private Integer dYBZ;//N	NUMBER(1)	Y	0
    private Integer zDLX;//N	NUMBER(9)	Y			诊断类型 默认1
    private Integer zDXH;//N	NUMBER(18)	Y			诊断序号唯一就行目前
    private String jBZH;//N	VARCHAR2(2)	Y			1 疾病组号。 区分不同组
    private String fJMC;//N	VARCHAR2(60)	Y
    private String yWBS;//N	VARCHAR2(50)	Y
    private String zFYS;//N	VARCHAR2(10)	Y
    private Date zFSJ;//N	DATE	Y
    private Integer zJFLAG;//N	NUMBER(1)	Y	0		传输标记
    @Id
    @Column(name = "JLBH")
    public Integer getJLBH() {
        return jLBH;
    }
    public void setJLBH(Integer jLBH) {
        this.jLBH = jLBH;
    }
    @Column(name = "JZXH")
    public Integer getJZXH() {
        return jZXH;
    }
    public void setJZXH(Integer jZXH) {
        this.jZXH = jZXH;
    }
    @Column(name = "BRBH")
    public Integer getBRBH() {
        return bRBH;
    }
    public void setBRBH(Integer bRBH) {
        this.bRBH = bRBH;
    }
    @Column(name = "JBBH")
    public Integer getJBBH() {
        return jBBH;
    }
    public void setJBBH(Integer jBBH) {
        this.jBBH = jBBH;
    }
    @Column(name = "ZDLB")
    public Integer getZDLB() {
        return zDLB;
    }
    public void setZDLB(Integer zDLB) {
        this.zDLB = zDLB;
    }
    @Column(name = "JBZG")
    public Integer getJBZG() {
        return jBZG;
    }
    public void setJBZG(Integer jBZG) {
        this.jBZG = jBZG;
    }
    @Column(name = "YSDM")
    public String getYSDM() {
        return ySDM;
    }
    public void setYSDM(String ySDM) {
        this.ySDM = ySDM;
    }
    @Column(name = "ZDSJ")
    public Date getZDSJ() {
        return zDSJ;
    }
    public void setZDSJ(Date zDSJ) {
        this.zDSJ = zDSJ;
    }
    @Column(name = "ZFPB")
    public Integer getZFPB() {
        return zFPB;
    }
    public void setZFPB(Integer zFPB) {
        this.zFPB = zFPB;
    }
    @Column(name = "ICD")
    public String getICD() {
        return iCD;
    }
    public void setICD(String iCD) {
        this.iCD = iCD;
    }
    @Column(name = "MSZD")
    public String getMSZD() {
        return mSZD;
    }
    public void setMSZD(String mSZD) {
        this.mSZD = mSZD;
    }
    @Column(name = "ZZBJ")
    public Integer getZZBJ() {
        return zZBJ;
    }
    public void setZZBJ(Integer zZBJ) {
        this.zZBJ = zZBJ;
    }
    @Column(name = "QZBZ")
    public Integer getQZBZ() {
        return qZBZ;
    }
    public void setQZBZ(Integer qZBZ) {
        this.qZBZ = qZBZ;
    }
    @Column(name = "BZXX")
    public String getBZXX() {
        return bZXX;
    }
    public void setBZXX(String bZXX) {
        this.bZXX = bZXX;
    }
    @Column(name = "QZSJ")
    public Date getQZSJ() {
        return qZSJ;
    }
    public void setQZSJ(Date qZSJ) {
        this.qZSJ = qZSJ;
    }
    @Column(name = "ZXLB")
    public Integer getZXLB() {
        return zXLB;
    }
    public void setZXLB(Integer zXLB) {
        this.zXLB = zXLB;
    }
    @Column(name = "ZNXH")
    public Integer getZNXH() {
        return zNXH;
    }
    public void setZNXH(Integer zNXH) {
        this.zNXH = zNXH;
    }
    @Column(name = "JBMC")
    public String getJBMC() {
        return jBMC;
    }
    public void setJBMC(String jBMC) {
        this.jBMC = jBMC;
    }
    @Column(name = "FJBS")
    public Integer getFJBS() {
        return fJBS;
    }
    public void setFJBS(Integer fJBS) {
        this.fJBS = fJBS;
    }
    @Column(name = "TJBZ")
    public Integer getTJBZ() {
        return tJBZ;
    }
    public void setTJBZ(Integer tJBZ) {
        this.tJBZ = tJBZ;
    }
    @Column(name = "BKZT")
    public Integer getBKZT() {
        return bKZT;
    }
    public void setBKZT(Integer bKZT) {
        this.bKZT = bKZT;
    }
    @Column(name = "DYBZ")
    public Integer getDYBZ() {
        return dYBZ;
    }
    public void setDYBZ(Integer dYBZ) {
        this.dYBZ = dYBZ;
    }
    @Column(name = "ZDLX")
    public Integer getZDLX() {
        return zDLX;
    }
    public void setZDLX(Integer zDLX) {
        this.zDLX = zDLX;
    }
    @Column(name = "ZDXH")
    public Integer getZDXH() {
        return zDXH;
    }
    public void setZDXH(Integer zDXH) {
        this.zDXH = zDXH;
    }
    @Column(name = "JBZH")
    public String getJBZH() {
        return jBZH;
    }
    public void setJBZH(String jBZH) {
        this.jBZH = jBZH;
    }
    @Column(name = "FJMC")
    public String getFJMC() {
        return fJMC;
    }
    public void setFJMC(String fJMC) {
        this.fJMC = fJMC;
    }
    @Column(name = "YWBS")
    public String getYWBS() {
        return yWBS;
    }
    public void setYWBS(String yWBS) {
        this.yWBS = yWBS;
    }
    @Column(name = "ZFYS")
    public String getZFYS() {
        return zFYS;
    }
    public void setZFYS(String zFYS) {
        this.zFYS = zFYS;
    }
    @Column(name = "ZFSJ")
    public Date getZFSJ() {
        return zFSJ;
    }
    public void setZFSJ(Date zFSJ) {
        this.zFSJ = zFSJ;
    }
    @Column(name = "ZJFLAG")
    public Integer getZJFLAG() {
        return zJFLAG;
    }
    public void setZJFLAG(Integer zJFLAG) {
        this.zJFLAG = zJFLAG;
    }
}

+ 257 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/prescription/HlwYsMzJzLsDO.java

@ -0,0 +1,257 @@
package com.yihu.jw.entity.hospital.prescription;
import com.fasterxml.jackson.annotation.JsonFormat;
import javax.persistence.*;
import java.util.Date;
/**
 * 眼科处方表1数据
 *
 * */
@Entity
@Table(name = "v_ms_dd02")
public class HlwYsMzJzLsDO {
    private Integer jZXH;//NUMBER(18)N
    private Integer gHXH;//NUMBER(18)N
    private Integer bRBH;//NUMBER(18)N病人ID号
    private Integer kSDM;//NUMBER(4)N科室代码
    private String  ySDM;//VARCHAR2(10)N医生代码
    private Integer zYZD;//NUMBER(18)YV_HLW_ICD10.FLAG
    private Date kSSJ;//DATEN就诊开始时间
    private Date jSSJ;//DATEY就诊结束时间
    private Integer jZZT;//NUMBER(1)N就诊状态 (9结束)
    private Integer yYXH;//NUMBER(18)Y
    private Date fZRQ;//DATEY
    private Integer gHFZ;//NUMBER(1)Y
    private Integer jZLX;//NUMBER(2)Y就诊类型 (3)
    private String pBZXM;//VARCHAR2(30)Y
    private Integer pBZGX;//NUMBER(4)Y
    private String pBZDH;//VARCHAR2(20)Y
    private String pBZDZ;//VARCHAR2(50)Y
    private String pBZDW;//VARCHAR2(50)Y
    private String zDMC;//VARCHAR2(100)Y诊断名称
    private Integer cZPB;//NUMBER(1)Y
    private String mQZD;//VARCHAR2(255)Y诊断名称
    private Integer yYID;//NUMBER(1)Y医院ID:0表示本院,1表示外院
    private Integer zJFLAG;//NUMBER(1)Y0传输标记
    private Integer wLYY;//NUMBER(1)Y00表示HIS,1表示网络预约未到,2表示网络预约已到医院就诊
    @Id
    @Column(name = "JZXH")
    public Integer getJZXH() {
        return jZXH;
    }
    public void setJZXH(Integer jZXH) {
        this.jZXH = jZXH;
    }
    @Column(name = "GHXH")
    public Integer getGHXH() {
        return gHXH;
    }
    public void setGHXH(Integer gHXH) {
        this.gHXH = gHXH;
    }
    @Column(name = "BRBH")
    public Integer getBRBH() {
        return bRBH;
    }
    public void setBRBH(Integer bRBH) {
        this.bRBH = bRBH;
    }
    @Column(name = "KSDM")
    public Integer getKSDM() {
        return kSDM;
    }
    public void setKSDM(Integer kSDM) {
        this.kSDM = kSDM;
    }
    @Column(name = "YSDM")
    public String getYSDM() {
        return ySDM;
    }
    public void setYSDM(String ySDM) {
        this.ySDM = ySDM;
    }
    @Column(name = "ZYZD")
    public Integer getZYZD() {
        return zYZD;
    }
    public void setZYZD(Integer zYZD) {
        this.zYZD = zYZD;
    }
    @Column(name = "KSSJ")
    public Date getKSSJ() {
        return kSSJ;
    }
    public void setKSSJ(Date kSSJ) {
        this.kSSJ = kSSJ;
    }
    @Column(name = "JSSJ")
    public Date getJSSJ() {
        return jSSJ;
    }
    public void setJSSJ(Date jSSJ) {
        this.jSSJ = jSSJ;
    }
    @Column(name = "JZZT")
    public Integer getJZZT() {
        return jZZT;
    }
    public void setJZZT(Integer jZZT) {
        this.jZZT = jZZT;
    }
    @Column(name = "YYXH")
    public Integer getYYXH() {
        return yYXH;
    }
    public void setYYXH(Integer yYXH) {
        this.yYXH = yYXH;
    }
    @Column(name = "FZRQ")
    public Date getFZRQ() {
        return fZRQ;
    }
    public void setFZRQ(Date fZRQ) {
        this.fZRQ = fZRQ;
    }
    @Column(name = "GHFZ")
    public Integer getGHFZ() {
        return gHFZ;
    }
    public void setGHFZ(Integer gHFZ) {
        this.gHFZ = gHFZ;
    }
    @Column(name = "JZLX")
    public Integer getJZLX() {
        return jZLX;
    }
    public void setJZLX(Integer jZLX) {
        this.jZLX = jZLX;
    }
    @Column(name = "PBZXM")
    public String getPBZXM() {
        return pBZXM;
    }
    public void setPBZXM(String pBZXM) {
        this.pBZXM = pBZXM;
    }
    @Column(name = "PBZGX")
    public Integer getPBZGX() {
        return pBZGX;
    }
    public void setPBZGX(Integer pBZGX) {
        this.pBZGX = pBZGX;
    }
    @Column(name = "PBZDH")
    public String getPBZDH() {
        return pBZDH;
    }
    public void setPBZDH(String pBZDH) {
        this.pBZDH = pBZDH;
    }
    @Column(name = "PBZDZ")
    public String getPBZDZ() {
        return pBZDZ;
    }
    public void setPBZDZ(String pBZDZ) {
        this.pBZDZ = pBZDZ;
    }
    @Column(name = "PBZDW")
    public String getPBZDW() {
        return pBZDW;
    }
    public void setPBZDW(String pBZDW) {
        this.pBZDW = pBZDW;
    }
    @Column(name = "ZDMC")
    public String getZDMC() {
        return zDMC;
    }
    public void setZDMC(String zDMC) {
        this.zDMC = zDMC;
    }
    @Column(name = "CZPB")
    public Integer getCZPB() {
        return cZPB;
    }
    public void setCZPB(Integer cZPB) {
        this.cZPB = cZPB;
    }
    @Column(name = "MQZD")
    public String getMQZD() {
        return mQZD;
    }
    public void setMQZD(String mQZD) {
        this.mQZD = mQZD;
    }
    @Column(name = "YYID")
    public Integer getYYID() {
        return yYID;
    }
    public void setYYID(Integer yYID) {
        this.yYID = yYID;
    }
    @Column(name = "ZJFLAG")
    public Integer getZJFLAG() {
        return zJFLAG;
    }
    public void setZJFLAG(Integer zJFLAG) {
        this.zJFLAG = zJFLAG;
    }
    @Column(name = "WLYY")
    public Integer getWLYY() {
        return wLYY;
    }
    public void setWLYY(Integer wLYY) {
        this.wLYY = wLYY;
    }
}

+ 20 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/order/BusinessOrderDO.java

@ -43,6 +43,8 @@ public class BusinessOrderDO extends IntegerIdentityEntity {
    private Date updateTime;
    private String updateUser;
    private String updateUserName;
    private String ykOrderNo;
    private String ykOrderId;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "create_time", nullable = false, length = 0,updatable = false)
@ -256,4 +258,22 @@ public class BusinessOrderDO extends IntegerIdentityEntity {
    public void setRematk(String rematk) {
        this.rematk = rematk;
    }
    @Column(name = "yk_order_no")
    public String getYkOrderNo() {
        return ykOrderNo;
    }
    public void setYkOrderNo(String ykOrderNo) {
        this.ykOrderNo = ykOrderNo;
    }
    @Column(name = "yk_order_id")
    public String getYkOrderId() {
        return ykOrderId;
    }
    public void setYkOrderId(String ykOrderId) {
        this.ykOrderId = ykOrderId;
    }
}

+ 144 - 1
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java

@ -134,6 +134,8 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
    private YkyySMSService ykyySMSService;
    @Autowired
    private RegisterService registerService;
    @Autowired
    private YkyyService ykyyService;
    @PostConstruct
    private void init() {
@ -1259,7 +1261,7 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
        try {
            Map<String,Object> rs = registerService.registerPatient(name,mobile,idcard,ssc,pw,openid,wxId);
            Map<String,Object> rs = registerService.registerPatient(name,mobile,idcard,ssc,pw,openid,wxId,captcha);
            String code = rs.get("code").toString();
            if(!"1".equals(code)){
                ObjEnvelop objEnvelop = new ObjEnvelop();
@ -1360,4 +1362,145 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
    }
    /**
     * 眼科通登陆
     *
     * @param parameters  不定入参:
     *                    client_id 应用标识
     *                    captcha 验证码
     *                    password 密码
     *                    username 用户名/手机/身份证号
     *                    key 图形验证码键值
     *                    text 用户输入的图形验证码
     *                    login_type 用户类型 1或默认为user,2:医生登录,3:患者登录,4:第三方同步账号登录,5.易联众居民健康卡授权登录
     * @param httpSession
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/oauth/ykLogin", method = RequestMethod.POST)
    public ResponseEntity<Oauth2Envelop<WlyyUserSimple>> ykLogin(@RequestParam Map<String, String> parameters, HttpSession httpSession) throws Exception {
        //图形验证码验证
        String key = parameters.get("key");
        String text = parameters.get("text");
        if(org.apache.commons.lang3.StringUtils.isNotBlank(key)&& org.apache.commons.lang3.StringUtils.isNotBlank(text)){
            if(!verifyCaptcha(key,text)){
                throw new ImgCaptchaException("img_captcha error");
            }
        }
        String username = parameters.get("username");
        if (StringUtils.isEmpty(username)) {
            throw new InvalidRequestException("username");
        }
        String client_id = parameters.get("client_id");
        if (StringUtils.isEmpty(client_id)) {
            throw new InvalidRequestException("client_id");
        }
        String wechatId = parameters.get("wechatId");
        if (StringUtils.isEmpty(parameters.get("captcha"))) {
            parameters.put("grant_type", "ihealthCode");
            //解密密码
            if (parameters.get("password") != null) {
                KeyPair keyPair = (KeyPair) httpSession.getAttribute("privateKey");
                String password = com.yihu.jw.security.utils.RSAUtils.decryptBase64(parameters.get("password"), keyPair);
                String response = ykyyService.yktLogin(parameters.get("username"),password);
                if (!StringUtils.isEmpty(response)){
                    JSONObject object = JSONObject.parseObject(response);
                    if (!object.getString("code").equalsIgnoreCase("200")){
                        throw new Exception(object.getString("msg"));
                    }
                }
                parameters.remove("password");
            } else {
                //第三方同步账号模式登录
                parameters.put("grant_type", "ihealthCode");
            }
        } else {
            parameters.put("grant_type", "captcha");
        }
        ClientDetails authenticatedClient = clientDetailsService.loadClientByClientId(client_id);
        if (null == authenticatedClient) {
            throw new InvalidRequestException("client_id");
        }
        TokenRequest tokenRequest = oAuth2RequestFactory.createTokenRequest(parameters, authenticatedClient);
        oAuth2RequestValidator.validateScope(tokenRequest, authenticatedClient);
        OAuth2AccessToken token = getTokenGranter().grant(tokenRequest.getGrantType(), tokenRequest);
        if (token == null) {
            throw new UnsupportedGrantTypeException("Unsupported grant type: " + tokenRequest.getGrantType());
        }
        /*如果是移动端登陆则移除之前的token,
        在网关处通过HTTP状态码告知前端是过期(402)还是账号在别处登陆(403),
        实现同一账号只能在一处登陆*/
//        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
//        if (request.getHeader("login-device") != null && request.getHeader("login-device").equals("mobile")) {
//            tokenStore.removeAccessToken(token.getValue());
//            tokenStore.removeRefreshToken(token.getRefreshToken().getValue());
//            token = getTokenGranter().grant(tokenRequest.getGrantType(), tokenRequest);
//        }
//        if (token == null) {
//            throw new UnsupportedGrantTypeException("Unsupported grant type: " + tokenRequest.getGrantType());
//        }
        WlyyUserSimple wlyyUserSimple = userDetailsService.authSuccess(parameters.get("username"));
        wlyyUserSimple.setAccessToken(token.getValue());
        wlyyUserSimple.setTokenType(token.getTokenType());
        wlyyUserSimple.setExpiresIn(token.getExpiresIn());
        wlyyUserSimple.setRefreshToken(token.getRefreshToken().getValue());
        wlyyUserSimple.setUser(parameters.get("username"));
        wlyyUserSimple.setState(parameters.get("state"));
        String loginType = parameters.get("login_type");
        String openid = parameters.get("openid");
        //更新患者openId
        BaseLoginLogDO baseLoginLogDO = new BaseLoginLogDO();
        if (!StringUtils.isEmpty(openid) && !"undefined".equalsIgnoreCase(openid) && "3".equals(loginType)) {
            baseLoginLogDO.setOpenid(openid);
            userDetailsService.updateOpenId(openid, wlyyUserSimple.getId());
            if (!StringUtils.isEmpty(wechatId)&& !"undefined".equalsIgnoreCase(wechatId)){
                userDetailsService.updateOpenIdAndWechatId(openid,wlyyUserSimple.getId(),wechatId);
            }
        }
        if (parameters.get("password") != null) {
            //使用密码登录成功后, 更新失败次数为 0
            userDetailsService.addFailureCount(username, 0);
        }
        userDetailsService.setRolePhth(loginType, token, wlyyUserSimple.getId(), redisTemplate);
        baseLoginLogDO.setUserId(wlyyUserSimple.getId());
        baseLoginLogDO.setCreateTime(new Date());
        String userAgent = JSONObject.toJSONString(wlyyUserSimple);
        baseLoginLogDO.setUserAgent(userAgent);
        baseLoginLogDO.setLoginType(loginType);
        baseLoginLogService.save(baseLoginLogDO);
        return getResponse(wlyyUserSimple);
    }
    @RequestMapping(value = "/oauth/findYktPatientPw", method = RequestMethod.POST)
    public Envelop findYktPatientPw(String mobile,String client_id,String login_type,String captcha,String pw)throws Exception {
        if (wlyyRedisVerifyCodeService.verification(client_id, mobile, captcha)) {
            //验证码正确
        } else {
            return ObjEnvelop.getError("验证码错误!");
        }
        String response = ykyyService.forgetPassword(mobile,pw,captcha);
        if (org.apache.commons.lang3.StringUtils.isNoneBlank(response)){
            JSONObject object = JSONObject.parseObject(response);
            if (object.getString("code").equalsIgnoreCase("10000")){
                return ObjEnvelop.getSuccess("修改成功!");
            }else {
                return ObjEnvelop.getSuccess("修改失败!");
            }
        }
        String rs = registerService.updatePatientPw(pw,mobile);
        if("ok".equals(rs)){
            return ObjEnvelop.getSuccess("修改成功!");
        }
        return ObjEnvelop.getError("手机号未注册!");
    }
}

+ 7 - 1
server/svr-authentication/src/main/java/com/yihu/jw/security/service/RegisterService.java

@ -41,7 +41,10 @@ public class RegisterService {
    @Autowired
    private StringRedisTemplate redisTemplate;
    public Map<String,Object> registerPatient(String name, String mobile, String idcard, String ssc, String pw,String openid,String wxId)throws Exception{
    @Autowired
    private YkyyService ykyyService;
    public Map<String,Object> registerPatient(String name, String mobile, String idcard, String ssc, String pw,String openid,String wxId,String captcha)throws Exception{
        Map<String,Object> rs = new HashedMap();
        try{
@ -94,6 +97,9 @@ public class RegisterService {
                wechatDo.setPatientId(temp.getId());
                basePatientWechatDao.save(wechatDo);
            }
            if (org.apache.commons.lang3.StringUtils.isNoneBlank(wxId)&&wxId.equalsIgnoreCase("xm_ykyy_wx")){
                ykyyService.registerYkt(temp.getId(),pw,captcha);
            }
            rs.put("code","1");
            rs.put("mes","ok");

+ 250 - 2
server/svr-authentication/src/main/java/com/yihu/jw/security/service/YkyyService.java

@ -1,9 +1,18 @@
package com.yihu.jw.security.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.security.dao.doctor.BaseDoctorDao;
import com.yihu.jw.security.dao.patient.BasePatientDao;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.jw.util.idcard.IdCardUtil;
import com.yihu.utils.security.MD5;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -16,10 +25,17 @@ import org.springframework.stereotype.Service;
@Service
public class YkyyService {
    private Logger logger = LoggerFactory.getLogger(YkyyService.class);
    @Autowired
    private HttpClientUtil httpClientUtil;
    private static String yktUrl = "http://www.yanketong.com:90/";
    private static String yktUrl1 = "http://www.yanketong.com:90/";
    @Autowired
    private BasePatientDao patientDao;
    private static String yktUrl = "http://www.yanketong.com:133/api/";
    /**
     * 眼科医院单点登录接口
@ -27,7 +43,239 @@ public class YkyyService {
     */
    public String getDoctorInfoByVerifycode(String verifyCode){
        String url = "api/Doctor/GetDoctorInfoByverifycode";
        return httpClientUtil.get(yktUrl+url+"?verifyCode="+verifyCode,"GBK");
        return httpClientUtil.get(yktUrl1+url+"?verifyCode="+verifyCode,"GBK");
    }
    /**
     *获取家庭成员信息
     *
     * @param tel
     * @param userId
     * @return
     */
    public String getFamilyList(String tel,String userId){
        String response="";
        String url = yktUrl+"doc_jkzl/get_family_list?";
        if (StringUtils.isNoneBlank(tel)&&StringUtils.isNoneBlank(userId)){
            url+="tel="+tel;
            url+="&user_id="+userId;
        }else if (StringUtils.isNoneBlank(tel)&&!StringUtils.isNoneBlank(userId)){
            url+="tel="+tel;
        }else if (!StringUtils.isNoneBlank(tel)&&StringUtils.isNoneBlank(userId)){
            url+="user_id="+userId;
        }
        response = httpClientUtil.get(url,"GBK");
        logger.info("获取家庭成员信息:"+response);
        return response;
    }
    /**
     * 眼科通登录接口
     * @param tel
     * @param password
     * @return
     */
    public String yktLogin(String tel,String password){
        String response="";
        String url = yktUrl+"user_center/patient_login?patient_account="+tel+"&patient_pwd="+password;
        response = httpClientUtil.get(url,"GBK");
        logger.info("获取眼科通登录信息:"+response);
        return response;
    }
    /**
     * 眼科通验证码
     * @param type
     * @param phone
     * @return
     */
    public String getShortMessage(String type,String phone){
        String response="";
        String url = yktUrl+"verification_code/short_message?type="+type+"&telephone="+phone;
        response = httpClientUtil.get(url,"GBK");
        logger.info("眼科通验证码:"+response);
        return response;
    }
    /**
     * 增加家庭成员
     * @param userId
     * @param idcard
     * @param name
     * @param sex
     * @param birth
     * @param age
     * @param tel
     * @return
     */
    public String addFamily(String userId,String idcard,String name,String sex,String birth,String age,String tel){
        String response="";
        String url = yktUrl+"doc_jkzl/add_family?ass_user_id="+userId+"&id_card="+idcard+"&name="+name+"&sex="+sex
                +"&birth="+birth+"&age="+age+"&tel="+tel+"&medical_card=&illness=本人&clinic_id=";
        response = httpClientUtil.get(url,"GBK");
        logger.info("增加家庭成员:"+response);
        return response;
    }
    /**获取眼科通忘记密码信息
     *
     * @param tel
     * @param password
     * @param vercode
     * @return
     */
    public String forgetPassword(String tel,String password,String vercode){
        String response="";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("loginid",tel);
        jsonObject.put("password",password);
        String url = "http://www.yanketong.com:90/api/Patient/ForgotPassword4Jkzl";
        response = httpClientUtil.sendPost(url,jsonObject.toJSONString());
        logger.info("获取眼科通忘记密码信息:"+response);
        return response;
    }
    /**
     * telephone=15578008051&patient_pwd=123456&code=513970&invite_code=a01522&equipment_type=ios&equipment_guid=12312321
     * 眼科通用户注册
     *
     * @param telephone
     * @param patientPwd
     * @param code
     * @return
     */
    public String getRegisterUser(String telephone,String patientPwd,String code,String inviteCode,String equipmentType,String equipmentGuid){
        String response="";
        String url = yktUrl+"user_center/patient_register01?telephone="+telephone+"&patient_pwd="+patientPwd+"&code="+code+"&invite_code="+inviteCode+"&equipment_type="+equipmentType+
                "&equipment_guid="+equipmentGuid;
        response = httpClientUtil.get(url,"GBK");
        logger.info("眼科通用户注册:"+response);
        return response;
    }
    /**
     * 同步眼科通数据
     * @param patient
     * @return
     * @throws Exception
     */
    public void registerYkt(String patient,String pw,String code) throws Exception {
        BasePatientDO basePatientDO  = patientDao.findById(patient);
        if (basePatientDO!=null){
            String userId = basePatientDO.getUserId();
            if (StringUtils.isNoneBlank(userId)){
                String familyList =getFamilyList(null,userId);
                JSONObject object = JSONObject.parseObject(familyList);
                if (object.getString("code").equalsIgnoreCase("200")){
                    JSONObject object1 = object.getJSONObject("data");
                    JSONArray array = object1.getJSONArray("list");
                    if (array!=null&&array.size()!=0){
                        JSONObject jsonObject = array.getJSONObject(0);
                        if (jsonObject!=null){
                            String yktId = jsonObject.getString("ID");
                            basePatientDO.setYktId(yktId);
                            patientDao.save(basePatientDO);
                        }
                    }else {
                        String birdth = IdCardUtil.getBirthdayForIdcardStr(basePatientDO.getIdcard());
                        Integer age = IdCardUtil.getAgeForIdcard(basePatientDO.getIdcard());
                        Integer sex = basePatientDO.getSex();
                        String family = addFamily(userId,basePatientDO.getIdcard(),basePatientDO.getName(),sex.toString(),birdth,age.toString(),basePatientDO.getMobile());
                        JSONObject object2 = JSONObject.parseObject(family);
                        if (object2.getString("code").equalsIgnoreCase("200")){
                            JSONObject object3 = object2.getJSONObject("data");
                            String yktId = object3.getString("ID");
                            basePatientDO.setYktId(yktId);
                            patientDao.save(basePatientDO);
                        }
                    }
                }else {
                    throw new Exception("查询家庭成员失败!");
                }
            }else {
                String r =getRegisterUser(basePatientDO.getMobile(),pw,code,"a01522","xmijk","xmijk");
                JSONObject object4 = JSONObject.parseObject(r);
                if (object4.getString("code").equalsIgnoreCase("200")){
                    JSONObject object5 = object4.getJSONObject("data");
                    if (object5!=null){
                        userId = object5.getString("ID");
                        basePatientDO.setUserId(userId);
                        patientDao.save(basePatientDO);
                        String familyList =getFamilyList(null,userId);
                        JSONObject object = JSONObject.parseObject(familyList);
                        if (object.getString("code").equalsIgnoreCase("200")){
                            JSONObject object1 = object.getJSONObject("data");
                            JSONArray array = object1.getJSONArray("list");
                            if (array!=null&&array.size()!=0){
                                JSONObject jsonObject1 = array.getJSONObject(0);
                                if (jsonObject1!=null){
                                    String yktId = jsonObject1.getString("ID");
                                    userId = jsonObject1.getString("ASSUSERID");
                                    basePatientDO.setYktId(yktId);
                                    basePatientDO.setUserId(userId);
                                    patientDao.save(basePatientDO);
                                }
                            }else {
                                String birdth = IdCardUtil.getBirthdayForIdcardStr(basePatientDO.getIdcard());
                                Integer age = IdCardUtil.getAgeForIdcard(basePatientDO.getIdcard());
                                Integer sex = basePatientDO.getSex()!=null?basePatientDO.getSex():0;
                                String family = addFamily(userId,basePatientDO.getIdcard(),basePatientDO.getName(),sex.toString(),birdth,age.toString(),basePatientDO.getMobile());
                                JSONObject object2 = JSONObject.parseObject(family);
                                if (object2.getString("code").equalsIgnoreCase("200")){
                                    JSONObject object3 = object2.getJSONObject("data");
                                    String yktId = object3.getString("ID");
                                    basePatientDO.setYktId(yktId);
                                    userId = object3.getString("ASSUSERID");
                                    basePatientDO.setUserId(userId);
                                    patientDao.save(basePatientDO);
                                }
                            }
                        }else {
                            throw new Exception("查询家庭成员失败!");
                        }
                    }
                }else {
                    String familyList =getFamilyList(basePatientDO.getMobile(),null);
                    JSONObject object = JSONObject.parseObject(familyList);
                    if (object.getString("code").equalsIgnoreCase("200")){
                        JSONObject object1 = object.getJSONObject("data");
                        JSONArray array = object1.getJSONArray("list");
                        if (array!=null&&array.size()!=0){
                            JSONObject jsonObject1 = array.getJSONObject(0);
                            if (jsonObject1!=null){
                                String yktId = jsonObject1.getString("ID");
                                userId = jsonObject1.getString("ASSUSERID");
                                basePatientDO.setYktId(yktId);
                                basePatientDO.setUserId(userId);
                                patientDao.save(basePatientDO);
                            }
                        }else {
                            userId=object1.getString("user_id");
                            String birdth = DateUtil.dateToStrShort(IdCardUtil.getBirthdayForIdcard(basePatientDO.getIdcard()));
                            Integer age = IdCardUtil.getAgeForIdcard(basePatientDO.getIdcard());
                            Integer sex = basePatientDO.getSex();
                            String family = addFamily(userId,basePatientDO.getIdcard(),basePatientDO.getName(),sex.toString(),birdth,age.toString(),basePatientDO.getMobile());
                            JSONObject object2 = JSONObject.parseObject(family);
                            if (object2.getString("code").equalsIgnoreCase("200")){
                                JSONObject object3 = object2.getJSONObject("data");
                                String yktId = object3.getString("ID");
                                basePatientDO.setYktId(yktId);
                                userId = object3.getString("ASSUSERID");
                                basePatientDO.setUserId(userId);
                                patientDao.save(basePatientDO);
                            }
                        }
                    }else {
                        throw new Exception("查询家庭成员失败!");
                    }
                }
            }
        }
    }
}

+ 12 - 0
server/svr-authentication/src/main/resources/application.yml

@ -64,6 +64,8 @@ zhongshanHospital:
  user-info-uri: http://laptop-u738dn2p:10023/mqsdk/getUserInfoByOpenid
fastDFS:
  fastdfs_file_url: http://172.26.0.110:8888/
wlyy:
  url: http://www.xmtyw.cn/wlyy/
#文件服务器上传配置 0本地,1.I健康,2.内网调用
testPattern:
  sign: 0
@ -87,6 +89,8 @@ zhongshanHospital:
  user-info-uri: http://laptop-u738dn2p:10023/mqsdk/getUserInfoByOpenid
fastDFS:
  fastdfs_file_url: http://172.26.0.110:8888/
wlyy:
  url: http://www.xmtyw.cn/wlyy/
#文件服务器上传配置 0本地,1.I健康,2.内网调用
testPattern:
  sign: 0
@ -122,6 +126,8 @@ zhongshanHospital:
  user-info-uri: http://laptop-u738dn2p:10023/mqsdk/getUserInfoByOpenid
fastDFS:
  fastdfs_file_url: http://172.26.0.110:8888/
wlyy:
  url: http://www.xmtyw.cn/wlyy/
#文件服务器上传配置 0本地,1.I健康,2.内网调用
testPattern:
  sign: 0
@ -171,6 +177,8 @@ zhongshanHospital:
  user-info-uri: http://laptop-u738dn2p:10023/mqsdk/getUserInfoByOpenid
fastDFS:
  fastdfs_file_url: http://192.0.33.26:22122
wlyy:
  url: http://www.xmtyw.cn/wlyy/
#文件服务器上传配置 0本地,1.I健康,2.内网调用
testPattern:
  sign: 0
@ -195,6 +203,8 @@ zhongshanHospital:
  user-info-uri: http://laptop-u738dn2p:10023/mqsdk/getUserInfoByOpenid
fastDFS:
  fastdfs_file_url: http://172.16.100.240:22122
wlyy:
  url: http://www.xmtyw.cn/wlyy/
#文件服务器上传配置 0本地,1.I健康,2.内网调用
testPattern:
  sign: 2
@ -219,6 +229,8 @@ zhongshanHospital:
  user-info-uri: http://laptop-u738dn2p:10023/mqsdk/getUserInfoByOpenid
fastDFS:
  fastdfs_file_url: http://192.168.103.159:22122
wlyy:
  url: http://www.xmtyw.cn/wlyy/
#文件服务器上传配置 0本地,1.I健康,2.内网调用
testPattern:
  sign: 1

+ 59 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/ykyy/YkyyController.java

@ -96,6 +96,65 @@ public class YkyyController extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "/getShortMessage")
    @ApiOperation(value = "眼科通获取验证码")
    public ObjEnvelop getShortMessage(@ApiParam(name = "tel", value = "电话号码", required = true)
                               @RequestParam(value = "tel",required = true)String tel,
                               @ApiParam(name = "type", value = "1注册2登录", required = true)
                               @RequestParam(value = "type",required = false)String type){
        try {
            return ObjEnvelop.getSuccess("ok",ykyyService.getShortMessage(type,tel));
        } catch (Exception e) {
            return ObjEnvelop.getError(e.getMessage());
        }
    }
    /**
     * 眼科通忘记密码
     *
     * @param tel
     * @param password
     * @return
     */
    @GetMapping(value = "/forgetPassword")
    @ApiOperation(value = "眼科通忘记密码")
    public ObjEnvelop yktLogin(@ApiParam(name = "tel", value = "电话号码", required = true)
                               @RequestParam(value = "tel",required = true)String tel,
                               @ApiParam(name = "password", value = "", required = true)
                               @RequestParam(value = "password",required = false)String password,
                               @ApiParam(name = "vercode", value = "", required = true)
                               @RequestParam(value = "vercode",required = false)String vercode){
        try {
            return ObjEnvelop.getSuccess("ok",ykyyService.forgetPassword(tel,password,vercode));
        } catch (Exception e) {
            return ObjEnvelop.getError(e.getMessage());
        }
    }
    /**
     * 更新药品订单信息到眼科通
     *
     * @param orderNo
     * @param drugorder
     * @param cfsb
     * @return
     */
    @GetMapping(value = "/updateDrugorderInfo")
    @ApiOperation(value = "更新药品订单信息到眼科通")
    public ObjEnvelop updateDrugorderInfo(@ApiParam(name = "orderNo", value = "咨询订单号", required = true)
                               @RequestParam(value = "orderNo",required = true)String orderNo,
                               @ApiParam(name = "drugorder", value = "药品订单号", required = true)
                               @RequestParam(value = "drugorder",required = false)String drugorder,
                               @ApiParam(name = "cfsb", value = "处方识别号", required = true)
                               @RequestParam(value = "cfsb",required = false)String cfsb){
        try {
            return ObjEnvelop.getSuccess("ok",ykyyService.updateDrugorderInfo(orderNo,drugorder,cfsb));
        } catch (Exception e) {
            return ObjEnvelop.getError(e.getMessage());
        }
    }
    /**