15 changed files with 974 additions and 0 deletions
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
package com.cloud.kicc.commonbiz.api.dto; |
||||
|
||||
|
||||
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 @@
@@ -0,0 +1,23 @@
|
||||
package com.cloud.kicc.commonbiz.api.dto; |
||||
|
||||
|
||||
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 @@
@@ -0,0 +1,75 @@
|
||||
package com.cloud.kicc.commonbiz.api.dto; |
||||
|
||||
|
||||
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,33 @@
@@ -0,0 +1,33 @@
|
||||
package com.cloud.kicc.commonbiz.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 @@
@@ -0,0 +1,23 @@
|
||||
package com.cloud.kicc.commonbiz.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 Integer cardId; |
||||
|
||||
private String iccid; |
||||
|
||||
private String card; |
||||
|
||||
|
||||
} |
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
package com.cloud.kicc.commonbiz.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,223 @@
@@ -0,0 +1,223 @@
|
||||
package com.cloud.kicc.commonbiz.service.impl; |
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
||||
import com.cloud.kicc.commonbiz.service.*; |
||||
import com.cloud.kicc.commonbiz.api.constant.EquipConstants; |
||||
import com.cloud.kicc.commonbiz.api.dto.DownCmdParam; |
||||
import com.cloud.kicc.commonbiz.api.entity.EquipBox; |
||||
import com.cloud.kicc.commonbiz.api.entity.EquipBoxRecord; |
||||
import com.cloud.kicc.commonbiz.api.entity.EquipBoxUser; |
||||
import com.cloud.kicc.commonbiz.api.enums.CmdEnum; |
||||
import com.cloud.kicc.commonbiz.api.enums.CmdStatusEnum; |
||||
import com.cloud.kicc.commonbiz.api.vo.DownCmdVo; |
||||
|
||||
import lombok.AllArgsConstructor; |
||||
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 @@
@@ -0,0 +1,164 @@
|
||||
package com.cloud.kicc.commonbiz.service.impl; |
||||
|
||||
|
||||
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.BoxUpCmdService; |
||||
import com.cloud.kicc.commonbiz.service.EquipBoxLogService; |
||||
import com.cloud.kicc.commonbiz.service.EquipBoxRfidLogService; |
||||
import com.cloud.kicc.commonbiz.service.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.commonbiz.api.constant.EquipConstants; |
||||
import com.cloud.kicc.commonbiz.api.dto.UpCmdParam; |
||||
import com.cloud.kicc.commonbiz.api.entity.EquipBox; |
||||
import com.cloud.kicc.commonbiz.api.entity.EquipBoxLog; |
||||
import com.cloud.kicc.commonbiz.api.entity.EquipBoxRfidLog; |
||||
import com.cloud.kicc.commonbiz.api.enums.BoxStatusEnum; |
||||
import com.cloud.kicc.commonbiz.api.enums.CmdEnum; |
||||
import com.cloud.kicc.commonbiz.api.vo.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,44 @@
@@ -0,0 +1,44 @@
|
||||
package com.cloud.kicc.commonbiz.service.impl; |
||||
|
||||
|
||||
import com.cloud.kicc.commonbiz.service.DownCmdService; |
||||
import com.cloud.kicc.commonbiz.api.vo.DownCmdVo; |
||||
|
||||
import lombok.AllArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.slf4j.Logger; |
||||
import org.slf4j.LoggerFactory; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
/** |
||||
* 标本箱下行指令服务实现类 |
||||
* |
||||
* @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 @@
@@ -0,0 +1,50 @@
|
||||
package com.cloud.kicc.commonbiz.service.impl; |
||||
|
||||
|
||||
|
||||
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.EquipBoxCardMapper; |
||||
import com.cloud.kicc.commonbiz.service.EquipBoxCardService; |
||||
import com.cloud.kicc.commonbiz.api.entity.EquipBoxCard; |
||||
import com.cloud.kicc.commonbiz.api.vo.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 @@
@@ -0,0 +1,38 @@
|
||||
package com.cloud.kicc.commonbiz.service.impl; |
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||
import com.cloud.kicc.commonbiz.mapper.EquipBoxLogMapper; |
||||
import com.cloud.kicc.commonbiz.service.EquipBoxLogService; |
||||
import com.cloud.kicc.commonbiz.api.entity.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 @@
@@ -0,0 +1,71 @@
|
||||
package com.cloud.kicc.commonbiz.service.impl; |
||||
|
||||
|
||||
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.EquipBoxRecordMapper; |
||||
import com.cloud.kicc.commonbiz.service.EquipBoxRecordService; |
||||
import com.cloud.kicc.commonbiz.service.EquipBoxService; |
||||
import com.cloud.kicc.commonbiz.api.dto.UpCmdParam; |
||||
import com.cloud.kicc.commonbiz.api.entity.EquipBox; |
||||
import com.cloud.kicc.commonbiz.api.entity.EquipBoxRecord; |
||||
import com.cloud.kicc.commonbiz.api.vo.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 @@
@@ -0,0 +1,24 @@
|
||||
package com.cloud.kicc.commonbiz.service.impl; |
||||
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||
import com.cloud.kicc.commonbiz.mapper.EquipBoxRfidLogMapper; |
||||
import com.cloud.kicc.commonbiz.service.EquipBoxRfidLogService; |
||||
import com.cloud.kicc.commonbiz.api.entity.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 @@
@@ -0,0 +1,98 @@
|
||||
package com.cloud.kicc.commonbiz.service.impl; |
||||
|
||||
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.EquipBoxMapper; |
||||
import com.cloud.kicc.commonbiz.service.EquipBoxCardService; |
||||
import com.cloud.kicc.commonbiz.service.EquipBoxService; |
||||
import com.cloud.kicc.commonbiz.api.constant.EquipConstants; |
||||
import com.cloud.kicc.commonbiz.api.entity.EquipBox; |
||||
import com.cloud.kicc.commonbiz.api.entity.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 @@
@@ -0,0 +1,53 @@
|
||||
package com.cloud.kicc.commonbiz.service.impl; |
||||
|
||||
|
||||
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.EquipBoxUserMapper; |
||||
import com.cloud.kicc.commonbiz.service.EquipBoxUserService; |
||||
import com.cloud.kicc.commonbiz.api.entity.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); |
||||
} |
||||
|
||||
|
||||
} |
Loading…
Reference in new issue