温湿度数采接口

dev
litao 3 years ago
parent 89e84ede38
commit fc166eb894
  1. 6
      lab-service-api/lab-dict-api/src/main/java/org/springblade/system/enums/DictBizEnum.java
  2. 17
      lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/Cache/LimsCache.java
  3. BIN
      lab-service/lab-lims/lib/param.dat
  4. 5
      lab-service/lab-lims/pom.xml
  5. 29
      lab-service/lab-lims/src/main/java/org/springblade/lims/controller/LargeScreenController.java
  6. 134
      lab-service/lab-lims/src/main/java/org/springblade/lims/demo/DataAcquisition.java
  7. 110
      lab-service/lab-lims/src/main/java/org/springblade/lims/demo/Demo.java
  8. 19
      lab-service/lab-lims/src/main/java/org/springblade/lims/demo/RunService.java
  9. 11
      lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/EntrustServiceImpl.java

@ -80,7 +80,11 @@ public enum DictBizEnum {
/**
* 考核方式
*/
ASSESSMENT_METHOD("assessment_method")
ASSESSMENT_METHOD("assessment_method"),
/**
* 数采
*/
DATA_ACQUISITION("data_acquisition")
;

@ -0,0 +1,17 @@
package org.springblade.lims.Cache;
import org.springblade.core.cache.utils.CacheUtil;
import java.util.Map;
import static org.springblade.core.cache.constant.CacheConstant.DEFAULT_CACHE;
public class LimsCache {
private static final String DATA_ACQUISITION_ID = "dataAcquisition:id:";
public static Map getDeptChildIds(String value) {
Map map = CacheUtil.get(DEFAULT_CACHE, DATA_ACQUISITION_ID, value, Map.class);
return map;
}
}

@ -199,6 +199,11 @@
<artifactId>documents4j-transformer-msoffice-word</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>sdk</groupId>
<artifactId>netdevice</artifactId>
<version>2.2.2</version>
</dependency>
</dependencies>

@ -6,11 +6,15 @@ import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
import org.openxmlformats.schemas.drawingml.x2006.chart.STErrBarType;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.lims.Cache.LimsCache;
import org.springblade.lims.entry.*;
import org.springblade.lims.service.*;
import org.springblade.system.cache.DictBizCache;
import org.springblade.system.enums.DictBizEnum;
import org.springblade.system.feign.ISysClient;
import org.springframework.web.bind.annotation.*;
@ -20,6 +24,9 @@ import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import static org.springblade.core.cache.constant.CacheConstant.DEFAULT_CACHE;
import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
/**
* @author swj
* @since 2022年6月1日19:49:10
@ -553,4 +560,26 @@ public class LargeScreenController extends BladeController {
return R.data(map);
}
/**
* 温湿度
*/
@GetMapping("/dataAcquisition")
public R<Map> dataAcquisition(String num) {
// String value = DictBizCache.getValue(DictBizEnum.DATA_ACQUISITION, num);
// System.out.println("value:" + value);
Map map = LimsCache.getDeptChildIds(num);
// Map map = CacheUtil.get(DEFAULT_CACHE, "dataAcquisition:id:", value, Map.class);
// Map map = CacheUtil.get(SYS_CACHE, "dataAcquisition:id:", 10051504 + "-" + 1, Map.class);
System.out.println("map:" + map);
if (map != null) {
float wd = (float) map.get("wd");
float sd = (float) map.get("sd");
map.put("wd", (int) (wd + 0.5));
map.put("sd", (int) (sd + 0.5));
}
// System.out.println("温度:" + map.get("wd"));
// System.out.println("湿度:" + map.get("sd"));
System.out.println("map:" + map);
return R.data(map);
}
}

@ -0,0 +1,134 @@
package org.springblade.lims.demo;
import com.jnrsmcu.sdk.netdevice.*;
import org.springblade.core.cache.utils.CacheUtil;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
import static org.springblade.core.cache.constant.CacheConstant.DEFAULT_CACHE;
public class DataAcquisition implements Runnable {
private RSServer rsServer;
private static final String DATA_ACQUISITION_ID = "dataAcquisition:id:";
@Override
public void run() {
rsServer = RSServer.Initiate(2404);// 初始化
rsServer.addDataListener(new IDataListener() {// 添加监听
@Override
public void receiveTimmingAck(TimmingAck data) {// 校时指令应答处理
System.out.println("校时应答->设备编号:" + data.getDeviceId()
+ "\t执行结果:" + data.getStatus());
}
@Override
public void receiveTelecontrolAck(TelecontrolAck data) {// 遥控指令应答处理
System.out.println("遥控应答->设备编号:" + data.getDeviceId()
+ "\t继电器编号:" + data.getRelayId() + "\t执行结果:"
+ data.getStatus());
}
@Override
public void receiveStoreData(StoreData data) {// 已存储数据接收处理
// 遍历节点数据。数据包括网络设备的数据以及各个节点数据。温湿度数据存放在节点数据中
for (NodeData nd : data.getNodeList()) {
SimpleDateFormat sdf = new SimpleDateFormat(
"yy-MM-dd HH:mm:ss");
String str = sdf.format(nd.getRecordTime());
System.out.println("存储数据->设备地址:" + data.getDeviceId()
+ "\t节点:" + nd.getNodeId() + "\t温度:" + nd.getTem()
+ "\t湿度:" + nd.getHum() + "\t存储时间:" + str);
}
}
@Override
public void receiveRealtimeData(RealTimeData data) {// 实时数据接收处理
// 遍历节点数据。数据包括网络设备的数据以及各个节点数据。温湿度数据存放在节点数据中
for (NodeData nd : data.getNodeList()) {
System.out.println("实时数据->设备地址:" + data.getDeviceId()
+ "\t节点:" + nd.getNodeId() + "\t温度:" + nd.getTem()
+ "\t湿度:" + nd.getHum() + "\t经度:" + data.getLng()
+ "\t纬度:" + data.getLat() + "\t坐标类型:"
+ data.getCoordinateType() + "\t继电器状态:"
+ data.getRelayStatus());
Map<String, Object> map = new HashMap();
map.put("wd", nd.getTem());
map.put("sd", nd.getHum());
CacheUtil.put(DEFAULT_CACHE, "dataAcquisition:id:", data.getDeviceId() + "-" + nd.getNodeId(), map);
Map map1 = CacheUtil.get(DEFAULT_CACHE, "dataAcquisition:id:", data.getDeviceId() + "-" + nd.getNodeId(), Map.class);
System.out.println(data.getDeviceId() + "-" + nd.getNodeId() + ":" + map1);
}
}
@Override
public void receiveLoginData(LoginData data) {// 登录数据接收处理
System.out.println("登录->设备地址:" + data.getDeviceId());
}
@Override
public void receiveParamIds(ParamIdsData data) {
String str = "设备参数编号列表->设备编号:" + data.getDeviceId()
+ "\t参数总数量:" + data.getTotalCount() + "\t本帧参数数量:"
+ data.getCount() + "\r\n";
for (int paramId : data.getPararmIdList())// 遍历设备中参数id编号
{
str += paramId + ",";
}
System.out.println(str);
}
@Override
public void receiveParam(ParamData data) {
String str = "设备参数->设备编号:" + data.getDeviceId() + "\r\n";
for (ParamItem pararm : data.getParameterList()) {
str += "参数编号:"
+ pararm.getParamId()
+ "\t参数描述:"
+ pararm.getDescription()
+ "\t参数值:"
+ (pararm.getValueDescription() == null ? pararm
.getValue() : pararm.getValueDescription()
.get(pararm.getValue())) + "\r\n";
}
System.out.println(str);
}
@Override
public void receiveWriteParamAck(WriteParamAck data) {
String str = "下载设备参数->设备编号:" + data.getDeviceId() + "\t参数数量:"
+ data.getCount() + "\t"
+ (data.isSuccess() ? "下载成功" : "下载失败");
System.out.println(str);
}
@Override
public void receiveTransDataAck(TransDataAck data) {
String str = "数据透传->设备编号:" + data.getDeviceId() + "\t响应结果:"
+ data.getData() + "\r\n字节数:" + data.getTransDataLen();
System.out.println(str);
}
});
start();
}
public void start() {
try {
rsServer.start();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

@ -0,0 +1,110 @@
package org.springblade.lims.demo;
public class Demo {
// public static void main(String[] args) throws IOException, InterruptedException {
//
// RSServer rsServer = RSServer.Initiate(2404);// 初始化
//
// rsServer.addDataListener(new IDataListener() {// 添加监听
// @Override
// public void receiveTimmingAck(TimmingAck data) {// 校时指令应答处理
// System.out.println("校时应答->设备编号:" + data.getDeviceId()
// + "\t执行结果:" + data.getStatus());
// }
//
// @Override
// public void receiveTelecontrolAck(TelecontrolAck data) {// 遥控指令应答处理
// System.out.println("遥控应答->设备编号:" + data.getDeviceId()
// + "\t继电器编号:" + data.getRelayId() + "\t执行结果:"
// + data.getStatus());
// }
//
// @Override
// public void receiveStoreData(StoreData data) {// 已存储数据接收处理
// // 遍历节点数据。数据包括网络设备的数据以及各个节点数据。温湿度数据存放在节点数据中
// for (NodeData nd : data.getNodeList()) {
// SimpleDateFormat sdf = new SimpleDateFormat(
// "yy-MM-dd HH:mm:ss");
// String str = sdf.format(nd.getRecordTime());
// System.out.println("存储数据->设备地址:" + data.getDeviceId()
// + "\t节点:" + nd.getNodeId() + "\t温度:" + nd.getTem()
// + "\t湿度:" + nd.getHum() + "\t存储时间:" + str);
// }
//
// }
//
// @Override
// public void receiveRealtimeData(RealTimeData data) {// 实时数据接收处理
// // 遍历节点数据。数据包括网络设备的数据以及各个节点数据。温湿度数据存放在节点数据中
// for (NodeData nd : data.getNodeList()) {
// System.out.println("实时数据->设备地址:" + data.getDeviceId()
// + "\t节点:" + nd.getNodeId() + "\t温度:" + nd.getTem()
// + "\t湿度:" + nd.getHum() + "\t经度:" + data.getLng()
// + "\t纬度:" + data.getLat() + "\t坐标类型:"
// + data.getCoordinateType() + "\t继电器状态:"
// + data.getRelayStatus());
// }
//
// }
//
// @Override
// public void receiveLoginData(LoginData data) {// 登录数据接收处理
// System.out.println("登录->设备地址:" + data.getDeviceId());
//
// }
//
// @Override
// public void receiveParamIds(ParamIdsData data) {
// String str = "设备参数编号列表->设备编号:" + data.getDeviceId()
// + "\t参数总数量:" + data.getTotalCount() + "\t本帧参数数量:"
// + data.getCount() + "\r\n";
// for (int paramId : data.getPararmIdList())// 遍历设备中参数id编号
// {
// str += paramId + ",";
// }
// System.out.println(str);
//
// }
//
// @Override
// public void receiveParam(ParamData data) {
// String str = "设备参数->设备编号:" + data.getDeviceId() + "\r\n";
//
// for (ParamItem pararm : data.getParameterList()) {
// str += "参数编号:"
// + pararm.getParamId()
// + "\t参数描述:"
// + pararm.getDescription()
// + "\t参数值:"
// + (pararm.getValueDescription() == null ? pararm
// .getValue() : pararm.getValueDescription()
// .get(pararm.getValue())) + "\r\n";
// }
// System.out.println(str);
//
// }
//
// @Override
// public void receiveWriteParamAck(WriteParamAck data) {
// String str = "下载设备参数->设备编号:" + data.getDeviceId() + "\t参数数量:"
// + data.getCount() + "\t"
// + (data.isSuccess() ? "下载成功" : "下载失败");
// System.out.println(str);
//
// }
//
// @Override
// public void receiveTransDataAck(TransDataAck data) {
// String str = "数据透传->设备编号:" + data.getDeviceId() + "\t响应结果:"
// + data.getData() + "\r\n字节数:" + data.getTransDataLen();
// System.out.println(str);
//
// }
// });
// rsServer.start();
//
// }
}

@ -0,0 +1,19 @@
package org.springblade.lims.demo;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class RunService {
@PostConstruct
public void run() {
DataAcquisition dataAcquisition = new DataAcquisition();
Thread thread = new Thread(dataAcquisition);
thread.start();
}
}

@ -370,6 +370,7 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
currTemplate = DictBizCache.getKey(DictBizEnum.PRINT_URL.getName(), "print10");
}
List<ExamineResultVo> resultList = new ArrayList<>();
System.out.println("examineList: " + examineList);
// 根据检验判断有几个name
for (int i = 1; i <= examineList.size(); i++) {
Examine examine = examineList.get(i - 1);
@ -383,18 +384,21 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
// 根据检测检测项目拿检测结果
ExamineResult examineResult = getExamineResultByExamineId(examine.getId());
System.out.println("examineResult: " + examineResult);
// 布鲁氏检测
if ("2".equals(examineWay.getInputMode()) || "6".equals(examineWay.getInputMode()) || "7".equals(examineWay.getInputMode())) {
List<ExamineTemplate2Excel> list = JSON.parseArray(examineResult.getExamineDataArr(), ExamineTemplate2Excel.class);
System.out.println("list: " + list);
if (list != null && list.size() > 0) {
for (int i1 = 0; i1 < list.size(); i1++) {
ExamineTemplate2Excel excel = list.get(i1);
System.out.println("excel: " + excel);
ExamineResultVo resultVo = new ExamineResultVo();
LambdaQueryWrapper<Simple> wrapper1 = new LambdaQueryWrapper<>();
wrapper1.eq(Simple::getEntrustId, id);
wrapper1.eq(Simple::getExperieNum, excel.getExperieNum());
Simple simple = simpleService.getOne(wrapper1);
System.out.println("simple: " + simple);
if (simple != null) {
resultVo.setOriginalNum(simple.getOriginalNum());
resultVo.setNum(simple.getExperieNum());
@ -410,8 +414,10 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
// PCR检测
else if ("4".equals(examineWay.getInputMode())) {
List<PCR2Excel> list = JSON.parseArray(examineResult.getExamineDataArr(), PCR2Excel.class);
System.out.println("list: " + list);
if (list != null && list.size() > 0) {
for (PCR2Excel excel : list) {
System.out.println("excel: " + excel);
ExamineResultVo resultVo = new ExamineResultVo();
LambdaQueryWrapper<Simple> wrapper1 = new LambdaQueryWrapper<>();
wrapper1.eq(Simple::getEntrustId, id);
@ -650,6 +656,8 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
// 1.生成坐标(给每一个数据单元赋予坐标)
System.out.println("resultList: " + resultList);
// 1.1.根据原始编号分组
// Map<String, List<ExamineResultVo>> collect = resultList.stream().collect(Collectors.groupingBy(ExamineResultVo::getRecessiveNum));
Map<String, List<ExamineResultVo>> collect = resultList.stream().collect(Collectors.groupingBy(ExamineResultVo::getNum));
@ -740,6 +748,7 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
}
// 将附表所需list加进最终map
reportMainBody.put("list", tempResultList);
System.out.println("reportMainBody: " + tempResultList);
// 打印相关流操作
dealAboutPrintStream(response, reportMainBody, entrust, currTemplate);

Loading…
Cancel
Save