119 changed files with 4651 additions and 862 deletions
@ -0,0 +1,35 @@ |
|||||||
|
package com.cloud.kicc.equip.api.constant; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: TangSheng |
||||||
|
* @Description: 设备常量 |
||||||
|
* @Since 1.0 |
||||||
|
* @Date Created in 15:09 2022/4/18 |
||||||
|
*/ |
||||||
|
public interface EquipConstants { |
||||||
|
|
||||||
|
int NO_CODE = 0; |
||||||
|
int YES_CODE = 1; |
||||||
|
int SECOND_CODE = 2; |
||||||
|
|
||||||
|
/** |
||||||
|
* 中集智冷平台 |
||||||
|
*/ |
||||||
|
/**温控设备请求地址*/ |
||||||
|
String TEMP_URL = "http://ccsc58.com/json/01_00_tb_history_data.php"; |
||||||
|
/**访问前缀*/ |
||||||
|
String ADMIN_PERMIT = "zjly8888"; |
||||||
|
/**固定值*/ |
||||||
|
String USER_P = "A"; |
||||||
|
/**默认账号密码*/ |
||||||
|
String ADMIN_USER = "18569407322"; |
||||||
|
String ADMIN_PWD = "123yjf1992"; |
||||||
|
/**前缀*/ |
||||||
|
String TEMP_NAME_PREFIX = "KLTEMP-"; |
||||||
|
int PERIOD = 5; |
||||||
|
int SUCCESS_CODE = 10000; |
||||||
|
|
||||||
|
String OSS_URL = "https://image.kanglailab.com/"; |
||||||
|
String OSS_UPLOAD_REPORT_PATH = "upload/report/"; // 第三方上传报告结果路径
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
package com.cloud.kicc.equip.api.dto; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
@Data |
||||||
|
public class EquipTemperatureRecordParam implements Serializable { |
||||||
|
|
||||||
|
private String etId; |
||||||
|
private String beginTime; |
||||||
|
private String endTime; |
||||||
|
private String status; |
||||||
|
private String reportId; |
||||||
|
private String syUserId; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
package com.cloud.kicc.equip.api.dto.box; |
||||||
|
|
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 下行指令返回值 |
||||||
|
* @Date: 2021/9/23 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
public class DownCmdParam implements Serializable { |
||||||
|
|
||||||
|
// 当前指令操作序号
|
||||||
|
private String ts; |
||||||
|
|
||||||
|
// 下行指令
|
||||||
|
private Integer cmd; |
||||||
|
|
||||||
|
// 指令执行的结果状态(0.成功 1.失败)
|
||||||
|
private Integer status; |
||||||
|
|
||||||
|
// 指纹ID / 指纹IDs,多个指纹以英文逗号隔开
|
||||||
|
private String data; |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
package com.cloud.kicc.equip.api.dto.box; |
||||||
|
|
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 变动rfids参数 |
||||||
|
* @Date: 2021/9/23 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
public class RfidsParam implements Serializable { |
||||||
|
|
||||||
|
// 上报的RFID标签
|
||||||
|
private String rfid; |
||||||
|
|
||||||
|
// 变动类型(1.进 2.出)
|
||||||
|
private Integer type; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,75 @@ |
|||||||
|
package com.cloud.kicc.equip.api.dto.box; |
||||||
|
|
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 上行指令参数 |
||||||
|
* @Date: 2021/9/23 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
public class UpCmdParam implements Serializable { |
||||||
|
|
||||||
|
// 设备编号
|
||||||
|
private String code; |
||||||
|
// 上行指令代码
|
||||||
|
private Integer cmd; |
||||||
|
|
||||||
|
// 4G卡唯一标识号iccid
|
||||||
|
private String iccid; |
||||||
|
|
||||||
|
// 指纹ID
|
||||||
|
private String fid; |
||||||
|
|
||||||
|
// 元件异常类型(1.指纹锁 2.制冷片 3.温湿度 4.4G通讯 5.倾斜度 6.语音)
|
||||||
|
private Integer wrong; |
||||||
|
|
||||||
|
// 上报的RFID标签,多个以英文逗号隔开
|
||||||
|
private String rfids; |
||||||
|
|
||||||
|
/** |
||||||
|
* 以下为心跳上报数据 |
||||||
|
*/ |
||||||
|
/*//设备温度
|
||||||
|
private String temp; |
||||||
|
//设备湿度
|
||||||
|
private String damp; |
||||||
|
//经度
|
||||||
|
private String lng; |
||||||
|
//纬度
|
||||||
|
private String lat; |
||||||
|
//剩余电量
|
||||||
|
private String power; |
||||||
|
//倾斜角度(x轴)
|
||||||
|
private String tiltX; |
||||||
|
//倾斜角度(y轴)
|
||||||
|
private String tiltY; |
||||||
|
//震动能量值(值越大倾斜越大)
|
||||||
|
private String energy;*/ |
||||||
|
|
||||||
|
//设备温度
|
||||||
|
private String tp; |
||||||
|
//设备湿度
|
||||||
|
private String dp; |
||||||
|
//经度
|
||||||
|
private String lg; |
||||||
|
//纬度
|
||||||
|
private String lt; |
||||||
|
//剩余电量
|
||||||
|
private String pw; |
||||||
|
//倾斜角度(x轴)
|
||||||
|
private String tx; |
||||||
|
//倾斜角度(y轴)
|
||||||
|
private String ty; |
||||||
|
//震动能量值(值越大倾斜越大)
|
||||||
|
private String eg; |
||||||
|
//锁状态 (0.关 1.开)
|
||||||
|
private Integer os; |
||||||
|
//制冷状态(0.未制冷 1.已制冷)
|
||||||
|
private Integer cs; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,32 @@ |
|||||||
|
package com.cloud.kicc.equip.api.entity; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import com.cloud.kicc.common.data.entity.CommonEntity; |
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
@Data |
||||||
|
@TableName("equip_specimen") |
||||||
|
public class EquipSpecimen extends CommonEntity implements Serializable { |
||||||
|
|
||||||
|
/**ID*/ |
||||||
|
@TableId |
||||||
|
private String id; |
||||||
|
/**设备编号*/ |
||||||
|
private String boxCode; |
||||||
|
/**设备名称*/ |
||||||
|
private String boxName; |
||||||
|
/**设备类型*/ |
||||||
|
private String boxType; |
||||||
|
/**温控设备id*/ |
||||||
|
private String etId; |
||||||
|
/**收样员用户id*/ |
||||||
|
private String syUserId; |
||||||
|
/**状态 0:启用,1:禁用*/ |
||||||
|
private String status; |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,55 @@ |
|||||||
|
package com.cloud.kicc.equip.api.entity; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import com.cloud.kicc.common.data.entity.CommonEntity; |
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
@Data |
||||||
|
@TableName("equip_temperature") |
||||||
|
public class EquipTemperature extends CommonEntity implements Serializable { |
||||||
|
|
||||||
|
/**ID*/ |
||||||
|
@TableId |
||||||
|
private String id; |
||||||
|
/**设备编号*/ |
||||||
|
private String equipCode; |
||||||
|
/**设备名称*/ |
||||||
|
private String equipName; |
||||||
|
/**设备登录账号*/ |
||||||
|
private String adminUser; |
||||||
|
/**设备登录密码*/ |
||||||
|
private String adminPwd; |
||||||
|
/**电量最低警报值*/ |
||||||
|
private String powerMinWarn; |
||||||
|
/**温度最低警报值*/ |
||||||
|
private Integer temperatureMinWarn; |
||||||
|
/**温度最高警报值*/ |
||||||
|
private Integer temperatureMaxWarn; |
||||||
|
/**设备温度*/ |
||||||
|
private String equipTemperature; |
||||||
|
/**设备湿度*/ |
||||||
|
private String equipHumidity; |
||||||
|
/**经度*/ |
||||||
|
private String longitude; |
||||||
|
/**纬度*/ |
||||||
|
private String latitude; |
||||||
|
/**设备位置*/ |
||||||
|
private String equipAddr; |
||||||
|
/**剩余电量*/ |
||||||
|
private String equipPower; |
||||||
|
/**设备状态*/ |
||||||
|
private String equipStatus; |
||||||
|
/**设备类型*/ |
||||||
|
private String equipType; |
||||||
|
/**设备最新上报时间*/ |
||||||
|
private String latestTime; |
||||||
|
/**0:启用,1禁用*/ |
||||||
|
private String status; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,46 @@ |
|||||||
|
package com.cloud.kicc.equip.api.entity; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import com.cloud.kicc.common.data.entity.CommonEntity; |
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
import java.util.Date; |
||||||
|
|
||||||
|
@Data |
||||||
|
@TableName("equip_temperature_record") |
||||||
|
public class EquipTemperatureRecord extends CommonEntity implements Serializable { |
||||||
|
|
||||||
|
/**id*/ |
||||||
|
@TableId |
||||||
|
private String id; |
||||||
|
/**et_id 温控设备id*/ |
||||||
|
private String etId; |
||||||
|
/**电量最低警报值*/ |
||||||
|
private String powerMinWarn; |
||||||
|
/**温度最低警报值*/ |
||||||
|
private Integer temperatureMinWarn; |
||||||
|
/**温度最高警报值*/ |
||||||
|
private Integer temperatureMaxWarn; |
||||||
|
/**设备温度*/ |
||||||
|
private String equipTemperature; |
||||||
|
/**设备湿度*/ |
||||||
|
private String equipHumidity; |
||||||
|
/**经度*/ |
||||||
|
private String longitude; |
||||||
|
/**纬度*/ |
||||||
|
private String latitude; |
||||||
|
/**设备位置*/ |
||||||
|
private String equipAddr; |
||||||
|
/**剩余电量*/ |
||||||
|
private String equipPower; |
||||||
|
/**设备状态*/ |
||||||
|
private String equipStatus; |
||||||
|
/**设备最新上报时间*/ |
||||||
|
private String latestTime; |
||||||
|
/**删除标记(0.启用 1.禁用*/ |
||||||
|
private String status; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,46 @@ |
|||||||
|
package com.cloud.kicc.equip.api.enums; |
||||||
|
|
||||||
|
public enum BoxStatusEnum { |
||||||
|
//设备状态 (0.未连接 1.已连接 2.已断开 3.已休眠)
|
||||||
|
|
||||||
|
INIT(0,"未连接"), |
||||||
|
|
||||||
|
TELNET(1,"已连接"), |
||||||
|
|
||||||
|
CLOSE(2,"已断开"), |
||||||
|
|
||||||
|
SLEEP(3,"已休眠"), |
||||||
|
|
||||||
|
OTHER(100,""); |
||||||
|
private int code; |
||||||
|
private String value; |
||||||
|
|
||||||
|
private BoxStatusEnum(int code, String value) { |
||||||
|
this.setCode(code); |
||||||
|
this.setValue(value); |
||||||
|
} |
||||||
|
|
||||||
|
public int getCode() { |
||||||
|
return code; |
||||||
|
} |
||||||
|
public void setCode(int code) { |
||||||
|
this.code = code; |
||||||
|
} |
||||||
|
public String getValue() { |
||||||
|
return value; |
||||||
|
} |
||||||
|
public void setValue(String value) { |
||||||
|
this.value = value; |
||||||
|
} |
||||||
|
|
||||||
|
//根据key获取枚举
|
||||||
|
public static BoxStatusEnum getEnumByKey(Integer key){ |
||||||
|
for(BoxStatusEnum temp: BoxStatusEnum.values()){ |
||||||
|
if(temp.getCode() == key.intValue()){ |
||||||
|
return temp; |
||||||
|
} |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,87 @@ |
|||||||
|
package com.cloud.kicc.equip.api.enums; |
||||||
|
|
||||||
|
public enum CmdEnum { |
||||||
|
/** |
||||||
|
* 上行指令 1.连接 2.获取设备配置 3.心跳上报数据 4.开锁 5.关锁 6.元件异常 7.上报变动RFID 8.上报所有RFID |
||||||
|
* |
||||||
|
* 下行指令 100.重置配置 105.语音播报 110.新增指纹 111.删除指纹 112.获取所有指纹 113.删除所有指纹 114.禁用指纹 115.启用指纹 |
||||||
|
* 120.开启数据上报 121.关闭数据上报 122.开启制冷 123.关闭制冷 124.开锁 |
||||||
|
*/ |
||||||
|
|
||||||
|
TELNET_U(1,"连接"), |
||||||
|
|
||||||
|
CONFIG_U(2,"获取设备配置信息"), |
||||||
|
|
||||||
|
DATA_U(3,"心跳上报数据"), |
||||||
|
|
||||||
|
OPEN_U(4,"开锁"), |
||||||
|
|
||||||
|
CLOSE_U(5,"关锁"), |
||||||
|
|
||||||
|
ERROR_U(6,"元件异常"), |
||||||
|
|
||||||
|
RFID_CHANGE_U(7,"上报变动蓝牙"), |
||||||
|
|
||||||
|
RFID_ALL_U(8,"上报所有蓝牙"), |
||||||
|
|
||||||
|
|
||||||
|
RESET_D(100,"更新配置信息"), |
||||||
|
|
||||||
|
VOICE_D(105,"语音播报"), |
||||||
|
|
||||||
|
ADD_FID_D(110,"新增指纹"), |
||||||
|
|
||||||
|
DEL_FID_D(111,"删除指纹"), |
||||||
|
|
||||||
|
ALL_FID_D(112,"获取所有指纹"), |
||||||
|
|
||||||
|
DEL_ALL_FID_D(113,"删除所有指纹"), |
||||||
|
|
||||||
|
DISABLE_FID_D(114,"禁用指纹"), |
||||||
|
|
||||||
|
ENABLE_FID_D(115,"启用指纹"), |
||||||
|
|
||||||
|
OPEN_DATA_D(120,"开启数据上报"), |
||||||
|
|
||||||
|
CLOSE_DATA_D(121,"关闭数据上报"), |
||||||
|
|
||||||
|
OPEN_COLD_D(122,"开启制冷"), |
||||||
|
|
||||||
|
CLOSE_COLD_D(123,"关闭制冷"), |
||||||
|
|
||||||
|
OPEN_D(124,"开锁"), |
||||||
|
|
||||||
|
|
||||||
|
OTHER(1000,""); |
||||||
|
private int code; |
||||||
|
private String value; |
||||||
|
|
||||||
|
private CmdEnum(int code, String value) { |
||||||
|
this.setCode(code); |
||||||
|
this.setValue(value); |
||||||
|
} |
||||||
|
|
||||||
|
public int getCode() { |
||||||
|
return code; |
||||||
|
} |
||||||
|
public void setCode(int code) { |
||||||
|
this.code = code; |
||||||
|
} |
||||||
|
public String getValue() { |
||||||
|
return value; |
||||||
|
} |
||||||
|
public void setValue(String value) { |
||||||
|
this.value = value; |
||||||
|
} |
||||||
|
|
||||||
|
//根据key获取枚举
|
||||||
|
public static CmdEnum getEnumByKey(Integer key){ |
||||||
|
for(CmdEnum temp: CmdEnum.values()){ |
||||||
|
if(temp.getCode() == key.intValue()){ |
||||||
|
return temp; |
||||||
|
} |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,44 @@ |
|||||||
|
package com.cloud.kicc.equip.api.enums; |
||||||
|
|
||||||
|
public enum CmdStatusEnum { |
||||||
|
//指令响应状态(0.未响应 1.成功 2.失败)
|
||||||
|
|
||||||
|
NOT(0,"未响应"), |
||||||
|
|
||||||
|
SUCCESS(1,"成功"), |
||||||
|
|
||||||
|
FAIL(2,"失败"), |
||||||
|
|
||||||
|
OTHER(100,""); |
||||||
|
private int code; |
||||||
|
private String value; |
||||||
|
|
||||||
|
private CmdStatusEnum(int code, String value) { |
||||||
|
this.setCode(code); |
||||||
|
this.setValue(value); |
||||||
|
} |
||||||
|
|
||||||
|
public int getCode() { |
||||||
|
return code; |
||||||
|
} |
||||||
|
public void setCode(int code) { |
||||||
|
this.code = code; |
||||||
|
} |
||||||
|
public String getValue() { |
||||||
|
return value; |
||||||
|
} |
||||||
|
public void setValue(String value) { |
||||||
|
this.value = value; |
||||||
|
} |
||||||
|
|
||||||
|
//根据key获取枚举
|
||||||
|
public static CmdStatusEnum getEnumByKey(Integer key){ |
||||||
|
for(CmdStatusEnum temp: CmdStatusEnum.values()){ |
||||||
|
if(temp.getCode() == key.intValue()){ |
||||||
|
return temp; |
||||||
|
} |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,48 @@ |
|||||||
|
package com.cloud.kicc.equip.api.enums; |
||||||
|
|
||||||
|
public enum WarnStatusEnum { |
||||||
|
//报警状态(0. 正常 1.低温报警 2.高温报警 3.倾斜报警 4.锁未关报警)
|
||||||
|
|
||||||
|
NORMAL(0,"正常"), |
||||||
|
|
||||||
|
TEMP_MIN(1,"低温报警"), |
||||||
|
|
||||||
|
TEMP_MAX(2,"高温报警"), |
||||||
|
|
||||||
|
TILT(3,"倾斜报警"), |
||||||
|
|
||||||
|
CLOSE(4,"锁未关报警"), |
||||||
|
|
||||||
|
OTHER(100,""); |
||||||
|
private int code; |
||||||
|
private String value; |
||||||
|
|
||||||
|
private WarnStatusEnum(int code, String value) { |
||||||
|
this.setCode(code); |
||||||
|
this.setValue(value); |
||||||
|
} |
||||||
|
|
||||||
|
public int getCode() { |
||||||
|
return code; |
||||||
|
} |
||||||
|
public void setCode(int code) { |
||||||
|
this.code = code; |
||||||
|
} |
||||||
|
public String getValue() { |
||||||
|
return value; |
||||||
|
} |
||||||
|
public void setValue(String value) { |
||||||
|
this.value = value; |
||||||
|
} |
||||||
|
|
||||||
|
//根据key获取枚举
|
||||||
|
public static WarnStatusEnum getEnumByKey(Integer key){ |
||||||
|
for(WarnStatusEnum temp: WarnStatusEnum.values()){ |
||||||
|
if(temp.getCode() == key.intValue()){ |
||||||
|
return temp; |
||||||
|
} |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,33 @@ |
|||||||
|
package com.cloud.kicc.equip.api.vo; |
||||||
|
|
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
@Data |
||||||
|
public class DownCmdVo implements Serializable { |
||||||
|
|
||||||
|
// 时间戳 - 用于下行指令的唯一标识
|
||||||
|
private String ts; |
||||||
|
|
||||||
|
// 下行指令代码
|
||||||
|
private Integer cmd; |
||||||
|
|
||||||
|
// 指纹id
|
||||||
|
//private String fid;
|
||||||
|
|
||||||
|
// 指纹id/语音播报内容
|
||||||
|
private String data; |
||||||
|
|
||||||
|
//温度最低警报值
|
||||||
|
private Double tempMin; |
||||||
|
//温度最高警报值
|
||||||
|
private Double tempMax; |
||||||
|
//rfid每隔多少分钟上报一次所有标签
|
||||||
|
private Integer rfidMin; |
||||||
|
//每隔多少秒上报一次数据
|
||||||
|
private Integer beat; |
||||||
|
//设备状态 (1.已连接 2.已断开 3.已休眠)
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
package com.cloud.kicc.equip.api.vo; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
/** |
||||||
|
* 物联网卡管理(EquipBoxCard)表实体类 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2022-02-13 12:06:29 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
public class EquipBoxCardVo implements Serializable { |
||||||
|
|
||||||
|
private String id; |
||||||
|
|
||||||
|
private String iccid; |
||||||
|
|
||||||
|
private String card; |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
package com.cloud.kicc.equip.api.vo; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱设备信息(EquipBox)表实体类 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-14 19:07:07 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
public class EquipBoxConfigVo implements Serializable { |
||||||
|
|
||||||
|
//温度最低警报值
|
||||||
|
private Double tempMin; |
||||||
|
//温度最高警报值
|
||||||
|
private Double tempMax; |
||||||
|
//rfid每隔多少分钟上报一次所有标签
|
||||||
|
private Integer rfidMin; |
||||||
|
//每隔多少秒上报一次数据
|
||||||
|
private Integer beat; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,33 @@ |
|||||||
|
package com.cloud.kicc.equip.api.vo.box; |
||||||
|
|
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
@Data |
||||||
|
public class DownCmdVo implements Serializable { |
||||||
|
|
||||||
|
// 时间戳 - 用于下行指令的唯一标识
|
||||||
|
private String ts; |
||||||
|
|
||||||
|
// 下行指令代码
|
||||||
|
private Integer cmd; |
||||||
|
|
||||||
|
// 指纹id
|
||||||
|
//private String fid;
|
||||||
|
|
||||||
|
// 指纹id/语音播报内容
|
||||||
|
private String data; |
||||||
|
|
||||||
|
//温度最低警报值
|
||||||
|
private Double tempMin; |
||||||
|
//温度最高警报值
|
||||||
|
private Double tempMax; |
||||||
|
//rfid每隔多少分钟上报一次所有标签
|
||||||
|
private Integer rfidMin; |
||||||
|
//每隔多少秒上报一次数据
|
||||||
|
private Integer beat; |
||||||
|
//设备状态 (1.已连接 2.已断开 3.已休眠)
|
||||||
|
|
||||||
|
} |
@ -1,35 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="UTF-8"?> |
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" |
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
|
||||||
<parent> |
|
||||||
<artifactId>kicc-platform-api</artifactId> |
|
||||||
<groupId>com.cloud</groupId> |
|
||||||
<version>1.0.0</version> |
|
||||||
</parent> |
|
||||||
<modelVersion>4.0.0</modelVersion> |
|
||||||
|
|
||||||
<artifactId>kicc-equip-api</artifactId> |
|
||||||
|
|
||||||
<packaging>jar</packaging> |
|
||||||
<description>kicc的iot接口api模块</description> |
|
||||||
|
|
||||||
<dependencies> |
|
||||||
<!--断路器依赖--> |
|
||||||
<dependency> |
|
||||||
<groupId>com.cloud</groupId> |
|
||||||
<artifactId>kicc-common-feign</artifactId> |
|
||||||
</dependency> |
|
||||||
<!--数据服务核心包--> |
|
||||||
<dependency> |
|
||||||
<groupId>com.cloud</groupId> |
|
||||||
<artifactId>kicc-common-data</artifactId> |
|
||||||
</dependency> |
|
||||||
<!--excel 导入导出--> |
|
||||||
<dependency> |
|
||||||
<groupId>com.pig4cloud.excel</groupId> |
|
||||||
<artifactId>excel-spring-boot-starter</artifactId> |
|
||||||
</dependency> |
|
||||||
</dependencies> |
|
||||||
|
|
||||||
</project> |
|
@ -1,13 +0,0 @@ |
|||||||
package com.cloud.kicc.equip.api.constant; |
|
||||||
|
|
||||||
/** |
|
||||||
* @Author: lizhi |
|
||||||
* @Description:设备常量 |
|
||||||
* @Since 1.0 |
|
||||||
* @Date Created in 14:50 2022/6/16 |
|
||||||
*/ |
|
||||||
public interface EquipConstants { |
|
||||||
int NO_CODE = 0; |
|
||||||
int YES_CODE = 1; |
|
||||||
int SECOND_CODE = 2; |
|
||||||
} |
|
@ -1,26 +0,0 @@ |
|||||||
package com.cloud.kicc.equip.api.dto.box; |
|
||||||
|
|
||||||
import lombok.Data; |
|
||||||
|
|
||||||
import java.io.Serializable; |
|
||||||
|
|
||||||
/** |
|
||||||
* @Author: lizhi |
|
||||||
* @Description:下行指令返回值 |
|
||||||
* @Since 1.0 |
|
||||||
* @Date Created in 14:51 2022/6/16 |
|
||||||
*/ |
|
||||||
@Data |
|
||||||
public class DownCmdParam implements Serializable { |
|
||||||
// 当前指令操作序号
|
|
||||||
private String ts; |
|
||||||
|
|
||||||
// 下行指令
|
|
||||||
private Integer cmd; |
|
||||||
|
|
||||||
// 指令执行的结果状态(0.成功 1.失败)
|
|
||||||
private Integer status; |
|
||||||
|
|
||||||
// 指纹ID / 指纹IDs,多个指纹以英文逗号隔开
|
|
||||||
private String data; |
|
||||||
} |
|
@ -1,20 +0,0 @@ |
|||||||
package com.cloud.kicc.equip.api.dto.box; |
|
||||||
|
|
||||||
import lombok.Data; |
|
||||||
|
|
||||||
import java.io.Serializable; |
|
||||||
|
|
||||||
/** |
|
||||||
* @Author: lizhi |
|
||||||
* @Description:变动rfids参数 |
|
||||||
* @Since 1.0 |
|
||||||
* @Date Created in 14:52 2022/6/16 |
|
||||||
*/ |
|
||||||
@Data |
|
||||||
public class RfidsParam implements Serializable { |
|
||||||
// 上报的RFID标签
|
|
||||||
private String rfid; |
|
||||||
|
|
||||||
// 变动类型(1.进 2.出)
|
|
||||||
private Integer type; |
|
||||||
} |
|
@ -1,72 +0,0 @@ |
|||||||
package com.cloud.kicc.equip.api.dto.box; |
|
||||||
|
|
||||||
import lombok.Data; |
|
||||||
|
|
||||||
import java.io.Serializable; |
|
||||||
|
|
||||||
/** |
|
||||||
* @Author: lizhi |
|
||||||
* @Description:上行指令参数 |
|
||||||
* @Since 1.0 |
|
||||||
* @Date Created in 14:53 2022/6/16 |
|
||||||
*/ |
|
||||||
@Data |
|
||||||
public class UpCmdParam implements Serializable { |
|
||||||
// 设备编号
|
|
||||||
private String code; |
|
||||||
// 上行指令代码
|
|
||||||
private Integer cmd; |
|
||||||
|
|
||||||
// 4G卡唯一标识号iccid
|
|
||||||
private String iccid; |
|
||||||
|
|
||||||
// 指纹ID
|
|
||||||
private String fid; |
|
||||||
|
|
||||||
// 元件异常类型(1.指纹锁 2.制冷片 3.温湿度 4.4G通讯 5.倾斜度 6.语音)
|
|
||||||
private Integer wrong; |
|
||||||
|
|
||||||
// 上报的RFID标签,多个以英文逗号隔开
|
|
||||||
private String rfids; |
|
||||||
|
|
||||||
/** |
|
||||||
* 以下为心跳上报数据 |
|
||||||
*/ |
|
||||||
/*//设备温度
|
|
||||||
private String temp; |
|
||||||
//设备湿度
|
|
||||||
private String damp; |
|
||||||
//经度
|
|
||||||
private String lng; |
|
||||||
//纬度
|
|
||||||
private String lat; |
|
||||||
//剩余电量
|
|
||||||
private String power; |
|
||||||
//倾斜角度(x轴)
|
|
||||||
private String tiltX; |
|
||||||
//倾斜角度(y轴)
|
|
||||||
private String tiltY; |
|
||||||
//震动能量值(值越大倾斜越大)
|
|
||||||
private String energy;*/ |
|
||||||
|
|
||||||
//设备温度
|
|
||||||
private String tp; |
|
||||||
//设备湿度
|
|
||||||
private String dp; |
|
||||||
//经度
|
|
||||||
private String lg; |
|
||||||
//纬度
|
|
||||||
private String lt; |
|
||||||
//剩余电量
|
|
||||||
private String pw; |
|
||||||
//倾斜角度(x轴)
|
|
||||||
private String tx; |
|
||||||
//倾斜角度(y轴)
|
|
||||||
private String ty; |
|
||||||
//震动能量值(值越大倾斜越大)
|
|
||||||
private String eg; |
|
||||||
//锁状态 (0.关 1.开)
|
|
||||||
private Integer os; |
|
||||||
//制冷状态(0.未制冷 1.已制冷)
|
|
||||||
private Integer cs; |
|
||||||
} |
|
@ -1,51 +0,0 @@ |
|||||||
package com.cloud.kicc.equip.api.enums; |
|
||||||
|
|
||||||
/** |
|
||||||
* @Author: lizhi |
|
||||||
* @Description: |
|
||||||
* @Since 1.0 |
|
||||||
* @Date Created in 15:25 2022/6/16 |
|
||||||
*/ |
|
||||||
public enum BoxStatusEnum { |
|
||||||
//设备状态 (0.未连接 1.已连接 2.已断开 3.已休眠)
|
|
||||||
|
|
||||||
INIT(0,"未连接"), |
|
||||||
|
|
||||||
TELNET(1,"已连接"), |
|
||||||
|
|
||||||
CLOSE(2,"已断开"), |
|
||||||
|
|
||||||
SLEEP(3,"已休眠"), |
|
||||||
|
|
||||||
OTHER(100,""); |
|
||||||
private int code; |
|
||||||
private String value; |
|
||||||
|
|
||||||
private BoxStatusEnum(int code, String value) { |
|
||||||
this.setCode(code); |
|
||||||
this.setValue(value); |
|
||||||
} |
|
||||||
|
|
||||||
public int getCode() { |
|
||||||
return code; |
|
||||||
} |
|
||||||
public void setCode(int code) { |
|
||||||
this.code = code; |
|
||||||
} |
|
||||||
public String getValue() { |
|
||||||
return value; |
|
||||||
} |
|
||||||
public void setValue(String value) { |
|
||||||
this.value = value; |
|
||||||
} |
|
||||||
|
|
||||||
//根据key获取枚举
|
|
||||||
public static BoxStatusEnum getEnumByKey(Integer key){ |
|
||||||
for(BoxStatusEnum temp: BoxStatusEnum.values()){ |
|
||||||
if(temp.getCode() == key.intValue()){ |
|
||||||
return temp; |
|
||||||
} |
|
||||||
} |
|
||||||
return null; |
|
||||||
} |
|
||||||
} |
|
@ -1,91 +0,0 @@ |
|||||||
package com.cloud.kicc.equip.api.enums; |
|
||||||
|
|
||||||
/** |
|
||||||
* @Author: lizhi |
|
||||||
* @Description: |
|
||||||
* @Since 1.0 |
|
||||||
* @Date Created in 15:26 2022/6/16 |
|
||||||
*/ |
|
||||||
/** |
|
||||||
* 上行指令 1.连接 2.获取设备配置 3.心跳上报数据 4.开锁 5.关锁 6.元件异常 7.上报变动RFID 8.上报所有RFID |
|
||||||
* |
|
||||||
* 下行指令 100.重置配置 105.语音播报 110.新增指纹 111.删除指纹 112.获取所有指纹 113.删除所有指纹 114.禁用指纹 115.启用指纹 |
|
||||||
* 120.开启数据上报 121.关闭数据上报 122.开启制冷 123.关闭制冷 124.开锁 |
|
||||||
*/ |
|
||||||
public enum CmdEnum { |
|
||||||
TELNET_U(1,"连接"), |
|
||||||
|
|
||||||
CONFIG_U(2,"获取设备配置信息"), |
|
||||||
|
|
||||||
DATA_U(3,"心跳上报数据"), |
|
||||||
|
|
||||||
OPEN_U(4,"开锁"), |
|
||||||
|
|
||||||
CLOSE_U(5,"关锁"), |
|
||||||
|
|
||||||
ERROR_U(6,"元件异常"), |
|
||||||
|
|
||||||
RFID_CHANGE_U(7,"上报变动蓝牙"), |
|
||||||
|
|
||||||
RFID_ALL_U(8,"上报所有蓝牙"), |
|
||||||
|
|
||||||
|
|
||||||
RESET_D(100,"更新配置信息"), |
|
||||||
|
|
||||||
VOICE_D(105,"语音播报"), |
|
||||||
|
|
||||||
ADD_FID_D(110,"新增指纹"), |
|
||||||
|
|
||||||
DEL_FID_D(111,"删除指纹"), |
|
||||||
|
|
||||||
ALL_FID_D(112,"获取所有指纹"), |
|
||||||
|
|
||||||
DEL_ALL_FID_D(113,"删除所有指纹"), |
|
||||||
|
|
||||||
DISABLE_FID_D(114,"禁用指纹"), |
|
||||||
|
|
||||||
ENABLE_FID_D(115,"启用指纹"), |
|
||||||
|
|
||||||
OPEN_DATA_D(120,"开启数据上报"), |
|
||||||
|
|
||||||
CLOSE_DATA_D(121,"关闭数据上报"), |
|
||||||
|
|
||||||
OPEN_COLD_D(122,"开启制冷"), |
|
||||||
|
|
||||||
CLOSE_COLD_D(123,"关闭制冷"), |
|
||||||
|
|
||||||
OPEN_D(124,"开锁"), |
|
||||||
|
|
||||||
|
|
||||||
OTHER(1000,""); |
|
||||||
private int code; |
|
||||||
private String value; |
|
||||||
|
|
||||||
private CmdEnum(int code, String value) { |
|
||||||
this.setCode(code); |
|
||||||
this.setValue(value); |
|
||||||
} |
|
||||||
|
|
||||||
public int getCode() { |
|
||||||
return code; |
|
||||||
} |
|
||||||
public void setCode(int code) { |
|
||||||
this.code = code; |
|
||||||
} |
|
||||||
public String getValue() { |
|
||||||
return value; |
|
||||||
} |
|
||||||
public void setValue(String value) { |
|
||||||
this.value = value; |
|
||||||
} |
|
||||||
|
|
||||||
//根据key获取枚举
|
|
||||||
public static CmdEnum getEnumByKey(Integer key){ |
|
||||||
for(CmdEnum temp: CmdEnum.values()){ |
|
||||||
if(temp.getCode() == key.intValue()){ |
|
||||||
return temp; |
|
||||||
} |
|
||||||
} |
|
||||||
return null; |
|
||||||
} |
|
||||||
} |
|
@ -1,50 +0,0 @@ |
|||||||
package com.cloud.kicc.equip.api.enums; |
|
||||||
|
|
||||||
/** |
|
||||||
* @Author: lizhi |
|
||||||
* @Description: |
|
||||||
* @Since 1.0 |
|
||||||
* @Date Created in 15:27 2022/6/16 |
|
||||||
*/ |
|
||||||
public enum CmdStatusEnum { |
|
||||||
//指令响应状态(0.未响应 1.成功 2.失败)
|
|
||||||
|
|
||||||
NOT(0,"未响应"), |
|
||||||
|
|
||||||
SUCCESS(1,"成功"), |
|
||||||
|
|
||||||
FAIL(2,"失败"), |
|
||||||
|
|
||||||
OTHER(100,""); |
|
||||||
private int code; |
|
||||||
private String value; |
|
||||||
|
|
||||||
private CmdStatusEnum(int code, String value) { |
|
||||||
this.setCode(code); |
|
||||||
this.setValue(value); |
|
||||||
} |
|
||||||
|
|
||||||
public int getCode() { |
|
||||||
return code; |
|
||||||
} |
|
||||||
public void setCode(int code) { |
|
||||||
this.code = code; |
|
||||||
} |
|
||||||
public String getValue() { |
|
||||||
return value; |
|
||||||
} |
|
||||||
public void setValue(String value) { |
|
||||||
this.value = value; |
|
||||||
} |
|
||||||
|
|
||||||
//根据key获取枚举
|
|
||||||
public static CmdStatusEnum getEnumByKey(Integer key){ |
|
||||||
for(CmdStatusEnum temp: CmdStatusEnum.values()){ |
|
||||||
if(temp.getCode() == key.intValue()){ |
|
||||||
return temp; |
|
||||||
} |
|
||||||
} |
|
||||||
return null; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,54 +0,0 @@ |
|||||||
package com.cloud.kicc.equip.api.enums; |
|
||||||
|
|
||||||
/** |
|
||||||
* @Author: lizhi |
|
||||||
* @Description: |
|
||||||
* @Since 1.0 |
|
||||||
* @Date Created in 15:27 2022/6/16 |
|
||||||
*/ |
|
||||||
public enum WarnStatusEnum { |
|
||||||
//报警状态(0. 正常 1.低温报警 2.高温报警 3.倾斜报警 4.锁未关报警)
|
|
||||||
|
|
||||||
NORMAL(0,"正常"), |
|
||||||
|
|
||||||
TEMP_MIN(1,"低温报警"), |
|
||||||
|
|
||||||
TEMP_MAX(2,"高温报警"), |
|
||||||
|
|
||||||
TILT(3,"倾斜报警"), |
|
||||||
|
|
||||||
CLOSE(4,"锁未关报警"), |
|
||||||
|
|
||||||
OTHER(100,""); |
|
||||||
private int code; |
|
||||||
private String value; |
|
||||||
|
|
||||||
private WarnStatusEnum(int code, String value) { |
|
||||||
this.setCode(code); |
|
||||||
this.setValue(value); |
|
||||||
} |
|
||||||
|
|
||||||
public int getCode() { |
|
||||||
return code; |
|
||||||
} |
|
||||||
public void setCode(int code) { |
|
||||||
this.code = code; |
|
||||||
} |
|
||||||
public String getValue() { |
|
||||||
return value; |
|
||||||
} |
|
||||||
public void setValue(String value) { |
|
||||||
this.value = value; |
|
||||||
} |
|
||||||
|
|
||||||
//根据key获取枚举
|
|
||||||
public static WarnStatusEnum getEnumByKey(Integer key){ |
|
||||||
for(WarnStatusEnum temp: WarnStatusEnum.values()){ |
|
||||||
if(temp.getCode() == key.intValue()){ |
|
||||||
return temp; |
|
||||||
} |
|
||||||
} |
|
||||||
return null; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,36 +0,0 @@ |
|||||||
package com.cloud.kicc.equip.api.vo.box; |
|
||||||
|
|
||||||
import lombok.Data; |
|
||||||
|
|
||||||
import java.io.Serializable; |
|
||||||
|
|
||||||
/** |
|
||||||
* @Author: lizhi |
|
||||||
* @Description: |
|
||||||
* @Since 1.0 |
|
||||||
* @Date Created in 15:28 2022/6/16 |
|
||||||
*/ |
|
||||||
@Data |
|
||||||
public class DownCmdVo implements Serializable { |
|
||||||
// 时间戳 - 用于下行指令的唯一标识
|
|
||||||
private String ts; |
|
||||||
|
|
||||||
// 下行指令代码
|
|
||||||
private Integer cmd; |
|
||||||
|
|
||||||
// 指纹id
|
|
||||||
//private String fid;
|
|
||||||
|
|
||||||
// 指纹id/语音播报内容
|
|
||||||
private String data; |
|
||||||
|
|
||||||
//温度最低警报值
|
|
||||||
private Double tempMin; |
|
||||||
//温度最高警报值
|
|
||||||
private Double tempMax; |
|
||||||
//rfid每隔多少分钟上报一次所有标签
|
|
||||||
private Integer rfidMin; |
|
||||||
//每隔多少秒上报一次数据
|
|
||||||
private Integer beat; |
|
||||||
//设备状态 (1.已连接 2.已断开 3.已休眠)
|
|
||||||
} |
|
@ -0,0 +1,173 @@ |
|||||||
|
package com.cloud.kicc.amqp; |
||||||
|
|
||||||
|
import org.apache.qpid.jms.JmsConnection; |
||||||
|
import org.apache.qpid.jms.JmsConnectionFactory; |
||||||
|
import org.apache.qpid.jms.JmsConnectionListener; |
||||||
|
import org.apache.qpid.jms.message.JmsInboundMessageDispatch; |
||||||
|
import org.apache.qpid.jms.transports.TransportOptions; |
||||||
|
import org.apache.qpid.jms.transports.TransportSupport; |
||||||
|
|
||||||
|
import javax.jms.*; |
||||||
|
import javax.naming.Context; |
||||||
|
import javax.naming.InitialContext; |
||||||
|
import java.net.URI; |
||||||
|
import java.util.Hashtable; |
||||||
|
import java.util.concurrent.ExecutorService; |
||||||
|
import java.util.concurrent.LinkedBlockingQueue; |
||||||
|
import java.util.concurrent.ThreadPoolExecutor; |
||||||
|
import java.util.concurrent.TimeUnit; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: lizhi |
||||||
|
* @Description: |
||||||
|
* @Since 1.0 |
||||||
|
* @Date Created in 15:34 2022/6/17 |
||||||
|
*/ |
||||||
|
public class AmqpDemo { |
||||||
|
//异步线程池,参数可以根据业务特点作调整,也可以用其他异步方式来处理。
|
||||||
|
private final static ExecutorService executorService = new ThreadPoolExecutor( |
||||||
|
Runtime.getRuntime().availableProcessors(), Runtime.getRuntime().availableProcessors() * 2, |
||||||
|
60, TimeUnit.SECONDS, new LinkedBlockingQueue<>(5000)); |
||||||
|
|
||||||
|
public static void main(String[] args) throws Exception { |
||||||
|
//连接凭证接入键值。
|
||||||
|
String accessKey = "JUOtPLi9"; |
||||||
|
long timeStamp = System.currentTimeMillis(); |
||||||
|
//UserName组装方法,请参见文档:AMQP客户端接入说明。
|
||||||
|
String userName = "accessKey=" + accessKey + "|timestamp=" + timeStamp; |
||||||
|
//连接凭证接入码。
|
||||||
|
String password = "N8cNjNIR52Qg6UF8ysKFHdfZWqdMyEhS"; |
||||||
|
//按照qpid-jms的规范,组装连接URL。
|
||||||
|
String baseUrl = "4cbb346a33.iot-amqps.cn-north-4.myhuaweicloud.com"; |
||||||
|
String connectionUrl = "amqps://" + baseUrl + ":5671?amqp.vhost=default&amqp.idleTimeout=8000&amqp.saslMechanisms=PLAIN"; |
||||||
|
Hashtable<String, String> hashtable = new Hashtable<>(); |
||||||
|
hashtable.put("connectionfactory.HwConnectionURL", connectionUrl); |
||||||
|
//队列名,可以使用默认队列DefaultQueue
|
||||||
|
String queueName = "DefaultQueue"; |
||||||
|
hashtable.put("queue.HwQueueName", queueName); |
||||||
|
hashtable |
||||||
|
.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.qpid.jms.jndi.JmsInitialContextFactory"); |
||||||
|
Context context = new InitialContext(hashtable); |
||||||
|
JmsConnectionFactory cf = (JmsConnectionFactory) context.lookup("HwConnectionURL"); |
||||||
|
//同一个链接可创建多个queue,与前面queue.HwQueueName作好配对就行
|
||||||
|
Destination queue = (Destination) context.lookup("HwQueueName"); |
||||||
|
|
||||||
|
//信任服务端
|
||||||
|
TransportOptions to = new TransportOptions(); |
||||||
|
to.setTrustAll(true); |
||||||
|
cf.setSslContext(TransportSupport.createJdkSslContext(to)); |
||||||
|
|
||||||
|
// 创建连接
|
||||||
|
Connection connection = cf.createConnection(userName, password); |
||||||
|
((JmsConnection) connection).addConnectionListener(myJmsConnectionListener); |
||||||
|
// 创建 Session
|
||||||
|
// Session.CLIENT_ACKNOWLEDGE: 收到消息后,需要手动调用message.acknowledge()。
|
||||||
|
// Session.AUTO_ACKNOWLEDGE: SDK自动ACK(推荐)。
|
||||||
|
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); |
||||||
|
connection.start(); |
||||||
|
// 创建 Receiver Link
|
||||||
|
MessageConsumer consumer = session.createConsumer(queue); |
||||||
|
//处理消息有两种方式
|
||||||
|
// 1,主动拉数据(推荐),参照receiveMessage(consumer)
|
||||||
|
// 2, 添加监听,参照consumer.setMessageListener(messageListener), 服务端主动推数据给客户端,但得考虑接受的数据速率是客户能力能够承受住的
|
||||||
|
receiveMessage(consumer); |
||||||
|
// consumer.setMessageListener(messageListener);
|
||||||
|
} |
||||||
|
|
||||||
|
private static void receiveMessage(MessageConsumer consumer) throws JMSException { |
||||||
|
while (true) { |
||||||
|
try { |
||||||
|
// 建议异步处理收到的消息,确保receiveMessage函数里没有耗时逻辑。
|
||||||
|
Message message = consumer.receive(); |
||||||
|
processMessage(message); |
||||||
|
} catch (Exception e) { |
||||||
|
System.out.println("receiveMessage hand an exception: " + e.getMessage()); |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
private static MessageListener messageListener = message -> { |
||||||
|
try { |
||||||
|
// 建议异步处理收到的消息,确保onMessage函数里没有耗时逻辑。
|
||||||
|
// 如果业务处理耗时过程过长阻塞住线程,可能会影响SDK收到消息后的正常回调。
|
||||||
|
executorService.submit(() -> processMessage(message)); |
||||||
|
} catch (Exception e) { |
||||||
|
System.out.println("submit task occurs exception: " + e.getMessage()); |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
/** |
||||||
|
* 在这里处理您收到消息后的具体业务逻辑。 |
||||||
|
*/ |
||||||
|
private static void processMessage(Message message) { |
||||||
|
try { |
||||||
|
String body = message.getBody(String.class); |
||||||
|
String content = new String(body); |
||||||
|
System.out.println("receive an message, the content is " + content); |
||||||
|
} catch (Exception e) { |
||||||
|
System.out.println("processMessage occurs error: " + e.getMessage()); |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private static JmsConnectionListener myJmsConnectionListener = new JmsConnectionListener() { |
||||||
|
/** |
||||||
|
* 连接成功建立。 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void onConnectionEstablished(URI remoteURI) { |
||||||
|
System.out.println("onConnectionEstablished, remoteUri:" + remoteURI); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 尝试过最大重试次数之后,最终连接失败。 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void onConnectionFailure(Throwable error) { |
||||||
|
System.out.println("onConnectionFailure, " + error.getMessage()); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 连接中断。 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void onConnectionInterrupted(URI remoteURI) { |
||||||
|
System.out.println("onConnectionInterrupted, remoteUri:" + remoteURI); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 连接中断后又自动重连上。 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void onConnectionRestored(URI remoteURI) { |
||||||
|
System.out.println("onConnectionRestored, remoteUri:" + remoteURI); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void onInboundMessage(JmsInboundMessageDispatch envelope) { |
||||||
|
System.out.println("onInboundMessage, " + envelope); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void onSessionClosed(Session session, Throwable cause) { |
||||||
|
System.out.println("onSessionClosed, session=" + session + ", cause =" + cause); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void onConsumerClosed(MessageConsumer consumer, Throwable cause) { |
||||||
|
System.out.println("MessageConsumer, consumer=" + consumer + ", cause =" + cause); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void onProducerClosed(MessageProducer producer, Throwable cause) { |
||||||
|
System.out.println("MessageProducer, producer=" + producer + ", cause =" + cause); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,13 @@ |
|||||||
|
package com.cloud.kicc.amqp; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: lizhi |
||||||
|
* @Description: |
||||||
|
* @Since 1.0 |
||||||
|
* @Date Created in 9:56 2022/6/21 |
||||||
|
*/ |
||||||
|
public class testDemo { |
||||||
|
public static void main(String[] args) { |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,21 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.config; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties; |
||||||
|
import org.springframework.context.annotation.Configuration; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: TangSheng |
||||||
|
* @Description: |
||||||
|
* @Since 1.0 |
||||||
|
* @Date Created in 14:59 2022/4/18 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@Configuration |
||||||
|
@ConfigurationProperties("kicc") |
||||||
|
public class KiccProperties { |
||||||
|
|
||||||
|
/**百度地图appKey*/ |
||||||
|
private String mapAk; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,100 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.controller.equip; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.cloud.kicc.common.core.api.R; |
||||||
|
import com.cloud.kicc.commonbiz.service.beeper.EquipBeeperRecordService; |
||||||
|
import com.cloud.kicc.commonbiz.service.beeper.EquipBeeperService; |
||||||
|
import com.cloud.kicc.equip.api.entity.beeper.EquipBeeper; |
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
|
||||||
|
import java.util.Arrays; |
||||||
|
|
||||||
|
/** |
||||||
|
* 呼叫器设备信息(EquipBeeper)表控制层 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-06 14:18:38 |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@RequiredArgsConstructor |
||||||
|
@RequestMapping("/equip/beeper") |
||||||
|
public class EquipBeeperController { |
||||||
|
|
||||||
|
private final EquipBeeperService equipBeeperService; |
||||||
|
|
||||||
|
|
||||||
|
private final EquipBeeperRecordService equipBeeperRecordService; |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取呼叫器信息 |
||||||
|
* @param id |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@GetMapping(value = "/getById") |
||||||
|
public R getEquipBeeperInfo(@RequestParam("id") String id) { |
||||||
|
return R.ok(equipBeeperService.getData(id)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 新增呼叫器信息 |
||||||
|
* @param param |
||||||
|
* @return |
||||||
|
* @throws Exception |
||||||
|
*/ |
||||||
|
@PostMapping(value = "/add") |
||||||
|
public R add(@RequestBody EquipBeeper param) { |
||||||
|
boolean save = equipBeeperService.save(param); |
||||||
|
// 自定义code
|
||||||
|
param.setBeeperCode("H"+ param.getId()); |
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 编辑呼叫器信息 |
||||||
|
* @param param |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@PutMapping(value = "/update") |
||||||
|
public R update(@RequestBody EquipBeeper param) { |
||||||
|
equipBeeperService.updateById(param); |
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取呼叫器列表 |
||||||
|
* @return |
||||||
|
* @throws Exception |
||||||
|
*/ |
||||||
|
@GetMapping(value = "/list") |
||||||
|
public R list(Page page, EquipBeeper equipBeeper) { |
||||||
|
return R.ok(equipBeeperService.pageData(page, equipBeeper)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 删除呼叫器 |
||||||
|
* @Date: 2021/9/27 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
@DeleteMapping(value = "/remove/{id:[\\w,]+}") |
||||||
|
public R remove(@PathVariable("id") String[] id) { |
||||||
|
this.equipBeeperService.removeByIds(Arrays.asList(id)); |
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 查询呼叫器呼叫记录列表 |
||||||
|
* @Date: 2021/9/26 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
@GetMapping(value = "/record/list") |
||||||
|
public R listEquipBeeperRecord(@RequestParam("beeperCode") String beeperCode) { |
||||||
|
return R.ok(equipBeeperRecordService.listBeeperRecord(beeperCode)); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,105 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.controller.equip; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.cloud.kicc.common.core.api.R; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.EquipBoxCardService; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxCard; |
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
|
||||||
|
import java.util.Arrays; |
||||||
|
|
||||||
|
/** |
||||||
|
* 物联网卡管理(EquipBoxCard)表控制层 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2022-02-13 12:06:30 |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@RequiredArgsConstructor |
||||||
|
@RequestMapping("/equip/boxcard") |
||||||
|
public class EquipBoxCardController { |
||||||
|
|
||||||
|
|
||||||
|
private final EquipBoxCardService equipBoxCardService; |
||||||
|
|
||||||
|
/** |
||||||
|
* 分页查询所有数据 |
||||||
|
* @return 所有数据 |
||||||
|
*/ |
||||||
|
@GetMapping("/page") |
||||||
|
public R page(Page page, EquipBoxCard equipBoxCard) { |
||||||
|
LambdaQueryWrapper<EquipBoxCard> queryWrapper = new LambdaQueryWrapper<>(); |
||||||
|
queryWrapper.eq(StrUtil.isNotBlank(equipBoxCard.getStatus()),EquipBoxCard::getCard, equipBoxCard.getStatus()); |
||||||
|
queryWrapper.like(StrUtil.isNotBlank(equipBoxCard.getIccid()),EquipBoxCard::getIccid, equipBoxCard.getIccid()); |
||||||
|
queryWrapper.like(StrUtil.isNotBlank(equipBoxCard.getCard()),EquipBoxCard::getCard, equipBoxCard.getCard()); |
||||||
|
|
||||||
|
IPage<EquipBoxCard> iPage = this.equipBoxCardService.getBaseMapper().selectPage(page, queryWrapper); |
||||||
|
|
||||||
|
return R.ok(iPage.getRecords(), iPage.getSize()); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 获取卡列表,用于下拉选择 |
||||||
|
* @Date: 2022/2/13 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
@GetMapping("/listForSelect") |
||||||
|
public R listCardForSelect(@RequestParam("isUsed") Integer isUsed) throws Exception{ |
||||||
|
return R.ok(equipBoxCardService.listCardForSelect(isUsed)); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 通过主键查询单条数据 |
||||||
|
* |
||||||
|
* @param id 主键 |
||||||
|
* @return 单条数据 |
||||||
|
*/ |
||||||
|
@GetMapping("/getById") |
||||||
|
public R getById(@RequestParam("id") String id) { |
||||||
|
return R.ok(this.equipBoxCardService.getById(id)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 新增数据 |
||||||
|
* @param param 实体对象 |
||||||
|
* @return 新增结果 |
||||||
|
*/ |
||||||
|
@PostMapping("/add") |
||||||
|
public R add(@RequestBody EquipBoxCard param) { |
||||||
|
this.equipBoxCardService.save(param); |
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 修改数据 |
||||||
|
* |
||||||
|
* @param param 实体对象 |
||||||
|
* @return 修改结果 |
||||||
|
*/ |
||||||
|
@PutMapping("/update") |
||||||
|
public R update(@RequestBody EquipBoxCard param) { |
||||||
|
return R.ok(this.equipBoxCardService.updateById(param)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 启用、禁用、删除数据 |
||||||
|
* |
||||||
|
* @param id 主键 |
||||||
|
* @return 删除结果 |
||||||
|
*/ |
||||||
|
@DeleteMapping("/remove/{id:[\\w,]+}") |
||||||
|
public R remove(@PathVariable("id") String[] id) { |
||||||
|
this.equipBoxCardService.removeByIds(Arrays.asList(id)); |
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,130 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.controller.equip; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.cloud.kicc.common.core.api.R; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.BoxDownCmdService; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.EquipBoxLogService; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.EquipBoxRecordService; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.EquipBoxService; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBox; |
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
|
||||||
|
import java.util.Arrays; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱设备信息(EquipBox)表控制层 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-14 19:07:07 |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@RequiredArgsConstructor |
||||||
|
@RequestMapping("/equip/box") |
||||||
|
public class EquipBoxController { |
||||||
|
|
||||||
|
|
||||||
|
private final EquipBoxService equipBoxService; |
||||||
|
|
||||||
|
private final EquipBoxLogService equipBoxLogService; |
||||||
|
|
||||||
|
private final EquipBoxRecordService equipBoxRecordService; |
||||||
|
|
||||||
|
private final BoxDownCmdService boxDownCmdService; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 获取标本箱信息 |
||||||
|
* @param id |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@GetMapping("/getById") |
||||||
|
public R getById(@RequestParam("id") String id) { |
||||||
|
return R.ok(equipBoxService.getData(id)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 新增标本箱信息 |
||||||
|
* @param param |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@PostMapping("/add") |
||||||
|
public R add(@RequestBody EquipBox param) { |
||||||
|
return R.ok(equipBoxService.addData(param)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 编辑标本箱信息 |
||||||
|
* @param param |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@PutMapping |
||||||
|
public R update(@RequestBody EquipBox param) { |
||||||
|
return R.ok(equipBoxService.updateById(param)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取标本箱列表 |
||||||
|
* @param page |
||||||
|
* @param equipBox |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@GetMapping(value = "/list") |
||||||
|
public R listEquipBox(Page page, EquipBox equipBox) { |
||||||
|
return R.ok(equipBoxService.pageData(page, equipBox)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 删除标本箱 |
||||||
|
* @Date: 2021/9/27 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
@DeleteMapping("/remove/{id:[\\w,]+}") |
||||||
|
public R remove(@PathVariable String[] id) { |
||||||
|
this.equipBoxService.removeByIds(Arrays.asList(id)); |
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 查询标本箱心跳日志列表 |
||||||
|
* @Date: 2021/9/26 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
@GetMapping("/log/list") |
||||||
|
public R listEquipBoxLogs(@RequestParam("boxId") Integer boxId) { |
||||||
|
return R.ok(equipBoxLogService.listBoxLogs(boxId)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 查询标本箱操作日志列表 |
||||||
|
* @Date: 2021/9/26 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
@GetMapping(value = "/record/list") |
||||||
|
public R listEquipBoxRecords(@RequestParam("boxId") String boxId) { |
||||||
|
return R.ok(equipBoxRecordService.listBoxRecords(boxId)); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 统一下发指令接口 |
||||||
|
* @Date: 2021/9/24 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
@GetMapping(value = "/cmd") |
||||||
|
public R cmdToEquipBox(@RequestParam("id") String id, |
||||||
|
@RequestParam("cmd") Integer cmd, |
||||||
|
@RequestParam(value = "data",required = false) String data){ |
||||||
|
boxDownCmdService.downCmdToEquipBox(id, cmd,data); |
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,93 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.controller.equip; |
||||||
|
|
||||||
|
|
||||||
|
import com.cloud.kicc.common.core.api.R; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.BoxDownCmdService; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.EquipBoxUserService; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxUser; |
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
|
||||||
|
import java.util.Arrays; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱设备信息(EquipBox)表控制层 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-14 19:07:07 |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@RequiredArgsConstructor |
||||||
|
@RequestMapping("/equip/box/user") |
||||||
|
public class EquipBoxUserController { |
||||||
|
|
||||||
|
|
||||||
|
private final EquipBoxUserService equipBoxUserService; |
||||||
|
|
||||||
|
private final BoxDownCmdService boxDownCmdService; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 新增标本箱用户 |
||||||
|
* @Date: 2021/9/26 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
@PostMapping("/add") |
||||||
|
public R add(@RequestBody EquipBoxUser param) { |
||||||
|
equipBoxUserService.addData(param); |
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 修改标本箱用户 |
||||||
|
* @Date: 2021/9/26 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
@PutMapping("/update") |
||||||
|
public R update(@RequestBody EquipBoxUser param) { |
||||||
|
equipBoxUserService.updateById(param); |
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 查询标本箱用户列表 |
||||||
|
* @Date: 2021/9/26 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
@GetMapping("/list") |
||||||
|
public R listEquipBoxUser(@RequestParam("boxId") String boxId, |
||||||
|
@RequestParam(value = "userName", required = false) String userName) { |
||||||
|
return R.ok(equipBoxUserService.listBoxUser(boxId, userName)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 删除标本箱用户 - 前提是已删除指纹 |
||||||
|
* @Date: 2021/9/27 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
@DeleteMapping("/remove/{id:[\\w,]+}") |
||||||
|
public R remove(@PathVariable String[] id) { |
||||||
|
this.equipBoxUserService.removeByIds(Arrays.asList(id)); |
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 下发添加指纹指令 |
||||||
|
* @Date: 2021/9/24 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
@GetMapping("/changeFid") |
||||||
|
public R changeUserFid(@RequestParam("id") String id, @RequestParam("cmd") Integer cmd) { |
||||||
|
boxDownCmdService.changeEquipUser(id, cmd); |
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,99 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.controller.equip; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.cloud.kicc.common.core.api.R; |
||||||
|
import com.cloud.kicc.common.core.constant.AppConstants; |
||||||
|
import com.cloud.kicc.commonbiz.service.EquipSpecimenService; |
||||||
|
import com.cloud.kicc.equip.api.entity.EquipSpecimen; |
||||||
|
import com.cloud.kicc.equip.api.vo.EquipSpecimenUsageVo; |
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
|
||||||
|
import java.util.Arrays; |
||||||
|
|
||||||
|
@RequiredArgsConstructor |
||||||
|
@RestController |
||||||
|
@RequestMapping("/equip/specimen") |
||||||
|
public class EquipSpecimenController { |
||||||
|
|
||||||
|
|
||||||
|
private final EquipSpecimenService equipSpecimenService; |
||||||
|
|
||||||
|
/** |
||||||
|
* 新增标本箱信息 |
||||||
|
* @param param |
||||||
|
* @return |
||||||
|
* @throws Exception |
||||||
|
*/ |
||||||
|
@PostMapping("/add") |
||||||
|
public R add(@RequestBody EquipSpecimen param) { |
||||||
|
return R.ok(equipSpecimenService.save(param)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取标本箱信息 |
||||||
|
* @param esId |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@GetMapping("/getById") |
||||||
|
public R getEquipSpecimen(@RequestParam("esId") String esId) { |
||||||
|
return R.ok(equipSpecimenService.getById(esId)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取标本箱详细信息 |
||||||
|
* @param esId |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@GetMapping("/specimenDetail") |
||||||
|
public R getEquipSpecimenDetail(@RequestParam("esId") String esId) { |
||||||
|
EquipSpecimenUsageVo equip = equipSpecimenService.getDetailInfo(esId); |
||||||
|
return R.ok(equip); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 编辑标本箱信息 |
||||||
|
* @param param |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@PutMapping("/specimen") |
||||||
|
public R updateEquipSpecimen(@RequestBody EquipSpecimen param) { |
||||||
|
return R.ok(equipSpecimenService.saveOrUpdate(param)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取标本箱列表 |
||||||
|
* @param page |
||||||
|
* @param specimen |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@GetMapping("/listSpecimen") |
||||||
|
public R listEquipSpecimen(Page page, EquipSpecimen specimen) { |
||||||
|
return R.ok(equipSpecimenService.pageData(page, specimen)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 查询标本箱当前使用情况 |
||||||
|
* @param syUserId |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@GetMapping("/specimenUsage") |
||||||
|
public R getEquipSpecimenUsage(@RequestParam("syUserId") String syUserId) { |
||||||
|
EquipSpecimenUsageVo equip = equipSpecimenService.getEquipSpecimenUsage(syUserId); |
||||||
|
return R.ok(equip); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 删除 |
||||||
|
* @param id |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@DeleteMapping("/remove/{id:[\\w,]+}") |
||||||
|
public R remove(@PathVariable String[] id) { |
||||||
|
this.equipSpecimenService.removeByIds(Arrays.asList(id)); |
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,126 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.controller.equip; |
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.cloud.kicc.common.core.api.R; |
||||||
|
import com.cloud.kicc.common.core.constant.AppConstants; |
||||||
|
import com.cloud.kicc.commonbiz.service.EquipTemperatureRecordService; |
||||||
|
import com.cloud.kicc.commonbiz.service.EquipTemperatureService; |
||||||
|
import com.cloud.kicc.equip.api.constant.EquipConstants; |
||||||
|
import com.cloud.kicc.equip.api.dto.EquipTemperatureRecordParam; |
||||||
|
import com.cloud.kicc.equip.api.entity.EquipTemperature; |
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
|
||||||
|
import javax.validation.Valid; |
||||||
|
import java.util.Arrays; |
||||||
|
|
||||||
|
@RequiredArgsConstructor |
||||||
|
@RestController |
||||||
|
@RequestMapping("/equip/temperature") |
||||||
|
public class EquipTemperatureController { |
||||||
|
|
||||||
|
|
||||||
|
private final EquipTemperatureService equipTemperatureService; |
||||||
|
|
||||||
|
private final EquipTemperatureRecordService equipTemperatureRecordService; |
||||||
|
|
||||||
|
/** |
||||||
|
* 新增报告单信息 |
||||||
|
* @param param |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@PostMapping(value = "/add") |
||||||
|
public R add(@Valid @RequestBody EquipTemperature param) { |
||||||
|
if (StrUtil.isNotBlank(param.getEquipName())){ |
||||||
|
param.setEquipName(EquipConstants.TEMP_NAME_PREFIX+param.getEquipCode()); |
||||||
|
} |
||||||
|
return R.ok(equipTemperatureService.save(param)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取报告单信息 |
||||||
|
* @param id |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@GetMapping("/getById") |
||||||
|
public R getById(@RequestParam("etId") String id) { |
||||||
|
return R.ok(equipTemperatureService.getById(id)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 编辑报告单信息 |
||||||
|
* @param param |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@PutMapping(value = "/update") |
||||||
|
public R update(@RequestBody EquipTemperature param) { |
||||||
|
if (StrUtil.isNotBlank(param.getEquipName())){ |
||||||
|
param.setEquipName(EquipConstants.TEMP_NAME_PREFIX+param.getEquipCode()); |
||||||
|
} |
||||||
|
return R.ok(equipTemperatureService.saveOrUpdate(param)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取可选择温控设备下拉列表 |
||||||
|
* @param id |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@GetMapping("/listForSelect") |
||||||
|
public R getEquipTempForSelect(@RequestParam(value = "id",required = false) String id) { |
||||||
|
//List<EquipTempSelectVo> equipTemperature = equipTemperatureService.listEquipTempForSelect(esId);
|
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取温控设备list |
||||||
|
* @param page |
||||||
|
* @param equipTemperature |
||||||
|
* @return |
||||||
|
* @throws Exception |
||||||
|
*/ |
||||||
|
@GetMapping(value = "/list") |
||||||
|
public R listEquipTemperature(Page page, EquipTemperature equipTemperature) { |
||||||
|
IPage<EquipTemperature> iPage = equipTemperatureService.pageData(page, equipTemperature); |
||||||
|
return R.ok(iPage.getRecords(), iPage.getTotal()); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 删除温控设备 |
||||||
|
* @param id |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@DeleteMapping("/remove/{id:[\\w,]+}") |
||||||
|
public R remove(@PathVariable("id") String[] id){ |
||||||
|
equipTemperatureService.removeByIds(Arrays.asList(id)); |
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 查询温控设备记录 |
||||||
|
* @Date: 2021/12/6 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
@GetMapping("/records") |
||||||
|
public R listEquipTemperatureRecord(Page page, EquipTemperatureRecordParam param) { |
||||||
|
//equipTemperatureRecordService.listRecord(page, param)
|
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 导出温控设备的数据 |
||||||
|
* @Date: 2021/12/6 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
@GetMapping(value = "/export") |
||||||
|
public R listEquipTemperatureRecord(EquipTemperatureRecordParam param) { |
||||||
|
//equipTemperatureRecordService.exportRecordForPfd(param);
|
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,34 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.mapper.equip; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.cloud.kicc.equip.api.entity.beeper.EquipBeeper; |
||||||
|
import org.apache.ibatis.annotations.Mapper; |
||||||
|
import org.apache.ibatis.annotations.Param; |
||||||
|
|
||||||
|
/** |
||||||
|
* 呼叫器设备信息(EquipBeeper)表数据库访问层 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-06 14:18:37 |
||||||
|
*/ |
||||||
|
@Mapper |
||||||
|
public interface EquipBeeperMapper extends BaseMapper<EquipBeeper> { |
||||||
|
|
||||||
|
/** |
||||||
|
* 查询数据 |
||||||
|
* @param id |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
EquipBeeper selectData(@Param("id") String id); |
||||||
|
|
||||||
|
/** |
||||||
|
* 查询分页树 |
||||||
|
* @param page 分页 |
||||||
|
* @param param 查询条件 |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
IPage<EquipBeeper> pageQuery(IPage<EquipBeeper> page, @Param(value = "opm") EquipBeeper param); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.mapper.equip; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
import com.cloud.kicc.equip.api.entity.beeper.EquipBeeperRecord; |
||||||
|
import org.apache.ibatis.annotations.Mapper; |
||||||
|
|
||||||
|
/** |
||||||
|
* 呼叫器设备呼叫记录(EquipBeeperRecord)表数据库访问层 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-06 14:20:39 |
||||||
|
*/ |
||||||
|
@Mapper |
||||||
|
public interface EquipBeeperRecordMapper extends BaseMapper<EquipBeeperRecord> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.mapper.equip; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxCard; |
||||||
|
import org.apache.ibatis.annotations.Mapper; |
||||||
|
|
||||||
|
/** |
||||||
|
* 物联网卡管理(EquipBoxCard)表数据库访问层 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2022-02-13 12:06:29 |
||||||
|
*/ |
||||||
|
@Mapper |
||||||
|
public interface EquipBoxCardMapper extends BaseMapper<EquipBoxCard> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.mapper.equip; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxLog; |
||||||
|
import org.apache.ibatis.annotations.Mapper; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱心跳日志记录(EquipBoxLog)表数据库访问层 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-17 10:25:07 |
||||||
|
*/ |
||||||
|
@Mapper |
||||||
|
public interface EquipBoxLogMapper extends BaseMapper<EquipBoxLog> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,34 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.mapper.equip; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBox; |
||||||
|
import org.apache.ibatis.annotations.Mapper; |
||||||
|
import org.apache.ibatis.annotations.Param; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱设备信息(EquipBox)表数据库访问层 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-14 19:07:07 |
||||||
|
*/ |
||||||
|
@Mapper |
||||||
|
public interface EquipBoxMapper extends BaseMapper<EquipBox> { |
||||||
|
|
||||||
|
/** |
||||||
|
* 根据标本箱id查询标本箱信息 |
||||||
|
* @param id |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
EquipBox selectData(String id); |
||||||
|
|
||||||
|
/** |
||||||
|
* 分页条件查询标本箱信息 |
||||||
|
* @param page |
||||||
|
* @param param |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
IPage<EquipBox> pageQuery(IPage<EquipBox> page, @Param(value = "opm") EquipBox param); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.mapper.equip; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxRecord; |
||||||
|
import org.apache.ibatis.annotations.Mapper; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱操作记录(EquipBoxRecord)表数据库访问层 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-15 09:39:47 |
||||||
|
*/ |
||||||
|
@Mapper |
||||||
|
public interface EquipBoxRecordMapper extends BaseMapper<EquipBoxRecord> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,19 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.mapper.equip; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxRfidLog; |
||||||
|
import org.apache.ibatis.annotations.Mapper; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱RFIDj记录信息(EquipBoxRfidLog)表数据库访问层 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-25 15:10:33 |
||||||
|
*/ |
||||||
|
@Mapper |
||||||
|
public interface EquipBoxRfidLogMapper extends BaseMapper<EquipBoxRfidLog> { |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,21 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.mapper.equip; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxUser; |
||||||
|
import org.apache.ibatis.annotations.Mapper; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱指纹用户信息(EquipBoxUser)表数据库访问层 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-15 09:40:50 |
||||||
|
*/ |
||||||
|
@Mapper |
||||||
|
public interface EquipBoxUserMapper extends BaseMapper<EquipBoxUser> { |
||||||
|
|
||||||
|
List<EquipBoxUser> listQuery(EquipBoxUser param); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,28 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.mapper.equip; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.cloud.kicc.equip.api.entity.EquipSpecimen; |
||||||
|
import com.cloud.kicc.equip.api.vo.EquipSpecimenListVo; |
||||||
|
import org.apache.ibatis.annotations.Mapper; |
||||||
|
import org.apache.ibatis.annotations.Param; |
||||||
|
|
||||||
|
@Mapper |
||||||
|
public interface EquipSpecimenMapper extends BaseMapper<EquipSpecimen> { |
||||||
|
|
||||||
|
/** |
||||||
|
* 分页条件查询 |
||||||
|
* @param page |
||||||
|
* @param param |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
IPage<EquipSpecimenListVo> pageQuery(IPage<EquipSpecimen> page, @Param(value = "opm") EquipSpecimen param); |
||||||
|
|
||||||
|
/** |
||||||
|
* 根据当前登录用户id获取其标本箱的信息以及温度信息 |
||||||
|
* @param id 用户id |
||||||
|
* @return EquipSpecimenListVo |
||||||
|
*/ |
||||||
|
EquipSpecimenListVo getEquipSpecimenInfo(Integer id); |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.mapper.equip; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
import com.cloud.kicc.equip.api.entity.EquipTemperature; |
||||||
|
import org.apache.ibatis.annotations.Mapper; |
||||||
|
|
||||||
|
@Mapper |
||||||
|
public interface EquipTemperatureMapper extends BaseMapper<EquipTemperature> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,13 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.mapper.equip; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
import com.cloud.kicc.equip.api.entity.EquipTemperatureRecord; |
||||||
|
import org.apache.ibatis.annotations.Mapper; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Mapper |
||||||
|
public interface EquipTemperatureRecordMapper extends BaseMapper<EquipTemperatureRecord> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,62 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
import com.cloud.kicc.equip.api.entity.EquipSpecimen; |
||||||
|
import com.cloud.kicc.equip.api.vo.EquipSpecimenListVo; |
||||||
|
import com.cloud.kicc.equip.api.vo.EquipSpecimenUsageVo; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: |
||||||
|
* @Date: 2020/12/28 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
public interface EquipSpecimenService extends IService<EquipSpecimen> { |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 查询收样员当前使用的标本箱情况 |
||||||
|
* @Date: 2021/1/5 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
EquipSpecimenUsageVo getEquipSpecimenUsage(String syUserId); |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 查询当前标本箱使用情况 |
||||||
|
* @Date: 2021/1/5 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
EquipSpecimenUsageVo getDetailInfo(String esId); |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 查询当前已有标本箱的收样员列表 |
||||||
|
* @Date: 2021/1/5 |
||||||
|
* @Modified by: |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
List<String> listSyUserId(); |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 分页 |
||||||
|
* @Date: 2021/1/5 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
IPage<EquipSpecimenListVo> pageData(Page page, EquipSpecimen param); |
||||||
|
|
||||||
|
/** |
||||||
|
* 查询当前设备箱的温控设备温度,若温度异常则插入消息 |
||||||
|
* 若消息收样员超过十分钟没有读取消息则通知当前在线的客服 |
||||||
|
* @param remindUserId 当前登录用户的id |
||||||
|
* @param remindUserName 当前登录用户名 |
||||||
|
* @param remindType 类型 |
||||||
|
* @return RemindHourVo |
||||||
|
*/ |
||||||
|
//RemindHourVo equipSpecimenList(String remindUserId,String remindUserName, Integer remindType);
|
||||||
|
} |
@ -0,0 +1,35 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
import com.cloud.kicc.equip.api.dto.EquipTemperatureRecordParam; |
||||||
|
import com.cloud.kicc.equip.api.entity.EquipTemperatureRecord; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: |
||||||
|
* @Date: 2020/12/28 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
public interface EquipTemperatureRecordService extends IService<EquipTemperatureRecord> { |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 获取可选择的温控设备下拉列表 |
||||||
|
* @Date: 2020/12/29 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
//List<EquipTemperatureRecord> listRecord(EquipTemperatureRecordParam param);
|
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 导出标本箱温控数据,生成pdf |
||||||
|
* @Date: 2021/12/6 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
//String exportRecordForPfd(EquipTemperatureRecordParam param);
|
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,49 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
import com.cloud.kicc.equip.api.entity.EquipTemperature; |
||||||
|
import com.cloud.kicc.equip.api.vo.EquipTempSelectVo; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: |
||||||
|
* @Date: 2020/12/28 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
public interface EquipTemperatureService extends IService<EquipTemperature> { |
||||||
|
|
||||||
|
|
||||||
|
//EquipTemperature pullEquipmentDataByApi(String etId);
|
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 定时拉取温控设备最新数据 |
||||||
|
* @Date: 2020/12/29 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
void taskToPullTemperatureEquipData(); |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 获取可选择的温控设备下拉列表 |
||||||
|
* @Date: 2020/12/29 |
||||||
|
* @Modified by: |
||||||
|
* @param esId |
||||||
|
*/ |
||||||
|
//List<EquipTempSelectVo> listEquipTempForSelect(String esId) throws Exception;
|
||||||
|
|
||||||
|
/** |
||||||
|
* 分页条件查询 |
||||||
|
* @param page |
||||||
|
* @param param |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
IPage<EquipTemperature> pageData(Page page, EquipTemperature param); |
||||||
|
} |
@ -0,0 +1,24 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.beeper; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
import com.cloud.kicc.equip.api.entity.beeper.EquipBeeperRecord; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* 呼叫器设备呼叫记录(EquipBeeperRecord)表服务接口 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-06 14:20:39 |
||||||
|
*/ |
||||||
|
public interface EquipBeeperRecordService extends IService<EquipBeeperRecord> { |
||||||
|
|
||||||
|
/** |
||||||
|
* 查询呼叫器呼叫记录列表 |
||||||
|
* @param beeperCode 设备编码code |
||||||
|
* @return 记录 |
||||||
|
*/ |
||||||
|
List<EquipBeeperRecord> listBeeperRecord(String beeperCode); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,60 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.beeper; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
import com.cloud.kicc.equip.api.entity.beeper.EquipBeeper; |
||||||
|
|
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
* 呼叫器设备信息(EquipBeeper)表服务接口 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-06 14:18:37 |
||||||
|
*/ |
||||||
|
public interface EquipBeeperService extends IService<EquipBeeper> { |
||||||
|
|
||||||
|
/** |
||||||
|
* 根据设备编码查询 |
||||||
|
* @param beeperCode |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
EquipBeeper getByCode(String beeperCode); |
||||||
|
|
||||||
|
/** |
||||||
|
* 根据id查询 |
||||||
|
* @param id |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
EquipBeeper getData(String id); |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 分页 |
||||||
|
* @Date: 2021/1/5 |
||||||
|
* @Modified by: |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
IPage<EquipBeeper> pageData(Page page, EquipBeeper param); |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取呼叫器无线 |
||||||
|
* @param beeperCode |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
Map<String,String> getBeeperWifi(String beeperCode); |
||||||
|
|
||||||
|
/** |
||||||
|
* 呼叫器新增呼叫记录 |
||||||
|
* @param beeperCode |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
boolean beeperToCall(String beeperCode); |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,47 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.box; |
||||||
|
|
||||||
|
|
||||||
|
import com.cloud.kicc.equip.api.dto.box.DownCmdParam; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱下行指令服务接口 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-14 19:07:07 |
||||||
|
*/ |
||||||
|
public interface BoxDownCmdService { |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 发送语音消息给标本箱 |
||||||
|
* @Date: 2021/9/24 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
boolean sendVoiceToEquipBox(String boxId, String data); |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 新增、删除标本箱指纹 |
||||||
|
* @Date: 2021/9/24 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
boolean changeEquipUser(String boxUserId, Integer cmd); |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 下行指令给标本箱 - 目前用于 重置标本箱配置信息/获取所有用户指纹/删除所有用户指纹/修改标本箱各种状态 |
||||||
|
* @Date: 2021/9/24 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
boolean downCmdToEquipBox(String boxId, Integer cmd, String data); |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 统一处理下发指令的返回值 |
||||||
|
* @Date: 2021/9/25 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
boolean handleDownCmdResult(DownCmdParam downParam); |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,54 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.box; |
||||||
|
|
||||||
|
import com.cloud.kicc.equip.api.dto.box.UpCmdParam; |
||||||
|
import com.cloud.kicc.equip.api.vo.box.EquipBoxConfigVo; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱上行指令服务接口 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-14 19:07:07 |
||||||
|
*/ |
||||||
|
public interface BoxUpCmdService { |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 开启socket连接 |
||||||
|
* @Date: 2021/9/15 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
String beginTelnet(String iccid); |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 获取标本箱配置信息 |
||||||
|
* @Date: 2021/9/15 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
EquipBoxConfigVo getBoxConfig(String boxCode) throws Exception; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 心跳上报标本箱数据 |
||||||
|
* @Date: 2021/9/16 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
boolean beatBoxInfo(UpCmdParam param) throws Exception; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 修改标本箱状态 |
||||||
|
* @Date: 2021/9/17 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
boolean updateBoxState(UpCmdParam param) throws Exception; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 新增标本箱rfid上报记录 |
||||||
|
* @Date: 2021/9/17 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
boolean addBoxRfidLog(UpCmdParam param, Integer rfidType) throws Exception; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.box; |
||||||
|
|
||||||
|
import com.cloud.kicc.equip.api.vo.box.DownCmdVo; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱下行指令服务接口 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-14 19:07:07 |
||||||
|
*/ |
||||||
|
public interface DownCmdService { |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 下行指令给标本箱 |
||||||
|
* @Date: 2021/9/24 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
String downCmdToBox(String boxCode, DownCmdVo vo); |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,22 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.box; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxCard; |
||||||
|
import com.cloud.kicc.equip.api.vo.box.EquipBoxCardVo; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* 物联网卡管理(EquipBoxCard)表服务接口 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2022-02-13 12:06:30 |
||||||
|
*/ |
||||||
|
public interface EquipBoxCardService extends IService<EquipBoxCard> { |
||||||
|
|
||||||
|
|
||||||
|
List<EquipBoxCardVo> listCardForSelect(Integer isUsed) throws Exception; |
||||||
|
|
||||||
|
EquipBoxCard getByIccid(String iccid); |
||||||
|
} |
@ -0,0 +1,18 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.box; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxLog; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱心跳日志记录(EquipBoxLog)表服务接口 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-17 10:25:07 |
||||||
|
*/ |
||||||
|
public interface EquipBoxLogService extends IService<EquipBoxLog> { |
||||||
|
|
||||||
|
List<EquipBoxLog> listBoxLogs(Integer boxId); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,24 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.box; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
import com.cloud.kicc.equip.api.dto.box.UpCmdParam; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxRecord; |
||||||
|
import com.cloud.kicc.equip.api.vo.box.DownCmdVo; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱操作记录(EquipBoxRecord)表服务接口 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-15 09:39:47 |
||||||
|
*/ |
||||||
|
public interface EquipBoxRecordService extends IService<EquipBoxRecord> { |
||||||
|
|
||||||
|
boolean addData(UpCmdParam param, boolean rtn); |
||||||
|
|
||||||
|
boolean addData(String boxId, DownCmdVo vo, String relationId); |
||||||
|
|
||||||
|
List<EquipBoxRecord> listBoxRecords(String boxId); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,14 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.box; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxRfidLog; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱RFIDj记录信息(EquipBoxRfidLog)表服务接口 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-25 15:10:33 |
||||||
|
*/ |
||||||
|
public interface EquipBoxRfidLogService extends IService<EquipBoxRfidLog> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,34 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.box; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBox; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱设备信息(EquipBox)表服务接口 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-14 19:07:07 |
||||||
|
*/ |
||||||
|
public interface EquipBoxService extends IService<EquipBox> { |
||||||
|
|
||||||
|
EquipBox getByCode(String boxCode); |
||||||
|
|
||||||
|
EquipBox getByIccid(String iccid); |
||||||
|
|
||||||
|
/** |
||||||
|
* 根据id查询标本箱信息 |
||||||
|
* @param id |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
EquipBox getData(String id); |
||||||
|
|
||||||
|
boolean addData(EquipBox param); |
||||||
|
|
||||||
|
boolean updateStatusByCode(String boxCode, Integer boxStatus, Integer openStatus, Integer coldStatus,Integer warnStatus,Integer errorStatus); |
||||||
|
|
||||||
|
IPage<EquipBox> pageData(Page page, EquipBox equip); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,21 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.box; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxUser; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱指纹用户信息(EquipBoxUser)表服务接口 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-15 09:40:50 |
||||||
|
*/ |
||||||
|
public interface EquipBoxUserService extends IService<EquipBoxUser> { |
||||||
|
|
||||||
|
boolean addData(EquipBoxUser param); |
||||||
|
|
||||||
|
List<EquipBoxUser> listBoxUser(String boxId, String userName); |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,190 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.impl; |
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.convert.Convert; |
||||||
|
import cn.hutool.core.util.ObjectUtil; |
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import com.cloud.kicc.commonbiz.mapper.equip.EquipSpecimenMapper; |
||||||
|
import com.cloud.kicc.commonbiz.service.EquipSpecimenService; |
||||||
|
import com.cloud.kicc.commonbiz.service.EquipTemperatureService; |
||||||
|
import com.cloud.kicc.equip.api.entity.EquipSpecimen; |
||||||
|
import com.cloud.kicc.equip.api.entity.EquipTemperature; |
||||||
|
import com.cloud.kicc.equip.api.vo.EquipSpecimenListVo; |
||||||
|
import com.cloud.kicc.equip.api.vo.EquipSpecimenUsageVo; |
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.context.annotation.Lazy; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.security.SecureRandom; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
import java.util.stream.Collectors; |
||||||
|
|
||||||
|
@Service |
||||||
|
@Slf4j |
||||||
|
public class EquipSpecimenServiceImpl extends ServiceImpl<EquipSpecimenMapper, EquipSpecimen> implements EquipSpecimenService { |
||||||
|
|
||||||
|
@Lazy |
||||||
|
@Autowired |
||||||
|
private EquipTemperatureService equipTemperatureService; |
||||||
|
|
||||||
|
//private final RemindService remindService;
|
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public EquipSpecimenUsageVo getEquipSpecimenUsage(String syUserId) { |
||||||
|
LambdaQueryWrapper<EquipSpecimen> queryWrapper = new LambdaQueryWrapper<>(); |
||||||
|
queryWrapper.eq(EquipSpecimen::getSyUserId, syUserId); |
||||||
|
EquipSpecimen specimen = baseMapper.selectOne(queryWrapper); |
||||||
|
if (ObjectUtil.isEmpty(specimen) && StrUtil.isNotBlank(specimen.getEtId())) { |
||||||
|
EquipTemperature temperature = equipTemperatureService.getById(specimen.getEtId()); |
||||||
|
if (ObjectUtil.isNotNull(temperature)) { |
||||||
|
EquipSpecimenUsageVo usageVo = Convert.convert(EquipSpecimenUsageVo.class, temperature); |
||||||
|
usageVo.setId(specimen.getId()); |
||||||
|
usageVo.setBoxCode(specimen.getBoxCode()); |
||||||
|
usageVo.setBoxName(specimen.getBoxName()); |
||||||
|
return usageVo; |
||||||
|
} |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public EquipSpecimenUsageVo getDetailInfo(String esId) { |
||||||
|
EquipSpecimen specimen = baseMapper.selectById(esId); |
||||||
|
if (ObjectUtil.isEmpty(specimen) && StrUtil.isNotBlank(specimen.getEtId())) { |
||||||
|
EquipTemperature temperature = equipTemperatureService.getById(specimen.getEtId()); |
||||||
|
if (ObjectUtil.isNotNull(temperature)) { |
||||||
|
EquipSpecimenUsageVo usageVo = Convert.convert(EquipSpecimenUsageVo.class, temperature); |
||||||
|
usageVo.setId(specimen.getId()); |
||||||
|
usageVo.setBoxCode(specimen.getBoxCode()); |
||||||
|
usageVo.setBoxName(specimen.getBoxName()); |
||||||
|
usageVo.setSyUserId(specimen.getSyUserId()); |
||||||
|
return usageVo; |
||||||
|
} |
||||||
|
} |
||||||
|
return Convert.convert(EquipSpecimenUsageVo.class, specimen); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<String> listSyUserId() { |
||||||
|
LambdaQueryWrapper<EquipSpecimen> queryWrapper = new LambdaQueryWrapper<>(); |
||||||
|
queryWrapper.isNotNull(EquipSpecimen::getEtId).isNotNull(EquipSpecimen::getSyUserId); |
||||||
|
List<EquipSpecimen> specimenList = baseMapper.selectList(queryWrapper); |
||||||
|
if (ObjectUtil.isNotEmpty(specimenList)) { |
||||||
|
List<String> list = specimenList.stream().map(EquipSpecimen::getSyUserId).collect(Collectors.toList()); |
||||||
|
return list; |
||||||
|
} |
||||||
|
return new ArrayList<>(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public IPage<EquipSpecimenListVo> pageData(Page page, EquipSpecimen param) { |
||||||
|
IPage<EquipSpecimenListVo> rtn = baseMapper.pageQuery(page, param); |
||||||
|
return rtn; |
||||||
|
} |
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public RemindHourVo equipSpecimenList(String remindUserId, String remindUserName, Integer remindType) {
|
||||||
|
// RemindHourVo rv = new RemindHourVo();
|
||||||
|
// rv.setIsPlay(Constants.NO_CODE);
|
||||||
|
// //未读超时
|
||||||
|
// int overTime = 10;
|
||||||
|
// //查出当前登录的用户的设备etId
|
||||||
|
// QueryWrapper<EquipSpecimen> query = new QueryWrapper<>();
|
||||||
|
// query.select("et_id").eq("sy_user_id", remindUserId);
|
||||||
|
// EquipSpecimen one = equipSpecimenService.getOne(query);
|
||||||
|
// //当前登录用户没有温度设备时返回null,前端根据null判断是否继续监控
|
||||||
|
// if (EmptyUtil.isNullOrEmpty(one)) {
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
// //查询是否有属于当前用户的温度异常未读消息
|
||||||
|
// QueryWrapper<Remind> wrapper = new QueryWrapper<>();
|
||||||
|
// wrapper.eq("is_read", "0")
|
||||||
|
// .eq("remind_user_id", remindUserId)
|
||||||
|
// .eq("remind_type", "3")
|
||||||
|
// .eq("state", "1")
|
||||||
|
// .eq("mark", one.getEtId());
|
||||||
|
// List<Remind> list = remindService.list(wrapper);
|
||||||
|
//
|
||||||
|
// //根据当前登录用户id查出温控设备和标本箱信息
|
||||||
|
// EquipSpecimenListVo es = baseMapper.getEquipSpecimenInfo(remindUserId);
|
||||||
|
// Integer equipTemperature = es.getEquipTemperature();
|
||||||
|
// Integer height = es.getTemperatureMaxWarn();
|
||||||
|
// Integer low = es.getTemperatureMinWarn();
|
||||||
|
// if (equipTemperature > height || equipTemperature < low) {
|
||||||
|
// //若没有插入过消息并温控超标则插入消息
|
||||||
|
// if (list.size() == 0) {
|
||||||
|
// //还没有插入消息的情况
|
||||||
|
// Remind remind = new Remind();
|
||||||
|
// remind.setRemindUserId(es.getSyUserId());
|
||||||
|
// remind.setCreateUserId(remindUserId);
|
||||||
|
// remind.setCreateUserName(remindUserName);
|
||||||
|
// remind.setRemindType(3);
|
||||||
|
// remind.setRemindContent("【" + es.getBoxName() + "】温度异常,当前温度为" + es.getEquipTemperature() + "℃," + "请及时处理!");
|
||||||
|
// remind.setRemindType(RemindTypeEnum.SPECIMEN_BOX.getCode());
|
||||||
|
// remind.setSource(RemindSourceEnum.SPECIMEN_BOX_TEMPERATURE_ERROR.getCode());
|
||||||
|
// remind.setSourceName(RemindSourceEnum.SPECIMEN_BOX_TEMPERATURE_ERROR.getValue());
|
||||||
|
// remind.setMark(es.getEtId());
|
||||||
|
// remindService.sendRemindToUserById(remind, es.getSyUserId());
|
||||||
|
// //只要插入了信息就播报
|
||||||
|
// rv.setIsPlay(Constants.YES_CODE);
|
||||||
|
// rv.setRemindType(3);
|
||||||
|
//
|
||||||
|
// } else {
|
||||||
|
// QueryWrapper<Remind> wrapper1 = new QueryWrapper<>();
|
||||||
|
// wrapper1.eq("is_read", "0")
|
||||||
|
//// .eq("remind_user_id",remindUserId)
|
||||||
|
// .eq("remind_type", "4")
|
||||||
|
// .eq("state", "1")
|
||||||
|
// .eq("mark", one.getEtId());
|
||||||
|
// List<Remind> list1 = remindService.list(wrapper1);
|
||||||
|
// //这里要判断当前已登录的客服,从中随机获取一个
|
||||||
|
// List<Integer> ids = roleService.listUserIdsByIsLogin(3, 1);
|
||||||
|
// ids.forEach(ls -> {
|
||||||
|
// System.out.println("在线客服id = " + ls);
|
||||||
|
// });
|
||||||
|
// SecureRandom random = new SecureRandom();
|
||||||
|
// int n = random.nextInt(ids.size());
|
||||||
|
// Integer randomId = ids.get(n);
|
||||||
|
// System.out.println("随机 = " + randomId);
|
||||||
|
// List<Remind> remindList = new ArrayList<>();
|
||||||
|
// //已经插入过消息了,但是收样员没有已读的情况
|
||||||
|
// //若有属于当前用户的温度异常消息则判断是否以及超过十分钟未读
|
||||||
|
// list.forEach(li -> {
|
||||||
|
// //用当前时间减去入库时间,大于10分钟则提醒客服
|
||||||
|
// long l = System.currentTimeMillis() - li.getCreateDate().getTime();
|
||||||
|
// long minutes = l / 1000 / 60;
|
||||||
|
// //仅当超过十分钟并且没有插入过消息时插入新消息
|
||||||
|
// if (minutes > overTime && list1.size() == 0) {
|
||||||
|
// Remind remind = new Remind();
|
||||||
|
// remind.setRemindUserId(randomId);
|
||||||
|
// remind.setMark(es.getEtId());
|
||||||
|
// remind.setRemindContent("【" + li.getCreateUserName() + "】有标本箱温度异常,请通知其及时处理!");
|
||||||
|
// remind.setCreateUserId(remindUserId);
|
||||||
|
// remind.setCreateUserName(remindUserName);
|
||||||
|
// remind.setSource(RemindSourceEnum.SPECIMEN_BOX_TEMPERATURE_ERROR.getCode());
|
||||||
|
// remind.setSourceName(RemindSourceEnum.SPECIMEN_BOX_TEMPERATURE_ERROR.getValue());
|
||||||
|
// remind.setRemindType(RemindTypeEnum.SPECIMEN_BOX.getCode());
|
||||||
|
// remindList.add(remind);
|
||||||
|
// rv.setIsPlay(Constants.YES_CODE);
|
||||||
|
// rv.setRemindType(RemindTypeEnum.SPECIMEN_BOX.getCode());
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// if (CommonUtil.listIsNotNull(remindList)) {
|
||||||
|
// remindService.sendRemindsToUserById(remindList, RemindSourceEnum.SPECIMEN_BOX_TEMPERATURE_ERROR.getCode(), randomId);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// return rv;
|
||||||
|
// }
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,109 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.impl; |
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil; |
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
|
||||||
|
import com.cloud.kicc.common.core.api.R; |
||||||
|
import com.cloud.kicc.commonbiz.mapper.equip.EquipTemperatureRecordMapper; |
||||||
|
import com.cloud.kicc.commonbiz.service.EquipSpecimenService; |
||||||
|
import com.cloud.kicc.commonbiz.service.EquipTemperatureRecordService; |
||||||
|
import com.cloud.kicc.equip.api.dto.EquipTemperatureRecordParam; |
||||||
|
import com.cloud.kicc.equip.api.entity.EquipTemperatureRecord; |
||||||
|
|
||||||
|
import com.cloud.kicc.system.api.feign.RemoteUserService; |
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.context.annotation.Lazy; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@RequiredArgsConstructor |
||||||
|
@Service |
||||||
|
@Slf4j |
||||||
|
public class EquipTemperatureRecordServiceImpl extends ServiceImpl<EquipTemperatureRecordMapper, EquipTemperatureRecord> implements EquipTemperatureRecordService { |
||||||
|
|
||||||
|
@Lazy |
||||||
|
@Autowired |
||||||
|
private EquipSpecimenService equipSpecimenService; |
||||||
|
|
||||||
|
//private final ReportInfoService reportInfoService;
|
||||||
|
|
||||||
|
private final RemoteUserService userService; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 查询温控设备记录列表 |
||||||
|
* @param param |
||||||
|
* @return |
||||||
|
* @throws Exception |
||||||
|
*/ |
||||||
|
// @Override
|
||||||
|
// public List<EquipTemperatureRecord> listRecord(EquipTemperatureRecordParam param) {
|
||||||
|
// // 报告单信息
|
||||||
|
// ReportInfo reportInfo = reportInfoService.getById(param.getReportId());
|
||||||
|
//
|
||||||
|
// // 查询当前收样员关联的设备
|
||||||
|
// EquipSpecimenUsageVo usageVo = equipSpecimenService.getEquipSpecimenUsage(reportInfo.getSyUserId());
|
||||||
|
// if (ObjectUtil.isEmpty(usageVo)){
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
// LambdaQueryWrapper<EquipTemperatureRecord> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
// queryWrapper.eq(EquipTemperatureRecord::getEtId,usageVo.getEtId())
|
||||||
|
// .gt(EquipTemperatureRecord::getCreateTime,reportInfo.getReportBeginTime())
|
||||||
|
// .lt(StrUtil.isNotBlank(reportInfo.getReportEndTime()),EquipTemperatureRecord::getCreateTime, reportInfo.getReportEndTime())
|
||||||
|
// .orderByDesc(EquipTemperatureRecord::getId);
|
||||||
|
//
|
||||||
|
// List<EquipTemperatureRecord> list = baseMapper.selectList(queryWrapper);
|
||||||
|
// if (ObjectUtil.isNotEmpty(list) && list.size() > 50){
|
||||||
|
// list = list.subList(0,50);
|
||||||
|
// }
|
||||||
|
// return list;
|
||||||
|
// }
|
||||||
|
|
||||||
|
/** |
||||||
|
* @param param |
||||||
|
* @Author: Mak |
||||||
|
* @Description: 导出标本箱温控数据,生成pdf |
||||||
|
* @Date: 2021/12/6 |
||||||
|
* @Modified by: |
||||||
|
*/ |
||||||
|
// @Override
|
||||||
|
// public String exportRecordForPfd(EquipTemperatureRecordParam param) {
|
||||||
|
// // 获取标本箱温控数据记录
|
||||||
|
// List<EquipTemperatureRecord> list = listRecord(param);
|
||||||
|
// if (ObjectUtil.isNotNull(list)){
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
// // 获取标本箱信息
|
||||||
|
// EquipSpecimenUsageVo vo = equipSpecimenService.getEquipSpecimenUsage(param.getSyUserId());
|
||||||
|
// // 收样员信息
|
||||||
|
// R<User> res = userService.getById(param.getSyUserId());
|
||||||
|
// User user = res.getData();
|
||||||
|
// String[][] strings = new String[list.size()+1][];
|
||||||
|
// strings[0] = new String[]{"序号","上报时间","温度","电量","位置"};
|
||||||
|
// for (int i = 1; i <= list.size(); i++) {
|
||||||
|
// EquipTemperatureRecord record = list.get(i-1);
|
||||||
|
// parseToStringArr(strings, i, record);
|
||||||
|
// }
|
||||||
|
// String pdfUrl = SpirePdfUtil.createTempPdfForPrint(vo.getBoxCode(),user.getUserName(),strings);
|
||||||
|
// return pdfUrl;
|
||||||
|
// }
|
||||||
|
|
||||||
|
/** |
||||||
|
* 数据格式转化 |
||||||
|
* @param strings |
||||||
|
* @param i |
||||||
|
* @param record |
||||||
|
*/ |
||||||
|
private void parseToStringArr(String[][] strings, int i, EquipTemperatureRecord record){ |
||||||
|
//转为前端需要的二维数组格式
|
||||||
|
strings[i] = new String[]{String.valueOf(i),record.getLatestTime(),record.getEquipTemperature(),record.getEquipPower(),record.getEquipAddr()}; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,179 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.impl; |
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.convert.Convert; |
||||||
|
import cn.hutool.core.util.ObjectUtil; |
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import com.alibaba.fastjson.JSON; |
||||||
|
import com.alibaba.fastjson.JSONArray; |
||||||
|
import com.alibaba.fastjson.JSONObject; |
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import com.cloud.kicc.commonbiz.config.KiccProperties; |
||||||
|
import com.cloud.kicc.commonbiz.mapper.equip.EquipTemperatureMapper; |
||||||
|
import com.cloud.kicc.commonbiz.service.EquipSpecimenService; |
||||||
|
import com.cloud.kicc.commonbiz.service.EquipTemperatureRecordService; |
||||||
|
import com.cloud.kicc.commonbiz.service.EquipTemperatureService; |
||||||
|
import com.cloud.kicc.equip.api.constant.EquipConstants; |
||||||
|
import com.cloud.kicc.equip.api.entity.EquipSpecimen; |
||||||
|
import com.cloud.kicc.equip.api.entity.EquipTemperature; |
||||||
|
import com.cloud.kicc.equip.api.entity.EquipTemperatureRecord; |
||||||
|
import com.cloud.kicc.equip.api.vo.EquipTempSelectVo; |
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.context.annotation.Lazy; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
import java.util.stream.Collectors; |
||||||
|
|
||||||
|
@Service |
||||||
|
@Slf4j |
||||||
|
public class EquipTemperatureServiceImpl extends ServiceImpl<EquipTemperatureMapper, EquipTemperature> implements EquipTemperatureService { |
||||||
|
|
||||||
|
@Lazy |
||||||
|
@Autowired |
||||||
|
private EquipSpecimenService equipSpecimenService; |
||||||
|
|
||||||
|
@Lazy |
||||||
|
@Autowired |
||||||
|
private EquipTemperatureRecordService equipTemperatureRecordService; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private KiccProperties kiccProperties; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public EquipTemperature pullEquipmentDataByApi(String etId) {
|
||||||
|
// EquipTemperature equip = baseMapper.selectById(etId);
|
||||||
|
// try {
|
||||||
|
// HttpResponse<JsonNode> response = Unirest.post(EquipConstants.TEMP_URL)
|
||||||
|
// .field("admin_permit",EquipConstants.ADMIN_PERMIT)
|
||||||
|
// .field("UserP",EquipConstants.USER_P)
|
||||||
|
// .field("admin_user",EquipConstants.ADMIN_USER)
|
||||||
|
// .field("admin_pass",EquipConstants.ADMIN_PWD)
|
||||||
|
// .field("StartNo","0")
|
||||||
|
// .field("Length","1")
|
||||||
|
// .field("StartTime", DateUtils.getPastMinute(EquipConstants.PERIOD,null))
|
||||||
|
// .field("EndTime",DateUtils.getDateTime())
|
||||||
|
// .field("SheBeiBianHao",equip.getEquipCode())
|
||||||
|
// .asJson();
|
||||||
|
//
|
||||||
|
// JSONObject jsonObject = JSON.parseObject(response.getBody().toPrettyString());
|
||||||
|
// log.info("==拉取温控设备最新数据,设备id:"+etId+",返回值=="+jsonObject.toJSONString());
|
||||||
|
//
|
||||||
|
// int code = jsonObject.getInteger("code");
|
||||||
|
// if (code == EquipConstants.SUCCESS_CODE){
|
||||||
|
// JSONArray dataList = jsonObject.getJSONArray("resultCode");
|
||||||
|
// if (dataList!=null || dataList.isEmpty()){
|
||||||
|
// return equip;
|
||||||
|
// }
|
||||||
|
// JSONObject data = dataList.getJSONObject(0);
|
||||||
|
// equip.setEquipTemperature(data.getString("temperature01"));
|
||||||
|
// equip.setEquipHumidity(data.getString("humidity"));
|
||||||
|
// equip.setEquipPower(data.getString("power"));
|
||||||
|
// // 从拉取的数据结果显示来看,xiangzistate一直都为"close"
|
||||||
|
// //equip.setEquipStatus(data.getString("xiangzistate"));
|
||||||
|
// equip.setEquipStatus("open");
|
||||||
|
// equip.setEquipType(data.getString("shebeineixing"));
|
||||||
|
// equip.setLatestTime(data.getString("servicetime"));
|
||||||
|
//
|
||||||
|
// //根据经纬度转换详细地址
|
||||||
|
// String lng = data.getString("jingdu");
|
||||||
|
// String lat = data.getString("weidu");
|
||||||
|
// if (StrUtil.isNotBlank(lng) && StrUtil.isNotBlank(lat)){
|
||||||
|
// boolean getAddr = false;
|
||||||
|
// if (ObjectUtil.isEmpty(equip.getEquipAddr()) || ObjectUtil.isEmpty(equip.getLongitude())
|
||||||
|
// || ObjectUtil.isEmpty(equip.getLatitude())){
|
||||||
|
// getAddr = true;
|
||||||
|
// }
|
||||||
|
// // 比较之前的经纬度,如果没有变,就不用请求百度api
|
||||||
|
// if (ObjectUtil.isNotEmpty(equip.getLongitude()) && ObjectUtil.isNotEmpty(equip.getLatitude())){
|
||||||
|
// if (!lng.trim().equals(equip.getLongitude()) || !lat.trim().equals(equip.getLatitude())){
|
||||||
|
// getAddr = true;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if (getAddr){
|
||||||
|
// String address = BaiduMapUtils.getAddress(lng,lat, kiccProperties.getMapAk());
|
||||||
|
// equip.setEquipAddr(address);
|
||||||
|
// }
|
||||||
|
// equip.setLongitude(lng.trim());
|
||||||
|
// equip.setLatitude(lat.trim());
|
||||||
|
// }
|
||||||
|
// baseMapper.updateById(equip);
|
||||||
|
//
|
||||||
|
// // 插入一条上报记录
|
||||||
|
// try {
|
||||||
|
// EquipTemperatureRecord record = Convert.convert(EquipTemperatureRecord.class, equip);
|
||||||
|
// equipTemperatureRecordService.save(record);
|
||||||
|
// }catch (Exception e){
|
||||||
|
// e.printStackTrace();
|
||||||
|
// log.error("==拉取温控设备最新数据异常==设备id:"+etId+",异常信息:"+e.getMessage());
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }catch (Exception e){
|
||||||
|
// log.error("==拉取温控设备最新数据异常==设备id:"+etId+",异常信息:"+e.getMessage());
|
||||||
|
// }
|
||||||
|
// return equip;
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override |
||||||
|
public void taskToPullTemperatureEquipData() { |
||||||
|
LambdaQueryWrapper<EquipSpecimen> queryWrapper = new LambdaQueryWrapper<>(); |
||||||
|
queryWrapper.isNotNull(EquipSpecimen::getSyUserId).isNotNull(EquipSpecimen::getEtId); |
||||||
|
List<EquipSpecimen> equipList = equipSpecimenService.list(queryWrapper); |
||||||
|
equipList.stream().forEach(a->{ |
||||||
|
//pullEquipmentDataByApi(a.getEtId());
|
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public List<EquipTempSelectVo> listEquipTempForSelect(String esId){
|
||||||
|
// List<EquipTempSelectVo> rtn = new ArrayList<>();
|
||||||
|
//
|
||||||
|
// LambdaQueryWrapper<EquipTemperature> query = new LambdaQueryWrapper<>();
|
||||||
|
// query.eq(EquipTemperature::getState,Constants.YES_CODE);
|
||||||
|
// List<EquipTemperature> tempList = baseMapper.selectList(query);
|
||||||
|
// if (CommonUtil.listIsNull(tempList)){
|
||||||
|
// return rtn;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // 查询温控设备已被使用的记录
|
||||||
|
// LambdaQueryWrapper<EquipSpecimen> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
// queryWrapper.ne(EquipSpecimen::getState, Constants.DEL_FLAG_DELETE)
|
||||||
|
// .isNotNull(EquipSpecimen::getSyUserId).isNotNull(EquipSpecimen::getEtId);
|
||||||
|
// if (CommonUtil.isNotNull(esId)){
|
||||||
|
// queryWrapper.ne(EquipSpecimen::getEsId,esId);
|
||||||
|
// }
|
||||||
|
// List<EquipSpecimen> equipList = equipSpecimenService.list(queryWrapper);
|
||||||
|
// if (CommonUtil.listIsNotNull(equipList)){
|
||||||
|
// List<Integer> etIdList = equipList.stream().map(EquipSpecimen::getEtId).collect(Collectors.toList());
|
||||||
|
// List<EquipTemperature> temps = tempList.stream().filter(a->!etIdList.contains(a.getEtId())).collect(Collectors.toList());
|
||||||
|
// rtn = Collections3.copyTo(temps,EquipTempSelectVo.class);
|
||||||
|
// }else{
|
||||||
|
// rtn = Collections3.copyTo(tempList,EquipTempSelectVo.class);
|
||||||
|
// }
|
||||||
|
// return rtn;
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override |
||||||
|
public IPage<EquipTemperature> pageData(Page page, EquipTemperature param) { |
||||||
|
IPage<EquipTemperature> rtn = this.lambdaQuery() |
||||||
|
.eq(StrUtil.isNotBlank(param.getEquipStatus()), EquipTemperature::getEquipStatus, param.getEquipStatus()) |
||||||
|
.eq(StrUtil.isNotBlank(param.getEquipCode()), EquipTemperature::getEquipCode, param.getEquipCode()) |
||||||
|
.eq(StrUtil.isNotBlank(param.getEquipName()), EquipTemperature::getEquipName, param.getEquipName()) |
||||||
|
.orderByDesc(EquipTemperature::getId) |
||||||
|
.page(page); |
||||||
|
return rtn; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,35 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.impl.beeper; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import com.cloud.kicc.commonbiz.mapper.equip.EquipBeeperRecordMapper; |
||||||
|
import com.cloud.kicc.commonbiz.service.beeper.EquipBeeperRecordService; |
||||||
|
import com.cloud.kicc.equip.api.entity.beeper.EquipBeeperRecord; |
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* 呼叫器设备呼叫记录(EquipBeeperRecord)表服务实现类 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-06 14:20:39 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
@RequiredArgsConstructor |
||||||
|
@Slf4j |
||||||
|
public class EquipBeeperRecordServiceImpl extends ServiceImpl<EquipBeeperRecordMapper, EquipBeeperRecord> implements EquipBeeperRecordService { |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<EquipBeeperRecord> listBeeperRecord(String beeperCode) { |
||||||
|
LambdaQueryWrapper<EquipBeeperRecord> wrapper = new LambdaQueryWrapper<>(); |
||||||
|
wrapper.eq(EquipBeeperRecord::getBeeperCode,beeperCode) |
||||||
|
.orderByDesc(EquipBeeperRecord::getId).last("limit 100"); |
||||||
|
return baseMapper.selectList(wrapper); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,90 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.impl.beeper; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import com.cloud.kicc.commonbiz.mapper.equip.EquipBeeperMapper; |
||||||
|
import com.cloud.kicc.commonbiz.service.beeper.EquipBeeperRecordService; |
||||||
|
import com.cloud.kicc.commonbiz.service.beeper.EquipBeeperService; |
||||||
|
import com.cloud.kicc.equip.api.constant.EquipConstants; |
||||||
|
import com.cloud.kicc.equip.api.entity.beeper.EquipBeeper; |
||||||
|
import com.cloud.kicc.equip.api.entity.beeper.EquipBeeperRecord; |
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
* 呼叫器设备信息(EquipBeeper)表服务实现类 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-06 14:18:38 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
@RequiredArgsConstructor |
||||||
|
@Slf4j |
||||||
|
public class EquipBeeperServiceImpl extends ServiceImpl<EquipBeeperMapper, EquipBeeper> implements EquipBeeperService { |
||||||
|
|
||||||
|
|
||||||
|
private final EquipBeeperRecordService equipBeeperRecordService; |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public EquipBeeper getByCode(String beeperCode) { |
||||||
|
LambdaQueryWrapper<EquipBeeper> wrapper = new LambdaQueryWrapper<>(); |
||||||
|
wrapper.eq(EquipBeeper::getBeeperCode,beeperCode); |
||||||
|
return baseMapper.selectOne(wrapper); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public EquipBeeper getData(String id) { |
||||||
|
return baseMapper.selectData(id); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public IPage<EquipBeeper> pageData(Page page, EquipBeeper param) { |
||||||
|
IPage<EquipBeeper> rtn = baseMapper.pageQuery(page,param); |
||||||
|
return rtn; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取呼叫器wifi |
||||||
|
* @param beeperCode |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public Map<String, String> getBeeperWifi(String beeperCode){ |
||||||
|
EquipBeeper beeper = this.getByCode(beeperCode); |
||||||
|
|
||||||
|
// 添加获取wifi记录
|
||||||
|
EquipBeeperRecord record = new EquipBeeperRecord(); |
||||||
|
record.setBeeperCode(beeperCode); |
||||||
|
record.setRecordType(EquipConstants.SECOND_CODE); |
||||||
|
equipBeeperRecordService.save(record); |
||||||
|
|
||||||
|
Map<String,String> map = new HashMap<>(); |
||||||
|
map.put("wifiName",beeper.getWifiName()); |
||||||
|
map.put("wifiPwd",beeper.getWifiPwd()); |
||||||
|
return map; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 添加呼叫记录 |
||||||
|
* @param beeperCode |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public boolean beeperToCall(String beeperCode) { |
||||||
|
// 添加呼叫记录
|
||||||
|
EquipBeeperRecord record = new EquipBeeperRecord(); |
||||||
|
record.setBeeperCode(beeperCode); |
||||||
|
record.setRecordType(EquipConstants.YES_CODE); |
||||||
|
return equipBeeperRecordService.save(record); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,224 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.impl.box; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.*; |
||||||
|
import com.cloud.kicc.equip.api.constant.EquipConstants; |
||||||
|
import com.cloud.kicc.equip.api.dto.box.DownCmdParam; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBox; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxRecord; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxUser; |
||||||
|
import com.cloud.kicc.equip.api.enums.CmdEnum; |
||||||
|
import com.cloud.kicc.equip.api.enums.CmdStatusEnum; |
||||||
|
import com.cloud.kicc.equip.api.vo.box.DownCmdVo; |
||||||
|
|
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱下行指令服务实现类 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-14 19:07:07 |
||||||
|
*/ |
||||||
|
|
||||||
|
@Service |
||||||
|
@Slf4j |
||||||
|
@AllArgsConstructor |
||||||
|
|
||||||
|
public class BoxDownCmdServiceImpl implements BoxDownCmdService { |
||||||
|
|
||||||
|
private final EquipBoxService equipBoxService; |
||||||
|
|
||||||
|
private final EquipBoxUserService equipBoxUserService; |
||||||
|
|
||||||
|
private final EquipBoxRecordService equipBoxRecordService; |
||||||
|
|
||||||
|
private final DownCmdService downCmdService; |
||||||
|
|
||||||
|
/* public BoxDownCmdServiceImpl(DownCmdService downCmdService,EquipBoxRecordService equipBoxRecordService, |
||||||
|
EquipBoxUserService equipBoxUserService,EquipBoxService equipBoxService){ |
||||||
|
|
||||||
|
this.downCmdService = downCmdService; |
||||||
|
this.equipBoxRecordService=equipBoxRecordService; |
||||||
|
this.equipBoxUserService=equipBoxUserService; |
||||||
|
this.equipBoxService=equipBoxService; |
||||||
|
}*/ |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean sendVoiceToEquipBox(String boxId, String data) { |
||||||
|
EquipBox equipBox = equipBoxService.getById(boxId); |
||||||
|
// 发送语音消息给标本箱
|
||||||
|
DownCmdVo vo = new DownCmdVo(); |
||||||
|
vo.setCmd(CmdEnum.VOICE_D.getCode()); |
||||||
|
vo.setData(data); |
||||||
|
String rtn = downCmdService.downCmdToBox(equipBox.getBoxCode(), vo); |
||||||
|
if (rtn != null){ |
||||||
|
// 记录操作日志
|
||||||
|
vo.setTs(rtn); |
||||||
|
equipBoxRecordService.addData(equipBox.getBoxId(),vo,null); |
||||||
|
} |
||||||
|
return rtn != null; |
||||||
|
//return false;
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean changeEquipUser(String boxUserId, Integer cmd) { |
||||||
|
EquipBoxUser boxUser = equipBoxUserService.getById(boxUserId); |
||||||
|
|
||||||
|
EquipBox equipBox = equipBoxService.getById(boxUser.getBoxId()); |
||||||
|
|
||||||
|
// 新增/删除指纹
|
||||||
|
DownCmdVo vo = new DownCmdVo(); |
||||||
|
vo.setCmd(cmd); |
||||||
|
if (cmd == CmdEnum.DEL_FID_D.getCode() || cmd == CmdEnum.DISABLE_FID_D.getCode() |
||||||
|
|| cmd == CmdEnum.ENABLE_FID_D.getCode()){ |
||||||
|
vo.setData(boxUser.getFid()); |
||||||
|
} |
||||||
|
String rtn = downCmdService.downCmdToBox(equipBox.getBoxCode(), vo); |
||||||
|
if (rtn != null){ |
||||||
|
// 记录操作日志
|
||||||
|
vo.setTs(rtn); |
||||||
|
equipBoxRecordService.addData(equipBox.getBoxId(),vo,boxUserId); |
||||||
|
} |
||||||
|
return rtn != null; |
||||||
|
//return false;
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean downCmdToEquipBox(String boxId, Integer cmd, String data) { |
||||||
|
EquipBox equipBox = equipBoxService.getById(boxId); |
||||||
|
|
||||||
|
// 下发参数
|
||||||
|
DownCmdVo vo = new DownCmdVo(); |
||||||
|
vo.setCmd(cmd); |
||||||
|
|
||||||
|
// 不同指令的参数解析
|
||||||
|
if (cmd == CmdEnum.RESET_D.getCode()){ |
||||||
|
// 重置标本箱配置信息
|
||||||
|
vo.setTempMax(equipBox.getTempMax()); |
||||||
|
vo.setTempMin(equipBox.getTempMin()); |
||||||
|
vo.setRfidMin(equipBox.getRfidMin()); |
||||||
|
vo.setBeat(equipBox.getBeat()); |
||||||
|
}else if(cmd == CmdEnum.VOICE_D.getCode() || cmd == CmdEnum.DEL_FID_D.getCode() |
||||||
|
|| cmd == CmdEnum.DISABLE_FID_D.getCode() || cmd == CmdEnum.ENABLE_FID_D.getCode()){ |
||||||
|
vo.setData(data); |
||||||
|
} |
||||||
|
|
||||||
|
String rtn = downCmdService.downCmdToBox(equipBox.getBoxCode(), vo); |
||||||
|
if (rtn != null){ |
||||||
|
// 记录操作日志
|
||||||
|
vo.setTs(rtn); |
||||||
|
equipBoxRecordService.addData(equipBox.getBoxId(),vo,null); |
||||||
|
} |
||||||
|
return rtn != null; |
||||||
|
//return false;
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean handleDownCmdResult(DownCmdParam downParam) { |
||||||
|
// 查询当前记录是否存在 - 状态为正常且指令状态不等于成功的记录
|
||||||
|
LambdaQueryWrapper<EquipBoxRecord> wrapper = new LambdaQueryWrapper<>(); |
||||||
|
wrapper.eq(EquipBoxRecord::getTimestamp,downParam.getTs()) |
||||||
|
.eq(EquipBoxRecord::getCmd,downParam.getCmd()) |
||||||
|
.ne(EquipBoxRecord::getCmdStatus, CmdStatusEnum.SUCCESS.getCode()); |
||||||
|
EquipBoxRecord boxRecord = equipBoxRecordService.getOne(wrapper); |
||||||
|
if (boxRecord == null){ |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
// 修改指令记录执行成功与否
|
||||||
|
EquipBoxRecord updateRecord = new EquipBoxRecord(); |
||||||
|
updateRecord.setId(boxRecord.getId()); |
||||||
|
|
||||||
|
// 判断客户端返回的指令执行状态是否成功
|
||||||
|
if (downParam.getStatus() == 1){ |
||||||
|
// 执行失败
|
||||||
|
updateRecord.setCmdStatus(CmdStatusEnum.FAIL.getCode()); |
||||||
|
return equipBoxRecordService.updateById(updateRecord); |
||||||
|
} |
||||||
|
|
||||||
|
// 修改标本箱状态
|
||||||
|
EquipBox updateBox = null; |
||||||
|
|
||||||
|
boolean rtn = true; |
||||||
|
Integer cmd = downParam.getCmd(); |
||||||
|
if (cmd == CmdEnum.ADD_FID_D.getCode()){ |
||||||
|
// 新增指纹
|
||||||
|
EquipBoxUser updateUser = new EquipBoxUser(); |
||||||
|
updateUser.setId(boxRecord.getRelationId()); |
||||||
|
updateUser.setFid(downParam.getData()); |
||||||
|
rtn = equipBoxUserService.updateById(updateUser); |
||||||
|
|
||||||
|
}else if (cmd == CmdEnum.DEL_FID_D.getCode()){ |
||||||
|
// 删除指纹
|
||||||
|
LambdaUpdateWrapper<EquipBoxUser> updateWrapper = new LambdaUpdateWrapper<>(); |
||||||
|
updateWrapper.set(EquipBoxUser::getFid,null).eq(EquipBoxUser::getId,boxRecord.getRelationId()); |
||||||
|
rtn = equipBoxUserService.update(updateWrapper); |
||||||
|
}else if (cmd == CmdEnum.ALL_FID_D.getCode()){ |
||||||
|
// 获取所有指纹
|
||||||
|
log.info("获取所有指纹,返回值"+downParam.getData()); |
||||||
|
|
||||||
|
}else if (cmd == CmdEnum.DEL_ALL_FID_D.getCode()){ |
||||||
|
// 删除所有指纹
|
||||||
|
LambdaUpdateWrapper<EquipBoxUser> updateWrapper = new LambdaUpdateWrapper<>(); |
||||||
|
updateWrapper.set(EquipBoxUser::getFid,null).eq(EquipBoxUser::getBoxId,boxRecord.getBoxId()); |
||||||
|
rtn = equipBoxUserService.update(updateWrapper); |
||||||
|
}else if (cmd == CmdEnum.DISABLE_FID_D.getCode()){ |
||||||
|
// 禁用指纹
|
||||||
|
LambdaUpdateWrapper<EquipBoxUser> updateWrapper = new LambdaUpdateWrapper<>(); |
||||||
|
updateWrapper.set(EquipBoxUser::getStatus, EquipConstants.NO_CODE).eq(EquipBoxUser::getId,boxRecord.getRelationId()); |
||||||
|
rtn = equipBoxUserService.update(updateWrapper); |
||||||
|
}else if (cmd == CmdEnum.ENABLE_FID_D.getCode()){ |
||||||
|
// 启用指纹
|
||||||
|
LambdaUpdateWrapper<EquipBoxUser> updateWrapper = new LambdaUpdateWrapper<>(); |
||||||
|
updateWrapper.set(EquipBoxUser::getStatus, EquipConstants.YES_CODE).eq(EquipBoxUser::getId,boxRecord.getRelationId()); |
||||||
|
rtn = equipBoxUserService.update(updateWrapper); |
||||||
|
}else if (cmd == CmdEnum.OPEN_DATA_D.getCode()){ |
||||||
|
// 开启数据上报
|
||||||
|
updateBox = new EquipBox(); |
||||||
|
updateBox.setBoxStatus(1); |
||||||
|
|
||||||
|
}else if (cmd == CmdEnum.CLOSE_DATA_D.getCode()){ |
||||||
|
// 关闭数据上报
|
||||||
|
updateBox = new EquipBox(); |
||||||
|
updateBox.setBoxStatus(3); |
||||||
|
|
||||||
|
}else if (cmd == CmdEnum.OPEN_COLD_D.getCode()){ |
||||||
|
// 开启制冷
|
||||||
|
updateBox = new EquipBox(); |
||||||
|
updateBox.setColdStatus(1); |
||||||
|
|
||||||
|
}else if (cmd == CmdEnum.CLOSE_COLD_D.getCode()){ |
||||||
|
// 关闭制冷
|
||||||
|
updateBox = new EquipBox(); |
||||||
|
updateBox.setColdStatus(0); |
||||||
|
|
||||||
|
}else if (cmd == CmdEnum.OPEN_D.getCode()){ |
||||||
|
// 开锁
|
||||||
|
updateBox = new EquipBox(); |
||||||
|
updateBox.setOpenStatus(1); |
||||||
|
|
||||||
|
}else { |
||||||
|
} |
||||||
|
|
||||||
|
// 修改标本箱各种状态
|
||||||
|
if (updateBox != null){ |
||||||
|
updateBox.setBoxId(boxRecord.getBoxId()); |
||||||
|
rtn = equipBoxService.updateById(updateBox); |
||||||
|
} |
||||||
|
|
||||||
|
// 修改指令记录执行成功与否
|
||||||
|
updateRecord.setCmdStatus(rtn?1:2); |
||||||
|
return equipBoxRecordService.updateById(updateRecord); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,164 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.impl.box; |
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.convert.Convert; |
||||||
|
import cn.hutool.core.util.NumberUtil; |
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
||||||
|
import com.cloud.kicc.common.core.constant.CommonConstants; |
||||||
|
import com.cloud.kicc.commonbiz.config.KiccProperties; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.BoxUpCmdService; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.EquipBoxLogService; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.EquipBoxRfidLogService; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.EquipBoxService; |
||||||
|
import com.cloud.kicc.commonbiz.util.BaiduMapUtils; |
||||||
|
import com.cloud.kicc.commonbiz.util.GpsGaoAndBaidu; |
||||||
|
import com.cloud.kicc.commonbiz.util.Point; |
||||||
|
import com.cloud.kicc.equip.api.constant.EquipConstants; |
||||||
|
import com.cloud.kicc.equip.api.dto.box.UpCmdParam; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBox; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxLog; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxRfidLog; |
||||||
|
import com.cloud.kicc.equip.api.enums.BoxStatusEnum; |
||||||
|
import com.cloud.kicc.equip.api.enums.CmdEnum; |
||||||
|
import com.cloud.kicc.equip.api.vo.box.EquipBoxConfigVo; |
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.util.Date; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱上行指令服务实现类 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-14 19:07:07 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
@RequiredArgsConstructor |
||||||
|
@Slf4j |
||||||
|
public class BoxUpCmdServiceImpl implements BoxUpCmdService { |
||||||
|
|
||||||
|
private final EquipBoxService equipBoxService; |
||||||
|
|
||||||
|
private final EquipBoxLogService equipBoxLogService; |
||||||
|
|
||||||
|
private final EquipBoxRfidLogService equipBoxRfidLogService; |
||||||
|
|
||||||
|
private final KiccProperties kiccProperties; |
||||||
|
|
||||||
|
@Override |
||||||
|
public String beginTelnet(String iccid) { |
||||||
|
EquipBox box = equipBoxService.getByIccid(iccid); |
||||||
|
|
||||||
|
// 修改箱子状态
|
||||||
|
UpdateWrapper<EquipBox> updateWrapper = new UpdateWrapper<>(); |
||||||
|
updateWrapper.lambda().set(EquipBox::getBoxStatus, BoxStatusEnum.TELNET.getCode()) |
||||||
|
.set(EquipBox::getConnectTime,new Date()).eq(EquipBox::getBoxId,box.getBoxId()); |
||||||
|
boolean rtn = equipBoxService.update(updateWrapper); |
||||||
|
if (rtn){ |
||||||
|
return box.getBoxCode(); |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public EquipBoxConfigVo getBoxConfig(String boxCode) throws Exception{ |
||||||
|
EquipBox box = equipBoxService.getByCode(boxCode); |
||||||
|
|
||||||
|
return Convert.convert(EquipBoxConfigVo.class, box); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean beatBoxInfo(UpCmdParam param) throws Exception { |
||||||
|
EquipBox equipBox = equipBoxService.getByCode(param.getCode()); |
||||||
|
|
||||||
|
// 更新主表信息
|
||||||
|
EquipBox updateBox = new EquipBox(); |
||||||
|
updateBox.setBoxId(equipBox.getBoxId()); |
||||||
|
// 温度计算 - 临时处理
|
||||||
|
if (StrUtil.isNotBlank(param.getTp())){ |
||||||
|
// 他说如果拔了一根,那根默认就会是-60℃,现在拔了2根,说明系统默认是2个-60℃,原先的技算方式是三个加一起÷3,
|
||||||
|
// 也就是{-60+(-60)+实际温度}÷3=现在显示温度(现在显示是-32.73),倒推实际温度就是,21.83℃
|
||||||
|
// 目前仅有第一版的温度有问题
|
||||||
|
if(equipBox.getBoxId() == "1"){ |
||||||
|
double ttp = NumberUtil.mul(Double.parseDouble(param.getTp()),3) + 120; |
||||||
|
updateBox.setTemp(String.valueOf(NumberUtil.round(ttp,1))); |
||||||
|
}else{ |
||||||
|
updateBox.setTemp(String.valueOf(NumberUtil.round(Double.parseDouble(param.getTp()),1))); |
||||||
|
} |
||||||
|
} |
||||||
|
updateBox.setDamp(param.getDp()); |
||||||
|
// 详细地址
|
||||||
|
if (StrUtil.isNotBlank(param.getLg()) && StrUtil.isNotBlank(param.getLt())){ |
||||||
|
// 如果箱子定位一直未变,为避免重复调用百度api
|
||||||
|
if (StrUtil.isNotBlank(equipBox.getLng()) || StrUtil.isNotBlank(equipBox.getLat()) |
||||||
|
|| !equipBox.getLng().equals(param.getLg()) || !equipBox.getLat().equals(param.getLt())){ |
||||||
|
updateBox.setLng(param.getLg()); |
||||||
|
updateBox.setLat(param.getLt()); |
||||||
|
try { |
||||||
|
Point point = GpsGaoAndBaidu.gpsAddPrecision(param.getLg(), param.getLt()); |
||||||
|
updateBox.setAddr(BaiduMapUtils.getAddress(String.valueOf(point.getLng()),String.valueOf(point.getLat()),kiccProperties.getMapAk())); |
||||||
|
}catch (Exception e){ |
||||||
|
log.error("标本箱心跳上报经纬度转详细地址失败:"+e.getMessage()); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
updateBox.setPower(String.valueOf(NumberUtil.round(Double.parseDouble(param.getPw()),1))); |
||||||
|
|
||||||
|
// 计算倾斜度
|
||||||
|
|
||||||
|
updateBox.setOpenStatus(param.getOs()); |
||||||
|
updateBox.setColdStatus(param.getCs()); |
||||||
|
boolean ret = equipBoxService.updateById(updateBox); |
||||||
|
if (ret){ |
||||||
|
// 记录心跳日志
|
||||||
|
EquipBoxLog boxLog = Convert.convert(EquipBoxLog.class, updateBox); |
||||||
|
boxLog.setBoxId(equipBox.getBoxId()); |
||||||
|
if(StrUtil.isNotBlank(updateBox.getLng()) || StrUtil.isNotBlank(updateBox.getLat()) |
||||||
|
|| StrUtil.isNotBlank(updateBox.getAddr())){ |
||||||
|
boxLog.setLng(param.getLg()); |
||||||
|
boxLog.setLat(param.getLt()); |
||||||
|
boxLog.setAddr(equipBox.getAddr()); |
||||||
|
} |
||||||
|
boxLog.setTiltX(param.getTx()); |
||||||
|
boxLog.setTiltY(param.getTy()); |
||||||
|
boxLog.setEnergy(param.getEg()); |
||||||
|
boxLog.setErrorStatus(equipBox.getErrorStatus()); |
||||||
|
equipBoxLogService.save(boxLog); |
||||||
|
} |
||||||
|
return ret; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean updateBoxState(UpCmdParam param) { |
||||||
|
EquipBox equipBox = equipBoxService.getByCode(param.getCode()); |
||||||
|
|
||||||
|
EquipBox updateBox = new EquipBox(); |
||||||
|
updateBox.setBoxId(equipBox.getBoxId()); |
||||||
|
|
||||||
|
if (param.getCmd() == CmdEnum.OPEN_U.getCode()){ |
||||||
|
//设置开关状态
|
||||||
|
updateBox.setOpenStatus(EquipConstants.YES_CODE); |
||||||
|
}else if (param.getCmd() == CmdEnum.CLOSE_U.getCode()){ |
||||||
|
updateBox.setOpenStatus(EquipConstants.NO_CODE); |
||||||
|
}else if (param.getCmd() == CmdEnum.ERROR_U.getCode()){ |
||||||
|
updateBox.setErrorStatus(CommonConstants.FAIL); |
||||||
|
} |
||||||
|
|
||||||
|
return equipBoxService.updateById(updateBox); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean addBoxRfidLog(UpCmdParam param, Integer rfidType) { |
||||||
|
EquipBox equipBox = equipBoxService.getByCode(param.getCode()); |
||||||
|
EquipBoxRfidLog data = new EquipBoxRfidLog(); |
||||||
|
data.setBoxId(equipBox.getBoxId()); |
||||||
|
data.setRfids(param.getRfids()); |
||||||
|
data.setRfidType(rfidType); |
||||||
|
return equipBoxRfidLogService.save(data); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,48 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.impl.box; |
||||||
|
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.DownCmdService; |
||||||
|
import com.cloud.kicc.equip.api.vo.box.DownCmdVo; |
||||||
|
|
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.slf4j.Logger; |
||||||
|
import org.slf4j.LoggerFactory; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.util.logging.SocketHandler; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱下行指令服务实现类 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-14 19:07:07 |
||||||
|
*/ |
||||||
|
@AllArgsConstructor |
||||||
|
@Service |
||||||
|
@Slf4j |
||||||
|
public class DownCmdServiceImpl implements DownCmdService { |
||||||
|
private final Logger logger = LoggerFactory.getLogger(ThreadLocal.class); |
||||||
|
|
||||||
|
@Override |
||||||
|
public String downCmdToBox(String boxCode, DownCmdVo vo){ |
||||||
|
String ts = null; |
||||||
|
try { |
||||||
|
// new Thread().sleep(100);
|
||||||
|
// ClientSocket socket = SocketPool.get(boxCode);
|
||||||
|
// if (socket != null){
|
||||||
|
// ts = System.currentTimeMillis()+"";
|
||||||
|
// vo.setTs(ts);
|
||||||
|
// String msg = JSONObject.toJSONString(vo);
|
||||||
|
// SocketHandler.sendMessage(socket,msg);
|
||||||
|
// }
|
||||||
|
}catch (Exception e){ |
||||||
|
e.printStackTrace(); |
||||||
|
ts = null; |
||||||
|
} |
||||||
|
return ts; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,50 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.impl.box; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.convert.Convert; |
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import com.cloud.kicc.commonbiz.mapper.equip.EquipBoxCardMapper; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.EquipBoxCardService; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxCard; |
||||||
|
import com.cloud.kicc.equip.api.vo.box.EquipBoxCardVo; |
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
import java.util.stream.Collectors; |
||||||
|
|
||||||
|
/** |
||||||
|
* 物联网卡管理(EquipBoxCard)表服务实现类 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2022-02-13 12:06:30 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
@RequiredArgsConstructor |
||||||
|
@Slf4j |
||||||
|
public class EquipBoxCardServiceImpl extends ServiceImpl<EquipBoxCardMapper, EquipBoxCard> implements EquipBoxCardService { |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public List<EquipBoxCardVo> listCardForSelect(Integer isUsed) throws Exception{ |
||||||
|
List<EquipBoxCard> list = this.lambdaQuery() |
||||||
|
.eq(StrUtil.isNotBlank(isUsed.toString()),EquipBoxCard::getIsUsed, isUsed) |
||||||
|
.list(); |
||||||
|
|
||||||
|
return list.stream().map(item -> { |
||||||
|
return Convert.convert(EquipBoxCardVo.class, item); |
||||||
|
}).collect(Collectors.toList()); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public EquipBoxCard getByIccid(String iccid) { |
||||||
|
return this.lambdaQuery().eq(StrUtil.isNotBlank(iccid),EquipBoxCard::getIccid, iccid).one(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.impl.box; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import com.cloud.kicc.commonbiz.mapper.equip.EquipBoxLogMapper; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.EquipBoxLogService; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxLog; |
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱心跳日志记录(EquipBoxLog)表服务实现类 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-17 10:25:07 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
@RequiredArgsConstructor |
||||||
|
@Slf4j |
||||||
|
public class EquipBoxLogServiceImpl extends ServiceImpl<EquipBoxLogMapper, EquipBoxLog> implements EquipBoxLogService { |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<EquipBoxLog> listBoxLogs(Integer boxId) { |
||||||
|
LambdaUpdateWrapper<EquipBoxLog> wrapper = new LambdaUpdateWrapper<>(); |
||||||
|
|
||||||
|
//todo: limit 100 ???
|
||||||
|
wrapper.eq(EquipBoxLog::getBoxId,boxId) |
||||||
|
.orderByDesc(EquipBoxLog::getBoxLogId).last("limit 100"); |
||||||
|
return baseMapper.selectList(wrapper); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,71 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.impl.box; |
||||||
|
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject; |
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import com.cloud.kicc.commonbiz.mapper.equip.EquipBoxRecordMapper; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.EquipBoxRecordService; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.EquipBoxService; |
||||||
|
import com.cloud.kicc.equip.api.dto.box.UpCmdParam; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBox; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxRecord; |
||||||
|
import com.cloud.kicc.equip.api.vo.box.DownCmdVo; |
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱操作记录(EquipBoxRecord)表服务实现类 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-15 09:39:47 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
@RequiredArgsConstructor |
||||||
|
@Slf4j |
||||||
|
public class EquipBoxRecordServiceImpl extends ServiceImpl<EquipBoxRecordMapper, EquipBoxRecord> implements EquipBoxRecordService { |
||||||
|
|
||||||
|
@Autowired |
||||||
|
EquipBoxService equipBoxService; |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean addData(UpCmdParam param, boolean rtn) { |
||||||
|
EquipBox equipBox = equipBoxService.getByCode(param.getCode()); |
||||||
|
EquipBoxRecord record = new EquipBoxRecord(); |
||||||
|
record.setBoxId(equipBox.getBoxId()); |
||||||
|
record.setCmd(param.getCmd()); |
||||||
|
record.setFid(param.getFid()); |
||||||
|
record.setErrorStatus(param.getWrong()); |
||||||
|
record.setDataJson(JSONObject.toJSONString(param)); |
||||||
|
record.setCmdStatus(rtn?1:2); |
||||||
|
record.setTimestamp(System.currentTimeMillis()+""); |
||||||
|
return this.save(record); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean addData(String boxId, DownCmdVo vo, String relationId) { |
||||||
|
EquipBoxRecord record = new EquipBoxRecord(); |
||||||
|
record.setBoxId(boxId); |
||||||
|
record.setCmd(vo.getCmd()); |
||||||
|
record.setTimestamp(vo.getTs()); |
||||||
|
record.setRelationId(relationId); |
||||||
|
record.setDataJson(JSONObject.toJSONString(vo)); |
||||||
|
return this.save(record); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<EquipBoxRecord> listBoxRecords(String boxId) { |
||||||
|
LambdaUpdateWrapper<EquipBoxRecord> wrapper = new LambdaUpdateWrapper<>(); |
||||||
|
//todo: limit 100 ???
|
||||||
|
wrapper.eq(EquipBoxRecord::getBoxId,boxId) |
||||||
|
.orderByDesc(EquipBoxRecord::getId).last("limit 100"); |
||||||
|
return baseMapper.selectList(wrapper); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,24 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.impl.box; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import com.cloud.kicc.commonbiz.mapper.equip.EquipBoxRfidLogMapper; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.EquipBoxRfidLogService; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxRfidLog; |
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱RFIDj记录信息(EquipBoxRfidLog)表服务实现类 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-25 15:10:34 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
@RequiredArgsConstructor |
||||||
|
@Slf4j |
||||||
|
public class EquipBoxRfidLogServiceImpl extends ServiceImpl<EquipBoxRfidLogMapper, EquipBoxRfidLog> implements EquipBoxRfidLogService { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,98 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.impl.box; |
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import com.cloud.kicc.commonbiz.mapper.equip.EquipBoxMapper; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.EquipBoxCardService; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.EquipBoxService; |
||||||
|
import com.cloud.kicc.equip.api.constant.EquipConstants; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBox; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxCard; |
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱设备信息(EquipBox)表服务实现类 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-14 19:07:07 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
@RequiredArgsConstructor |
||||||
|
@Slf4j |
||||||
|
public class EquipBoxServiceImpl extends ServiceImpl<EquipBoxMapper, EquipBox> implements EquipBoxService { |
||||||
|
|
||||||
|
|
||||||
|
@Autowired |
||||||
|
EquipBoxCardService equipBoxCardService; |
||||||
|
|
||||||
|
@Override |
||||||
|
public EquipBox getByCode(String boxCode) { |
||||||
|
LambdaQueryWrapper<EquipBox> wrapper = new LambdaQueryWrapper<>(); |
||||||
|
wrapper.eq(EquipBox::getBoxCode, boxCode); |
||||||
|
return baseMapper.selectOne(wrapper); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public EquipBox getByIccid(String iccid) { |
||||||
|
EquipBoxCard card = equipBoxCardService.getByIccid(iccid); |
||||||
|
if (card == null){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
LambdaQueryWrapper<EquipBox> wrapper = new LambdaQueryWrapper<>(); |
||||||
|
wrapper.eq(EquipBox::getCardId, card.getId()); |
||||||
|
return baseMapper.selectOne(wrapper); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public EquipBox getData(String id) { |
||||||
|
EquipBox box = baseMapper.selectData(id); |
||||||
|
return box; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean addData(EquipBox param) { |
||||||
|
// 自定义code - 标本箱已限制最长15位
|
||||||
|
boolean rtn = this.save(param); |
||||||
|
param.setBoxCode("B"+param.getBoxId()); |
||||||
|
if (rtn){ |
||||||
|
// 修改物联网卡状态
|
||||||
|
LambdaUpdateWrapper<EquipBoxCard> updateWrapper = new LambdaUpdateWrapper<>(); |
||||||
|
updateWrapper |
||||||
|
.set(EquipBoxCard::getIsUsed, EquipConstants.YES_CODE) |
||||||
|
.eq(EquipBoxCard::getId, param.getCardId()); |
||||||
|
equipBoxCardService.update(updateWrapper); |
||||||
|
} |
||||||
|
return rtn; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean updateStatusByCode(String boxCode, Integer boxStatus, Integer openStatus, Integer coldStatus, Integer warnStatus, Integer errorStatus) { |
||||||
|
LambdaUpdateWrapper<EquipBox> wrapper = new LambdaUpdateWrapper<>(); |
||||||
|
|
||||||
|
wrapper.set(StrUtil.isNotBlank(boxStatus.toString()),EquipBox::getBoxStatus,boxStatus) |
||||||
|
.set(StrUtil.isNotBlank(openStatus.toString()),EquipBox::getOpenStatus,openStatus) |
||||||
|
.set(StrUtil.isNotBlank(coldStatus.toString()),EquipBox::getColdStatus,coldStatus) |
||||||
|
.set(StrUtil.isNotBlank(warnStatus.toString()),EquipBox::getWarnStatus,warnStatus) |
||||||
|
.set(StrUtil.isNotBlank(errorStatus.toString()),EquipBox::getErrorStatus,errorStatus) |
||||||
|
.eq(StrUtil.isNotBlank(boxCode),EquipBox::getBoxCode,boxCode); |
||||||
|
|
||||||
|
return this.update(wrapper); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public IPage<EquipBox> pageData(Page page, EquipBox param) { |
||||||
|
IPage<EquipBox> rtn = baseMapper.pageQuery(page,param); |
||||||
|
return rtn; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,53 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.service.impl.box; |
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import com.cloud.kicc.common.core.api.R; |
||||||
|
import com.cloud.kicc.commonbiz.mapper.equip.EquipBoxUserMapper; |
||||||
|
import com.cloud.kicc.commonbiz.service.box.EquipBoxUserService; |
||||||
|
import com.cloud.kicc.equip.api.entity.box.EquipBoxUser; |
||||||
|
|
||||||
|
import com.cloud.kicc.system.api.entity.User; |
||||||
|
import com.cloud.kicc.system.api.feign.RemoteUserService; |
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标本箱指纹用户信息(EquipBoxUser)表服务实现类 |
||||||
|
* |
||||||
|
* @author Mak |
||||||
|
* @since 2021-09-15 09:40:50 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
@RequiredArgsConstructor |
||||||
|
@Slf4j |
||||||
|
public class EquipBoxUserServiceImpl extends ServiceImpl<EquipBoxUserMapper, EquipBoxUser> implements EquipBoxUserService { |
||||||
|
|
||||||
|
|
||||||
|
private final RemoteUserService remoteUserService; |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean addData(EquipBoxUser param) { |
||||||
|
if (StrUtil.isNotBlank(param.getUserId()) && StrUtil.isBlank(param.getUserName())){ |
||||||
|
R<User> byId = remoteUserService.getById(param.getUserId()); |
||||||
|
if (byId.getCode() == 200) { |
||||||
|
param.setUserName(byId.getData().getUserName()); |
||||||
|
} |
||||||
|
} |
||||||
|
return this.save(param); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<EquipBoxUser> listBoxUser(String boxId, String userName) { |
||||||
|
EquipBoxUser param = new EquipBoxUser(); |
||||||
|
param.setBoxId(boxId); |
||||||
|
param.setUserName(userName); |
||||||
|
return baseMapper.listQuery(param); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,103 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.util; |
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import cn.hutool.http.HttpResponse; |
||||||
|
import cn.hutool.http.HttpUtil; |
||||||
|
import cn.hutool.json.JSONObject; |
||||||
|
import cn.hutool.json.JSONUtil; |
||||||
|
|
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
public class BaiduMapUtils { |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 文档地址:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
|
||||||
|
* GET请求 |
||||||
|
* callback 将json格式的返回值通过callback函数返回以实现jsonp功能 |
||||||
|
* 示例:http://api.map.baidu.com/geocoding/v3/?address=北京市海淀区上地十街10号&output=json&ak=您的ak&callback=showLocation
|
||||||
|
*/ |
||||||
|
public static Map<String, Object> getLngAndLat(String address, String ak) { |
||||||
|
HttpResponse res = null; |
||||||
|
try { |
||||||
|
res = HttpUtil |
||||||
|
.createGet("http://api.map.baidu.com/geocoding/v3/?address=" + address + "&output=json&ak=" + ak) |
||||||
|
.header("Content-Type", "application/json") |
||||||
|
.execute().charset("UTF-8"); |
||||||
|
|
||||||
|
int code = res.getStatus(); |
||||||
|
if (code == 200) { |
||||||
|
String body = res.body(); |
||||||
|
if (StrUtil.isNotBlank(body)) { |
||||||
|
JSONObject jsonObject = JSONUtil.parseObj(body); |
||||||
|
Map<String, Object> resultMap = new HashMap(); |
||||||
|
resultMap.put("longitude", jsonObject.get("lng")); |
||||||
|
resultMap.put("latitude", jsonObject.get("lat")); |
||||||
|
return resultMap; |
||||||
|
} |
||||||
|
} |
||||||
|
} catch (Exception e) { |
||||||
|
System.out.println("==BaiduMap-Api-getLngAndLat,error==" + e.getMessage()); |
||||||
|
} finally { |
||||||
|
if (res != null) { |
||||||
|
res.close(); |
||||||
|
} |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 根据GPS坐标获取定位位置 |
||||||
|
* 文档地址:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding-abroad
|
||||||
|
* GET请求 |
||||||
|
* coordtype坐标的类型,目前支持的坐标类型包括:bd09ll(百度经纬度坐标)、bd09mc(百度米制坐标)、gcj02ll(国测局经纬度坐标,仅限中国)、wgs84ll( GPS经纬度) 坐标系说明 |
||||||
|
* 示例:http://api.map.baidu.com/reverse_geocoding/v3/?ak=您的ak&output=json&coordtype=wgs84ll&location=31.225696563611,121.49884033194
|
||||||
|
*/ |
||||||
|
public static String getAddress(String lng, String lat, String ak) { |
||||||
|
HttpResponse res = null; |
||||||
|
try { |
||||||
|
String location = lat + "," + lng; |
||||||
|
res = HttpUtil |
||||||
|
.createGet("http://api.map.baidu.com/reverse_geocoding/v3/?location=" + location + "&output=json&coordtype=wgs84ll&ak=" + ak) |
||||||
|
.header("Content-Type", "application/json") |
||||||
|
.execute().charset("UTF-8"); |
||||||
|
|
||||||
|
int code = res.getStatus(); |
||||||
|
if (code == 200) { |
||||||
|
String body = res.body(); |
||||||
|
if (StrUtil.isNotBlank(body)) { |
||||||
|
JSONObject jsonObject = JSONUtil.parseObj(body); |
||||||
|
if (jsonObject.getInt("status") == 0) { |
||||||
|
String addr = jsonObject.getJSONObject("result").getStr("formatted_address"); |
||||||
|
return addr; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} catch (Exception e) { |
||||||
|
System.out.println("==BaiduMap-Api-getAddress,error==" + e.getMessage()); |
||||||
|
} finally { |
||||||
|
if (res != null) { |
||||||
|
res.close(); |
||||||
|
} |
||||||
|
} |
||||||
|
return null; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
//String addr = getAddress("112.917007","28.280622","WpNIUTCTrECQQyrGDv4x3Gx1CdNRCm5d");
|
||||||
|
//String addr = getAddress("108.379051", "30.808975", "gIZFKgVkaqGOFTDSSrbklWjesguyrM8H");
|
||||||
|
|
||||||
|
//String addr = getAddress("112.92457569595736", "28.29473945087382", "WpNIUTCTrECQQyrGDv4x3Gx1CdNRCm5d");
|
||||||
|
//String addr = getAddress("112.91276433", "28.29194017", "WpNIUTCTrECQQyrGDv4x3Gx1CdNRCm5d");
|
||||||
|
String addr = getAddress("112.88416317", "28.22842167", "WpNIUTCTrECQQyrGDv4x3Gx1CdNRCm5d"); |
||||||
|
|
||||||
|
//String addr = getAddress("11254.76586", "28.21360333", "WpNIUTCTrECQQyrGDv4x3Gx1CdNRCm5d");
|
||||||
|
System.out.println(addr); |
||||||
|
/*Map<String, Object> address = getLngAndLat("湖南省长沙市望城区梅园路","WpNIUTCTrECQQyrGDv4x3Gx1CdNRCm5d"); |
||||||
|
System.out.println(address.toString());*/ |
||||||
|
} |
||||||
|
} |
||||||
|
|
@ -0,0 +1,200 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.util; |
||||||
|
|
||||||
|
///
|
||||||
|
|
||||||
|
/// 百度 高德 GPS地图坐标转换类
|
||||||
|
|
||||||
|
/// 地球坐标系(GPS坐标):WGS-84
|
||||||
|
|
||||||
|
//中国的火星坐标系:GCJ-02 使用者:高德、谷歌、腾讯搜搜、阿里云地图、灵图51ditu地图
|
||||||
|
|
||||||
|
//百度坐标系:BD-09 使用者:百度
|
||||||
|
|
||||||
|
|
||||||
|
import java.math.BigDecimal; |
||||||
|
|
||||||
|
|
||||||
|
public class GpsGaoAndBaidu { |
||||||
|
|
||||||
|
private static final double x_pi = 3.14159265358979324 * 3000.0 / 180.0; |
||||||
|
|
||||||
|
private static final double pi = 3.14159265358979324; |
||||||
|
private static final double a = 6378245.0; |
||||||
|
private static final double ee = 0.00669342162296594323; |
||||||
|
|
||||||
|
/** |
||||||
|
* gg_lat 纬度 |
||||||
|
* gg_lon 经度 |
||||||
|
* GCJ-02转换BD-09 |
||||||
|
* Google地图经纬度转百度地图经纬度 |
||||||
|
* */ |
||||||
|
public static Point google_bd_encrypt(double gg_lat, double gg_lon){ |
||||||
|
Point point=new Point(); |
||||||
|
double x = gg_lon, y = gg_lat; |
||||||
|
double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi); |
||||||
|
double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi); |
||||||
|
double bd_lon = z * Math.cos(theta) + 0.0065; |
||||||
|
double bd_lat = z * Math.sin(theta) + 0.006; |
||||||
|
point.setLat(bd_lat); |
||||||
|
point.setLng(bd_lon); |
||||||
|
return point; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* wgLat 纬度 |
||||||
|
* wgLon 经度 |
||||||
|
* BD-09转换GCJ-02 |
||||||
|
* 百度转google |
||||||
|
* */ |
||||||
|
public static Point bd_google_encrypt(double bd_lat, double bd_lon){ |
||||||
|
Point point=new Point(); |
||||||
|
double x = bd_lon - 0.0065, y = bd_lat - 0.006; |
||||||
|
double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi); |
||||||
|
double theta =Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi); |
||||||
|
double gg_lon = z * Math.cos(theta); |
||||||
|
double gg_lat = z * Math.sin(theta); |
||||||
|
point.setLat(gg_lat); |
||||||
|
point.setLng(gg_lon); |
||||||
|
return point; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* wgLat 纬度 |
||||||
|
* wgLon 经度 |
||||||
|
* WGS-84 到 GCJ-02 的转换(即 GPS 加偏) |
||||||
|
* */ |
||||||
|
public static Point wgs_gcj_encrypts(double wgLat, double wgLon) { |
||||||
|
Point point=new Point(); |
||||||
|
if (outOfChina(wgLat, wgLon)) { |
||||||
|
point.setLat(wgLat); |
||||||
|
point.setLng(wgLon); |
||||||
|
return point; |
||||||
|
} |
||||||
|
double dLat = transformLat(wgLon - 105.0, wgLat - 35.0); |
||||||
|
double dLon = transformLon(wgLon - 105.0, wgLat - 35.0); |
||||||
|
double radLat = wgLat / 180.0 * pi; |
||||||
|
double magic = Math.sin(radLat); |
||||||
|
magic = 1 - ee * magic * magic; |
||||||
|
double sqrtMagic = Math.sqrt(magic); |
||||||
|
dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi); |
||||||
|
dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi); |
||||||
|
double lat = wgLat + dLat; |
||||||
|
double lon = wgLon + dLon; |
||||||
|
point.setLat(lat); |
||||||
|
point.setLng(lon); |
||||||
|
return point; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static void transform(double wgLat, double wgLon, double[] latlng) { |
||||||
|
if (outOfChina(wgLat, wgLon)) { |
||||||
|
latlng[0] = wgLat; |
||||||
|
latlng[1] = wgLon; |
||||||
|
return; |
||||||
|
} |
||||||
|
double dLat = transformLat(wgLon - 105.0, wgLat - 35.0); |
||||||
|
double dLon = transformLon(wgLon - 105.0, wgLat - 35.0); |
||||||
|
double radLat = wgLat / 180.0 * pi; |
||||||
|
double magic = Math.sin(radLat); |
||||||
|
magic = 1 - ee * magic * magic; |
||||||
|
double sqrtMagic = Math.sqrt(magic); |
||||||
|
dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi); |
||||||
|
dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi); |
||||||
|
latlng[0] = wgLat + dLat; |
||||||
|
latlng[1] = wgLon + dLon; |
||||||
|
} |
||||||
|
|
||||||
|
private static boolean outOfChina(double lat, double lon) { |
||||||
|
if (lon < 72.004 || lon > 137.8347) |
||||||
|
return true; |
||||||
|
if (lat < 0.8293 || lat > 55.8271) |
||||||
|
return true; |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
private static double transformLat(double x, double y) { |
||||||
|
double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x)); |
||||||
|
ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0; |
||||||
|
ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0; |
||||||
|
ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0; |
||||||
|
return ret; |
||||||
|
} |
||||||
|
|
||||||
|
private static double transformLon(double x, double y) { |
||||||
|
double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x)); |
||||||
|
ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0; |
||||||
|
ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0; |
||||||
|
ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0; |
||||||
|
return ret; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static Point gpsAddPrecision(String lng, String lat) { |
||||||
|
//进行坐标偏移
|
||||||
|
lng = lng.replace(",E",""); |
||||||
|
lat = lat.replace(",N",""); |
||||||
|
Point p = new Point(); |
||||||
|
p.setLng(gpsCalculate(Double.parseDouble(lng))); |
||||||
|
p.setLat(gpsCalculate(Double.parseDouble(lat))); |
||||||
|
return p; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* gps转百度坐标 |
||||||
|
* |
||||||
|
* @param gg_lat |
||||||
|
* @param gg_lon |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public static Point gpsTransformBaidu(double gg_lat, double gg_lon) { |
||||||
|
//进行坐标偏移
|
||||||
|
Point p = wgs_gcj_encrypts(gpsCalculate(gg_lat),gpsCalculate(gg_lon)); |
||||||
|
p = google_bd_encrypt(p.getLat(),p.getLng()); |
||||||
|
System.out.println(p); |
||||||
|
return p; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 将经纬度计算得到度分秒格式再转成度格式 |
||||||
|
* |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public static double gpsCalculate(double num) { |
||||||
|
int a = (int) num / 100; |
||||||
|
double b = (num - a * 100); |
||||||
|
int c = (int) (b); |
||||||
|
double d = (b - c) * 60; |
||||||
|
String e = a + "°" + c + "′" + d + "″"; |
||||||
|
return Dms2D(e); |
||||||
|
} |
||||||
|
|
||||||
|
public static double Dms2D(String dms_data) { |
||||||
|
if (!dms_data.contains("°") || !dms_data.contains("′") || !dms_data.contains("″")) |
||||||
|
return 0; |
||||||
|
double d = Double.parseDouble(dms_data.split("°")[0]); |
||||||
|
double m = Double.parseDouble(dms_data.split("°")[1].split("′")[0]); |
||||||
|
double s = Double.parseDouble(dms_data.split("°")[1].split("′")[1].replace("″", "")); |
||||||
|
return keep8Decimal(d + m / 60 + s / 60 / 60); |
||||||
|
} |
||||||
|
|
||||||
|
//保留8位小数
|
||||||
|
public static double keep8Decimal(double d) { |
||||||
|
BigDecimal bd = new BigDecimal(d); |
||||||
|
double d1 = bd.setScale(8, BigDecimal.ROUND_HALF_UP).doubleValue(); |
||||||
|
System.out.println(d1); |
||||||
|
return d1; |
||||||
|
} |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
//"lg": "11253.92844,E",
|
||||||
|
// "lt": "2813.70530,N",
|
||||||
|
//lg":"11253.04979,E","lt":"2812.81620,N"
|
||||||
|
|
||||||
|
System.out.println(gpsCalculate(11253.04979)); |
||||||
|
System.out.println(gpsCalculate(2812.81620)); |
||||||
|
//GpsGaoAndBaidu.gpsTransformBaidu( 2817.51641,11254.76586);
|
||||||
|
} |
||||||
|
} |
||||||
|
|
@ -0,0 +1,39 @@ |
|||||||
|
package com.cloud.kicc.commonbiz.util; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
/** |
||||||
|
* 用于构造地图中的坐标点 |
||||||
|
* |
||||||
|
* @author lw |
||||||
|
**/ |
||||||
|
@Data |
||||||
|
public class Point { |
||||||
|
|
||||||
|
private double lat;// 纬度
|
||||||
|
private double lng;// 经度
|
||||||
|
|
||||||
|
public Point() { |
||||||
|
} |
||||||
|
|
||||||
|
public Point(double lng, double lat) { |
||||||
|
this.lng = lng; |
||||||
|
this.lat = lat; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean equals(Object obj) { |
||||||
|
if (obj instanceof Point) { |
||||||
|
Point bmapPoint = (Point) obj; |
||||||
|
return (bmapPoint.getLng() == lng && bmapPoint.getLat() == lat) ? true : false; |
||||||
|
} else { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String toString() { |
||||||
|
return lng + "," + lat; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,305 @@ |
|||||||
|
package com.cloud.kicc.mqtt; |
||||||
|
|
||||||
|
import org.eclipse.paho.client.mqttv3.*; |
||||||
|
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; |
||||||
|
|
||||||
|
import javax.crypto.Mac; |
||||||
|
import javax.crypto.spec.SecretKeySpec; |
||||||
|
import javax.net.SocketFactory; |
||||||
|
import javax.net.ssl.SSLContext; |
||||||
|
import javax.net.ssl.TrustManager; |
||||||
|
import javax.net.ssl.TrustManagerFactory; |
||||||
|
import java.io.FileInputStream; |
||||||
|
import java.io.IOException; |
||||||
|
import java.io.InputStream; |
||||||
|
import java.security.KeyStore; |
||||||
|
import java.security.SecureRandom; |
||||||
|
import java.time.Instant; |
||||||
|
import java.time.ZoneId; |
||||||
|
import java.time.ZonedDateTime; |
||||||
|
import java.time.format.DateTimeFormatter; |
||||||
|
|
||||||
|
/** |
||||||
|
* @Author: lizhi |
||||||
|
* @Description: |
||||||
|
* @Since 1.0 |
||||||
|
* @Date Created in 15:31 2022/6/17 |
||||||
|
*/ |
||||||
|
public class MqttDemo { |
||||||
|
//IoT平台mqtt对接地址
|
||||||
|
private String serverIp = "4cbb346a33.iot-mqtts.cn-north-4.myhuaweicloud.com"; |
||||||
|
private int qosLevel = 1; |
||||||
|
private MqttAsyncClient client; |
||||||
|
// 创建设备时获得的deviceId,密钥(要替换为自己注册的设备ID与密钥)
|
||||||
|
static String deviceId = "62abefe0538e623c428797f2_test123"; |
||||||
|
static String secret = "caf9acadf03b02e1729267166eac7fdc"; |
||||||
|
private long minBackoff = 1000; |
||||||
|
private long maxBackoff = 30 * 1000; //30 seconds
|
||||||
|
private long defaultBackoff = 1000; |
||||||
|
private static int retryTimes = 0; |
||||||
|
private SecureRandom random = new SecureRandom(); |
||||||
|
|
||||||
|
public static void main(String[] args) throws MqttException { |
||||||
|
MqttDemo mqttDemo = new MqttDemo(); |
||||||
|
// mqttDemo.connect(false); //false:mqtt连接示例
|
||||||
|
mqttDemo.connect(true); //true:mqtts连接示例
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* mqtt建链 |
||||||
|
* |
||||||
|
* @param isSSL true:Mqtts加密连接 |
||||||
|
* false:Mqtt不加密连接 |
||||||
|
*/ |
||||||
|
private void connect(boolean isSSL) { |
||||||
|
String url; |
||||||
|
if (isSSL) { |
||||||
|
url = "ssl://" + serverIp + ":" + 8883; //mqtts连接
|
||||||
|
} else { |
||||||
|
url = "tcp://" + serverIp + ":" + 1883; //mqtt连接
|
||||||
|
} |
||||||
|
try { |
||||||
|
MqttConnectOptions options = new MqttConnectOptions(); |
||||||
|
if (isSSL) { |
||||||
|
options.setSocketFactory(getOptionSocketFactory(MqttDemo.class.getClassLoader().getResource("ca.jks").getPath())); |
||||||
|
options.setHttpsHostnameVerificationEnabled(false); |
||||||
|
} |
||||||
|
options.setCleanSession(false); |
||||||
|
options.setKeepAliveInterval(120); |
||||||
|
options.setConnectionTimeout(5000); |
||||||
|
options.setAutomaticReconnect(true); |
||||||
|
options.setUserName(deviceId); |
||||||
|
options.setPassword(getPassword().toCharArray()); |
||||||
|
|
||||||
|
System.out.println("Start mqtt connect, url:" + url); |
||||||
|
//设置MqttClient
|
||||||
|
client = new MqttAsyncClient(url, getClientId(), new MemoryPersistence()); |
||||||
|
client.setCallback(callback); |
||||||
|
//建立连接
|
||||||
|
client.connect(options, null, new IMqttActionListener() { |
||||||
|
@Override |
||||||
|
public void onSuccess(IMqttToken iMqttToken) { |
||||||
|
retryTimes = 0; |
||||||
|
System.out.println("Mqtt connect success."); |
||||||
|
publishMessage(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void onFailure(IMqttToken iMqttToken, Throwable throwable) { |
||||||
|
System.out.println("Mqtt connect fail."); |
||||||
|
|
||||||
|
//退避重连
|
||||||
|
int lowBound = (int) (defaultBackoff * 0.8); |
||||||
|
int highBound = (int) (defaultBackoff * 1.2); |
||||||
|
long randomBackOff = random.nextInt(highBound - lowBound); |
||||||
|
long backOffWithJitter = (int) (Math.pow(2.0, (double) retryTimes)) * (randomBackOff + lowBound); |
||||||
|
long waitTImeUntilNextRetry = (int) (minBackoff + backOffWithJitter) > maxBackoff ? maxBackoff : (minBackoff + backOffWithJitter); |
||||||
|
System.out.println("---- " + waitTImeUntilNextRetry); |
||||||
|
try { |
||||||
|
Thread.sleep(waitTImeUntilNextRetry); |
||||||
|
} catch (InterruptedException e) { |
||||||
|
System.out.println("sleep failed, the reason is" + e.getMessage().toString()); |
||||||
|
} |
||||||
|
retryTimes++; |
||||||
|
MqttDemo.this.connect(true); |
||||||
|
} |
||||||
|
}); |
||||||
|
} catch (Exception e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Mqtt回调 |
||||||
|
*/ |
||||||
|
private MqttCallback callback = new MqttCallbackExtended() { |
||||||
|
@Override |
||||||
|
public void connectComplete(boolean reconnect, String serviceURI) { |
||||||
|
System.out.println("Mqtt client connected, address:" + serviceURI); |
||||||
|
subScribeTopic(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void connectionLost(Throwable throwable) { |
||||||
|
System.out.println("Connection lost."); |
||||||
|
//可在此处实现重连
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void messageArrived(String topic, MqttMessage message) throws Exception { |
||||||
|
System.out.println("Receive mqtt topic:" + topic + ", message:" + message); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { |
||||||
|
System.out.println("Mqtt message deliver complete."); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
/** |
||||||
|
* 订阅接收命令topic |
||||||
|
*/ |
||||||
|
private void subScribeTopic() { |
||||||
|
try { |
||||||
|
client.subscribe(getCmdRequestTopic(), qosLevel, null, new IMqttActionListener() { |
||||||
|
@Override |
||||||
|
public void onSuccess(IMqttToken iMqttToken) { |
||||||
|
System.out.println("Subscribe mqtt topic success"); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void onFailure(IMqttToken iMqttToken, Throwable throwable) { |
||||||
|
System.out.println("Subscribe mqtt topic fail"); |
||||||
|
} |
||||||
|
}); |
||||||
|
} catch (MqttException e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 上报json数据,注意serviceId要与Profile中的定义对应 |
||||||
|
*/ |
||||||
|
private void publishMessage() { |
||||||
|
String jsonMsg = "{\"services\":[{\"service_id\":\"BasicData\",\"properties\":{\"luminance\":30},\"eventTime\":null}]}"; |
||||||
|
MqttMessage message = new MqttMessage(jsonMsg.getBytes()); |
||||||
|
try { |
||||||
|
client.publish(getReportTopic(), message, qosLevel, new IMqttActionListener() { |
||||||
|
@Override |
||||||
|
public void onSuccess(IMqttToken iMqttToken) { |
||||||
|
System.out.println("Publish mqtt message success"); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void onFailure(IMqttToken iMqttToken, Throwable throwable) { |
||||||
|
System.out.println("Publish mqtt message fail"); |
||||||
|
} |
||||||
|
}); |
||||||
|
} catch (MqttException e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 属性上报topic |
||||||
|
* |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
private String getReportTopic() { |
||||||
|
return "$oc/devices/" + deviceId + "/sys/properties/report"; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 订阅命令下发topic |
||||||
|
* |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
private String getCmdRequestTopic() { |
||||||
|
return "$oc/devices/" + deviceId + "/sys/commands/#"; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 加载SSL证书 |
||||||
|
* |
||||||
|
* @param certPath 证书存放的相对路径 |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
private SocketFactory getOptionSocketFactory(String certPath) { |
||||||
|
SSLContext sslContext; |
||||||
|
|
||||||
|
InputStream stream = null; |
||||||
|
try { |
||||||
|
stream = new FileInputStream(certPath); |
||||||
|
sslContext = SSLContext.getInstance("TLS"); |
||||||
|
KeyStore ts = KeyStore.getInstance("JKS"); |
||||||
|
ts.load(stream, null); |
||||||
|
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); |
||||||
|
tmf.init(ts); |
||||||
|
TrustManager[] tm = tmf.getTrustManagers(); |
||||||
|
sslContext.init(null, tm, new SecureRandom()); |
||||||
|
} catch (Exception e) { |
||||||
|
e.printStackTrace(); |
||||||
|
return null; |
||||||
|
} finally { |
||||||
|
if (stream != null) { |
||||||
|
try { |
||||||
|
stream.close(); |
||||||
|
} catch (IOException e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return sslContext.getSocketFactory(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/*** |
||||||
|
* 调用sha256算法进行哈希 |
||||||
|
* |
||||||
|
* @param message |
||||||
|
* @param tStamp |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
private String sha256_mac(String message, String tStamp) { |
||||||
|
String passWord = null; |
||||||
|
try { |
||||||
|
Mac sha256_HMAC = Mac.getInstance("HmacSHA256"); |
||||||
|
SecretKeySpec secret_key = new SecretKeySpec(tStamp.getBytes(), "HmacSHA256"); |
||||||
|
sha256_HMAC.init(secret_key); |
||||||
|
byte[] bytes = sha256_HMAC.doFinal(message.getBytes()); |
||||||
|
passWord = byteArrayToHexString(bytes); |
||||||
|
} catch (Exception e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
return passWord; |
||||||
|
} |
||||||
|
|
||||||
|
/*** |
||||||
|
* byte数组转16进制字符串 |
||||||
|
* |
||||||
|
* @param b |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
private String byteArrayToHexString(byte[] b) { |
||||||
|
StringBuilder hs = new StringBuilder(); |
||||||
|
String stmp; |
||||||
|
for (int n = 0; b != null && n < b.length; n++) { |
||||||
|
stmp = Integer.toHexString(b[n] & 0XFF); |
||||||
|
if (stmp.length() == 1) { |
||||||
|
hs.append('0'); |
||||||
|
} |
||||||
|
hs.append(stmp); |
||||||
|
} |
||||||
|
return hs.toString().toLowerCase(); |
||||||
|
} |
||||||
|
|
||||||
|
/*** |
||||||
|
* 要求:10位数字 |
||||||
|
* |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
private String getTimeStamp() { |
||||||
|
String timeStamp = ZonedDateTime.ofInstant(Instant.now(), ZoneId.of("UTC")) |
||||||
|
.format(DateTimeFormatter.ofPattern("yyyyMMddHH")); |
||||||
|
return timeStamp; |
||||||
|
} |
||||||
|
|
||||||
|
private String getClientId() { |
||||||
|
return deviceId + "_0_0_" + getTimeStamp(); |
||||||
|
} |
||||||
|
|
||||||
|
private String getPassword() { |
||||||
|
return sha256_mac(secret, getTimeStamp()); |
||||||
|
} |
||||||
|
|
||||||
|
private void close() { |
||||||
|
try { |
||||||
|
client.disconnect(); |
||||||
|
client.close(); |
||||||
|
} catch (MqttException e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Binary file not shown.
@ -0,0 +1,76 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
||||||
|
<mapper namespace="com.cloud.kicc.commonbiz.mapper.equip.EquipBeeperMapper"> |
||||||
|
|
||||||
|
<resultMap id="BaseResultMap" type="com.cloud.kicc.equip.api.entity.beeper.EquipBeeper"> |
||||||
|
<result column="id" property="id"/> |
||||||
|
<result column="beeper_name" property="beeperName"/> |
||||||
|
<result column="beeper_code" property="beeperCode"/> |
||||||
|
<result column="beeper_type" property="beeperType"/> |
||||||
|
<result column="wifi_name" property="wifiName"/> |
||||||
|
<result column="wifi_pwd" property="wifiPwd"/> |
||||||
|
<result column="hospital_id" property="hospitalId"/> |
||||||
|
<result column="office_id" property="officeId"/> |
||||||
|
<result column="doctor_id" property="doctorId"/> |
||||||
|
<result column="remarks" property="remarks"/> |
||||||
|
<result column="status" property="status"/> |
||||||
|
<result column="create_by_id" property="createById"/> |
||||||
|
<result column="create_by_name" property="createByName"/> |
||||||
|
<result column="create_time" property="createTime"/> |
||||||
|
<result column="update_by_id" property="updateById"/> |
||||||
|
<result column="update_by_name" property="updateByName"/> |
||||||
|
<result column="update_time" property="updateTime"/> |
||||||
|
<result column="hospital_name" property="hospitalName"/> |
||||||
|
<result column="office_name" property="officeName"/> |
||||||
|
<result column="doctor_name" property="doctorName"/> |
||||||
|
</resultMap> |
||||||
|
|
||||||
|
<sql id="table_name">equip_beeper</sql> |
||||||
|
|
||||||
|
<select id="pageQuery" parameterType="com.cloud.kicc.equip.api.entity.beeper.EquipBeeper" resultMap="BaseResultMap"> |
||||||
|
SELECT |
||||||
|
a.id,a.beeper_name,a.beeper_code,a.beeper_type,a.wifi_name,a.wifi_pwd,a.wifi_pwd,a.status,a.create_time |
||||||
|
,(select ins.hospital_name from t_hospital ins where ins.hospital_id = a.hospital_id) as hospital_name |
||||||
|
,(select o.office_name from t_office o where o.office_id = a.office_id) as office_name |
||||||
|
,(select d.doctor_name from t_doctor d where d.doctor_id = a.doctor_id) as doctor_name |
||||||
|
FROM |
||||||
|
<include refid="table_name"/> a |
||||||
|
<where> |
||||||
|
<if test="opm.beeperName != null and opm.beeperName != ''"> |
||||||
|
AND instr(a.beeper_name,ltrim(rtrim(#{opm.beeperName})))>0 |
||||||
|
</if> |
||||||
|
<if test="opm.beeperCode != null and opm.beeperCode != ''"> |
||||||
|
AND instr(a.beeper_code,ltrim(rtrim(#{opm.beeperCode})))>0 |
||||||
|
</if> |
||||||
|
<if test="opm.status != null"> |
||||||
|
AND a.status = #{opm.status} |
||||||
|
</if> |
||||||
|
<if test="opm.hospitalId != null"> |
||||||
|
AND a.hospital_id = #{opm.hospitalId} |
||||||
|
</if> |
||||||
|
<if test="opm.officeId != null"> |
||||||
|
AND a.office_id = #{opm.officeId} |
||||||
|
</if> |
||||||
|
<if test="opm.doctorId != null"> |
||||||
|
AND a.doctor_id = #{opm.doctorId} |
||||||
|
</if> |
||||||
|
<if test="opm.beeperType != null"> |
||||||
|
AND a.beeper_type = #{opm.beeperType} |
||||||
|
</if> |
||||||
|
</where> |
||||||
|
ORDER BY a.id DESC |
||||||
|
</select> |
||||||
|
|
||||||
|
<select id="selectData" parameterType="com.cloud.kicc.equip.api.entity.beeper.EquipBeeper" resultMap="BaseResultMap"> |
||||||
|
SELECT |
||||||
|
a.id,a.beeper_name,a.beeper_code,a.beeper_type,a.wifi_name,a.wifi_pwd,a.wifi_pwd |
||||||
|
,a.hospital_id,a.office_id,a.doctor_id,a.remarks,a.status,a.create_time |
||||||
|
,(select ins.hospital_name from t_hospital ins where ins.hospital_id = a.hospital_id) as hospital_name |
||||||
|
,(select o.office_name from t_office o where o.office_id = a.office_id) as office_name |
||||||
|
,(select d.doctor_name from t_doctor d where d.doctor_id = a.doctor_id) as doctor_name |
||||||
|
FROM |
||||||
|
<include refid="table_name"/> a |
||||||
|
where a.id=#{id} |
||||||
|
</select> |
||||||
|
|
||||||
|
</mapper> |
@ -0,0 +1,4 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
||||||
|
<mapper namespace="com.cloud.kicc.commonbiz.mapper.equip.EquipBeeperRecordMapper"> |
||||||
|
</mapper> |
@ -0,0 +1,4 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
||||||
|
<mapper namespace="com.cloud.kicc.commonbiz.mapper.equip.EquipBoxCardMapper"> |
||||||
|
</mapper> |
@ -0,0 +1,4 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
||||||
|
<mapper namespace="com.cloud.kicc.commonbiz.mapper.equip.EquipBoxLogMapper"> |
||||||
|
</mapper> |
@ -0,0 +1,79 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
||||||
|
<mapper namespace="com.cloud.kicc.commonbiz.mapper.equip.EquipBoxMapper"> |
||||||
|
|
||||||
|
<resultMap id="BaseResultMap" type="com.cloud.kicc.equip.api.entity.box.EquipBox"> |
||||||
|
<result column="id" property="boxId"/> |
||||||
|
<result column="box_name" property="boxName"/> |
||||||
|
<result column="box_code" property="boxCode"/> |
||||||
|
<result column="box_type" property="boxType"/> |
||||||
|
<result column="remarks" property="remarks"/> |
||||||
|
<result column="status" property="status"/> |
||||||
|
<result column="create_by_id" property="createById"/> |
||||||
|
<result column="create_by_name" property="createByName"/> |
||||||
|
<result column="create_time" property="createTime"/> |
||||||
|
<result column="update_by_id" property="updateById"/> |
||||||
|
<result column="update_by_name" property="updateByName"/> |
||||||
|
<result column="update_time" property="updateTime"/> |
||||||
|
<result column="sy_user_name" property="syUserName"/> |
||||||
|
</resultMap> |
||||||
|
|
||||||
|
<sql id="table_name">equip_box</sql> |
||||||
|
<sql id="box_card_table_name">equip_box_card</sql> |
||||||
|
|
||||||
|
<sql id="Base_Column_List"> |
||||||
|
a.id,a.box_name,a.box_code,a.box_type,a.temp,a.damp,a.lng,a.lat,a.addr,a.power,a.tilt,a.card_id |
||||||
|
,a.sy_user_id,a.temp_min,a.temp_max,a.rfid_min,a.beat |
||||||
|
,a.box_status,a.open_status,a.cold_status,a.warn_status,a.error_status |
||||||
|
,a.connect_time,a.close_time,a.latest_time,a.remarks,a.status,a.create_by_id,a.create_by_name,a.create_time,a.status |
||||||
|
</sql> |
||||||
|
|
||||||
|
<select id="pageQuery" parameterType="com.cloud.kicc.equip.api.entity.box.EquipBox" resultType="com.cloud.kicc.equip.api.entity.box.EquipBox"> |
||||||
|
SELECT |
||||||
|
<include refid="Base_Column_List"/> |
||||||
|
,(select s.user_name from t_sys_admin s where s.user_id = a.sy_user_id) as sy_user_name |
||||||
|
FROM |
||||||
|
<include refid="table_name"/> a |
||||||
|
<where> |
||||||
|
<if test="opm.boxName != null and opm.boxName != ''"> |
||||||
|
AND instr(a.box_name,ltrim(rtrim(#{opm.boxName})))>0 |
||||||
|
</if> |
||||||
|
<if test="opm.boxCode != null and opm.boxCode != ''"> |
||||||
|
AND instr(a.box_code,ltrim(rtrim(#{opm.boxCode})))>0 |
||||||
|
</if> |
||||||
|
<if test="opm.boxType != null"> |
||||||
|
AND a.box_type = #{opm.boxType} |
||||||
|
</if> |
||||||
|
<if test="opm.boxStatus != null"> |
||||||
|
AND a.box_status = #{opm.boxStatus} |
||||||
|
</if> |
||||||
|
<if test="opm.openStatus != null"> |
||||||
|
AND a.open_status = #{opm.openStatus} |
||||||
|
</if> |
||||||
|
<if test="opm.coldStatus != null"> |
||||||
|
AND a.cold_status = #{opm.coldStatus} |
||||||
|
</if> |
||||||
|
<if test="opm.warnStatus != null"> |
||||||
|
AND a.warn_status = #{opm.warnStatus} |
||||||
|
</if> |
||||||
|
<if test="opm.errorStatus != null"> |
||||||
|
AND a.error_status = #{opm.errorStatus} |
||||||
|
</if> |
||||||
|
<if test="opm.state != null"> |
||||||
|
AND a.status = #{opm.status} |
||||||
|
</if> |
||||||
|
</where> |
||||||
|
ORDER BY a.id DESC |
||||||
|
</select> |
||||||
|
|
||||||
|
<select id="selectData" parameterType="com.cloud.kicc.equip.api.entity.box.EquipBox" resultType="com.cloud.kicc.equip.api.entity.box.EquipBox"> |
||||||
|
SELECT |
||||||
|
<include refid="Base_Column_List"/> |
||||||
|
,(select s.user_name from t_sys_admin s where s.user_id = a.sy_user_id) as sy_user_name |
||||||
|
,(select c.iccid from <include refid="box_card_table_name"/> c where c.card_id = a.card_id) as iccid |
||||||
|
FROM |
||||||
|
<include refid="table_name"/> a |
||||||
|
where a.id=#{id} |
||||||
|
</select> |
||||||
|
|
||||||
|
</mapper> |
@ -0,0 +1,4 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
||||||
|
<mapper namespace="com.cloud.kicc.commonbiz.mapper.equip.EquipBoxRecordMapper"> |
||||||
|
</mapper> |
@ -0,0 +1,4 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
||||||
|
<mapper namespace="com.cloud.kicc.commonbiz.mapper.equip.EquipBoxRfidLogMapper"> |
||||||
|
</mapper> |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue