Browse Source

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

# Conflicts:
#	business/base-service/src/main/java/com/yihu/jw/file_upload/FileUploadService.java
#	common/common-entity/src/main/java/com/yihu/jw/entity/IntegerIdentityEntity.java
wangzhinan 3 years ago
parent
commit
33d1b3124e
16 changed files with 332 additions and 33 deletions
  1. 6 1
      business/base-service/src/main/java/com/yihu/jw/hospital/family/service/WlyyFamilyMemberService.java
  2. 1 0
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/HcyyPrescriptionService.java
  3. 4 4
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java
  4. 124 0
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/EntranceService.java
  5. 3 2
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/HcyyEntranceService.java
  6. 1 0
      business/base-service/src/main/java/com/yihu/jw/order/BusinessOrderService.java
  7. 20 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BaseNatPatientFamilyMemberDO.java
  8. 6 6
      common/common-entity/src/main/java/com/yihu/jw/entity/base/user/UserDO.java
  9. 9 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/hospital/archive/ArchiveVO.java
  10. 11 0
      common/common-util/src/main/java/com/yihu/jw/util/date/DateUtil.java
  11. 20 14
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/BasicZuulFilter.java
  12. 17 0
      server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java
  13. 105 4
      server/svr-authentication/src/main/java/com/yihu/jw/security/service/YkyyService.java
  14. 3 1
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/hospital/WlyyFamilyMemberController.java
  15. 1 1
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/patient/PatientNoLoginEndPoint.java
  16. 1 0
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/prescription/PrescriptionEndpoint.java

+ 6 - 1
business/base-service/src/main/java/com/yihu/jw/hospital/family/service/WlyyFamilyMemberService.java

@ -392,7 +392,7 @@ public class WlyyFamilyMemberService extends BaseJpaService<WlyyPatientFamilyMem
    //添加核酸预约关联家属
    @Transactional
    public MixEnvelop addNatFamily(String patientId, String familyName, String dictId, String cardType, String idCard, String phoneNum,boolean demo,String medicareType,String medicare,String clinicId) throws Exception {
    public MixEnvelop addNatFamily(String patientId, String familyName, String dictId, String cardType, String idCard, String phoneNum,boolean demo,String medicareType,String medicare,String clinicId,String idtype,String idtypeName) throws Exception {
        MixEnvelop mixEnvelop = new MixEnvelop();
        try{
            List<BaseNatPatientFamilyMemberDO> natPatientFamilyMemberDOList = natPatientFamilyMemberDao.findbyPatientAndFamilyRelationAndNameAndIdcard(patientId,familyName,idCard);
@ -426,6 +426,7 @@ public class WlyyFamilyMemberService extends BaseJpaService<WlyyPatientFamilyMem
            archiveVO.setSmdj00("0");
            archiveVO.setFwqd00("09");
            archiveVO.setHsflag("1");
            archiveVO.setIdtype(idtype);
            BaseNatPatientFamilyMemberDO result = new BaseNatPatientFamilyMemberDO();
            net.sf.json.JSONObject object = entranceService.BS16018(archiveVO,false);
            System.out.print("object"+object);
@ -456,6 +457,8 @@ public class WlyyFamilyMemberService extends BaseJpaService<WlyyPatientFamilyMem
            result.setAge(familyAge);
            result.setName(familyName);
            result.setSex(sex);
            result.setIdType(idtype);
            result.setIdTypeName(idtypeName);
            natPatientFamilyMemberDao.save(result);
        }catch (Exception e){
            e.printStackTrace();
@ -512,6 +515,8 @@ public class WlyyFamilyMemberService extends BaseJpaService<WlyyPatientFamilyMem
        String familyAge = String.valueOf(IdCardUtil.getAgeForIdcard(patientDO.getIdcard()));
        result.setAge(familyAge);
        result.setDel(1);
        result.setIdType("1");
        result.setIdTypeName("身份证");
        result.setPatient(patientId);
        result.setIdcard(patientDO.getIdcard());
        result.setMobile(patientDO.getMobile());

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

@ -290,6 +290,7 @@ public class HcyyPrescriptionService extends BaseJpaService<WlyyPrescriptionDO,
     * @return
     */
    public JSONArray selectDrugDict(String spellCode,String drugNo) throws Exception {
        logger.info("spellCode"+spellCode);
        JSONArray jsonArray = new JSONArray();
        String obj = hcyyEntranceService.GetDrugDict(spellCode,drugNo);
        if (StringUtils.isNoneBlank(obj)){

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

@ -12721,7 +12721,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            String userName = null;
            String idcard = null;
            if (patientDO != null) {
                userName = baseNatAppointmentDO.getName();
                userName = patientDO.getName();
                idcard = patientDO.getIdcard();
            }
            String hisId = patientMappingService.findHisPatNoByPatient(baseNatAppointmentDO.getPatientId(),baseNatAppointmentDO.getMedicare());
@ -12747,7 +12747,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                String contentMsg="申请人:"+baseNatAppointmentDO.getName()+"\r\n预约时间:"+date;
                String remark = "1、请于预约时间"+date+"前,携带医保卡/就诊卡/电子健康卡到院区自助机进行结算。\r\n" +
                        "2、结算完成后请您持核酸预约申请信息和发票流水号、医保卡/就诊卡/电子健康卡,准时至我院五号楼北侧(急诊部后侧)核酸检测点领取标本试管窗口绑定检测。\r\n" +
                        "3、核酸检测标本采集24小时后出具报告。请关注厦门大学附属中山医院微信公众号查询;如需打印,请至厦门大学附属中山医院核酸检测点自助机打印。";
                        "3、核酸检测标本采集6-8小时后出具报告。请关注厦门大学附属中山医院微信公众号查询;如需打印,请至厦门大学附属中山医院核酸检测点自助机打印。";
                if ("xm_zsyy_wx".equalsIgnoreCase(wechatId)) {
                    responseMsg = entranceService.ehospitalNotice(
                            baseNatAppointmentDO.getName(),
@ -12771,7 +12771,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                jsonObject.put("keyword2","申请人:"+baseNatAppointmentDO.getName()+"\n预约时间:"+date);
                String remark =  "1、请于预约时间"+date+"前,携带医保卡/就诊卡/电子健康卡到院区自助机进行结算。\n" +
                        "2、结算完成后请您持核酸预约申请信息和发票流水号、医保卡/就诊卡/电子健康卡,准时至我院五号楼北侧(急诊部后侧)核酸检测点领取标本试管窗口绑定检测。\n" +
                        "3、核酸检测标本采集24小时后出具报告。请关注厦门大学附属中山医院微信公众号查询;如需打印,请至厦门大学附属中山医院核酸检测点自助机打印。";
                        "3、核酸检测标本采集6-8小时后出具报告。请关注厦门大学附属中山医院微信公众号查询;如需打印,请至厦门大学附属中山医院核酸检测点自助机打印。";
                jsonObject.put("remark",remark);
                jsonObject.put("url","111111");
                String url = "https://xmzsyyfwc.xmpbinfo.cn/weixin/1/notification/push/nucleictest";
@ -13201,7 +13201,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                    "预约时间:"+reserverTime+"\n" +
                    "发票流水号:"+realorder+"");
            String remark = "1、请您持核酸预约申请信息和发票流水号、医保卡/就诊卡/电子健康卡,准时至我院五号楼北侧(急诊部后侧)核酸检测点领取标本试管窗口绑定检测。\n" +
                    "2、核酸检测标本采集24小时后出具报告。请关注厦门大学附属中山医院微信公众号查询;如需打印,请至厦门大学附属中山医院核酸检测点自助机打印。";
                    "2、核酸检测标本采集6-8小时后出具报告。请关注厦门大学附属中山医院微信公众号查询;如需打印,请至厦门大学附属中山医院核酸检测点自助机打印。";
            jsonObject.put("remark",remark);
            jsonObject.put("url",redirdctUrl);
        }

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

@ -98,6 +98,9 @@ public class EntranceService {
    private static String BS16018 = "BS16018";
    //his退费接口
    private static String BS15021 = "BS15021";
    private String orgCode = "350211A1002";
    private String orgName = "350211A1002";
    @Value("${hospital.mqUser}")
@ -1387,6 +1390,123 @@ public class EntranceService {
        return ConvertUtil.convertListEnvelopInBodyRow(resp);
    }
    /**
     * 退费接口
     *
     * @param userId 操作员 N 必填
     * @param userName 操作员姓名 N 必填
     * @param cardType 卡类型 N 01社保卡02市民健康卡03院内就诊卡 必填
     * @param cardNo 卡号 N 必填
     * @param accountType 账户类型 N 01::门诊预交金账户 02:住院预交金账户必填
     * @param idNo 身份证 Y必填
     * @param withdrawMode 转出类型
     * @param depositType 充值类型必填
     * @param ServiceType 服务类型必填
     * @param amount 退款金额 N 必填
     * @param outRefundNo 退款流水号 支付平台唯一必填
     * @param outChargeNo 原充值流水号 支付平台唯一必填
     * @param origTraceNo 原支付平台流水号支付平台必填
     * @param traceSerial 退款业务流水号  支付平台必填
     * @param paydate 商户交易时间
     * @param notes 备注信息 Y
     * @param tradeState 交易状态
     * @param failReason 失败原因
     * @param failTime 失败时间
     * @param extra 扩展参数
     * @param demoFlag
     * @return
     * @throws Exception
     */
    public JSONArray BS15021(String userId, String userName, String cardType, String cardNo, String accountType,String idNo,
                             String withdrawMode,String depositType,String ServiceType,String amount,String outRefundNo,
                             String outChargeNo,String origTraceNo,String traceSerial,String paydate,String notes,String tradeState,
                             String failReason,String failTime,String extra, boolean demoFlag) throws Exception {
        String fid = BS15021;
        String resp = "";
        if (demoFlag) {
            resp = getJosnFileResullt(fid);
        } else {
            StringBuffer sbs = new StringBuffer();
            //AccessControl :用户、密码、服务id
            sbs.append("<ESBEntry><AccessControl><Fid>" + fid + "</Fid><UserName>" + mqUser + "</UserName><Password>" + mqPwd + "</Password></AccessControl>");
            //MessageHeader :固定值 消费方系统编号 S60,提供方系统编号 S01
            sbs.append("<MessageHeader><Fid>" + fid + "</Fid><MsgDate>" + DateUtil.dateToStr(new Date(), DateUtil.YYYY_MM_DD_HH_MM_SS) + "</MsgDate><SourceSysCode>" + sourceSysCode + "</SourceSysCode><TargetSysCode>" + targetSysCode + "</TargetSysCode></MessageHeader>");
            //查询信息拼接
            sbs.append("<MsgInfo><endNum>20000</endNum><Msg/>");
            if (StringUtils.isNotBlank(userId)) {
                sbs.append("<query compy=\"=\" item=\"userId\" splice=\"and\" value=\"'" + userId + "'\"/>");
            }
            if (StringUtils.isNotBlank(userName)) {
                sbs.append("<query compy=\"=\" item=\"userName\" splice=\"and\" value=\"'" + userName + "'\"/>");
            }
            if (StringUtils.isNotBlank(cardType)) {
                sbs.append("<query compy=\"=\" item=\"cardType\" splice=\"and\" value=\"'" + cardType + "'\"/>");
            }
            if (StringUtils.isNotBlank(cardNo)) {
                sbs.append("<query compy=\"=\" item=\"cardNo\" splice=\"and\" value=\"'" + cardNo + "'\"/>");
            }
            if (StringUtils.isNotBlank(accountType)) {
                sbs.append("<query compy=\"=\" item=\"accountType\" splice=\"and\" value=\"'" + accountType + "'\"/>");
            }
            if (StringUtils.isNotBlank(idNo)) {
                sbs.append("<query compy=\"=\" item=\"idNo\" splice=\"and\" value=\"'" + idNo + "'\"/>");
            }
            if (StringUtils.isNotBlank(withdrawMode)) {
                sbs.append("<query compy=\"=\" item=\"withdrawMode\" splice=\"and\" value=\"'" + withdrawMode + "'\"/>");
            }
            if (StringUtils.isNotBlank(depositType)) {
                sbs.append("<query compy=\"=\" item=\"depositType\" splice=\"and\" value=\"'" + depositType + "'\"/>");
            }
            if (StringUtils.isNotBlank(ServiceType)) {
                sbs.append("<query compy=\"=\" item=\"ServiceType\" splice=\"and\" value=\"'" + ServiceType + "'\"/>");
            }
            if (StringUtils.isNotBlank(amount)) {
                sbs.append("<query compy=\"=\" item=\"amount\" splice=\"and\" value=\"'" + amount + "'\"/>");
            }
            if (StringUtils.isNotBlank(outRefundNo)) {
                sbs.append("<query compy=\"=\" item=\"outRefundNo\" splice=\"and\" value=\"'" + outRefundNo + "'\"/>");
            }
            if (StringUtils.isNotBlank(outChargeNo)) {
                sbs.append("<query compy=\"=\" item=\"outChargeNo\" splice=\"and\" value=\"'" + outChargeNo + "'\"/>");
            }
            if (StringUtils.isNotBlank(origTraceNo)) {
                sbs.append("<query compy=\"=\" item=\"origTraceNo\" splice=\"and\" value=\"'" + origTraceNo + "'\"/>");
            }
            if (StringUtils.isNotBlank(traceSerial)) {
                sbs.append("<query compy=\"=\" item=\"traceSerial\" splice=\"and\" value=\"'" + traceSerial + "'\"/>");
            }
            if (StringUtils.isNotBlank(paydate)) {
                sbs.append("<query compy=\"=\" item=\"paydate\" splice=\"and\" value=\"'" + paydate + "'\"/>");
            }
            if (StringUtils.isNotBlank(notes)) {
                sbs.append("<query compy=\"=\" item=\"notes\" splice=\"and\" value=\"'" + notes + "'\"/>");
            }
            if (StringUtils.isNotBlank(tradeState)) {
                sbs.append("<query compy=\"=\" item=\"tradeState\" splice=\"and\" value=\"'" + tradeState + "'\"/>");
            }
            if (StringUtils.isNotBlank(failReason)) {
                sbs.append("<query compy=\"=\" item=\"failReason\" splice=\"and\" value=\"'" + failReason + "'\"/>");
            }
            if (StringUtils.isNotBlank(failTime)) {
                sbs.append("<query compy=\"=\" item=\"failTime\" splice=\"and\" value=\"'" + failTime + "'\"/>");
            }
            if (StringUtils.isNotBlank(extra)) {
                sbs.append("<query compy=\"=\" item=\"extra\" splice=\"and\" value=\"'" + extra + "'\"/>");
            }
            sbs.append("<startNum>1</startNum></MsgInfo></ESBEntry>");
            resp = MqSdkUtil.putReqAndGetRespByQueryStr(sbs.toString(), fid);
            resp = MqSdkUtil.xml2jsonArrayRootRow(resp);
            WlyyHttpLogDO wlyyHttpLogDO = new WlyyHttpLogDO();
            wlyyHttpLogDO.setRequest(sbs.toString());
            wlyyHttpLogDO.setResponse(resp);
            wlyyHttpLogDO.setCode(BS15021);
            wlyyHttpLogDO.setName("预交金退款");
            wlyyHttpLogDO.setCreateTime(new Date());
            wlyyHttpLogDao.save(wlyyHttpLogDO);
        }
        return ConvertUtil.convertListEnvelopInBodyRow(resp);
    }
    /**
     * 检查检验
     *
@ -2850,6 +2970,10 @@ public class EntranceService {
            if (StringUtils.isNotBlank(archiveVO.getHsflag())) {
                sbs.append(" hsflag=\"" + archiveVO.getHsflag() + "\" ");
            }
            if (StringUtils.isNotBlank(archiveVO.getIdtype())) {
                sbs.append(" idtype=\"" + archiveVO.getIdtype() + "\" ");
            }
            sbs.append(" />");
            sbs.append("</root>");
            sbs.append("</Msg>");

+ 3 - 2
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/HcyyEntranceService.java

@ -1205,10 +1205,11 @@ public class HcyyEntranceService {
                "   <certificate>"+key+"</certificate> " +
                "</root>";
        String condition ="";
        if (!StringUtils.isEmpty(spellCode)&&!"null".equalsIgnoreCase(spellCode)){
        logger.info("spellCode"+spellCode+drugNo+"spellCode");
        if (!StringUtils.isEmpty(spellCode)){
            condition += "<spell_code>"+spellCode+"</spell_code>";
        }
        if (!StringUtils.isEmpty(drugNo)&&!"null".equalsIgnoreCase(drugNo)){
        if (!StringUtils.isEmpty(drugNo)){
            condition += "<physic_code>"+drugNo+"</physic_code>";
        }
        String msgBody ="<?xml version=\"1.0\" encoding=\"utf-8\"?>" +

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

@ -1437,6 +1437,7 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines
        businessOrderDO.setUpdateTime(new Date());
        businessOrderDO.setStatus(9);
        businessOrderDao.save(businessOrderDO);
        return businessOrderDO;
    }

+ 20 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BaseNatPatientFamilyMemberDO.java

@ -25,6 +25,8 @@ public class BaseNatPatientFamilyMemberDO extends UuidIdentityEntityWithOperator
    private Integer sex;//性别
    private Integer del;//删除标志(1正常,0删除)
    private String age;
    private String idType;
    private String idTypeName;
    @Column(name = "patient")
    public String getPatient() {
@ -125,4 +127,22 @@ public class BaseNatPatientFamilyMemberDO extends UuidIdentityEntityWithOperator
    public void setAge(String age) {
        this.age = age;
    }
    @Column(name = "id_type")
    public String getIdType() {
        return idType;
    }
    public void setIdType(String idType) {
        this.idType = idType;
    }
    @Column(name = "id_type_name")
    public String getIdTypeName() {
        return idTypeName;
    }
    public void setIdTypeName(String idTypeName) {
        this.idTypeName = idTypeName;
    }
}

+ 6 - 6
common/common-entity/src/main/java/com/yihu/jw/entity/base/user/UserDO.java

@ -46,9 +46,9 @@ public class UserDO extends UuidIdentityEntityWithOperator {
     */
    private String ak;
    //是否可用
    private Integer enabled;
    private Boolean enabled;
    //是否锁定
    private Integer locked;
    private Boolean locked;
    //锁定时间
    private Date lockedDate;
    //最后登陆时间
@ -151,20 +151,20 @@ public class UserDO extends UuidIdentityEntityWithOperator {
    }
    @Column(name = "enabled", nullable = false)
    public Integer getEnabled() {
    public Boolean getEnabled() {
        return enabled;
    }
    public void setEnabled(Integer enabled) {
    public void setEnabled(Boolean enabled) {
        this.enabled = enabled;
    }
    @Column(name = "locked", nullable = false)
    public Integer getLocked() {
    public Boolean getLocked() {
        return locked;
    }
    public void setLocked(Integer locked) {
    public void setLocked(Boolean locked) {
        this.locked = locked;
    }

+ 9 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/hospital/archive/ArchiveVO.java

@ -27,6 +27,7 @@ public class ArchiveVO {
    private String smkId;//经信局市民卡ID
    private String fwqd00;//服务渠道
    private String hsflag;//核酸建档  传1
    private String idtype;//身份证件类型
    public String getId0000() {
        return id0000;
@ -179,4 +180,12 @@ public class ArchiveVO {
    public void setHsflag(String hsflag) {
        this.hsflag = hsflag;
    }
    public String getIdtype() {
        return idtype;
    }
    public void setIdtype(String idtype) {
        this.idtype = idtype;
    }
}

+ 11 - 0
common/common-util/src/main/java/com/yihu/jw/util/date/DateUtil.java

@ -179,6 +179,17 @@ public class DateUtil {
        return formatter.format(currentTime);
    }
    /**
     * 获取现在时间
     *
     * @return返回字符串格式 yyyy-MM-dd HH:mm:ss
     */
    public static String getStringDateUpper() {
        Date currentTime = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat(YYYYMMDDHHMMSS);
        return formatter.format(currentTime);
    }
    public static String getYyyymmddhhmmss(Date date) {
        SimpleDateFormat formatter = new SimpleDateFormat(YYYYMMDDHHMMSS);
        return formatter.format(date);

+ 20 - 14
gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/BasicZuulFilter.java

@ -159,9 +159,9 @@ public class BasicZuulFilter extends ZuulFilter {
            for(String str:object.keySet()){
                List<String> arrayList = new ArrayList<>();
                String value = object.getString(str);
                if (sqlValidate(value)){
              /*  if (sqlValidate(value)){
                    throw new Exception("Illegal parameter");
                }
                }*/
                arrayList.add(value);
                map.put(str,arrayList);
            }
@ -186,9 +186,9 @@ public class BasicZuulFilter extends ZuulFilter {
                JSONObject jsonObject = JSONObject.parseObject(jsonobject);
                for(String str:jsonObject.keySet()){
                    String value = jsonObject.getString(str);
                    if (sqlValidate(value)){
                    /*if (sqlValidate(value)){
                        throw new Exception("Illegal parameter");
                    }
                    }*/
                    if (!StringUtils.isEmpty(value)){
                        value = URLEncoder.encode(value);
                    }
@ -391,18 +391,24 @@ public class BasicZuulFilter extends ZuulFilter {
    }
    private static boolean sqlValidate(String str) {
        str = str.toLowerCase();//统一转为小写,比较简单的单词加入右边空格,避免单词中包含字段
        String badStr = "and |exec |execute |insert |select |delete |update |drop |chr |mid |master |truncate |" +
                "declare | sitename |net user|xp_cmdshell|or |exec |execute |create |" +
                "table |from |grant |use |group_concat|column_name|" +
                "information_schema.columns|table_schema|union |where |select |update |order |by |like |" ;//过滤掉的sql关键字,可以手动添加
        String[] badStrs = badStr.split("\\|");
        for (int i = 0; i < badStrs.length; i++) {
            if (str.indexOf(badStrs[i]) >= 0) {
                return true;
        if (org.apache.commons.lang3.StringUtils.isNoneBlank(str)){
            str = str.toLowerCase();//统一转为小写,比较简单的单词加入右边空格,避免单词中包含字段
            String badStr = "and |exec |execute |insert |select |delete |update |drop |chr |mid |master |truncate |" +
                    "declare | sitename |net user|xp_cmdshell|or |exec |execute |create |" +
                    "table |from |grant |use |group_concat|column_name|" +
                    "information_schema.columns|table_schema|union |where |select |update |order |by |like |" ;//过滤掉的sql关键字,可以手动添加
            String[] badStrs = badStr.split("\\|");
            for (int i = 0; i < badStrs.length; i++) {
                if (str.indexOf(badStrs[i]) >= 0) {
                    return true;
                }
            }
            return false;
        }else {
            return true;
        }
        return false;
    }
//    public static void main(String ag[]){

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

@ -1441,6 +1441,8 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
            return ObjEnvelop.getSuccess("success", oauthCaConfigSerivce.getQRCode(sys));
        }else if (wechatId.equalsIgnoreCase("xm_xzzx_wx")){
            return ObjEnvelop.getSuccess("success", xzzxService.getQRCode());
        }else if (wechatId.equalsIgnoreCase("xm_ykyy_wx")){
            return ObjEnvelop.getSuccess("success", ykyyService.getQRCode());
        }else {
            return ObjEnvelop.getSuccess("success", null);
        }
@ -1483,6 +1485,21 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
            openId = jsonObject.getString("uniqueid");
            jsonObject.put("qrCodeStatus","LoginQrCodeBeenScan");
            rs.put("code",1000);
        }else if (wechatId.equalsIgnoreCase("xm_ykyy_wx")){
            rs = ykyyService.getTokeninfo(qrcode);
            JSONObject jsonObject = rs.getJSONObject("data");
            logger.info("查询登录信息"+rs);
            String qrCodeStatus = rs.getString("code");
            if(!"200".equalsIgnoreCase(qrCodeStatus)){
                return ObjEnvelop.getSuccess("error",rs);
            }
            if(!"LoginQrCodeBeenScan".equalsIgnoreCase(jsonObject.getString("qrCodeStatus"))){
                return ObjEnvelop.getSuccess("error",rs);
            }
            username = jsonObject.getString("userIdCardNum");
            openId = jsonObject.getString("userJobNum");
            jsonObject.put("qrCodeStatus",jsonObject.getString("qrCodeStatus"));
            rs.put("code",1000);
        }
        if (org.apache.commons.lang.StringUtils.isNotBlank(username)){

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

@ -3,11 +3,15 @@ package com.yihu.jw.security.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.internal.util.codec.*;
import com.alipay.api.internal.util.codec.Base64;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.ca.OauthCaConfigDO;
import com.yihu.jw.entity.hospital.mapping.DoctorMappingDO;
import com.yihu.jw.security.dao.OauthCaConfigDao;
import com.yihu.jw.security.dao.doctor.BaseDoctorDao;
import com.yihu.jw.security.dao.doctor.BaseDoctorHospitalDao;
import com.yihu.jw.security.dao.doctor.BaseDoctorRoleDao;
@ -19,6 +23,7 @@ import com.yihu.jw.util.idcard.IdCardUtil;
import com.yihu.utils.network.HttpResponse;
import com.yihu.utils.network.HttpUtils;
import com.yihu.utils.security.MD5;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@ -26,13 +31,12 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.io.UnsupportedEncodingException;
import java.util.*;
import static com.yihu.jw.util.common.PwdUtil.randomString;
/**
 * 眼科医院
 * Created by yeshijie on 2020/4/24.
@ -72,6 +76,103 @@ public class YkyyService {
    private static String yktUrl = "http://www.yanketong.com:133/api/";
    @Autowired
    private OauthCaConfigDao oauthCaConfigDao;
    /**
     * OAuth登陆-认证请求接口
     * @param
     * @return
     */
    public String getQRCode() {
        try {
            logger.info("生成二维码 getQRCode :");
            OauthCaConfigDO oauthCaConfigDO = oauthCaConfigDao.findOne("oauth_ca_config");
            String url = "";
            if (oauthCaConfigDO!=null){
                url=oauthCaConfigDO.getUrl()+"/pkiserver/v1/getQRCodeBySys";
            }
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("sys","InternetHospital");
            String response = requestCaParams(url,jsonObject.toJSONString());
            JSONObject rs = new JSONObject();
            JSONObject data = new JSONObject();
            if (StringUtils.isNoneBlank(response)){
                JSONObject jsonObject1 = JSONObject.parseObject(response);
                if (jsonObject1.getString("code").equalsIgnoreCase("200")){
                    JSONObject object = jsonObject1.getJSONObject("data");
                    data.put("resultCode",0);
                    data.put("resultMsg","Success");
                    data.put("qrCodeImg",object.getString("qrCodeImg"));
                    data.put("qrCode",object.getString("qrCode"));
                    rs.put("code",1000);
                    rs.put("msg","成功");
                    rs.put("data",data);
                }else {
                    rs.put("code",-1);
                    rs.put("msg",jsonObject1.getString("msg"));
                }
            }else {
                rs.put("code",-1);
                rs.put("msg","请求失败");
            }
            return rs.toJSONString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     * OAuth登陆-获取用户信息
     * @param qrCode
     * @return
     */
    public JSONObject getTokeninfo(String qrCode){
        try {
            OauthCaConfigDO oauthCaConfigDO = oauthCaConfigDao.findOne("oauth_ca_config");
            String url = "";
            if (oauthCaConfigDO!=null){
                url=oauthCaConfigDO.getUrl()+"/pkiserver/v1/queryQRCode";
            }
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("qrCode",qrCode);
            String response = requestCaParams(url,jsonObject.toJSONString());
            logger.info("验证二维码 getQueryQRCode :"+response);
            return JSONObject.parseObject(response);
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    /**
     * CA签名服务调用方式
     * @param url
     * @param data
     * @return
     */
    public String requestCaParams(String url,String data) throws UnsupportedEncodingException {
        OauthCaConfigDO oauthCaConfigDO = oauthCaConfigDao.findOne("oauth_ca_config");
        String time = DateUtil.getStringDateUpper();
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("appid",oauthCaConfigDO.getClientId());
        System.out.println("业务数据为:" + data);
        String dataInfo = Base64.encodeBase64String(data.getBytes("utf-8"));
        jsonObject.put("data", dataInfo);
        jsonObject.put("timestamp",time);
        String digest = DigestUtils.sha256Hex((oauthCaConfigDO.getClientId() + dataInfo + time + oauthCaConfigDO.getClientSecret()));
        jsonObject.put("digest",digest);
        logger.info("请求url"+url+"请求参数"+jsonObject);
        String res = httpClientUtil.postBody(url,jsonObject);
        logger.info("返回参数"+res);
        return res;
    }
    /**
     * 眼科医院单点登录接口
     * @return

+ 3 - 1
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/hospital/WlyyFamilyMemberController.java

@ -465,6 +465,8 @@ public class WlyyFamilyMemberController extends EnvelopRestEndpoint {
            String medicareType = jsonObject.getString("medicareType");
            String medicare = jsonObject.getString("medicare");
            String clinicId = jsonObject.getString("clinicId");
            String idtype = jsonObject.getString("idtype");
            String idtypeName = jsonObject.getString("idtypeName");
            boolean checkCode =false;
            if(!StringUtils.isEmpty(code)){
                checkCode = this.verification(client_id, username, code);
@ -487,7 +489,7 @@ public class WlyyFamilyMemberController extends EnvelopRestEndpoint {
                    }
                }
                mixEnvelop = wlyyFamilyMemberService.addNatFamily(patientId, familyName, dictId, cardType, idCard, username, false, medicareType, medicare, clinicId);
                mixEnvelop = wlyyFamilyMemberService.addNatFamily(patientId, familyName, dictId, cardType, idCard, username, false, medicareType, medicare, clinicId,idtype,idtypeName);
            } else {
                mixEnvelop.setStatus(408);

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

@ -1204,7 +1204,7 @@ public class PatientNoLoginEndPoint extends EnvelopRestEndpoint {
                                            String first = "尊敬的用户"+natAppointmentDO.getName()+",您已完成线上自助核酸检测预约申请";
                                            String contentMsg = "申请人:"+natAppointmentDO.getName()+"\r\n 预约时间:"+date+" \r\n发票流水号:"+waitPayDetailVO.getRecipeNo();
                                            String remark="1、请您持核酸预约申请信息和发票流水号、医保卡/就诊卡/电子健康卡,准时至我院五号楼北侧(急诊部后侧)核酸检测点领取标本试管窗口绑定检测。\r\n" +
                                                    "2、核酸检测标本采集24小时后出具报告。请关注厦门大学附属中山医院微信公众号查询;如需打印,请至厦门大学附属中山医院核酸检测点自助机打印。";
                                                    "2、核酸检测标本采集6-8小时后出具报告。请关注厦门大学附属中山医院微信公众号查询;如需打印,请至厦门大学附属中山医院核酸检测点自助机打印。";
                                            String responseMsg="";
                                            if ("xm_zsyy_wx".equalsIgnoreCase(wxId)) {

+ 1 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/prescription/PrescriptionEndpoint.java

@ -653,6 +653,7 @@ public class PrescriptionEndpoint extends EnvelopRestEndpoint {
        } else if (wxId.equalsIgnoreCase("sd_tnzyy_wx")) {
            return success(tnPrescriptionService.getDrugDictionary(drugNo, pyKey, null, groupNo, null));
        } else if (wxId.equalsIgnoreCase("xm_hcyy_wx")) {
            logger.info("pyKey"+pyKey);
            return success(hcyyPrescriptionService.selectDrugDict(pyKey,drugNo));
        } else {
            return ListEnvelop.getError("尚未开发!");