Explorar el Código

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

liubing hace 3 años
padre
commit
17cf6da475
Se han modificado 62 ficheros con 1349 adiciones y 233 borrados
  1. 207 4
      business/base-service/src/main/java/com/yihu/jw/healthCare/service/HealthCareService.java
  2. 9 0
      business/base-service/src/main/java/com/yihu/jw/hospital/dict/WlyyHospitalSysDictDao.java
  3. 93 1
      business/base-service/src/main/java/com/yihu/jw/hospital/dict/service/WlyyHospitalSysDictService.java
  4. 142 23
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java
  5. 29 25
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/EntranceService.java
  6. 18 0
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/XzzxEntranceService.java
  7. 2 0
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/YkyyEntranceService.java
  8. 21 21
      business/base-service/src/main/java/com/yihu/jw/internet/service/InternetCommonService.java
  9. 3 3
      common/common-entity/src/main/java/com/yihu/jw/entity/IntegerIdentityEntity.java
  10. 0 4
      common/common-fegin/pom.xml
  11. 0 4
      gateway/ag-basic/pom.xml
  12. 24 0
      gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/BasicZuulFilter.java
  13. 18 0
      gateway/ag-basic/src/main/resources/application.yml
  14. 9 1
      gateway/ag-basic/src/main/resources/bootstrap.yml
  15. 0 8
      server/svr-admin-server/pom.xml
  16. 0 4
      server/svr-authentication/pom.xml
  17. 38 1
      server/svr-authentication/src/main/resources/application.yml
  18. 8 0
      server/svr-authentication/src/main/resources/bootstrap.yml
  19. 0 4
      server/svr-configuration/pom.xml
  20. 17 1
      server/svr-configuration/src/main/resources/bootstrap.yml
  21. 0 4
      server/svr-dashboard/pom.xml
  22. 0 4
      server/svr-zipkin/pom.xml
  23. 0 4
      svr/figure-label/pom.xml
  24. 0 5
      svr/svr-base/pom.xml
  25. 11 1
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/dict/WlyyHospitalSysDictEndpoint.java
  26. 48 0
      svr/svr-base/src/main/resources/application.yml
  27. 8 0
      svr/svr-base/src/main/resources/bootstrap.yml
  28. 0 4
      svr/svr-cloud-care/pom.xml
  29. 1 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/visit/BaseVisitService.java
  30. 119 4
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/GetuiUtil.java
  31. 0 5
      svr/svr-cloud-job/pom.xml
  32. 0 5
      svr/svr-cloud-medicine/pom.xml
  33. 0 4
      svr/svr-door-service/pom.xml
  34. 0 4
      svr/svr-healthy-house/pom.xml
  35. 0 4
      svr/svr-internet-hospital-entrance/pom.xml
  36. 21 0
      svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/controller/healthCare/HealthCareEndPoint.java
  37. 0 5
      svr/svr-internet-hospital-job/pom.xml
  38. 34 0
      svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/job/SynDoctorInfoJob.java
  39. 10 0
      svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/web/quota/JobController.java
  40. 2 0
      svr/svr-internet-hospital-job/src/main/resources/system.properties
  41. 0 5
      svr/svr-internet-hospital/pom.xml
  42. 42 0
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/healthCare/HealthCareEndPoint.java
  43. 14 2
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/prescription/PrescriptionEndpoint.java
  44. 29 0
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/ykyy/BaseTopBannerController.java
  45. 0 5
      svr/svr-iot-job/pom.xml
  46. 0 5
      svr/svr-patient/pom.xml
  47. 0 4
      svr/svr-rehabilitation/pom.xml
  48. 0 13
      svr/svr-statistics-es/src/main/java/com/yihu/wlyy/statistics/config/WebSecurityConfig.java
  49. 0 12
      svr/svr-statistics/pom.xml
  50. 0 13
      svr/svr-statistics/src/main/java/com/yihu/jw/statistics/config/WebSecurityConfig.java
  51. 0 4
      svr/svr-wlyy-archives/pom.xml
  52. 0 5
      svr/svr-wlyy-health-bank/pom.xml
  53. 15 0
      svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/config/jpa/WlyyHealthBankJpa.java
  54. 55 0
      svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/filter/XssAndHttpServletRequestWrapper.java
  55. 25 0
      svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/filter/XssFiter.java
  56. 91 0
      svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/util/XssUtil.java
  57. 0 4
      svr/svr-wlyy-specialist/pom.xml
  58. 15 0
      svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/config/jpa/WlyySpecialistJpa.java
  59. 55 0
      svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/filter/XssAndHttpServletRequestWrapper.java
  60. 25 0
      svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/filter/XssFiter.java
  61. 91 0
      svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/util/XssUtil.java
  62. 0 4
      svr/svr-wlyy/pom.xml

+ 207 - 4
business/base-service/src/main/java/com/yihu/jw/healthCare/service/HealthCareService.java

@ -286,6 +286,38 @@ public class HealthCareService {
        return result;
    }
    /**
     * 2.3.4	医师人脸签到微信小程序二维码(N20.17.02.06)
     * @param doctorId
     * @throws Exception
     */
    public String doctorFaceCheckInAddressBase64(String doctorId)throws Exception{
        WlyyHospitalSysDictDO hospitalSysDictDO = hospitalSysDictDao.findOne("ylzConfigFaceReturnUrl");
        if(hospitalSysDictDO == null){
            throw new Exception("未配置回调地址");
        }
        BaseDoctorDO doctorDO = doctorDao.findOne(doctorId);
        if (doctorDO == null){
            throw new Exception("医生不存在");
        }
        JSONObject data = new JSONObject();
        data.put("name",doctorDO.getName());//医师姓名
        data.put("idcard",doctorDO.getIdcard());//医师证件号
        data.put("cert_type","01");//医师证件类型
        data.put("redirect_url",hospitalSysDictDO.getDictValue());//回调地址
        String result = requestYlz(data,"N20.17.02.06","2.3.3\t获取医师人脸签到数据");
        if(result == null){
            throw new Exception("医保请求失败");
        }
        logger.info("医师人脸签到表单地址:"+result);
        JSONObject object = JSONObject.parseObject(result);
        if (object.getString("flag").equalsIgnoreCase("1")){
            JSONObject encryptData = object.getJSONObject("encrypt_data");
            return encryptData.toJSONString();
        }
        return result;
    }
    /**
     * 2.4.1 事前提醒
     */
@ -365,10 +397,14 @@ public class HealthCareService {
        JSONObject data;
        //获取his处方信息
        String infoResponse = xzzxEntranceService.presUpload(icCardNo,his_serial,org_code);
        JSONObject infoObject = JSONObject.parseObject(infoResponse);
        if("0".equals(infoObject.getString("ret_code"))){
            data = infoObject;
        JSONObject infoObject= xzzxEntranceService.presUploadToEntrance(icCardNo,his_serial,org_code);
       /* if (infoObject!=null){
        }*/
       JSONObject info = infoObject.getJSONArray("data").getJSONObject(0);
        if("0".equals(info.getString("ret_code"))){
            data = info;
        }else {
            throw new Exception("获取his处方信息失败:"+infoObject.getString("ret_mess"));
        }
@ -406,6 +442,26 @@ public class HealthCareService {
        return result;
    }
    /**
     * 2.4.2	医师开方上传
     *
     * @param prescriptionId
     * @return
     * @throws Exception
     */
    public String doctorPrescriptionUploadEntrance(String prescriptionId) throws Exception{
        String result = "";
        String response="";
        String url = entranceHealthCareUrl+"doctorPrescriptionUpload?prescriptionId="+prescriptionId;
        response = httpClientUtil.get(url,"GBK");
        logger.info("response:"+response);
        JSONObject object = JSONObject.parseObject(response);
        if (object.getInteger("status")==200){
            result = object.getString("obj");
        }
        return result;
    }
    /**
     * 2.4.3	医师开方上传取消(N20.17.03.06)
     */
@ -439,6 +495,26 @@ public class HealthCareService {
        return result;
    }
    /**
     * 2.4.3	医师开方上传取消(N20.17.03.06)
     *
     * @param prescriptionId
     * @return
     * @throws Exception
     */
    public String doctorPrescriptionUploadCancleEntrance(String prescriptionId,String cancelReason) throws Exception{
        String result = "";
        String response="";
        String url = entranceHealthCareUrl+"doctorPrescriptionUploadCancle?prescriptionId="+prescriptionId+"&cancelReason"+cancelReason;
        response = httpClientUtil.get(url,"GBK");
        logger.info("response:"+response);
        JSONObject object = JSONObject.parseObject(response);
        if (object.getInteger("status")==200){
            result = object.getString("obj");
        }
        return result;
    }
    /**
     * 2.6.1	电子处方订单接收(N20.17.05.02)
     */
@ -896,6 +972,59 @@ public class HealthCareService {
        return result;
    }
    /**
     * 2.2.3医保在线服务授权表单(H5表单/小程序)(N20.17.01.03)
     *
     * @param patient
     * @return
     * @throws Exception
     */
    public String medicareOnlineBase64(String patient) throws Exception{
        String funid = "N20.17.01.03";
        WlyyHospitalSysDictDO hospitalSysDictDO = hospitalSysDictDao.findById("ylzConfigRedirectUrl");
        if (hospitalSysDictDO==null){
            throw new Exception("回调地址为空!");
        }
        BasePatientDO patientDO = patientDao.findById(patient);
        if (patientDO==null){
            throw new Exception("患者信息不存在");
        }
        PatientMappingDO patientMappingDO = patientMappingDao.findByPatient(patient);
        if (patientMappingDO==null){
            throw new Exception("患者his信息不存在");
        }
        JSONObject data = new JSONObject();
        data.put("service_id","100000");
        data.put("name",patientDO.getName());
        data.put("idcard",patientDO.getIdcard());
        data.put("cert_type","01");//TODO
        data.put("phone",patientDO.getMobile());
        data.put("user_id",patientMappingDO.getMappingCode());
        data.put("redirect_url",hospitalSysDictDO.getDictValue());
        String result = requestYlz(data,funid,"医保在线服务授权表单");
        return result;
    }
    /**
     * 2.2.3医保在线服务授权表单(H5表单/小程序)(N20.17.01.03)
     *
     * @param patient
     * @return
     * @throws Exception
     */
    public String medicareOnlineBase64ToEntrance(String patient) throws Exception{
        String result = "";
        String response="";
        String url = entranceHealthCareUrl+"medicareOnline?patient="+patient;
        response = httpClientUtil.get(url,"GBK");
        logger.info("response:"+response);
        JSONObject object = JSONObject.parseObject(response);
        if (object.getInteger("status")==200){
            result = object.getString("obj");
        }
        return result;
    }
    /**
     * 2.5.1医保挂号(N20.17.04.01)
     *
@ -1433,6 +1562,80 @@ public class HealthCareService {
        return result;
    }
    /**
     * 2.5.8获取医保结算页面地址(N20.17.04.08)
     *
     * 返回值
     *
     * @param registerNo 挂号号
     * @return
     * @throws Exception
     */
    public String getSettlementResultUrlBase64(String registerNo) throws Exception{
        String funid = "N20.17.04.08";
        JSONObject data = new JSONObject();
        YlzMedicalRelationDO ylzMedicalRelationDO = ylzMedicailRelationDao.findByOutpatient(registerNo);
        if (ylzMedicalRelationDO==null){
            throw new Exception("获取医保结算页面地址:结算信息为空!");
        }
        WlyyHospitalSysDictDO wlyyHospitalSysDictDO = hospitalSysDictDao.findById("ResultRedirectUrl");
        if (wlyyHospitalSysDictDO==null){
            throw new Exception("获取医保结算页面地址失败:回调地址为空");
        }
        data.put("region_code",ylzMedicalRelationDO.getRegionCode());//参保地区划代码
        data.put("name",ylzMedicalRelationDO.getName());//姓名
        data.put("idcard",ylzMedicalRelationDO.getIdcard());//证件号码
        data.put("cert_type",ylzMedicalRelationDO.getCertType());//证件类型
        data.put("medical_mode",ylzMedicalRelationDO.getMedicalMode());//医疗就诊方式
        data.put("medical_type",ylzMedicalRelationDO.getMedicalType());//医疗类别
        data.put("insurance_serial",ylzMedicalRelationDO.getInsuranceSerial());//
        data.put("his_bill_serial",ylzMedicalRelationDO.getHisBillSerial());//his收费单据流水号
        data.put("date",ylzMedicalRelationDO.getDate());//实际就诊日期
        data.put("leave_method","09");//离院方式
        data.put("pre_count",ylzMedicalRelationDO.getPreCount());//处方项目数
        data.put("total_amount",ylzMedicalRelationDO.getTotalAmount());//医疗费总金额
        data.put("person_cash",ylzMedicalRelationDO.getPersonCash());//个人现金支付金额(实付现金)
        data.put("person_account",ylzMedicalRelationDO.getPersonAccount());//个人账户支付金额
        data.put("fund_price",ylzMedicalRelationDO.getFundPrice());//基金支付总额
        data.put("data_source",ylzMedicalRelationDO.getDataSource());//数据来源
        data.put("his_serial",ylzMedicalRelationDO.getHisSerial());//his流水号
        data.put("doctor_level",ylzMedicalRelationDO.getDoctorLevel());//医师诊查费等级
        data.put("redirect_url",wlyyHospitalSysDictDO.getDictValue());//回调地址
        String result = requestYlz(data,funid,"获取医保结算结果");
        if (result==null){
            throw new Exception("获取医保结算结果失败!");
        }
        return result;
    }
    /**
     * 2.5.8获取医保结算页面地址(N20.17.04.08)
     *
     * 返回值
     *
     * @param registerNo 挂号号
     * @return
     * @throws Exception
     */
    public String getSettlementResultUrlBase64ToEntrance(String registerNo) throws Exception{
        String result = "";
        String response="";
        String url = entranceHealthCareUrl+"getSettlementResultUrlBase64?registerNo="+registerNo;
        response = httpClientUtil.get(url,"GBK");
        logger.info("response:"+response);
        JSONObject object = JSONObject.parseObject(response);
        if (object.getInteger("status")==200){
            result = object.getString("obj");
        }
        return result;
    }
    /**
     * 2.5.8获取医保结算结果(N20.17.04.08)
     *

+ 9 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/dict/WlyyHospitalSysDictDao.java

@ -45,4 +45,13 @@ public interface WlyyHospitalSysDictDao extends PagingAndSortingRepository<WlyyH
    @Query("from WlyyHospitalSysDictDO where dictName = ?1  and  dictCode=?2 ")
    WlyyHospitalSysDictDO findOneByDictNameAndDictCode(String dictName,String dictCode);
    @Query("from WlyyHospitalSysDictDO where dictName = ?1 and imgUrl is not null order by sort asc")
    List<WlyyHospitalSysDictDO> findByDictNameOrderBySort(String dictName);
    WlyyHospitalSysDictDO findByDictNameAndSort(String dictName, Integer sort);
    @Query("from WlyyHospitalSysDictDO where dictName = ?1 and sort>?2")
    List<WlyyHospitalSysDictDO> findByDictNameAndSortNear(String dictName,Integer sort);
}

+ 93 - 1
business/base-service/src/main/java/com/yihu/jw/hospital/dict/service/WlyyHospitalSysDictService.java

@ -24,6 +24,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -91,7 +92,7 @@ public class WlyyHospitalSysDictService extends BaseJpaService<WlyyHospitalSysDi
        }
    }
    //根据id修改或新增字典
    /*//根据id修改或新增字典
    public WlyyHospitalSysDictDO updateOrCreateDict(String json) throws  Exception{
        WlyyHospitalSysDictDO  wlyyHospitalSysDictDO = objectMapper.readValue(json, WlyyHospitalSysDictDO.class);
        String modelName = "";
@ -129,6 +130,93 @@ public class WlyyHospitalSysDictService extends BaseJpaService<WlyyHospitalSysDi
            return wlyyHospitalSysDictDao.save(wlyyHospitalSysDictDO1);
        }
        return wlyyHospitalSysDictDao.save(wlyyHospitalSysDictDO);
    }*/
    public WlyyHospitalSysDictDO updateOrCreateDict(String json) throws  Exception{
        WlyyHospitalSysDictDO  wlyyHospitalSysDictDO = objectMapper.readValue(json, WlyyHospitalSysDictDO.class);
        String modelName = "";
        if (StringUtils.isNoneBlank(wlyyHospitalSysDictDO.getDictName())){
            List<WlyyHospitalSysDictDO> modelNameList=wlyyHospitalSysDictDao.findByDictName(wlyyHospitalSysDictDO.getDictName());
            if (modelNameList!=null&&modelNameList.size()>0){
                modelName= modelNameList.get(0).getModelName();
            }
        }
        wlyyHospitalSysDictDO.setModelName(modelName);
        if(StringUtils.isNoneBlank(wlyyHospitalSysDictDO.getId())){
            WlyyHospitalSysDictDO wlyyHospitalSysDictDO1 = wlyyHospitalSysDictDao.findById(wlyyHospitalSysDictDO.getId());
            List<WlyyHospitalSysDictDO> wlyyHospitalSysDictDOList=new ArrayList<>();
            if (wlyyHospitalSysDictDO1!=null){
                wlyyHospitalSysDictDO1.setDictValue(wlyyHospitalSysDictDO.getDictValue());
                wlyyHospitalSysDictDO1.setDictCode(wlyyHospitalSysDictDO.getDictCode());
                wlyyHospitalSysDictDO1.setDictName(wlyyHospitalSysDictDO.getDictName());
                wlyyHospitalSysDictDO1.setHospital(wlyyHospitalSysDictDO.getHospital());
                wlyyHospitalSysDictDO1.setPyCode(wlyyHospitalSysDictDO.getPyCode());
                wlyyHospitalSysDictDO1.setImgUrl(wlyyHospitalSysDictDO.getImgUrl());
                if (wlyyHospitalSysDictDO.getDictName().equalsIgnoreCase("ONLINE_HOSPITAL_BANNER")){
                    if (wlyyHospitalSysDictDO.getSort()==null||wlyyHospitalSysDictDO.getSort()<=0){
                        return null;
                    }
                    WlyyHospitalSysDictDO wlyyHospitalSysDictDOs = wlyyHospitalSysDictDao.findByDictNameAndSort(wlyyHospitalSysDictDO.getDictName(),wlyyHospitalSysDictDO.getSort());
                    wlyyHospitalSysDictDOList= wlyyHospitalSysDictDao.findByDictNameAndSortNear("ONLINE_HOSPITAL_BANNER",wlyyHospitalSysDictDO.getSort());
                    if (wlyyHospitalSysDictDOs==null&&wlyyHospitalSysDictDOList.size()==0){
                        wlyyHospitalSysDictDO1.setSort(wlyyHospitalSysDictDO.getSort());
                    }else if (wlyyHospitalSysDictDOs==null&&wlyyHospitalSysDictDOList.size()>0){
                        wlyyHospitalSysDictDO1.setSort(wlyyHospitalSysDictDO.getSort());
                    }else if (wlyyHospitalSysDictDOs!=null&&wlyyHospitalSysDictDOList.size()==0){
                        wlyyHospitalSysDictDOs.setSort(wlyyHospitalSysDictDOs.getSort()+1);
                        wlyyHospitalSysDictDO1.setSort(wlyyHospitalSysDictDO.getSort());
                    }else {
                        for (WlyyHospitalSysDictDO wlyyHospitalSysDictDO2 : wlyyHospitalSysDictDOList) {
                            wlyyHospitalSysDictDO1.setSort(wlyyHospitalSysDictDO.getSort());
                            Integer sort = wlyyHospitalSysDictDO2.getSort();
                            sort++;
                            wlyyHospitalSysDictDO2.setSort(sort);
                        }
                        wlyyHospitalSysDictDao.save(wlyyHospitalSysDictDOList);
                    }
                }else {
                    wlyyHospitalSysDictDO1.setSort(wlyyHospitalSysDictDO.getSort());
                }
                wlyyHospitalSysDictDO1.setModelName(modelName);
            }else {
                wlyyHospitalSysDictDO1 = new WlyyHospitalSysDictDO();
                wlyyHospitalSysDictDO1.setDictValue(wlyyHospitalSysDictDO.getDictValue());
                wlyyHospitalSysDictDO1.setDictCode(wlyyHospitalSysDictDO.getDictCode());
                wlyyHospitalSysDictDO1.setDictName(wlyyHospitalSysDictDO.getDictName());
                wlyyHospitalSysDictDO1.setHospital(wlyyHospitalSysDictDO.getHospital());
                wlyyHospitalSysDictDO1.setPyCode(wlyyHospitalSysDictDO.getPyCode());
                wlyyHospitalSysDictDO1.setImgUrl(wlyyHospitalSysDictDO.getImgUrl());
                if (wlyyHospitalSysDictDO.getDictName().equalsIgnoreCase("ONLINE_HOSPITAL_BANNER")){
                    if (wlyyHospitalSysDictDO.getSort()==null||wlyyHospitalSysDictDO.getSort()<=0){
                        return null;
                    }
                    WlyyHospitalSysDictDO wlyyHospitalSysDictDOs = wlyyHospitalSysDictDao.findByDictNameAndSort(wlyyHospitalSysDictDO.getDictName(),wlyyHospitalSysDictDO.getSort());
                    wlyyHospitalSysDictDOList= wlyyHospitalSysDictDao.findByDictNameAndSortNear("ONLINE_HOSPITAL_BANNER",wlyyHospitalSysDictDO.getSort());
                    if (wlyyHospitalSysDictDOs==null&&wlyyHospitalSysDictDOList.size()==0){
                        wlyyHospitalSysDictDO1.setSort(wlyyHospitalSysDictDO.getSort());
                    }else if (wlyyHospitalSysDictDOs==null&&wlyyHospitalSysDictDOList.size()>0){
                        wlyyHospitalSysDictDO1.setSort(wlyyHospitalSysDictDO.getSort());
                    }else if (wlyyHospitalSysDictDOs!=null&&wlyyHospitalSysDictDOList.size()==0){
                        wlyyHospitalSysDictDOs.setSort(wlyyHospitalSysDictDOs.getSort()+1);
                        wlyyHospitalSysDictDO1.setSort(wlyyHospitalSysDictDO.getSort());
                    }else {
                        for (WlyyHospitalSysDictDO wlyyHospitalSysDictDO2 : wlyyHospitalSysDictDOList) {
                            wlyyHospitalSysDictDO1.setSort(wlyyHospitalSysDictDO.getSort());
                            Integer sort = wlyyHospitalSysDictDO2.getSort();
                            sort++;
                            wlyyHospitalSysDictDO2.setSort(sort);
                        }
                        wlyyHospitalSysDictDao.save(wlyyHospitalSysDictDOList);
                    }
                }else {
                    wlyyHospitalSysDictDO1.setSort(wlyyHospitalSysDictDO.getSort());
                }
                wlyyHospitalSysDictDO1.setModelName(modelName);
            }
            return wlyyHospitalSysDictDao.save(wlyyHospitalSysDictDO1);
        }
        return wlyyHospitalSysDictDao.save(wlyyHospitalSysDictDO);
    }
    //根据id删除字典
    public String  deleteDictById(String id){
@ -456,4 +544,8 @@ public class WlyyHospitalSysDictService extends BaseJpaService<WlyyHospitalSysDi
        return re;
    }
    public List<WlyyHospitalSysDictDO> findByDictName(String dictName) {
        return wlyyHospitalSysDictDao.findByDictNameOrderBySort(dictName);
    }
}

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

@ -1198,8 +1198,15 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        }
        if (wechatId.equalsIgnoreCase("xm_xzzx_wx")){
            logger.info("心脏中心同步患者开始");
            xzzxEntranceService.updatePatientMapping(outpatient.getConsumer(),outpatient.getCardNo());
            xzzxEntranceService.updatePatientMapping(outpatient.getPatient(),outpatient.getCardNo());
            logger.info("同步患者id成功");
        }else if (wechatId.equalsIgnoreCase("xm_ykyy_wx")){
            logger.info("眼科中心患者档案查询");
            PatientMappingDO patientMappingDO = patientMappingDao.findByPatient(outpatient.getPatient());
            if (patientMappingDO==null){
                throw new Exception("您的信息在院内无档案,请确认就诊人信息,并重新保存就诊人信息!");
            }
            logger.info("眼科中心患者档案查询");
        }
@ -6821,14 +6828,14 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        }
        if("xm_ykyy_wx".equalsIgnoreCase(wechatId)){
            if (flag){
                sql += " and d.del='1' order by d.consult_status DESC ,evaluate.score desc,a.total " + consutlSort;
                sql += " and d.del='1' order by d.consult_status DESC ,evaluate.score desc,a.total " + consutlSort+",dw.workTotal DESC";
            }else{
                sql += " and d.del='1' order by d.consult_status desc nulls last ,evaluate.score desc nulls last ,a.total " + consutlSort;
                sql+=" NULLS LAST,\n" +
                        "\tD.id DESC";
                        "\tD.id DESC,dw.workTotal DESC NULLS LAST";
            }
        }else {
            sql += " and d.del='1' order by d.consult_status DESC ,evaluate.score desc,a.total " + consutlSort;
            sql += " and d.del='1' order by d.consult_status DESC ,evaluate.score desc,a.total " + consutlSort+"";
        }
        String sqlCount = "select count(1) as \"total\" from ( "+sql+" ) t";
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql, params, page, pagesize);
@ -9765,6 +9772,9 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                    try {
                        if (object!=null){
                            if (object.getString("code").equalsIgnoreCase("0")){
                                if (healthCareService.isHospitalFlag()){
                                   healthCareService.doctorPrescriptionUploadEntrance(prescriptionId);
                                }
                                //  * @param applyDepaName @param applyDoctorName
                                WlyyPrescriptionDO prescriptionDO = prescriptionDao.findOne(prescriptionId);
                                String patientCode = outpatientDO.getConsumer();
@ -12209,22 +12219,34 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            Map<String,Object> map = findRandomDoctor();
            net.sf.json.JSONObject rs = new JSONObject();
            if (map!=null){
                //先进行核算检测预约
                String result = entranceService.BS10144("3150000","0001",natTime,mediaCard,name,cardNo,mobile,pm,demoFlag);
                com.alibaba.fastjson.JSONObject object = com.alibaba.fastjson.JSONObject.parseObject(result);
                logger.info("核酸检测预约结束"+result);
                WlyyHospitalSysDictDO hospitalSysDictDO = hospitalSysDictDao.findById("natTimeConfig");
                String isOpen = null;
                if (hospitalSysDictDO!=null){
                    String dictValue = hospitalSysDictDO.getDictValue();
                    com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(dictValue);
                    isOpen = jsonObject.getString("isOpen");
                }
                Boolean flag = false;
                if (object!=null){
                    com.alibaba.fastjson.JSONObject jsonObject = object.getJSONObject("MsgInfo");
                    String Msg = jsonObject.getString("Msg");
                    if (Msg.contains("Error")){
                if (isOpen!=null&&isOpen.equalsIgnoreCase("0")){
                    //先进行核算检测预约
                    String result = entranceService.BS10144("3150000","0001",natTime,mediaCard,name,cardNo,mobile,pm,demoFlag);
                    com.alibaba.fastjson.JSONObject object = com.alibaba.fastjson.JSONObject.parseObject(result);
                    logger.info("核酸检测预约结束"+result);
                    if (object!=null){
                        com.alibaba.fastjson.JSONObject jsonObject = object.getJSONObject("MsgInfo");
                        String Msg = jsonObject.getString("Msg");
                        if (Msg.contains("Error")){
                            returnMap.put("msg",Msg);
                            returnMap.put("status","-1");
                            return  returnMap;
                    }else {
                        flag = true;
                        }else {
                            flag = true;
                        }
                    }
                }else {
                    flag = true;
                }
                if (flag){
                    BaseNatAppointmentDO baseNatAppointmentDO= new BaseNatAppointmentDO();
                    baseNatAppointmentDO.setChargeAmount(chargeAmount);
@ -12968,10 +12990,24 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                BaseNatAppointmentDO baseNatAppointmentDO = baseNatAppointmentDao.findOne(id);
                if (null!=baseNatAppointmentDO){
                    if ("xm_zsyy_wx".equalsIgnoreCase(wechatId)){
                        res = entranceService.BS10145("3150000","0001",DateUtil.dateToStrLong(baseNatAppointmentDO.getAppointmentTime()),baseNatAppointmentDO.getMedicare(),baseNatAppointmentDO.getName(),baseNatAppointmentDO.getCardNo(),baseNatAppointmentDO.getMobile(),baseNatAppointmentDO.getAmpm(),demoFlag);
                        logger.info("核酸检测预约取消"+res);
                        com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(res);
                        WlyyHospitalSysDictDO hospitalSysDictDO = hospitalSysDictDao.findById("natTimeConfig");
                        String isOpen = null;
                        if (hospitalSysDictDO!=null){
                            String dictValue = hospitalSysDictDO.getDictValue();
                            com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(dictValue);
                            isOpen = jsonObject.getString("isOpen");
                        }
                        Boolean flag = false;
                        com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject();
                        if (isOpen!=null&&isOpen.equalsIgnoreCase("0")){
                            res = entranceService.BS10145("3150000","0001",DateUtil.dateToStrLong(baseNatAppointmentDO.getAppointmentTime()),baseNatAppointmentDO.getMedicare(),baseNatAppointmentDO.getName(),baseNatAppointmentDO.getCardNo(),baseNatAppointmentDO.getMobile(),baseNatAppointmentDO.getAmpm(),demoFlag);
                            logger.info("核酸检测预约取消"+res);
                            jsonObject = com.alibaba.fastjson.JSONObject.parseObject(res);
                        }else {
                            com.alibaba.fastjson.JSONObject object = new com.alibaba.fastjson.JSONObject();
                            object.put("Msg","success");
                            jsonObject.put("MsgInfo",object);
                        }
                        if (jsonObject!=null){
                            com.alibaba.fastjson.JSONObject object = jsonObject.getJSONObject("MsgInfo");
                            String Msg = object.getString("Msg");
@ -13792,7 +13828,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
     * @return
     * @throws Exception
     */
    public JSONObject getSettlementInfo(String outpatientId) throws Exception {
    public JSONObject getSettlementInfo(String outpatientId,Integer flag) throws Exception {
        logger.info("获取患者待结算信息开始!");
        WlyyOutpatientDO outpatientDO = outpatientDao.findById(outpatientId);
        if(outpatientDO==null){
@ -13814,15 +13850,22 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        logger.info("医保预结算信息开始!");
        YlzMedicalRelationDO ylzMedicalRelationDO =  healthCareService.preSettlementToEntrance(registerNo);
        logger.info("医保预结算信息结束!");
        logger.info("获取医保结算页面地址开始!");
        String getSettlementResultUrl = healthCareService.getSettlementResultUrlToEntrance(registerNo);
        logger.info("获取医保结算页面地址结束!");
        JSONObject object = new JSONObject();
        if (flag==1){
            logger.info("获取医保结算页面地址开始!");
            String getSettlementResultUrl = healthCareService.getSettlementResultUrlToEntrance(registerNo);
            logger.info("获取医保结算页面地址结束!");
            object.put("getSettlementResultUrl",getSettlementResultUrl);
        }else if (flag==2){
            logger.info("获取医保结算页面地址开始!");
            String getSettlementResultUrlBase64 = healthCareService.getSettlementResultUrlBase64ToEntrance(registerNo);
            logger.info("获取医保结算页面地址结束!");
            object.put("getSettlementResultUrlBase64",getSettlementResultUrlBase64);
        }
        object.put("register",register);
        object.put("feeDetailUpload",feeDetailUpload);
        object.put("preSettlement",ylzMedicalRelationDO);
        object.put("getSettlementResultUrl",getSettlementResultUrl);
        object.put("cardNo",outpatientDO.getCardNo());
        object.put("deptName",outpatientDO.getPatientName());
        return object;
@ -14373,4 +14416,80 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            throw e;
        }
    }
    public ObjEnvelop selectNatTime()throws Exception{
        ObjEnvelop envelop = new ObjEnvelop();
        GregorianCalendar ca = new GregorianCalendar();
        //i结果为“0”是上午 结果为“1”是下午
        Integer  i = ca.get(GregorianCalendar.AM_PM);
        WlyyHospitalSysDictDO hospitalSysDictDO = hospitalSysDictDao.findById("natTimeConfig");
        String isOpen = null;
        String sql = "SELECT COUNT(1) as count FROM `base_nat_appointment` where is_success = 1 and pay_status=1 ";
        if (hospitalSysDictDO!=null){
            String dictValue = hospitalSysDictDO.getDictValue();
            com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(dictValue);
            String startAm = jsonObject.getString("startAm");
            String endAm = jsonObject.getString("endAm");
            String startPm = jsonObject.getString("startPm");
            String endPm = jsonObject.getString("endPm");
            String message1 = jsonObject.getString("message1");
            String message2 = jsonObject.getString("message2");
            Integer amTotal = jsonObject.getInteger("amTotal");
            Integer pmTotal = jsonObject.getInteger("pmTotal");
            Date startAmDate = DateUtil.strToDateLong(DateUtil.getStringDateShort()+" "+startAm);
            Date endAmDate = DateUtil.strToDateLong(DateUtil.getStringDateShort()+" "+endAm);
            Date startPmDate = DateUtil.strToDateLong(DateUtil.getStringDateShort()+" "+startPm);
            Date endPmDate = DateUtil.strToDateLong(DateUtil.getStringDateShort()+" "+endPm);
            Date now = new Date();
            if (i==0){
                if (now.getTime()>=startAmDate.getTime()&&now.getTime()<=endAmDate.getTime()){
                    sql += " and create_time >= '"+DateUtil.dateToStrLong(startAmDate)+"' and create_time <='"+DateUtil.dateToStrLong(endAmDate)+"' ";
                }else {
                    envelop.setMessage(message1);
                    envelop.setStatus(500);
                    return envelop;
                }
            }else if (i==1){
                if (now.getTime()>=(startPmDate.getTime())&&now.getTime()<=(endPmDate.getTime())){
                    sql += " and create_time >= '"+DateUtil.dateToStrLong(startPmDate)+"' and create_time <='"+DateUtil.dateToStrLong(endPmDate)+"' ";
                }else {
                    envelop.setMessage(message1);
                    envelop.setStatus(500);
                    return envelop;
                }
            }
            Map<String,Object> map = jdbcTemplate.queryForMap(sql);
            logger.info("map"+sql);
            Integer count = 0;
            if (map!=null){
                count= Integer.parseInt(map.get("count").toString());
            }
            if (i==0){
                if (amTotal>count){
                    Integer remainTotal = amTotal-count;
                    jsonObject.put("remainTotal",remainTotal);
                }else {
                    envelop.setMessage(message2);
                    envelop.setStatus(500);
                    return envelop;
                }
            }else if (i==1){
                if (pmTotal>count){
                    Integer remainTotal = pmTotal-count;
                    jsonObject.put("remainTotal",remainTotal);
                }else {
                    envelop.setMessage(message2);
                    envelop.setStatus(500);
                    return envelop;
                }
            }
            envelop.setStatus(200);
            envelop.setMessage("获取号源成功");
            envelop.setObj(jsonObject);
            return envelop;
        }else {
            envelop.setStatus(500);
            envelop.setMessage("获取号源失败");
            return envelop;
        }
    }
}

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

@ -2099,6 +2099,9 @@ public class EntranceService {
                                List<BaseDoctorDO> baseDoctorDOS = baseDoctorDao.findByIdcard(idCard);
                                if (baseDoctorDOS!=null&&baseDoctorDOS.size()!=0){
                                    baseDoctorDO=baseDoctorDOS.get(0);
                                    String disableFlag = null == jsonObjectBody.get("Disable_Flag") ? "" : jsonObjectBody.get("Disable_Flag").toString();
                                    //互联网医院:1停用,0使用  转 i健康:1正常,0作废
                                    baseDoctorDO.setDel("1".equals(disableFlag) ? "0" : "1");
                                }else {
                                    baseDoctorDO.setIdcard(idCard);
@ -2124,13 +2127,33 @@ public class EntranceService {
                                    } else {
                                        baseDoctorDO.setPassword(com.yihu.utils.security.MD5.md5Hex("123456" + "{" + baseDoctorDO.getSalt() + "}"));
                                    }
                                    //拼音码
                                    baseDoctorDO.setSpell(null == jsonObjectBody.get("PinYin_Code") ? "" : jsonObjectBody.get("PinYin_Code").toString());
                                    //姓名
                                    doctorName = null == jsonObjectBody.get("Emp_Name") ? "" : jsonObjectBody.get("Emp_Name").toString();
                                    //号别
                                    baseDoctorDO.setChargeType(chareType);
                                    // 用医生和机构id、部门判断数据是否存在,若不存在则保存医生机构关联关系
                                    String deptCode = null == jsonObjectBody.get("Dept_Code") ? "" : jsonObjectBody.get("Dept_Code").toString();
                                    List<BaseDoctorHospitalDO> baseDoctorHospitalDOS = baseDoctorHospitalDao.findByOrgCodeAndDeptCodeAndDoctorCode("350211A1002", deptCode, baseDoctorDO.getId());
                                    if (!(null != baseDoctorHospitalDOS && baseDoctorHospitalDOS.size() > 0)) {
                                        baseDoctorHospitalDao.delete(baseDoctorHospitalDOS);
                                        BaseDoctorHospitalDO baseDoctorHospitalDO = new BaseDoctorHospitalDO();
                                        baseDoctorHospitalDO.setOrgCode("350211A1002");
                                        baseDoctorHospitalDO.setOrgName("厦门大学附属中山医院");
                                        baseDoctorHospitalDO.setDoctorCode(baseDoctorDO.getId());
                                        baseDoctorHospitalDO.setDeptCode(deptCode);
                                        //根据机构编码获取机构名称
                                        List<DictHospitalDeptDO> dictHospitalDeptDOS = dictHospitalDeptDao.findByOrgCodeAndCode("350211A1002", deptCode);
                                        if (null != dictHospitalDeptDOS && dictHospitalDeptDOS.size() > 0) {
                                            DictHospitalDeptDO dictHospitalDeptDO = dictHospitalDeptDOS.get(0);
                                            baseDoctorHospitalDO.setDeptName(dictHospitalDeptDO.getName());
                                        }
                                        baseDoctorHospitalDO.setDel("1");
                                        baseDoctorHospitalDao.save(baseDoctorHospitalDO);
                                    }
                                }
                                //拼音码
                                baseDoctorDO.setSpell(null == jsonObjectBody.get("PinYin_Code") ? "" : jsonObjectBody.get("PinYin_Code").toString());
                                //姓名
                                doctorName = null == jsonObjectBody.get("Emp_Name") ? "" : jsonObjectBody.get("Emp_Name").toString();
                                //号别
                                baseDoctorDO.setChargeType(chareType);
                                baseDoctorDO = baseDoctorDao.save(baseDoctorDO);
                                //根据医生和机构判断数据是否存在,若不存在则在mapping中追加记录
@ -2146,25 +2169,6 @@ public class EntranceService {
                                    doctorMappingDO.setOrgName("厦门大学附属中山医院");
                                    doctorMappingDao.save(doctorMappingDO);
                                }
                                // 用医生和机构id、部门判断数据是否存在,若不存在则保存医生机构关联关系
                                String deptCode = null == jsonObjectBody.get("Dept_Code") ? "" : jsonObjectBody.get("Dept_Code").toString();
                                List<BaseDoctorHospitalDO> baseDoctorHospitalDOS = baseDoctorHospitalDao.findByOrgCodeAndDeptCodeAndDoctorCode("350211A1002", deptCode, baseDoctorDO.getId());
                                if (!(null != baseDoctorHospitalDOS && baseDoctorHospitalDOS.size() > 0)) {
                                    baseDoctorHospitalDao.delete(baseDoctorHospitalDOS);
                                    BaseDoctorHospitalDO baseDoctorHospitalDO = new BaseDoctorHospitalDO();
                                    baseDoctorHospitalDO.setOrgCode("350211A1002");
                                    baseDoctorHospitalDO.setOrgName("厦门大学附属中山医院");
                                    baseDoctorHospitalDO.setDoctorCode(baseDoctorDO.getId());
                                    baseDoctorHospitalDO.setDeptCode(deptCode);
                                    //根据机构编码获取机构名称
                                    List<DictHospitalDeptDO> dictHospitalDeptDOS = dictHospitalDeptDao.findByOrgCodeAndCode("350211A1002", deptCode);
                                    if (null != dictHospitalDeptDOS && dictHospitalDeptDOS.size() > 0) {
                                        DictHospitalDeptDO dictHospitalDeptDO = dictHospitalDeptDOS.get(0);
                                        baseDoctorHospitalDO.setDeptName(dictHospitalDeptDO.getName());
                                    }
                                    baseDoctorHospitalDO.setDel("1");
                                    baseDoctorHospitalDao.save(baseDoctorHospitalDO);
                                }
                                i++;
                            }

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

@ -2724,6 +2724,24 @@ public class XzzxEntranceService{
//=====================hospital应用调用entrance应用============start=================
    /**
     * 2.1.3	调用entrance获取处方信息
     * @return
     */
    public JSONObject presUploadToEntrance(String icCardNo,String his_serial,String org_code) throws Exception {
        JSONObject jsonObject = new JSONObject();
        String response = "";
        String url = entranceUrl+"presUpload?icCardNo="+icCardNo+"&his_serial="+his_serial+"&org_code="+org_code+"";
        response = httpClientUtil.get(url,"GBK");
        logger.info("调用entrance获取处方信息"+response);
        JSONObject object = JSONObject.parseObject(response);
        if(object.getInteger("status")==200){
            jsonObject = object.getJSONObject("obj");
        }
        return jsonObject;
    }
    /**
     * 2.1.1获取患者结算信息
     * @param icCardNo 社会保障卡号

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

@ -2559,6 +2559,8 @@ public class YkyyEntranceService {
            //获取居民信息
            JSONObject json = jsonArray.getJSONObject(0);
            hlwGhmxDO.setBRXZ(json.getInteger("brxz"));
        }else {
            throw new Exception("患者信息有误!");
        }
        //操作工号
        JSONArray jsonArray1 = findHisDoctor(doctorMappingDO.getIdcard());

+ 21 - 21
business/base-service/src/main/java/com/yihu/jw/internet/service/InternetCommonService.java

@ -31,6 +31,7 @@ import com.yihu.jw.utils.JSONUtils;
import com.yihu.jw.utils.encode.AESUtils;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import com.yihu.mysql.query.BaseJpaService;
import com.ylzinfo.ehc.common.utils.DateUtils;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.LoggerFactory;
@ -135,15 +136,7 @@ public class InternetCommonService extends BaseJpaService<InternetUpErrorLogDO,
        getBaseSurperviseDict();
        WsapiProxy proxy = new WsapiProxy();
        proxy.setEndpoint(url);
        JSONObject jsonObject= new JSONObject();
        if (params!=null&&params.size()>0){
            jsonObject= params.getJSONObject(0);
            jsonObject.put("docimg","");
            jsonObject.put("doc_cert","");
            jsonObject.put("cert_doc_prac","");
        }
        logger.info("入参:"+jsonObject.toString());
        logger.info("入参:"+params.toString());
        Wsapi wsapi = proxy.getWsapi();
//        logger.info("postToInter:"+JSONUtils.toString(new String[] {token, params.toString()}));
@ -465,9 +458,10 @@ public class InternetCommonService extends BaseJpaService<InternetUpErrorLogDO,
                "   p.patient_name AS \"paName\"," +
                "   p.doctor_name AS \"docName\"," +
                "   p.idcard AS \"idcard\"," +
                "   p.register_date AS \"date\"" +
                "   p.register_date AS \"date\"," +
                  " p.mobile as \"mobile\""+
                "   FROM wlyy_outpatient p " +
                " WHERE 1=1" ;
                " WHERE 1=1 and p.register_no is not null " ;
        Map<String,Object> params = new HashedMap();
        if(StringUtils.isNotBlank(startDate)){
            sql =  sql + "  and p.create_time >=:startDate ";
@ -507,7 +501,7 @@ public class InternetCommonService extends BaseJpaService<InternetUpErrorLogDO,
                jb.put("pt_age", IdCardUtil.getAgeForIdcard(info.get("idcard").toString()));
                jb.put("card_type", "1");
                jb.put("id_no",  info.get("idcard") == null?"0":info.get("idcard"));
                jb.put("pt_tel",  "00000000000");
                jb.put("pt_tel",  info.get("mobile") == null?"00000000000":info.get("mobile"));
                jb.put("crt_date",DateUtil.dateToStrLong(DateUtil.getNow()));
            }catch (Exception e){
                errorFlag = true;
@ -558,7 +552,8 @@ public class InternetCommonService extends BaseJpaService<InternetUpErrorLogDO,
                " i.create_time AS \"create_time\", " +
                " p.name AS \"name\", " +
                " p.idcard AS \"idcard\", " +
                " d.idcard AS \"doctorIdCard\"" +
                " d.idcard AS \"doctorIdCard\"," +
                " o.mobile AS \"mobile\"" +
                "FROM " +
                " wlyy_inspection i " +
                " JOIN wlyy_outpatient o ON o.id = i.outpatient_id  " +
@ -601,7 +596,7 @@ public class InternetCommonService extends BaseJpaService<InternetUpErrorLogDO,
                    jb.put("ge_code", sex=="3"?"9":sex);
                    jb.put("card_type", "1");
                    jb.put("id_no", ins.get("idcard").toString());
                    jb.put("pt_tel", "00000000000");
                    jb.put("pt_tel", ins.get("mobile") == null?"00000000000":ins.get("mobile"));
                    jb.put("crt_date",DateUtil.dateToStrLong(DateUtil.getNow()));
                }catch (Exception e){
                    errorFlag = true;
@ -1058,7 +1053,7 @@ public class InternetCommonService extends BaseJpaService<InternetUpErrorLogDO,
                String sex = IdCardUtil.getSexForIdcard_new(info.get("paId").toString());
                jb.put("ge_code", sex=="3"?"9":sex);
                jb.put("pt_tel", info.get("moble")==null?"00000000000":info.get("moble").toString());
                jb.put("pt_tel", info.get("mobile")==null?"00000000000":info.get("mobile").toString());
                jb.put("card_type", "1");
                jb.put("id_no", info.get("paId"));
                jb.put("pt_district", "");
@ -1141,6 +1136,8 @@ public class InternetCommonService extends BaseJpaService<InternetUpErrorLogDO,
                "  a.patient_name AS \"patient_name\"," +
                "  b.idcard AS \"idcard\"," +
                "  b.city_code AS \"city_code\"," +
                "  b.sex AS \"sex\"," +
                "  c.mobile AS \"mobile\"," +
                "  a.hospital AS \"hospital\"," +
                "  a.hospital_name AS \"hospital_name\"," +
                "  p.icd10 AS \"icd10\"," +
@ -1188,7 +1185,7 @@ public class InternetCommonService extends BaseJpaService<InternetUpErrorLogDO,
                // 获取监管平台唯一标识
                String visitDocCode = achNsDoctorRecord(info.get("docIdcard").toString());
                String trialDocCode =  achNsDoctorRecord("350104197904305425");
                String trialDocCode =  achNsDoctorRecord("362531198407290348");
                jb.put("id_prescription", orgCode +"_"+ (String)info.get("id"));
                jb.put("pres_no",info.get("real_order")== null?"0":info.get("real_order"));
@ -1224,8 +1221,8 @@ public class InternetCommonService extends BaseJpaService<InternetUpErrorLogDO,
                jb.put("pres_doc_name", info.get("doctor_name")== null?"0":info.get("doctor_name"));
                jb.put("pres_doc_id_no", info.get("docIdcard")== null?"0":info.get("docIdcard"));
                jb.put("trial_doc_code", trialDocCode);
                jb.put("trial_doc_name", "陈燕莺");
                jb.put("trial_doc_id_no","350104197904305425");
                jb.put("trial_doc_name", "乐女金");
                jb.put("trial_doc_id_no","362531198407290348");
                jb.put("diag_code", info.get("icd10"));
                jb.put("diag_name", info.get("icd10_name"));
                jb.put("diseases_type", "0");
@ -1535,6 +1532,7 @@ public class InternetCommonService extends BaseJpaService<InternetUpErrorLogDO,
        int error = 0;
        int dataError = 0;
        logger.info("1231321321321");
        //时间参数
        Map<String,Object> params = new HashedMap();
@ -1542,7 +1540,7 @@ public class InternetCommonService extends BaseJpaService<InternetUpErrorLogDO,
        String yyghSql = "SELECT " +
                "   count(1) AS \"yyghtotal\"" +
                " FROM wlyy_outpatient p " +
                " WHERE 1=1" ;
                " WHERE 1=1 and p.register_no is not null " ;
        if(StringUtils.isNotBlank(startDate)){
            yyghSql =  yyghSql + "  and p.create_time >=:startDate ";
            params.put("startDate",DateUtil.stringToDate(startDate+" 00:00:00","yyyy-MM-dd HH:mm:ss"));
@ -1700,7 +1698,7 @@ public class InternetCommonService extends BaseJpaService<InternetUpErrorLogDO,
            //mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
            gctptotal = hibenateUtils.objTransformLong(gctp.get(0).get("gctptotal"));
        }
        logger.info("1231321321321+++++");
        JSONObject jb = new JSONObject();
        Boolean errorFlag = false;
        try {
@ -1715,7 +1713,8 @@ public class InternetCommonService extends BaseJpaService<InternetUpErrorLogDO,
            jb.put("dzcf_upload_count", dzcftotal);
            jb.put("ypmx_upload_count", infototal);
            jb.put("gctp_upload_count", gctptotal);
            jb.put("ywsj", startDate);
            logger.info("ywsj"+DateUtil.dateToStrShort(DateUtil.strToDateShort(startDate)));
            jb.put("ywsj", DateUtil.dateToStrShort(DateUtil.strToDateShort(startDate)));
            jb.put("crt_time", DateUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
@ -1725,6 +1724,7 @@ public class InternetCommonService extends BaseJpaService<InternetUpErrorLogDO,
            dataError++;
            logger.error(e.toString());
        }
        logger.info("1231321321321====");
        logger.info(jb.toString());
        if(!errorFlag){
            JSONArray jsonArray = new JSONArray();

+ 3 - 3
common/common-entity/src/main/java/com/yihu/jw/entity/IntegerIdentityEntity.java

@ -19,13 +19,13 @@ public abstract class IntegerIdentityEntity implements Serializable {
    @Id
//==========mysql 环境 id策略======================================================
    @GeneratedValue(generator = "generator")
/*    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "identity")
    @Column(name = "id", unique = true, nullable = false)
    @Column(name = "id", unique = true, nullable = false)*/
//==========mysql 环境 id策略 end======================================================
//==========Oracle 环境id策略 =========================================================
/*   @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="id_generated")*/
   @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="id_generated")
//==========Oracle 环境id策略 =========================================================
    public Integer getId() {
        return id;

+ 0 - 4
common/common-fegin/pom.xml

@ -73,10 +73,6 @@
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <!--  <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-actuator</artifactId>
          </dependency>-->
        <!--<dependency>-->
        <!--<groupId>org.springframework.boot</groupId>-->
        <!--<artifactId>spring-boot-starter-security</artifactId>-->

+ 0 - 4
gateway/ag-basic/pom.xml

@ -41,10 +41,6 @@
        </dependency>
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>

+ 24 - 0
gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/BasicZuulFilter.java

@ -157,6 +157,9 @@ public class BasicZuulFilter extends ZuulFilter {
            for(String str:object.keySet()){
                List<String> arrayList = new ArrayList<>();
                String value = object.getString(str);
                if (sqlValidate(value)){
                    throw new Exception("Illegal parameter");
                }
                arrayList.add(value);
                map.put(str,arrayList);
            }
@ -181,6 +184,9 @@ public class BasicZuulFilter extends ZuulFilter {
                JSONObject jsonObject = JSONObject.parseObject(jsonobject);
                for(String str:jsonObject.keySet()){
                    String value = jsonObject.getString(str);
                    if (sqlValidate(value)){
                        throw new Exception("Illegal parameter");
                    }
                    if (!StringUtils.isEmpty(value)){
                        value = URLEncoder.encode(value);
                    }
@ -206,6 +212,7 @@ public class BasicZuulFilter extends ZuulFilter {
                        return reqBodyBytes.length;
                    }
                });
            }
        }
@ -344,6 +351,23 @@ public class BasicZuulFilter extends ZuulFilter {
        }
        return false;
    }
    public boolean doSqlFilterParams(HttpServletRequest request){
        Enumeration params = request.getParameterNames();
        String sql = "";
        while (params.hasMoreElements()) {
            // 得到参数名
            String name = params.nextElement().toString();
            // 得到参数对应值
            String[] value = request.getParameterValues(name);
            for (int i = 0; i < value.length; i++) {
                sql = sql + value[i];
            }
            if (sqlValidate(sql)) {
                return true;
            }
        }
        return false;
    }
    public boolean doFileFilter(HttpServletRequest req){
        MultipartResolver resolver = new CommonsMultipartResolver(req.getSession().getServletContext());

+ 18 - 0
gateway/ag-basic/src/main/resources/application.yml

@ -4,6 +4,7 @@ server:
    basedir: /data/apps/temp
    max-http-form-post-size: -1
  max-http-header-size: 102400
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
@ -98,6 +99,11 @@ zuul:
    svr-rehabilitation:
      path: /rehabilitation/**
      serviceId: svr-rehabilitation
endpoints:
  env:
    enabled: false
  trace:
    enabled: false
#---
#spring:
@ -291,3 +297,15 @@ spring:
    host: 192.168.120.103 # Redis server host.
    port: 6007 # Redis server port.
    password: Kb6wKDQP1W4
---
spring:
  profiles: jwZnyg
  datasource:
     url: jdbc:mysql://172.26.0.222:3306/base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true&useSSL=false
     username: root
     password: jkzlehr
  redis:
    host: 172.26.0.222 # Redis server host.
    port: 6379 # Redis server port.
    password: Kb6wKDQP1W4

+ 9 - 1
gateway/ag-basic/src/main/resources/bootstrap.yml

@ -161,4 +161,12 @@ spring:
  cloud:
    config:
      uri: ${wlyy.pring.config.uri:http://127.0.0.1:1221}
      label: ${wlyy.spring.config.label:master}
      label: ${wlyy.spring.config.label:master}
---
spring:
  profiles: jwZnyg
  cloud:
    config:
      uri: ${wlyy-spring.config.uri:http://127.0.0.1:1221}
      label: ${wlyy-spring.config.label:jwdev}

+ 0 - 8
server/svr-admin-server/pom.xml

@ -19,14 +19,6 @@
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-actuator-docs</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--服务器监监听-->
        <dependency>
            <groupId>de.codecentric</groupId>

+ 0 - 4
server/svr-authentication/pom.xml

@ -71,10 +71,6 @@
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>

+ 38 - 1
server/svr-authentication/src/main/resources/application.yml

@ -588,4 +588,41 @@ wechat:
im:
  im_list_get: http://127.0.0.1:3000/
kick:
    eachOther: 1 #互踢 1开通 0关闭
    eachOther: 1 #互踢 1开通 0关闭
---
spring:
  profiles: jwZnyg
  datasource:
    url: jdbc:mysql://172.26.0.222:3306/base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true&useSSL=false
    username: root
    password: jkzlehr
  redis:
    host: 172.26.0.222 # Redis server host.
    port: 6379 # Redis server port.
    password: Kb6wKDQP1W4
  ##发现服务
## i健康用户信息接口,开放出来给互联网医院登录同步用户信息用
iHealth:
  user-info-uri: http://ehr.yihu.com/wlyy/iHealth/userInfo
zhongshanHospital:
  user-info-uri: http://laptop-u738dn2p:10023/mqsdk/getUserInfoByOpenid
fastDFS:
  fastdfs_file_url: http://172.26.0.222:8888/
wlyy:
  url: http://www.xmtyw.cn/wlyy/
#文件服务器上传配置 0本地,1.I健康,2.内网调用
testPattern:
  sign: 0
  remote_inner_url: 172.16.100.240:10023/open/fileUpload/upload_stream
wechat:
  id: xm_zsyy_wx  # base库中,wx_wechat 的id字段
im:
  im_list_get: http://172.26.0.105:3000/
kick:
    ##互踢 1开通 0关闭
    eachOther: 0

+ 8 - 0
server/svr-authentication/src/main/resources/bootstrap.yml

@ -162,4 +162,12 @@ spring:
  cloud:
    config:
      uri: ${wlyy.pring.config.uri:http://127.0.0.1:1221}
      label: ${wlyy.spring.config.label:master}
---
spring:
  profiles: jwZnyg
  cloud:
    config:
      uri: ${wlyy.spring.config.uri:http://127.0.0.1:1221}
      label: ${wlyy.spring.config.label:master}

+ 0 - 4
server/svr-configuration/pom.xml

@ -54,10 +54,6 @@
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>
    <build>

+ 17 - 1
server/svr-configuration/src/main/resources/bootstrap.yml

@ -252,4 +252,20 @@ spring:
          basedir: /data/wlyy2.0/wlyy2.0.config
          username: jkzl
          password: jkzl
        default-label: ${wlyy.spring.config.git.label:master}
        default-label: ${wlyy.spring.config.git.label:master}
---
spring:
  profiles: jwZnyg
##git配置
  cloud:
    config:
      failFast: true #启动快速失败 即链接不到配置服务就启动失败
      server:
        git:
          uri: ${wlyy.spring.config.git.uri:http://192.168.1.220:10080/Amoy2/wlyy2.0.config.git}
          basedir: /usr/local/wlyy2.0.config
          username: wangzhinan
          password: wzn0523*
        default-label: ${wlyy.spring.config.git.label:jwdev}

+ 0 - 4
server/svr-dashboard/pom.xml

@ -44,10 +44,6 @@
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>

+ 0 - 4
server/svr-zipkin/pom.xml

@ -26,10 +26,6 @@
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>io.zipkin.java</groupId>

+ 0 - 4
svr/figure-label/pom.xml

@ -50,10 +50,6 @@
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-actuator-docs</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>

+ 0 - 5
svr/svr-base/pom.xml

@ -41,11 +41,6 @@
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>

+ 11 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/dict/WlyyHospitalSysDictEndpoint.java

@ -1,5 +1,6 @@
package com.yihu.jw.base.endpoint.dict;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.hospital.dict.service.WlyyHospitalSysDictService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
@ -51,9 +52,15 @@ public class WlyyHospitalSysDictEndpoint extends EnvelopRestEndpoint {
    public Envelop createOrUpdateDict(@ApiParam(name = "json", value = "id", required = true)
                                      @RequestParam(value = "json", required = true)String json) throws Exception{
        return success(wlyyHospitalSysDictService.updateOrCreateDict(json));
        WlyyHospitalSysDictDO wlyyHospitalSysDictDO = wlyyHospitalSysDictService.updateOrCreateDict(json);
        if (wlyyHospitalSysDictDO==null){
            return failed("请设置轮播图排序");
        }
        return success(wlyyHospitalSysDictDO);
    }
    @ApiOperation("查单条")
    @GetMapping(value= BaseHospitalRequestMapping.PatientNoLogin.findOneDict)
    public Envelop findOneDict(@ApiParam(name = "id", value = "id", required = true)
@ -160,4 +167,7 @@ public class WlyyHospitalSysDictEndpoint extends EnvelopRestEndpoint {
    }
}

+ 48 - 0
svr/svr-base/src/main/resources/application.yml

@ -733,5 +733,53 @@ wechat:
testPattern: #文件服务器上传配置 0本地,1.I健康,2.内网调用
  sign: 0
  remote_inner_url: 172.16.100.240:10023/open/fileUpload/upload_stream
im:
  im_list_get: http://127.0.0.1:3000/
---
spring:
  profiles: jwZnyg
  datasource:
    url: jdbc:mysql://172.26.0.222:3306/base?useUnicode:true&characterEncoding=utf-8&autoReconnect=true
    username: root
    password: jkzlehr
  elasticsearch:
    cluster-name: jkzl #集群名 默认elasticsearch
    cluster-nodes: 192.168.120.103:6005 #配置es节点信息,逗号分隔,如果没有指定,则启动ClientNode
    client-transport-sniff: false
    jest:
      uris: http://192.168.120.103:6006
      connection-timeout: 60000 # Connection timeout in milliseconds.
      multi-threaded: true # Enable connection requests from multiple execution threads.
  activemq:
    broker-url: tcp://59.61.92.90:9103
    user: jkzl
    password: jkzlehr
  redis:
    host: 172.26.0.222 # Redis server host.
    port: 6379 # Redis server port.
    password: Kb6wKDQP1W4
fastDFS:
  fastdfs_file_url: http://172.26.0.222:8888/
demo:
  flag: true
hospital:
  url: https://wx.xmzsh.com
  mqUser: JKZL
  mqPwd: 123456
  SourceSysCode: S60
  TargetSysCode: S01
pay:
  flag: false
wlyy:
  url: http://ehr.yihu.com/wlyy/
wechat:
  id: xm_hcyy_wx
  url: https://zhyzh.gongshu.gov.cn/
  flag: false
testPattern: #文件服务器上传配置 0本地,1.I健康,2.内网调用
  sign: 0
  remote_inner_url: 172.16.100.240:10023/open/fileUpload/upload_stream
im:
  im_list_get: http://127.0.0.1:3000/

+ 8 - 0
svr/svr-base/src/main/resources/bootstrap.yml

@ -125,4 +125,12 @@ spring:
  cloud:
    config:
      uri: ${wlyy.pring.config.uri:http://192.168.250.39:1221}
      label: ${wlyy.spring.config.label:master}
---
spring:
  profiles: jwZnyg
  cloud:
    config:
      uri: ${wlyy.spring.config.uri:http://127.0.0.1:1221}
      label: ${wlyy.spring.config.label:master}

+ 0 - 4
svr/svr-cloud-care/pom.xml

@ -42,10 +42,6 @@
        </dependency>
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>

+ 1 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/visit/BaseVisitService.java

@ -97,6 +97,7 @@ public class BaseVisitService {
        if("1".equals(visitDO.getStatus())){
            return "走访已完成不能删除";
        }
        baseVisitDao.delete(id);
        return null;
    }

+ 119 - 4
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/GetuiUtil.java

@ -7,9 +7,17 @@ import com.getui.push.v2.sdk.api.PushApi;
import com.getui.push.v2.sdk.common.ApiResult;
import com.getui.push.v2.sdk.dto.req.Audience;
import com.getui.push.v2.sdk.dto.req.Settings;
import com.getui.push.v2.sdk.dto.req.Strategy;
import com.getui.push.v2.sdk.dto.req.message.PushChannel;
import com.getui.push.v2.sdk.dto.req.message.PushDTO;
import com.getui.push.v2.sdk.dto.req.message.PushMessage;
import com.getui.push.v2.sdk.dto.req.message.android.AndroidDTO;
import com.getui.push.v2.sdk.dto.req.message.android.GTNotification;
import com.getui.push.v2.sdk.dto.req.message.android.ThirdNotification;
import com.getui.push.v2.sdk.dto.req.message.android.Ups;
import com.getui.push.v2.sdk.dto.req.message.ios.Alert;
import com.getui.push.v2.sdk.dto.req.message.ios.Aps;
import com.getui.push.v2.sdk.dto.req.message.ios.IosDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -26,10 +34,11 @@ public class GetuiUtil {
    private static final Logger logger = LoggerFactory.getLogger(GetuiUtil.class);
    public static String AppID = "GjGtBQUgSbASF0F9svJ6b7";
    public static String AppKey = "LcDj4vwtE29Q88KyPjJEj9";
    public static String AppSecret = "0VAMmhF1F76oGjheYWATM3";
    public static String MasterSecret = "hB6swhmr0mAeaJgyoLMkC5";
    public static String AppID = "I6JAs97T818HD0hGzG1EH4";
    public static String AppKey = "JC2LAW9IK27pansBB4jN87";
    public static String AppSecret = "Sn9PLz1hA6NNgyb7WHx45";
    public static String MasterSecret = "Rd86CP8bOy7RHyTf4ZE3R4";
    private static PushApi getPushApi(){
        GtApiConfiguration apiConfiguration = new GtApiConfiguration();
@ -46,6 +55,112 @@ public class GetuiUtil {
        return pushApi;
    }
    public static void main(String[] args) {
//        JSONObject jsonObject = new JSONObject();
//        jsonObject.put("title","title");
//        jsonObject.put("body","body");
//        jsonObject.put("url","https://www.baidu.com/");
//        jsonObject.put("clickType","url");
//        String cid = "d0e395d2e04b1da6f45a4f700883297d";
//        ApiResult<Map<String, Map<String, String>>> apiResult = GetuiUtil.pushToSingleByCid(cid,jsonObject);
//        if (apiResult.isSuccess()) {
//            System.out.println("个推推送成功:"+apiResult.getData());
//        } else {
//            System.out.println("个推推送失败:code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
//        }
        String cid = "d0e395d2e04b1da6f45a4f700883297d";
        JSONObject json = new JSONObject();
        json.put("title","安卓11:38标题");
        json.put("body","安卓离线展示的内容");
        json.put("url","https://www.baidu.com/");
        json.put("clickType","url");
        json.put("platform","patient");
        json.put("payload","payload");
        push2(cid,1,json);
    }
    /**
     * Rest-V2厂商推送
     * type 1 安卓 2 ios
     */
    public static void push2(String cid,int type,JSONObject json){
        PushApi pushApi = getPushApi();
        //根据cid进行单推
        PushDTO<Audience> pushDTO = new PushDTO<Audience>();
        // 设置推送参数
        pushDTO.setRequestId(System.currentTimeMillis() + "");//requestid需要每次变化唯一
        //配置推送条件
        // 1: 表示该消息在用户在线时推送个推通道,用户离线时推送厂商通道;
        // 2: 表示该消息只通过厂商通道策略下发,不考虑用户是否在线;
        // 3: 表示该消息只通过个推通道下发,不考虑用户是否在线;
        // 4: 表示该消息优先从厂商通道下发,若消息内容在厂商通道代发失败后会从个推通道下发。
        Strategy strategy=new Strategy();
        strategy.setDef(1);
        Settings settings=new Settings();
        settings.setStrategy(strategy);
        pushDTO.setSettings(settings);
        settings.setTtl(3600000);//消息有效期,走厂商消息需要设置该值
        PushChannel pushChannel = new PushChannel();
        if(type == 1){
            //安卓离线厂商通道推送消息体
            AndroidDTO androidDTO = new AndroidDTO();
            Ups ups = new Ups();
            ThirdNotification notification1 = new ThirdNotification();;
            ups.setNotification(notification1);
            notification1.setTitle("安卓11:38标题");
            notification1.setBody("安卓离线展示的内容");
            notification1.setClickType("intent");
            String intent = "intent:#Intent;launchFlags=0x04000000;action=android.intent.action.oppopush;" +
                    "component=com.xmeye.ehospital."+json.getString("platform")+"/io.dcloud.PandoraEntry;S.UP-OL-SU=true;" +
                    "S.title="+json.getString("title")+";" +
                    "S.content="+json.getString("body")+";" +
                    "S.payload="+json.getString("payload")+";end";
            notification1.setIntent(intent);
            //各厂商自有功能单项设置
            //ups.addOption("HW", "/message/android/notification/badge/class", "io.dcloud.PandoraEntry ");
            //ups.addOption("HW", "/message/android/notification/badge/add_num", 1);
            //ups.addOption("HW", "/message/android/notification/importance", "HIGH");
            //ups.addOption("VV","classification",1);
            androidDTO.setUps(ups);
            pushChannel.setAndroid(androidDTO);
        } else{
            //推送苹果离线通知标题内容
            Alert alert=new Alert();
            alert.setTitle(json.getString("title"));
            alert.setBody(json.getString("body"));
            Aps aps = new Aps();
            //1表示静默推送(无通知栏消息),静默推送时不需要填写其他参数。
            //苹果建议1小时最多推送3条静默消息
            aps.setContentAvailable(0);
            aps.setSound("default");
            aps.setAlert(alert);
            IosDTO iosDTO = new IosDTO();
            iosDTO.setAps(aps);
            iosDTO.setType("notify");
            pushChannel.setIos(iosDTO);
        }
        pushDTO.setPushChannel(pushChannel);
        // PushMessage在线走个推通道才会起作用的消息体
        PushMessage pushMessage = new PushMessage();
        pushDTO.setPushMessage(pushMessage);
        pushMessage.setTransmission(" {title:\""+json.getString("title")+"\",content:\""+json.getString("body")+"\",payload:\""+json.getString("payload")+"\"}");
        // 设置接收人信息
        Audience audience = new Audience();
        pushDTO.setAudience(audience);
        audience.addCid(cid);
        // 进行cid单推
        ApiResult<Map<String, Map<String, String>>> apiResult = pushApi.pushToSingleByCid(pushDTO);
        if (apiResult.isSuccess()) {
            // success
            System.out.println("发送成功:"+apiResult.getData());
        } else {
            // failed
            System.out.println("code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
        }
    }
    /**
     * 单推
     */

+ 0 - 5
svr/svr-cloud-job/pom.xml

@ -38,11 +38,6 @@
        </dependency>
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>

+ 0 - 5
svr/svr-cloud-medicine/pom.xml

@ -41,11 +41,6 @@
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>

+ 0 - 4
svr/svr-door-service/pom.xml

@ -42,10 +42,6 @@
        </dependency>
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>

+ 0 - 4
svr/svr-healthy-house/pom.xml

@ -58,10 +58,6 @@
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-logging</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>

+ 0 - 4
svr/svr-internet-hospital-entrance/pom.xml

@ -42,10 +42,6 @@
        </dependency>
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--<dependency>-->
            <!--<groupId>org.springframework.cloud</groupId>-->
            <!--<artifactId>spring-cloud-starter-eureka</artifactId>-->

+ 21 - 0
svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/controller/healthCare/HealthCareEndPoint.java

@ -42,6 +42,13 @@ public class HealthCareEndPoint extends EnvelopRestEndpoint {
        return ObjEnvelop.getSuccess("ok",healthCareService.doctorFaceCheckInAddress(doctorId));
    }
    @GetMapping(value = "doctorFaceCheckInAddressBase64")
    @ApiOperation(value = "医师人脸签到微信小程序二维码", notes = "医师人脸签到微信小程序二维码")
    public ObjEnvelop doctorFaceCheckInAddressBase64(@ApiParam(name = "doctorId", value = "医生id", required = true)
                                               @RequestParam(value = "doctorId",required = true) String doctorId)throws Exception{
        return ObjEnvelop.getSuccess("ok",healthCareService.doctorFaceCheckInAddressBase64(doctorId));
    }
    @GetMapping(value = "doctorFaceCheckInData")
    @ApiOperation(value = "获取医师人脸签到数据", notes = "获取医师人脸签到数据")
    public ObjEnvelop doctorFaceCheckInData(@ApiParam(name = "doctorId", value = "医生id", required = true)
@ -133,6 +140,13 @@ public class HealthCareEndPoint extends EnvelopRestEndpoint {
        return ObjEnvelop.getSuccess("ok",healthCareService.medicareOnline(patient));
    }
    @GetMapping(value = "/medicareOnlineBase64")
    @ApiOperation(value = "医保在线服务授权表单(H5表单/小程序)(N20.17.01.03)", notes = "医保在线服务授权表单(H5表单/小程序)(N20.17.01.02)")
    public ObjEnvelop medicareOnlineBase64(@ApiParam(name = "patient", value = "患者id", required = true)
                                     @RequestParam(value = "patient", required = true)String patient)throws Exception{
        return ObjEnvelop.getSuccess("ok",healthCareService.medicareOnlineBase64(patient));
    }
    @GetMapping(value = "/register")
    @ApiOperation(value = "2.5.1医保挂号(N20.17.04.01)", notes = "2.5.1医保挂号(N20.17.04.01)")
    public ObjEnvelop register(@ApiParam(name = "registerNo", value = "挂号号", required = true)
@ -184,6 +198,13 @@ public class HealthCareEndPoint extends EnvelopRestEndpoint {
        return ObjEnvelop.getSuccess("ok",healthCareService.getSettlementResultUrl(registerNo));
    }
    @GetMapping(value = "/getSettlementResultUrlBase64")
    @ApiOperation(value = " 2.5.7获取医保结算页面地址(N20.17.04.08)", notes = " 2.5.7获取医保结算页面地址(N20.17.04.08)")
    public ObjEnvelop getSettlementResultUrlBase64(@ApiParam(name = "registerNo", value = "门诊id", required = true)
                                             @RequestParam(value = "registerNo", required = false)String registerNo)throws Exception{
        return ObjEnvelop.getSuccess("ok",healthCareService.getSettlementResultUrlBase64(registerNo));
    }
    @GetMapping(value = "/getSettlementResult")
    @ApiOperation(value = " 2.5.8获取医保结算结果(N20.17.04.08)", notes = " 2.5.8获取医保结算结果(N20.17.04.08)")
    public ObjEnvelop getSettlementResult(@ApiParam(name = "code", value = "结果回参", required = true)

+ 0 - 5
svr/svr-internet-hospital-job/pom.xml

@ -41,11 +41,6 @@
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
       <!-- <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>

+ 34 - 0
svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/job/SynDoctorInfoJob.java

@ -0,0 +1,34 @@
package com.yihu.jw.job;
import com.yihu.jw.hospital.prescription.service.entrance.EntranceService;
import com.yihu.jw.service.channel.PrescriptionStatusUpdateService;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Trigger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
/**
 * Created by Trick on 2019/10/15.
 */
public class SynDoctorInfoJob implements Job {
    private static final Logger logger = LoggerFactory.getLogger(SynDoctorInfoJob.class);
    @Autowired
    private EntranceService entranceService;
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        logger.info("START========SynDoctorInfoJob========");
        try {
            Trigger trigger =jobExecutionContext.getTrigger();
            System.out.println("执行时间为"+trigger.getNextFireTime());
            entranceService.MS02003(false);
            logger.info("END========SynDoctorInfoJob========");
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("END===ERROE===SynDoctorInfoJob,message:"+e.getMessage());
        }
    }
}

+ 10 - 0
svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/web/quota/JobController.java

@ -219,6 +219,16 @@ public class JobController extends BaseController {
                        logger.info("pay_status_notice_job  job exist");
                    }
                    break;
                case "syn_doctor_info_job" :
                    //互联网医院 医生信息同步
                    if (!quartzHelper.isExistJob("syn_doctor_info_job")) {
                        String trigger = SystemConf.getInstance().getSystemProperties().getProperty("syn_doctor_info_job");
                        quartzHelper.addJob(SynDoctorInfoJob.class, trigger, "syn_doctor_info_job", new HashMap<String, Object>());
                        logger.info("SynDoctorInfoJob  job success");
                    } else {
                        logger.info("SynDoctorInfoJob  job exist");
                    }
                    break;
                case "CSTXJOB" :
                    if (!quartzHelper.isExistJob("CSTXJOB")) {
                        System.out.println("id"+taskId);

+ 2 - 0
svr/svr-internet-hospital-job/src/main/resources/system.properties

@ -27,3 +27,5 @@ data_ykupload_job_2=0 0 0 * * ?
uncheck_prescription_notice_job=0 */1 * * * ?
syn_doctor_info_job=0 0 1 * * ?

+ 0 - 5
svr/svr-internet-hospital/pom.xml

@ -41,11 +41,6 @@
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>

+ 42 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/healthCare/HealthCareEndPoint.java

@ -82,6 +82,29 @@ public class HealthCareEndPoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "doctorFaceCheckInAddressBase64")
    @ApiOperation(value = "医师人脸签到微信小程序二维码", notes = "医师人脸签到微信小程序二维码")
    public ObjEnvelop doctorFaceCheckInAddressBase64(@ApiParam(name = "doctorId", value = "医生id", required = true)
                                               @RequestParam(value = "doctorId",required = true) String doctorId){
        try {
            if (wechatId.equalsIgnoreCase("xm_xzzx_wx")){
                String url = entranceHealthCareUrl + "doctorFaceCheckInAddressBase64?doctorId="+doctorId;
                String infoResponse = httpClientUtil.get(url,"GBK");
                JSONObject jsonObject = JSONObject.parseObject(infoResponse);
                if(jsonObject.getInteger("status")==200){
                    return ObjEnvelop.getSuccess("ok",jsonObject.get("obj"));
                }else {
                    return ObjEnvelop.getError("调用内网接口失败:"+jsonObject.getString("message"));
                }
            }else {
                return ObjEnvelop.getSuccess("ok",healthCareService.doctorFaceCheckInAddressBase64(doctorId));
            }
        }catch (Exception e){
            e.printStackTrace();
            return failedObjEnvelopException(e);
        }
    }
    @GetMapping(value = "doctorFaceCheckInData")
    @ApiOperation(value = "获取医师人脸签到数据", notes = "获取医师人脸签到数据")
    public ObjEnvelop doctorFaceCheckInData(@ApiParam(name = "doctorId", value = "医生id", required = true)
@ -317,6 +340,25 @@ public class HealthCareEndPoint extends EnvelopRestEndpoint {
        }
    }
    @PostMapping(value = "/medicareOnlineBase64")
    @ApiOperation(value = "医保在线服务授权表单(H5表单/小程序)(N20.17.01.03)", notes = "医保在线服务授权表单(H5表单/小程序)(N20.17.01.03)")
    public ObjEnvelop medicareOnlineBase64(@ApiParam(name = "patient", value = "患者id", required = true)
                                     @RequestParam(value = "patient", required = true)String patient)throws Exception{
        try {
            String url = entranceHealthCareUrl + "medicareOnlineBase64?patient="+patient;
            String infoResponse = httpClientUtil.get(url,"GBK");
            JSONObject jsonObject = JSONObject.parseObject(infoResponse);
            if(jsonObject.getInteger("status")==200){
                return ObjEnvelop.getSuccess("ok",jsonObject.get("obj"));
            }else {
                return ObjEnvelop.getError("调用内网接口失败:"+jsonObject.getString("message"));
            }
        }catch (Exception e){
            e.printStackTrace();
            return failedObjEnvelopException(e);
        }
    }
    @PostMapping(value = "/register")
    @ApiOperation(value = "2.5.1医保挂号(N20.17.04.01)", notes = "2.5.1医保挂号(N20.17.04.01)")
    public ObjEnvelop register(@ApiParam(name = "outpatientId", value = "门诊id", required = true)

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

@ -3279,6 +3279,16 @@ public class PrescriptionEndpoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping("/selectNatTime")
    @ApiOperation(value = "核酸号源控制查询")
    public ObjEnvelop selectNatTime() throws Exception {
        try {
            return prescriptionService.selectNatTime();
        } catch (Exception e) {
            return ObjEnvelop.getError(e.getMessage());
        }
    }
    @GetMapping("/saveNatAppointment")
    @ApiOperation(value = "核酸检测预约接口")
    public Envelop saveNatAppointment(@ApiParam(name = "chargeAmount", value = "chargeAmount")
@ -3522,10 +3532,12 @@ public class PrescriptionEndpoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "获取患者待结算信息页面", notes = "获取患者待结算信息页面")
    public Envelop getSettlementInfo(
            @ApiParam(name = "outpatientId", value = "outpatientId")
            @RequestParam(value = "outpatientId", required = false) String outpatientId) throws Exception {
            @RequestParam(value = "outpatientId", required = false) String outpatientId,
            @ApiParam(name = "flag", value = "flag")
            @RequestParam(value = "flag", required = false) Integer flag) throws Exception {
        try {
            return success("操作成功", prescriptionService.getSettlementInfo(outpatientId));
            return success("操作成功", prescriptionService.getSettlementInfo(outpatientId,flag));
        } catch (Exception e) {
            return Envelop.getError(e.getMessage());
        }

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

@ -0,0 +1,29 @@
package com.yihu.jw.hospital.endpoint.ykyy;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.hospital.dict.service.WlyyHospitalSysDictService;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping(value = "/banner")
@Api(description = "眼科医院首页轮播图",tags = "眼科医院首页轮播图")
public class BaseTopBannerController extends EnvelopRestEndpoint {
    @Autowired
    private WlyyHospitalSysDictService wlyyHospitalSysDictService;
    @GetMapping(value = "/open/show")
    @ApiOperation("眼科医院首页顶部轮播图展示")
    public ListEnvelop<WlyyHospitalSysDictDO> bannerShow(){
        List<WlyyHospitalSysDictDO> list=wlyyHospitalSysDictService.findByDictName("ONLINE_HOSPITAL_BANNER");
        return success(list);
    }
}

+ 0 - 5
svr/svr-iot-job/pom.xml

@ -37,11 +37,6 @@
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
       <!-- <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>

+ 0 - 5
svr/svr-patient/pom.xml

@ -41,11 +41,6 @@
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>

+ 0 - 4
svr/svr-rehabilitation/pom.xml

@ -38,10 +38,6 @@
			<artifactId>javax.servlet-api</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>

+ 0 - 13
svr/svr-statistics-es/src/main/java/com/yihu/wlyy/statistics/config/WebSecurityConfig.java

@ -22,19 +22,6 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/metrics/**").permitAll()
                .antMatchers("/health/**").permitAll()
                .antMatchers("/env/**").permitAll()
                .antMatchers("/dump/**").permitAll()
                .antMatchers("/trace/**").permitAll()
                .antMatchers("/mappings/**").permitAll()
                .antMatchers("/actuator/**").permitAll()
                .antMatchers("/beans/**").permitAll()
                .antMatchers("/configprops/**").permitAll()
                .antMatchers("/docs/**").permitAll()
                .antMatchers("/info/**").permitAll()
                .antMatchers("/configuration/**").permitAll()
                .antMatchers("/jolokia/**").permitAll()
                .antMatchers("/job/**").permitAll()
                .anyRequest().authenticated()
                .and()

+ 0 - 12
svr/svr-statistics/pom.xml

@ -311,18 +311,6 @@
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-actuator-docs</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>

+ 0 - 13
svr/svr-statistics/src/main/java/com/yihu/jw/statistics/config/WebSecurityConfig.java

@ -22,19 +22,6 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/metrics/**").permitAll()
                .antMatchers("/health/**").permitAll()
                .antMatchers("/env/**").permitAll()
                .antMatchers("/dump/**").permitAll()
                .antMatchers("/trace/**").permitAll()
                .antMatchers("/mappings/**").permitAll()
                .antMatchers("/actuator/**").permitAll()
                .antMatchers("/beans/**").permitAll()
                .antMatchers("/configprops/**").permitAll()
                .antMatchers("/docs/**").permitAll()
                .antMatchers("/info/**").permitAll()
                .antMatchers("/configuration/**").permitAll()
                .antMatchers("/jolokia/**").permitAll()
                .anyRequest().authenticated()
                .and()
                .csrf().disable()

+ 0 - 4
svr/svr-wlyy-archives/pom.xml

@ -71,10 +71,6 @@
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>

+ 0 - 5
svr/svr-wlyy-health-bank/pom.xml

@ -45,11 +45,6 @@
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>

+ 15 - 0
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/config/jpa/WlyyHealthBankJpa.java

@ -1,8 +1,10 @@
package com.yihu.jw.config.jpa;
import com.yihu.jw.filter.XssFiter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
@ -55,4 +57,17 @@ public class WlyyHealthBankJpa {
            @Qualifier("wlyyHealthBankEntityManagerFactory") EntityManagerFactory builder) {
        return new JpaTransactionManager(builder);
    }
    /**
     * xxs过滤
     */
    @Bean
    public FilterRegistrationBean testFilterRegistration2() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new XssFiter());
        registration.addUrlPatterns("/*");
        registration.setName("XssFiter");
        registration.setOrder(2);
        return registration;
    }
}

+ 55 - 0
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/filter/XssAndHttpServletRequestWrapper.java

@ -0,0 +1,55 @@
package com.yihu.jw.filter;
import com.yihu.jw.util.XssUtil;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
/**
 * Created by yeshijie on 2020/8/27.
 */
public class XssAndHttpServletRequestWrapper extends HttpServletRequestWrapper {
    HttpServletRequest request;
    public XssAndHttpServletRequestWrapper(HttpServletRequest request) {
        super(request);
        this.request = request;
    }
    @Override
    public String getParameter(String name) {
        String value = super.getParameter(name);
        // System.out.println("name:" + name + "," + value);
        if (value != null) {
            // 转换Html
            value = XssUtil.cleanXss(value);
        }
        return value;
    }
    @Override
    public String getHeader(String name) {
        return XssUtil.cleanXss(super.getHeader(name));
    }
    @Override
    public String getQueryString() {
        return XssUtil.cleanXss(super.getQueryString());
    }
    @Override
    public String[] getParameterValues(String parameter) {
        String[] values = super.getParameterValues(parameter);
        if (values == null) {
            return null;
        }
        int count = values.length;
        String[] encodedValues = new String[count];
        for (int i = 0; i < count; i++) {
            encodedValues[i] = XssUtil.cleanXss(values[i]);
        }
        return encodedValues;
    }
}

+ 25 - 0
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/filter/XssFiter.java

@ -0,0 +1,25 @@
package com.yihu.jw.filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
 * Created by yeshijie on 2020/8/27.
 */
public class XssFiter implements Filter {
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        XssAndHttpServletRequestWrapper xssRequestWrapper = new XssAndHttpServletRequestWrapper(req);
        chain.doFilter(xssRequestWrapper, response);
    }
    public void destroy() {
    }
}

+ 91 - 0
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/util/XssUtil.java

@ -0,0 +1,91 @@
package com.yihu.jw.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * Created by yeshijie on 2020/8/27.
 */
public class XssUtil {
    private static final String REGEX_SCRIPT = "<script[^>]*?>[\\s\\S]*?<\\/script>"; // 定义script的正则表达式
    private static final String REGEX_STYLE = "<style[^>]*?>[\\s\\S]*?<\\/style>"; // 定义style的正则表达式
    private static final String REGEX_HTML = "<[^>]+>"; // 定义HTML标签的正则表达式
    // private static final String REGEX_SPACE = "\\s*|\t|\r|\n";// 定义空格回车换行符
    /**
     * 过滤掉script标签
     *
     * @param htmlStr
     * @return
     */
    public static String delScriptTag(String htmlStr) {
        if (htmlStr == null)
            return null;
        Pattern p_script = Pattern.compile(REGEX_SCRIPT, Pattern.CASE_INSENSITIVE);
        Matcher m_script = p_script.matcher(htmlStr);
        htmlStr = m_script.replaceAll(""); // 过滤script标签
        return htmlStr;
    }
    /**
     * 过滤掉style标签
     *
     * @param htmlStr
     * @return
     */
    public static String delStyleTag(String htmlStr) {
        if (htmlStr == null)
            return null;
        Pattern p_style = Pattern.compile(REGEX_STYLE, Pattern.CASE_INSENSITIVE);
        Matcher m_style = p_style.matcher(htmlStr);
        htmlStr = m_style.replaceAll(""); // 过滤style标签*/
        return htmlStr;
    }
    /**
     * @param htmlStr
     * @return 删除Html标签
     */
    public static String delHTMLTag(String htmlStr) {
        if (htmlStr == null)
            return null;
        Pattern p_html = Pattern.compile(REGEX_HTML, Pattern.CASE_INSENSITIVE);
        Matcher m_html = p_html.matcher(htmlStr);
        htmlStr = m_html.replaceAll(""); // 过滤html标签
        return htmlStr; // 返回文本字符串
    }
    /**
     * 将html标签中的<>进行转义,如只有"<"或者">"则不进行转义
     */
    public static String escapeHtml(String htmlStr) {
        if (htmlStr == null)
            return null;
        Pattern p_script = Pattern.compile(REGEX_HTML, Pattern.CASE_INSENSITIVE);
        Matcher m_script = p_script.matcher(htmlStr);
        while (m_script.find()) {
            String str = m_script.group();
            String str_target = str.replaceAll("<", "&lt;").replaceAll(">", "&gt;");
            htmlStr = htmlStr.replaceAll(str, str_target);
        }
        return htmlStr;
    }
    /**
     * 转义html标签
     *
     * @param input
     * @return
     */
    public static String cleanXss(String input) {
        if (input == null)
            return null;
        return escapeHtml(delStyleTag(delScriptTag(input)));
    }
    public static void main(String[] args) {
        System.out.println(cleanXss("<'script>"));
    }
}

+ 0 - 4
svr/svr-wlyy-specialist/pom.xml

@ -42,10 +42,6 @@
        </dependency>
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>

+ 15 - 0
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/config/jpa/WlyySpecialistJpa.java

@ -1,8 +1,10 @@
package com.yihu.jw.config.jpa;
import com.yihu.jw.filter.XssFiter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
@ -55,4 +57,17 @@ public class WlyySpecialistJpa {
            @Qualifier("wlyySpecialistEntityManagerFactory") EntityManagerFactory builder) {
        return new JpaTransactionManager(builder);
    }
    /**
     * xxs过滤
     */
    @Bean
    public FilterRegistrationBean testFilterRegistration2() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new XssFiter());
        registration.addUrlPatterns("/*");
        registration.setName("XssFiter");
        registration.setOrder(2);
        return registration;
    }
}

+ 55 - 0
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/filter/XssAndHttpServletRequestWrapper.java

@ -0,0 +1,55 @@
package com.yihu.jw.filter;
import com.yihu.jw.util.XssUtil;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
/**
 * Created by yeshijie on 2020/8/27.
 */
public class XssAndHttpServletRequestWrapper extends HttpServletRequestWrapper {
    HttpServletRequest request;
    public XssAndHttpServletRequestWrapper(HttpServletRequest request) {
        super(request);
        this.request = request;
    }
    @Override
    public String getParameter(String name) {
        String value = super.getParameter(name);
        // System.out.println("name:" + name + "," + value);
        if (value != null) {
            // 转换Html
            value = XssUtil.cleanXss(value);
        }
        return value;
    }
    @Override
    public String getHeader(String name) {
        return XssUtil.cleanXss(super.getHeader(name));
    }
    @Override
    public String getQueryString() {
        return XssUtil.cleanXss(super.getQueryString());
    }
    @Override
    public String[] getParameterValues(String parameter) {
        String[] values = super.getParameterValues(parameter);
        if (values == null) {
            return null;
        }
        int count = values.length;
        String[] encodedValues = new String[count];
        for (int i = 0; i < count; i++) {
            encodedValues[i] = XssUtil.cleanXss(values[i]);
        }
        return encodedValues;
    }
}

+ 25 - 0
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/filter/XssFiter.java

@ -0,0 +1,25 @@
package com.yihu.jw.filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
 * Created by yeshijie on 2020/8/27.
 */
public class XssFiter implements Filter {
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        XssAndHttpServletRequestWrapper xssRequestWrapper = new XssAndHttpServletRequestWrapper(req);
        chain.doFilter(xssRequestWrapper, response);
    }
    public void destroy() {
    }
}

+ 91 - 0
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/util/XssUtil.java

@ -0,0 +1,91 @@
package com.yihu.jw.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * Created by yeshijie on 2020/8/27.
 */
public class XssUtil {
    private static final String REGEX_SCRIPT = "<script[^>]*?>[\\s\\S]*?<\\/script>"; // 定义script的正则表达式
    private static final String REGEX_STYLE = "<style[^>]*?>[\\s\\S]*?<\\/style>"; // 定义style的正则表达式
    private static final String REGEX_HTML = "<[^>]+>"; // 定义HTML标签的正则表达式
    // private static final String REGEX_SPACE = "\\s*|\t|\r|\n";// 定义空格回车换行符
    /**
     * 过滤掉script标签
     *
     * @param htmlStr
     * @return
     */
    public static String delScriptTag(String htmlStr) {
        if (htmlStr == null)
            return null;
        Pattern p_script = Pattern.compile(REGEX_SCRIPT, Pattern.CASE_INSENSITIVE);
        Matcher m_script = p_script.matcher(htmlStr);
        htmlStr = m_script.replaceAll(""); // 过滤script标签
        return htmlStr;
    }
    /**
     * 过滤掉style标签
     *
     * @param htmlStr
     * @return
     */
    public static String delStyleTag(String htmlStr) {
        if (htmlStr == null)
            return null;
        Pattern p_style = Pattern.compile(REGEX_STYLE, Pattern.CASE_INSENSITIVE);
        Matcher m_style = p_style.matcher(htmlStr);
        htmlStr = m_style.replaceAll(""); // 过滤style标签*/
        return htmlStr;
    }
    /**
     * @param htmlStr
     * @return 删除Html标签
     */
    public static String delHTMLTag(String htmlStr) {
        if (htmlStr == null)
            return null;
        Pattern p_html = Pattern.compile(REGEX_HTML, Pattern.CASE_INSENSITIVE);
        Matcher m_html = p_html.matcher(htmlStr);
        htmlStr = m_html.replaceAll(""); // 过滤html标签
        return htmlStr; // 返回文本字符串
    }
    /**
     * 将html标签中的<>进行转义,如只有"<"或者">"则不进行转义
     */
    public static String escapeHtml(String htmlStr) {
        if (htmlStr == null)
            return null;
        Pattern p_script = Pattern.compile(REGEX_HTML, Pattern.CASE_INSENSITIVE);
        Matcher m_script = p_script.matcher(htmlStr);
        while (m_script.find()) {
            String str = m_script.group();
            String str_target = str.replaceAll("<", "&lt;").replaceAll(">", "&gt;");
            htmlStr = htmlStr.replaceAll(str, str_target);
        }
        return htmlStr;
    }
    /**
     * 转义html标签
     *
     * @param input
     * @return
     */
    public static String cleanXss(String input) {
        if (input == null)
            return null;
        return escapeHtml(delStyleTag(delScriptTag(input)));
    }
    public static void main(String[] args) {
        System.out.println(cleanXss("<'script>"));
    }
}

+ 0 - 4
svr/svr-wlyy/pom.xml

@ -59,10 +59,6 @@
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>