Browse Source

代码修改

LAPTOP-KB9HII50\70708 1 year ago
parent
commit
f3e04ae542

+ 36 - 3
svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/controller/zy/IotDeviceController.java

@ -22,6 +22,39 @@ public class IotDeviceController extends EnvelopRestEndpoint {
    private IotDeviceService iotDeviceService;
    @GetMapping(value = "/uploadDeviceInfo")
    @ApiOperation(value = "设备状态信息上传")
    public Envelop uploadDeviceInfo() {
        try {
            return success(iotDeviceService.uploadDeviceInfo());
        }catch (Exception e){
            e.printStackTrace();
            return Envelop.getError("查询失败");
        }
    }
    @GetMapping(value = "/uploadDeviceData")
    @ApiOperation(value = "设备业务数据信息上传")
    public Envelop uploadDeviceData() {
        try {
            return success(iotDeviceService.uploadDeviceData());
        }catch (Exception e){
            e.printStackTrace();
            return Envelop.getError("查询失败");
        }
    }
    @GetMapping(value = "/deviceRegistration")
    @ApiOperation(value = "设备相关基础信息注册")
    public Envelop deviceRegistration() {
        try {
            return success(iotDeviceService.deviceRegistration());
        }catch (Exception e){
            e.printStackTrace();
            return Envelop.getError("查询失败");
        }
    }
    @GetMapping(value = "/accesstoken")
    @ApiOperation(value = "获取accesstoken")
    public Envelop getAccessToken() {
@ -33,11 +66,11 @@ public class IotDeviceController extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "/accesstoken2")
    @ApiOperation(value = "获取accesstoken2")
    @GetMapping(value = "/getAccessToken_bak")
    @ApiOperation(value = "获取getAccessToken_bak")
    public Envelop getAccessToken2() {
        try {
            return success(iotDeviceService.getAccessToken2());
            return success(iotDeviceService.getAccessToken_bak());
        }catch (Exception e){
            e.printStackTrace();
            return Envelop.getError("查询失败");

+ 83 - 8
svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/service/IotDeviceService.java

@ -1,12 +1,20 @@
package com.yihu.jw.entrance.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.iot.gateway.GcToken;
import com.yihu.jw.entrance.util.zysoft.SDKRunnerService;
import com.yihu.jw.entrance.util.zysoft.ZysoftBaseService;
import com.yihu.jw.gateway.dao.GcTokenDao;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.util.date.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -25,13 +33,17 @@ public class IotDeviceService {
    private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
    @Autowired
    private SDKRunnerService sdkRunnerService;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private GcTokenDao gcTokenDao;
    /**
     * 获取accesstoken
     * 获取accesstoken,i健康写法暂时不能用
     * @return
     * @throws Exception
     */
    public String getAccessToken() throws Exception{
    public String getAccessToken_bak() throws Exception{
        Map<String,String> header = new HashMap<>();
        List<WlyyHospitalSysDictDO> dictDOList =  wlyyHospitalSysDictDao.findByDictName("zy_iot");
        Map<String,String> dictMap = dictDOList.stream().collect(Collectors.toMap(WlyyHospitalSysDictDO::getDictCode,WlyyHospitalSysDictDO::getDictValue));
@ -46,15 +58,78 @@ public class IotDeviceService {
        return response;
    }
    public String getAccessToken2(){
    //设备状态信息上传
    public String uploadDeviceInfo(){
        Map<String,String> header = new HashMap<>();
        String jsonData = "{\"deviceSn\":\"xty_test\",\"deviceModel\":\"测试\",\"name\":\"血糖仪TEST\",\"hospital\":\"350211A1004\",\"hospitalName\":\"厦门市第三医院\",\"categoryCode\":\"2\",\"categoryName\":\" 血糖仪\",\"commonName\":\" 血糖仪\",\"combinationMethod\":\"1\",\"networkTransmission\":\" 11\",\"deviceUse\":\"2\",\"dropLocation\":\"2\",\"dataAcquisition\":\"IoT_equipment_blood_glucose_mete\",\"companyName\":\"血糖仪厂商名称\",\"companyType\":\"3\"}";
        Map<String,String> params = new HashMap<>();
        params.put("jsonData",jsonData);
        params.put("accesstoken",getAccessToken());
        String response = sdkRunnerService.post("wlw/uploadDeviceInfo","设备状态信息上传",params,header,true,true);
        return response;
    }
    //设备业务数据信息上传
    public String uploadDeviceData(){
        Map<String,String> header = new HashMap<>();
        String jsonData = "{\"deviceSn\":\"xty_test\",\"deviceModel\":\"测试\",\"name\":\"血糖仪TEST\",\"hospital\":\"350211A1004\",\"hospitalName\":\"厦门市第三医院\",\"categoryCode\":\"2\",\"categoryName\":\" 血糖仪\",\"commonName\":\" 血糖仪\",\"combinationMethod\":\"1\",\"networkTransmission\":\" 11\",\"deviceUse\":\"2\",\"dropLocation\":\"2\",\"dataAcquisition\":\"IoT_equipment_blood_glucose_mete\",\"companyName\":\"血糖仪厂商名称\",\"companyType\":\"3\"}";
        Map<String,String> params = new HashMap<>();
        params.put("jsonData",jsonData);
        params.put("accesstoken",getAccessToken());
        String response = sdkRunnerService.post("wlw/uploadDeviceData","设备业务数据信息上传",params,header,true,true);
        return response;
    }
    //设备相关基础信息注册
    public String deviceRegistration(){
        Map<String,String> header = new HashMap<>();
        String jsonData = "{\"deviceSn\":\"xty_test\",\"deviceModel\":\"测试\",\"name\":\"血糖仪TEST\",\"hospital\":\"350211A1004\",\"hospitalName\":\"厦门市第三医院\",\"categoryCode\":\"2\",\"categoryName\":\" 血糖仪\",\"commonName\":\" 血糖仪\",\"combinationMethod\":\"1\",\"networkTransmission\":\" 11\",\"deviceUse\":\"2\",\"dropLocation\":\"2\",\"dataAcquisition\":\"IoT_equipment_blood_glucose_mete\",\"companyName\":\"血糖仪厂商名称\",\"companyType\":\"3\"}";
        Map<String,String> params = new HashMap<>();
        params.put("jsonData",jsonData);
        params.put("accesstoken",getAccessToken());
        String response = sdkRunnerService.post("wlw/deviceRegistration","设备相关基础信息注册",params,header,true,true);
        return response;
    }
    /**
     * 获取accesstoken
     * @return
     */
    public synchronized String getAccessToken(){
        //新增accesstoken 缓存
        Map<String,String> header = new HashMap<>();
        List<WlyyHospitalSysDictDO> dictDOList =  wlyyHospitalSysDictDao.findByDictName("zy_iot");
        Map<String,String> dictMap = dictDOList.stream().collect(Collectors.toMap(WlyyHospitalSysDictDO::getDictCode,WlyyHospitalSysDictDO::getDictValue));
        String appid = dictMap.get("appid");
        String appSecret = dictMap.get("appSecret");
        Map<String,String> params = new HashMap<>();
        params.put("appid",dictMap.get("appid"));
        params.put("appSecret",dictMap.get("appSecret"));
        String response = sdkRunnerService.post("wlw/accesstoken",params,header,true,true);
        return response;
        params.put("appid",appid);
        params.put("appSecret",appSecret);
        String sql = "SELECT * from gc_token WHERE appid='"+appid+"' and del='1' and out_time>='"+DateUtil.getStringDate()+"' ORDER BY id desc LIMIT 1";
        List<GcToken> gcTokenList = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(GcToken.class));
        if(gcTokenList.size()>0){
            //缓存未失效前直接读缓存
            return gcTokenList.get(0).getAccesstoken();
        }
        String response = sdkRunnerService.post("wlw/accesstoken","获取accesstoken",params,header,true,true);
        JSONObject json = JSON.parseObject(response);
        if(json.getInteger("status")==10000){
            JSONObject result = json.getJSONObject("result");
            String accesstoken = result.getString("accesstoken");
            //两个小时超时
            long createTime = result.getLong("createTime");
            long outTime = result.getLong("outTime");
            outTime = outTime - Math.abs(System.currentTimeMillis()-createTime)-1000;
            //把该用户之前有效的token设置为无效
            gcTokenDao.updateDel(appid);
            GcToken gc = new GcToken();
            gc.setAppid(appid);
            gc.setCreateTime(new Date());
            gc.setOutTime(DateUtil.longToDate(outTime));
            gc.setAccesstoken(accesstoken);
            gc.setDel(1);
            gcTokenDao.save(gc);
            return accesstoken;
        }
        return null;
    }
}

+ 13 - 4
svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/util/zysoft/SDKRunnerService.java

@ -2,11 +2,15 @@ package com.yihu.jw.entrance.util.zysoft;
import cn.com.zoe.crypto.Base64;
import cn.com.zoe.crypto.jna.CryptoType;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.yihu.jw.entrance.config.SystemConfig;
import com.yihu.jw.entrance.service.LogService;
import com.zoe.phip.ssp.sdk.ApiException;
import com.zoe.phip.ssp.sdk.HeaderValue;
import com.zoe.phip.ssp.sdk.RequestMethod;
import com.zoe.phip.ssp.sdk.RequestValue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.InputStream;
@ -25,6 +29,8 @@ public class SDKRunnerService {
    private static String companyPublicKeyBase64String;
    private static String authorizationCode;
    private static String gateway_url;
    @Autowired
    private LogService logService;
    static {
        platformPublicKey = getEncryptData(SystemConfig.getInstance().getPlatformPublicKey());
@ -47,8 +53,10 @@ public class SDKRunnerService {
     * @param urlEncode url编码
     * @return
     */
    public String post(String api, Map<String,String> params,Map<String,String> header,boolean openCrypto,boolean urlEncode){
    public String post(String api,String content, Map<String,String> params,Map<String,String> header,boolean openCrypto,boolean urlEncode){
        String result = null;
        String msgBody = JSONObject.toJSONString(params, SerializerFeature.WriteMapNullValue);
        String msgHeader = JSONObject.toJSONString(header, SerializerFeature.WriteMapNullValue);
        try {
            // 密钥类型(RSA、SM2、SM2V2)
            CryptoType type = CryptoType.SM2_V2;
@ -91,10 +99,11 @@ public class SDKRunnerService {
            // 运行Api进行数据请求
            result = runnable.run(authorizationCode, openCrypto, type);
            //保存http日志
            logService.saveHttpLog(true,api,content,method.name(),msgHeader,msgBody,result,null);
        } catch (ApiException e) {
            System.out.println("Api请求失败:");
            System.out.println("\t 编码: " + e.errorCode());
            System.out.println("\t 信息: " + e.getMessage());
            //保存http日志
            logService.saveHttpLog(false,api,content,null,msgHeader,msgBody,result,null);
            e.printStackTrace();
        } catch (Exception ex) {
            ex.printStackTrace();