Commit 5a5c3c1b authored by 喻训浩's avatar 喻训浩

fix: avi修改

parent c70e71d5
......@@ -6,7 +6,6 @@ import lombok.Data;
import net.vtstar.user.search.JoinColumn;
import net.vtstar.user.search.Search;
import net.vtstar.zhongtong.avi.monitoring.domain.Skid;
import net.vtstar.zhongtong.avi.monitoring.domain.enums.BusType;
import net.vtstar.zhongtong.avi.monitoring.domain.enums.ProductionType;
import net.vtstar.zhongtong.avi.monitoring.domain.enums.StationState;
import org.hibernate.validator.constraints.Length;
......@@ -15,6 +14,7 @@ import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @Author: xiadongwei
......@@ -24,7 +24,7 @@ import javax.validation.constraints.NotNull;
@Data
@Search(code = "PAINTSHOP_STATION")
@Table(name = "paintshop_station")
public class PaintshopStation {
public class PaintshopStation implements Serializable {
@Id
private Long id;
......@@ -89,15 +89,15 @@ public class PaintshopStation {
@ApiModelProperty(value = "车体类型")
private ProductionType busType;
@ApiModelProperty(notes = "旧状态",hidden = true)
@ApiModelProperty(notes = "旧状态", hidden = true)
private StationState oldState;
@ApiModelProperty(notes = "平移车到位信号",hidden = true)
@ApiModelProperty(notes = "平移车到位信号", hidden = true)
private Boolean arrive;
@ApiModelProperty(notes = "当前绑定滑撬",hidden = true)
@ApiModelProperty(notes = "当前绑定滑撬", hidden = true)
private Skid skid;
@ApiModelProperty(notes = "工位正反转",hidden = true)
@ApiModelProperty(notes = "工位正反转,正转true,翻转false", hidden = true)
private Boolean turn;
}
package net.vtstar.zhongtong.avi.global.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfig {
@Bean
@Primary
public RedisTemplate<Object, Object> redisTemplate(LettuceConnectionFactory connectionFactory) {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(connectionFactory);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setHashKeySerializer(RedisSerializer.string());
redisTemplate.setHashValueSerializer(RedisSerializer.string());
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
......@@ -13,4 +13,7 @@ public class Constant {
public static final String HANZHUANG_VEHICLE1_BUSNO_KEY = "HZC1";
public static final String HANZHUANG_VEHICLE2_BUSNO_KEY = "HZC2";
//redis平移车信号到位
public static final String VEHICLE_PREFIX = "VEHICLE:STATE";
}
......@@ -142,7 +142,6 @@ public class AreaController {
station2.setCode("HDG1-3");
stationMap.put("HDG1-3",station2);
s.add(stationMap);
return Return.success(stationMap);
}
......
......@@ -9,5 +9,5 @@ public enum StationState {
/**
* 空闲
*/
FREE
FREE
}
......@@ -2,32 +2,27 @@ package net.vtstar.zhongtong.avi.monitoring.job;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.protocol.modbus.tcp.netty.packet.AbstractModbusResponse;
import net.vtstar.protocol.modbus.tcp.netty.packet.ReadCoilsResponse;
import net.vtstar.protocol.modbus.tcp.netty.packet.ReadMultipleRegistersResponse;
import net.vtstar.protocol.modbus.tcp.netty.utils.NettyUtils;
import net.vtstar.protocol.modbus.tcp.netty.utils.PoolKey;
import net.vtstar.scada.base.equipmgt.domain.*;
import net.vtstar.scada.base.equipmgt.service.EquipInfoService;
import net.vtstar.scada.base.gather.job.GatherJob;
import net.vtstar.scada.base.global.service.ModbusService;
import net.vtstar.user.mybatis.provider.Operation;
import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.zhongtong.avi.equipment.domain.PaintshopStation;
import net.vtstar.zhongtong.avi.equipment.mapper.PaintshopStationMapper;
import net.vtstar.zhongtong.avi.monitoring.domain.Vehicle;
import net.vtstar.zhongtong.avi.global.constant.Constant;
import net.vtstar.zhongtong.avi.monitoring.domain.enums.StationState;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Component
......@@ -48,6 +43,9 @@ public class AVIMonitorJob extends GatherJob {
@Resource(name = "redisTemplate")
protected HashOperations hashOperations;
@Resource(name = "redisTemplate")
private ValueOperations valueOperations;
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
......@@ -55,8 +53,8 @@ public class AVIMonitorJob extends GatherJob {
if (CollectionUtils.isEmpty(equipInfoList)) {
return;
}
Map<String, PaintshopStation> stationMap = hashOperations.entries("station");
Map<String, Vehicle> vehicleMap = hashOperations.entries("vehicle_signal");
// Map<String, PaintshopStation> stationMap = hashOperations.entries("station");
// Map<String, Vehicle> vehicleMap = hashOperations.entries("vehicle_signal");
equipInfoList.forEach(equipInfo -> {
List<EquipCommunication> commList = equipInfoService.getCommunicationList(equipInfo.getEquipCode(), 1);
......@@ -105,21 +103,38 @@ public class AVIMonitorJob extends GatherJob {
for (EquipDataTemplateItem item : itemList) {
String fieldName = item.getFieldName();
if (fieldName.startsWith("stationState")) {
String stationCode = fieldName.split("_")[1];
PaintshopStation station = stationCache.get(stationCode, PaintshopStation.class);
if (fieldName.startsWith("station:ve")) {
String stationCode = fieldName.split(":")[2];
PaintshopStation station = (PaintshopStation) valueOperations.get(Constant.STATION_PREFIX + stationCode);
if (null == station) {
station = stationCache.get(stationCode, PaintshopStation.class);
}
byte state = response.getBody().readByte();
if ((state & 0x01) == 0) {
state = 0;
} else {
state = 1;
}
station.setOldState(station.getState());
station.setState(state == 0 ? StationState.FREE : StationState.USE);
// stationMap.put(stationCode, station);
valueOperations.set(Constant.STATION_PREFIX + stationCode, station);
}
if (fieldName.startsWith("station_vehicle_signal")) {
String[] split = fieldName.split("_");
String stationCode = split[3];
PaintshopStation station = stationMap.get(stationCode);
if (fieldName.startsWith("station:turn")) {
String stationCode = fieldName.split(":")[3];
PaintshopStation station = (PaintshopStation) valueOperations.get(Constant.STATION_PREFIX + stationCode);
if (null == station) {
station = stationCache.get(stationCode, PaintshopStation.class);
}
byte state = response.getBody().readByte();
station.setArrive(state == 1 ? true : false);
if ((state & 0x01) == 0) {
state = 0;
} else {
state = 1;
}
station.setOldState(station.getState());
station.setTurn(state == 0 ? true : false);
valueOperations.set(Constant.STATION_PREFIX + stationCode, station);
}
}
}
......
......@@ -49,6 +49,10 @@ public class ReadStationToCacheRunner implements CommandLineRunner {
addOrderBy(PaintshopStation.class, "sequence", OrderBy.ASC);
}}, PaintshopStation.class);
for (PaintshopStation station : stations) {
stationCache.put(station.getCode(),station);
}
//
// Map<String, Skid> skidMap = hashOperations.entries("skid");
// if (null == skidMap) {
......
package net.vtstar.zhongtong.avi.mqtt.handle;
import com.alibaba.fastjson.JSONObject;
import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.protocol.modbus.tcp.netty.service.ModbusTemplate;
import net.vtstar.scada.base.global.service.ModbusService;
......@@ -9,7 +8,6 @@ import net.vtstar.scada.base.mqtt.utils.MqttConstants;
import net.vtstar.user.mybatis.provider.Operation;
import net.vtstar.user.mybatis.provider.OrderBy;
import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.zhongtong.avi.equipment.domain.EquipInfo;
import net.vtstar.zhongtong.avi.equipment.domain.PaintshopStation;
import net.vtstar.zhongtong.avi.equipment.domain.RuntimeRecord;
import net.vtstar.zhongtong.avi.equipment.mapper.PaintshopStationMapper;
......@@ -30,7 +28,6 @@ import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
......@@ -99,36 +96,41 @@ public class RfidMessageHandler extends AbstractTesterMessageHandler {
}
if (CollectionUtils.isEmpty(stationList)) {
log.error("找不到对平移车到位信号! 平移车 id:{},滑撬 {}", vehicle.getCode(), id);
return;
}
Map<String, List<PaintshopStation>> listMap = stationList.stream().filter(sta -> sta.getTurn() != null)
.collect(Collectors.groupingBy(PaintshopStation::getLaneCode));
PaintshopStation sourceStation;
PaintshopStation sourceStation = new PaintshopStation();
if (listMap.size() > 1) {
Set<String> veKeys = redisTemplate.keys(Constant.VEHICLE_PREFIX);
if (CollectionUtils.isEmpty(veKeys) || veKeys.size() != listMap.size()) {
log.error("平移车读写信号数量:{} 与 到位信号数量不一致!{}", veKeys.size(), listMap.size());
return;
}
for (String veKey : veKeys) {
Vehicle v = (Vehicle) valueOperations.get(veKey);
}
} else {
List<PaintshopStation> stations = listMap.get(0);
if (stations.size() == 1) {
sourceStation = stations.get(0);
} else {
}
}
Long laneId = sourceStation.getLaneId();
vehicle.setCurrentRfid(id);
StationState oldState = null;
String oldSkidId = null;
if (state == 1) {
//获得正反转信息,得到平移车相邻工位信息
PaintshopStation sta = new PaintshopStation();
List<PaintshopStation> stations;
stations = stationMapper.findList(new WhereFilter() {{
addFilter(PaintshopStation.class, "lane_id", Operation.EQUAL, sta.getLaneId());
addFilter(PaintshopStation.class, "lane_id", Operation.EQUAL, laneId);
addOrderBy(RuntimeRecord.class, "sequence", OrderBy.DESC);
}}, PaintshopStation.class);
......
......@@ -14,24 +14,30 @@ spring.datasource.password=123456
# sql server(试交车间--检测线192.168.1.200)
spring.test.sqlserver.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.test.sqlserver.jdbc-url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=CARTEST_ZTKC
spring.test.sqlserver.username=admin
spring.test.sqlserver.username=sa
spring.test.sqlserver.password=123456
# sql server(试交车间--限速值)
spring.speed.sqlserver.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.speed.sqlserver.jdbc-url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=localdb
spring.speed.sqlserver.username=admin
spring.speed.sqlserver.username=sa
spring.speed.sqlserver.password=123456
# sql server(总装车间--智能扭力扳手)
spring.torque.sqlserver.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.torque.sqlserver.jdbc-url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=AtlasCopco_ToolsNet_Database
spring.torque.sqlserver.username=admin
spring.torque.sqlserver.username=sa
spring.torque.sqlserver.password=123456
# sql server(MES)
spring.mes.sqlserver.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.mes.sqlserver.jdbc-url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=PaintingPlan
spring.mes.sqlserver.username=sa
spring.mes.sqlserver.password=123456
spring.resources.static-locations=classpath:/META-INF/resources/,file:///D:/productWeb/zhongtong/static
# redis
spring.redis.host=10.100.172.14
spring.redis.host=10.1.25.249
spring.redis.port=6379
spring.redis.password=
\ No newline at end of file
......@@ -31,7 +31,7 @@ quartz.job.taskInfos[1].jobGroup=CleanStatusDataJob
quartz.job.taskInfos[1].jobDescription=\u6E05\u6D17\u8BBE\u5907\u72B6\u6001Job
#quartz.job.taskInfos[1].cronExpression=0 0 0 * * ?
quartz.job.taskInfos[1].cronExpression=0/10 * * * * ?
quartz.job.taskInfos[1].start=true
quartz.job.taskInfos[1].start=false
quartz.job.taskInfos[2].jobName=net.vtstar.zhongtong.avi.equipment.job.StatisticsTimeJob
quartz.job.taskInfos[2].jobGroup=StatisticsTimeJob
......@@ -96,7 +96,7 @@ quartz.job.taskInfos[14].jobName=net.vtstar.zhongtong.avi.gateway.painting.job.P
quartz.job.taskInfos[14].jobGroup=PaintingRobotMachineJob
quartz.job.taskInfos[14].jobDescription=\u55b7\u6d82\u673a\u5668\u4ebaJob
quartz.job.taskInfos[14].cronExpression=0/5 * * * * ?
quartz.job.taskInfos[14].start=true
quartz.job.taskInfos[14].start=false
#喷涂喷涂室
quartz.job.taskInfos[23].jobName=net.vtstar.zhongtong.avi.gateway.painting.job.SprayBoothStateMachineJob
......@@ -204,7 +204,7 @@ quartz.job.taskInfos[24].jobName=net.vtstar.zhongtong.avi.monitoring.job.AVIMoni
quartz.job.taskInfos[24].jobGroup=AVIMonitorJob
quartz.job.taskInfos[24].jobDescription=\u76d1\u63a7\u0041\u0056\u0049Job
quartz.job.taskInfos[24].cronExpression=0/10 * * * * ?
quartz.job.taskInfos[24].start=false
quartz.job.taskInfos[24].start=true
#mes 工单同步
quartz.job.taskInfos[26].jobName=net.vtstar.zhongtong.avi.sqlserver.job.MesWorkOrderJob
......
package net.vtstar.zhongtong.avi;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.scada.base.equipmgt.domain.EquipDataTemplateItem;
import net.vtstar.scada.base.equipmgt.mapper.EquipDataTemplateItemMapper;
import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.zhongtong.avi.equipment.domain.PaintshopStation;
import net.vtstar.zhongtong.avi.equipment.mapper.PaintshopStationMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
@ActiveProfiles("dev-yxh")
public class StationTest {
@Autowired
private PaintshopStationMapper stationMapper;
@Autowired
private EquipDataTemplateItemMapper itemMapper;
@Test
public void test(){
List<EquipDataTemplateItem> tem = itemMapper.findByTemplateId(1);
EquipDataTemplateItem item = tem.get(0);
for (int i = 0; i < 130; i++) {
item.setAddress(0);
item.setId(null);
itemMapper.insert(item);
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment