Browse Source

2024-06-21

master
qiezi 2 years ago
parent
commit
7781ad27ef
  1. 9
      src/main/java/com/spring/modules/cdc/controller/CollectController.java
  2. 16
      src/main/java/com/spring/modules/cdc/service/impl/CollectRecordServiceImpl.java
  3. 41
      src/main/java/com/spring/modules/cdc/utils/CollectUtils.java
  4. 14
      src/main/java/com/spring/modules/cdc/vo/CollectRecordVo.java
  5. 3
      src/main/java/com/spring/modules/code/service/impl/CodeDrawingServiceImpl.java
  6. 13
      src/main/java/com/spring/modules/code/service/impl/CodeItemValueServiceImpl.java
  7. 1
      src/main/resources/application-dev.yml

9
src/main/java/com/spring/modules/cdc/controller/CollectController.java

@ -6,6 +6,7 @@ import com.spring.common.utils.R;
import com.spring.modules.cdc.entity.Collect;
import com.spring.modules.cdc.service.ICollectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@ -20,6 +21,9 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/collect/info")
public class CollectController {
@Value("${collect.time}")
private int time;
@Autowired
private ICollectService collectService;
@ -32,6 +36,11 @@ public class CollectController {
return R.ok().put("rows", list);
}
@PostMapping("/base")
public R base(){
return R.ok().put("time", time);
}
/**
* 新增采菊数据定义
*/

16
src/main/java/com/spring/modules/cdc/service/impl/CollectRecordServiceImpl.java

@ -7,6 +7,7 @@ import com.spring.modules.cdc.entity.Device;
import com.spring.modules.cdc.mapper.CollectRecordMapper;
import com.spring.modules.cdc.service.ICollectRecordService;
import com.spring.modules.cdc.service.ICollectService;
import com.spring.modules.cdc.vo.CollectRecordVo;
import com.spring.modules.cdc.vo.DeviceVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -76,23 +77,25 @@ public class CollectRecordServiceImpl extends ServiceImpl<CollectRecordMapper,Co
Map<String, List<DeviceVo>> map = deviceVoList.stream().collect(Collectors.groupingBy(DeviceVo::getCollectId));
Map<String, List<Collect>> collect = collectService.lambdaQuery().in(Collect::getCollectId, map.keySet()).list().stream().collect(Collectors.groupingBy(Collect::getCollectId));
// 设备信息集合
List<CollectRecord> list = new ArrayList<>();
for (String collectId : map.keySet()) {
List<DeviceVo> deviceVos = map.get(collectId);
List<Collect> collects = collect.get(collectId);
// 设备信息集合
List<CollectRecordVo> list = new ArrayList<>();
for (DeviceVo deviceVo : deviceVos) {
CollectRecord collectRecord = getCollectRecord(deviceVo, collects, deviceVo.getValue());
CollectRecordVo collectRecord = getCollectRecord(deviceVo, collects, deviceVo.getValue());
list.add(collectRecord);
updateCollectCurrentValue(collectRecord);
save(collectRecord);
}
// 处理 短信
// 处理 邮件
}
}
private static CollectRecord getCollectRecord(DeviceVo device, List<Collect> c1, BigDecimal i) {
CollectRecord collectRecord = new CollectRecord();
private static CollectRecordVo getCollectRecord(DeviceVo device, List<Collect> c1, BigDecimal i) {
CollectRecordVo collectRecord = new CollectRecordVo();
collectRecord.setDeviceNo(device.getDeviceNo());
collectRecord.setCollectId(c1.get(0).getCollectId());
collectRecord.setItemValue(i);
@ -100,6 +103,7 @@ public class CollectRecordServiceImpl extends ServiceImpl<CollectRecordMapper,Co
collectRecord.setMinValue(c1.get(0).getMinValue());
collectRecord.setSite(device.getSite());
collectRecord.setCreateTime(new Date());
collectRecord.setDeviceDesc(device.getDeviceDesc());
if (c1.get(0).getMaxValue().compareTo(i) < 0){
collectRecord.setWarnFlag("Y");
}

41
src/main/java/com/spring/modules/cdc/utils/CollectUtils.java

@ -7,11 +7,16 @@ import HslCommunication.Core.Types.OperateResultExOne;
import HslCommunication.Profinet.Melsec.MelsecMcNet;
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.github.s7connector.api.DaveArea;
import com.github.s7connector.api.S7Connector;
import com.github.s7connector.api.factory.S7ConnectorFactory;
import com.spring.modules.cdc.entity.Device;
import com.spring.modules.cdc.vo.DeviceVo;
import lombok.extern.slf4j.Slf4j;
import java.math.BigDecimal;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
import java.util.List;
@ -84,6 +89,42 @@ public class CollectUtils {
return deviceVoList;
}
public static List<DeviceVo> getReadS7XMZValueList(List<DeviceVo> deviceList,String IP,BigDecimal defaultValue){
S7Connector s7Connector = S7ConnectorFactory
.buildTCPConnector()
.withHost(IP)
.withRack(0)
.withSlot(1)
.build();
List<DeviceVo> deviceVoList = new ArrayList<>();
try {
log.info("IP:{} 连接成功!!!", IP);
for (DeviceVo device : deviceList) {
int i = readS7XMZValue(s7Connector, device.getDeviceIp());
deviceVoList.add(new DeviceVo(device, new BigDecimal(i),device.getCollectId()));
log.info("设备:{} 读取值:{}", device.getDeviceDesc(), i);
}
}catch (Exception e){
log.info("IP:{} 连接失败!!!", IP);
log.info("设置默认值:{}",defaultValue);
deviceList.forEach(device -> {
deviceVoList.add(new DeviceVo(device, new BigDecimal(0),device.getCollectId()));
});
}
return deviceVoList;
}
private static int readS7XMZValue(S7Connector s7Connector, String address) {
String[] addressArray = address.split("\\.");
int dbNumber = Integer.parseInt(addressArray[0].replace("DB",""));
int startAddress = Integer.parseInt(addressArray[1].replace("DBW",""));
int size = 2; // INT 类型是 2 个字节
byte[] buffer = s7Connector.read(DaveArea.DB, dbNumber, size,startAddress );
// 将字节数组转换为整数
return ByteBuffer.wrap(buffer).order(ByteOrder.BIG_ENDIAN).getShort();
}
/**
* 获取三菱设备信息 读取数据
* @param deviceList 设备信息集合

14
src/main/java/com/spring/modules/cdc/vo/CollectRecordVo.java

@ -0,0 +1,14 @@
package com.spring.modules.cdc.vo;
import com.spring.modules.cdc.entity.CollectRecord;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class CollectRecordVo extends CollectRecord {
private String deviceDesc;
}

3
src/main/java/com/spring/modules/code/service/impl/CodeDrawingServiceImpl.java

@ -64,6 +64,9 @@ public class CodeDrawingServiceImpl extends ServiceImpl<CodeDrawingMapper, CodeD
lambdaUpdate()
.eq(CodeDrawing::getDrawingNo,codeDrawing.getDrawingNo())
.eq(CodeDrawing::getSite,codeDrawing.getSite()).remove();
codeDrawingDetailService.lambdaUpdate()
.eq(CodeDrawingDetail::getDrawingNo,codeDrawing.getDrawingNo())
.eq(CodeDrawingDetail::getSite,codeDrawing.getSite()).remove();
}
@Override

13
src/main/java/com/spring/modules/code/service/impl/CodeItemValueServiceImpl.java

@ -94,6 +94,19 @@ public class CodeItemValueServiceImpl extends ServiceImpl<CodeItemValueMapper, C
@Override
@Transactional
public void removeCodeItemValue(CodeItemValue codeItemValue) {
// 删除校验
List<CodeConditionDetail> detailList = codeConditionDetailService.lambdaQuery().eq(CodeConditionDetail::getSQLStatementExecuteValueItemNo, codeItemValue.getValueItemNo()).list();
if (detailList.isEmpty()){
StringBuilder str = new StringBuilder("元素已被条件序号为:(");
for (CodeConditionDetail detail : detailList) {
str.append(detail.getConditionId()).append(",");
}
if (str.length() > 0) {
str.deleteCharAt(str.length() - 1);
}
str.append(")引用");
throw new RuntimeException(str.toString());
}
lambdaUpdate()
.eq(CodeItemValue::getItemNo, codeItemValue.getItemNo())
.eq(CodeItemValue::getSite, codeItemValue.getSite().trim())

1
src/main/resources/application-dev.yml

@ -83,6 +83,7 @@ task:
login-token-url: 'http://192.168.1.160:8881/#/login-token'
collect:
time: 30
data:
line1: 192.168.3.2
line2: 192.168.3.39

Loading…
Cancel
Save