Ver código fonte

Merge branch 'dev' of wangjun/wlyy2.0 into dev

wangzhinan 4 anos atrás
pai
commit
c6164395d4

+ 3 - 3
business/base-service/src/main/java/com/yihu/jw/hospital/message/service/BaseBannerDoctorService.java

@ -85,10 +85,10 @@ public class BaseBannerDoctorService extends BaseJpaService<BaseBannerDoctorDO,
    //获取医生锦旗数量接口
    public JSONObject getDoctorBanners(String doctorID){
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT COUNT(1) AS \"total\",b.name AS \"name\",b.img AS \"img\" FROM base_banner_doctor a LEFT JOIN base_banner b on a.banner_id= b.id\n" +
        sql.append("SELECT COUNT(1) AS \"total\",b.name AS \"name\",b.img AS \"img\" FROM base_banner_doctor a LEFT JOIN base_banner b on a.banner_id= b.id " +
                "where 1=1 ");
        sql.append("and a.doctor = '"+doctorID+"'");
        sql.append( " GROUP BY a.banner_id");
        sql.append("and a.doctor = '"+doctorID+"' ");
        sql.append( " GROUP BY a.banner_id ,b.name,b.img");
        //获取每个锦旗数量
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql.toString());
        int count = baseBannerDoctorDao.getTotalBannerCount(doctorID);

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

@ -1099,7 +1099,9 @@ public class BaseHospitalRequestMapping {
        //设置文章状态
        public static final String setArticleCollection  = "/setArticleCollection";
        
        //根据医生id生成二维码
        public static final String getqrCode  = "/getqrCode";
    }
    /**

+ 7 - 7
svr/svr-base/src/main/java/com/yihu/jw/base/service/doctor/BaseDoctorService.java

@ -181,9 +181,9 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
//                .replace("{end}",String.valueOf(end));
        String sql="SELECT\n" +
                "\ttb. ID AS \"ID\",\n" +
                "\ttb.id AS \"id\",\n" +
                "\ttb.idcard AS \"idcard\",\n" +
                "\ttb. NAME AS \"NAME\",\n" +
                "\ttb.name AS \"name\",\n" +
                "\ttb.sex AS \"sex\",\n" +
                "\ttb.mobile AS \"mobile\",";
        if ("xm_ykyy_wx".equalsIgnoreCase(wechatId)){
@ -202,8 +202,8 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
                "FROM\n" +
                "\t(\n" +
                "\t\tSELECT\n" +
                "\t\t\tdoc. ID,\n" +
                "\t\t\tdoc. NAME,\n" +
                "\t\t\tdoc.id,\n" +
                "\t\t\tdoc.name,\n" +
                "\t\t\tdoc.idcard,\n" +
                "\t\t\tCASE\n" +
                "\t\tWHEN doc.sex = 1 THEN\n" +
@ -228,7 +228,7 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
                "\tbase_doctor_hospital hos,\n" +
                "\tdict_hospital_dept dept\n" +
                "WHERE\n" +
                "\tdoc. ID = hos.doctor_code\n" +
                "\tdoc.id = hos.doctor_code\n" +
                "AND hos.org_code = dept.org_code\n" +
                "AND hos.dept_code = dept.code\n" +
                "AND (\n" +
@ -236,7 +236,7 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
                "\t\tdoc.idcard LIKE '%%'\n" +
                "\t\tOR '' = '%%'\n" +
                "\t)\n" +
                "\tOR (doc. NAME LIKE '%%' OR '' = '%%')\n" +
                "\tOR (doc.name LIKE '%%' OR '' = '%%')\n" +
                "\tAND (hos.org_code = '' OR '' = '')\n" +
                "\tAND (doc.del = '' OR '' = '')\n" +
                ")\n" +
@ -244,7 +244,7 @@ public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDa
                "  GROUP BY\n" +
                "\ttb. ID,\n" +
                "\ttb.idcard,\n" +
                "\ttb. NAME,\n" +
                "\ttb.name,\n" +
                "\ttb.sex,\n" +
                "\ttb.mobile,\n" +
                "\ttb.job_title_name,\n" +

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

@ -27,6 +27,7 @@ import com.yihu.jw.hospital.prescription.service.PrescriptionExpressageService;
import com.yihu.jw.hospital.prescription.service.PrescriptionService;
import com.yihu.jw.hospital.prescription.service.WorkTimeService;
import com.yihu.jw.hospital.service.consult.KnowledgeArticleService;
import com.yihu.jw.hospital.service.consult.QrcodeService;
import com.yihu.jw.hospital.service.consult.SysDictService;
import com.yihu.jw.im.service.ImService;
import com.yihu.jw.order.BusinessOrderService;
@ -90,6 +91,8 @@ public class PatientNoLoginEndPoint extends EnvelopRestEndpoint {
    @Autowired
    private PrescriptionExpressageService sfexpressService;
    @Autowired
    private QrcodeService qrcodeService;
    @Autowired
@ -707,4 +710,14 @@ public class PatientNoLoginEndPoint extends EnvelopRestEndpoint {
        }
        return failed(PatientRequestMapping.Wechat.api_error);
    }
    @GetMapping(value = BaseHospitalRequestMapping.KnowledgeArticle.getqrCode)
    @ApiOperation(value = "生成医生二维码")
    public Envelop getqrCode(
            @ApiParam(name = "doctor", value = "doctor", required = true)
            @RequestParam(value = "doctor", required = true)String doctor) throws Exception{
       String qrCodeUri= qrcodeService.makeSpecialistQrcode(doctor);
       return success(qrCodeUri);
    }
}

+ 168 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/service/consult/QrcodeService.java

@ -0,0 +1,168 @@
package com.yihu.jw.hospital.service.consult;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.file_upload.FileUploadService;
import com.yihu.jw.hospital.prescription.service.entrance.EntranceService;
import com.yihu.jw.hospital.prescription.service.entrance.XzzxEntranceService;
import com.yihu.jw.restmodel.iot.common.UploadVO;
import com.yihu.jw.util.wechat.wxhttp.HttpUtil;
import com.yihu.jw.wechat.dao.WechatDao;
import com.yihu.jw.wechat.service.WechatInfoService;
import com.yihu.jw.wechat.service.WxAccessTokenService;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Map;
@Service
public class QrcodeService {
    private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(QrcodeService.class);
    @Autowired
    private WechatInfoService wechatInfoService;
    @Value("${wechat.id}")
    private String wxId;
    @Value("${fastDFS.fastdfs_file_url}")
    private String fastdfs_file_url;
    @Autowired
    private BaseDoctorDao baseDoctorDao;
    @Autowired
    private FileUploadService fileUploadService;
    @Value("${testPattern.sign}")
    private String isClose;
    @Value("${testPattern.remote_inner_url}")
    private String remote_inner_url;
    @Autowired
    private ObjectMapper objectMapper;
    @Autowired
    private WechatDao wechatDao;
    @Autowired
    private WxAccessTokenService wxAccessTokenService;
    @Autowired
    private EntranceService entranceService;
    @Autowired
    private XzzxEntranceService xzzxEntranceService;
    /**
     * 生成某个医生的二维码
     *
     * @param doctor
     * @return
     * @throws Exception
     */
    public String makeSpecialistQrcode(String doctor) throws Exception {
        System.out.println("doctorID"+doctor);
        String token=null;
        //中山医院互联网医院
        if("xm_zsyy_wx".equals(wxId)) {
            String response = entranceService.getAccessToken("100033");
            net.sf.json.JSONObject object1 = net.sf.json.JSONObject.fromObject(response);
            if (null != object1&&null!=object1.get("respCode") && "00".equals(object1.get("respCode"))) {
                token  = object1.getJSONObject("respEntity").getString("access_token");
            } else {
                throw new Exception("获取ACCESSTOKEN失败");
            }
        }else if("xm_xzzx_wx".equals(wxId)){
            token = xzzxEntranceService.getXzToken();
        }else{
            token = wxAccessTokenService.getWxAccessTokenById(wxId).getAccessToken();
        }
        System.out.println("token"+token);
        System.out.println("wxId"+wxId);
        BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor);
        if (null!=baseDoctorDO){
            if (null==baseDoctorDO.getQrcode()||"".equals(baseDoctorDO.getQrcode())){
                // 二维码内容
                String content = "hlw_doctor_" + baseDoctorDO.getId() +"_"+baseDoctorDO.getName();
                System.out.println("content"+content);
                // 二维码图片文件名
                String fileName = baseDoctorDO.getId()+"_"+baseDoctorDO.getMobile()+".png";
                /*String path = QrcodeService.class.getResource("/").getPath().replace("/WEB-INF/classes/", "")
                        + File.separator + "qrcode";*/
                System.out.println("fileName"+fileName);
                // 通过微信接口生成医生二维码
                String uri = makeQrcodeFromWeiXin(content, fileName.replaceAll("\r\n", ""), token);
                System.out.println("uri"+uri);
                baseDoctorDO.setQrcode(uri);
                baseDoctorDao.save(baseDoctorDO);
                return uri;
            }else {
                return baseDoctorDO.getQrcode();
            }
        } else {
            throw new Exception("找不到对应医生信息!");
        }
    }
    /**
     * 从微信生成二维码并下载到本地
     *
     * @param content  场景值
     * @param fileName 二维码文件名
     * @param token
     * @throws
     */
    public String makeQrcodeFromWeiXin(String content, String fileName, String token) throws Exception {
        try {
            String token_url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" + token;
            String params = "{\"action_name\": \"QR_LIMIT_STR_SCENE\", \"action_info\": {\"scene\": {\"scene_str\": \"" + content + "\"}}}";
            LOGGER.info("参数:"+params);
            String result = HttpUtil.sendPost(token_url, params);
            LOGGER.info("步骤1:"+result);
            if (!StringUtils.isEmpty(result)) {
                JSONObject json = new JSONObject(result);
                LOGGER.info("步骤2:"+json.toString());
                if (json.has("ticket")) {
                    // 请求输入流
                    InputStream inputStream = null;
                    // 下载二维码图片
                    URL urlGet = new URL("https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket="
                            + URLEncoder.encode(json.get("ticket").toString(), "UTF-8"));
                    HttpURLConnection connection = (HttpURLConnection) urlGet.openConnection();
                    connection.connect();
                    inputStream = connection.getInputStream();
                    UploadVO uploadVO = new UploadVO();
                    MultipartFile multipartFile = new MockMultipartFile(fileName,fileName,"", inputStream);
                    if (isClose.equalsIgnoreCase("1")){
                        System.out.println("isClose"+1);
                        Map<String, Object> map = fileUploadService.uploadImg(multipartFile);
                        uploadVO.setFullUri(map.get("accessory").toString());
                    }else if(isClose.equals("2")){
                        System.out.println("isClose"+2);
                        //内网上传
                        String rs = fileUploadService.request(remote_inner_url,multipartFile,null);
                        System.out.println("rs"+rs);
                        com.alibaba.fastjson.JSONObject rsJson = JSON.parseObject(rs);
                        uploadVO = objectMapper.readValue(rsJson.getJSONObject("obj").toJSONString(),UploadVO.class);
                    }else {
                        // 上传服务器
                        uploadVO = fileUploadService.uploadStream(inputStream,fileName+".png",fastdfs_file_url);
                    }
                    return uploadVO.getFullUri();
                } else {
                    throw new Exception("请求微信生成二维码失败!");
                }
            } else {
                throw new Exception("请求微信生成二维码失败!");
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new Exception(e.getMessage());
        }
    }
}