Commit efc8d8c4 authored by 喻训浩's avatar 喻训浩

fix: avi修改

parent 1c06e3f1
......@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
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;
......@@ -51,10 +52,15 @@ public class PaintshopStation {
private Long laneId;
@ApiModelProperty(notes = "车道编号")
@JoinColumn(tableName = PaintshopLane.class, name = "code")
@JoinColumn(tableName = PaintshopLane.class, name = "lane_code")
@Search
private String laneCode;
@ApiModelProperty(notes = "平移车道编号")
@JoinColumn(tableName = PaintshopLane.class, name = "vehicle_lane_code")
@Search
private String vehicleLaneCode;
@ApiModelProperty(notes = "工位编号")
@NotNull(message = "工位编号不能为空")
@Column(name = "code")
......@@ -66,7 +72,7 @@ public class PaintshopStation {
@ApiModelProperty(notes = "滑撬ID")
@Column(name = "skid_id")
private Long skidID;
private String skidID;
@ApiModelProperty(notes = "序号")
@NotNull(message = "工位序号不能为空")
......@@ -88,4 +94,10 @@ public class PaintshopStation {
@ApiModelProperty(notes = "平移车到位信号",hidden = true)
private Boolean arrive;
@ApiModelProperty(notes = "当前绑定滑撬",hidden = true)
private Skid skid;
@ApiModelProperty(notes = "工位正反转",hidden = true)
private Boolean turn;
}
......@@ -27,4 +27,9 @@ public class CacheConfig {
Cache stationCache(ConcurrentMapCacheManager cacheManager) {
return cacheManager.getCache("stationCache");
}
@Bean
Cache laneStationCache(ConcurrentMapCacheManager cacheManager) {
return cacheManager.getCache("laneStationCache");
}
}
package net.vtstar.zhongtong.avi.global.constant;
public class Constant {
public static final String SKID_PREFIX = "skid:";
public static final String STATION_PREFIX = "station:";
public static final String HANZHUANG_VEHICLE1_RFID = "11111";
public static final String HANZHUANG_VEHICLE2_RFID = "22222";
public static final String HANZHUANG_VEHICLE1_BUSNO_KEY = "HZC1";
public static final String HANZHUANG_VEHICLE2_BUSNO_KEY = "HZC2";
}
......@@ -9,6 +9,7 @@ import net.vtstar.zhongtong.avi.ledlamp.domain.vo.LedStationVO;
import net.vtstar.zhongtong.avi.ledlamp.service.LedService;
import net.vtstar.zhongtong.avi.monitoring.domain.Warning;
import net.vtstar.zhongtong.avi.monitoring.domain.enums.StationState;
import net.vtstar.zhongtong.avi.monitoring.domain.vo.VocVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -52,7 +53,7 @@ public class LedController {
roomInfo.setStationState(StationState.USE);
roomInfo.setWorkingHours(new BigDecimal(30));
RoomInfo roomInfo2= new RoomInfo();
RoomInfo roomInfo2 = new RoomInfo();
roomInfo2.setName("喷漆室2");
roomInfo2.setStationState(StationState.FREE);
roomInfo2.setWorkingHours(new BigDecimal(22));
......@@ -63,4 +64,14 @@ public class LedController {
return Return.success(ledStationVO);
}
@ApiOperation(value = "led VOC浓度接口", response = VocVO.class)
@GetMapping(value = "/info/VOC")
private Return getVOCInfo() {
VocVO vocVO = new VocVO();
vocVO.setExitCONC(new BigDecimal(0.47));
vocVO.setNorthCONC(new BigDecimal(0.25));
vocVO.setSouthCONC(new BigDecimal(0.15));
return Return.success(vocVO);
}
}
......@@ -25,8 +25,11 @@ public class PDAController {
private Return hanZhuangBound(@RequestBody JSONObject json) {
log.info(json.toJSONString());
ParamAssert.notNull(json.get("vehicleNo"),"param is null");
ParamAssert.notNull(json.get("busNo"),"param is null");
String vehicleNo = json.getString("vehicleNo");
String busNo = json.getString("busNo");
ParamAssert.notNull(vehicleNo,"param is null");
ParamAssert.notNull(busNo,"param is null");
pdaService.bound(vehicleNo,busNo);
return Return.success();
}
......@@ -35,8 +38,9 @@ public class PDAController {
private Return changeSkid(@RequestBody JSONObject json) {
log.info(json.toJSONString());
ParamAssert.notNull(json.get("sourceStation"),"param is null");
ParamAssert.notNull(json.get("sourceStation"),"param is null");
ParamAssert.notNull(json.get("orderNo"),"orderNo is null");
ParamAssert.notNull(json.get("sourceStation"),"sourceStation is null");
ParamAssert.notNull(json.get("sourceStation"),"sourceStation is null");
return Return.success();
}
......@@ -48,4 +52,13 @@ public class PDAController {
ParamAssert.notNull(json.get("busNo"),"param is null");
return Return.success();
}
@ApiOperation(value = "电泳重新绑定电泳工单号")
@PostMapping("/elec/bound/order")
private Return elecBoundOrder(@RequestBody JSONObject json) {
ParamAssert.notNull(json.get("sourceStation"),"sourceStation is null");
ParamAssert.notNull(json.get("sourceStation"),"sourceStation is null");
return Return.success(true);
}
}
......@@ -3,6 +3,7 @@ package net.vtstar.zhongtong.avi.monitoring.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.vtstar.zhongtong.avi.monitoring.domain.enums.ProductionType;
import javax.persistence.Column;
import javax.persistence.Table;
......@@ -25,4 +26,10 @@ public class Skid {
@ApiModelProperty(notes = "绑定车身号")
private String busNo;
@ApiModelProperty(value = "车体类型")
private ProductionType busType;
private String ID;
}
package net.vtstar.zhongtong.avi.monitoring.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel("led大屏 voc前端显示数据")
public class VocVO {
@ApiModelProperty(notes = "南进口VOC浓度")
private BigDecimal southCONC;
@ApiModelProperty(notes = "南进口VOC浓度")
private BigDecimal northCONC;
@ApiModelProperty(notes = "出口VOC浓度")
private BigDecimal exitCONC;
}
......@@ -129,20 +129,4 @@ public class AVIMonitorJob extends GatherJob {
// hashOperations.putAll("station", stationMap);
}
public Object handleValue(String fieldName, Object value) {
if (fieldName.startsWith("stationState")) {
String stationCode = fieldName.split("_")[1];
List<PaintshopStation> stationList = stationMapper.findList(new WhereFilter() {{
addFilter("code", Operation.EQUAL, stationCode);
}}, PaintshopStation.class);
if (CollectionUtils.isEmpty(stationList)) {
throw new IllegalArgumentException("找不到编号为:" + stationCode + ":的工位!");
}
PaintshopStation station = stationList.get(0);
Integer state = (Integer) value;
station.setState(state == 0 ? StationState.FREE : StationState.USE);
}
//if (fieldName.startsWith())
return value;
}
}
......@@ -36,8 +36,8 @@ public class ReadStationToCacheRunner implements CommandLineRunner {
@Autowired
private SkidMapper skidMapper;
// @Resource(name = "redisTemplate")
// protected HashOperations hashOperations;
@Resource(name = "redisTemplate")
protected HashOperations hashOperations;
@Override
......@@ -56,9 +56,9 @@ public class ReadStationToCacheRunner implements CommandLineRunner {
// Map<String, Skid> skid = skids.stream().collect(Collectors.toMap(Skid::getRfid, s -> s, (k1, k2) -> k1));
// hashOperations.putAll("skid", skid);
// }
for (PaintshopStation station : stations) {
stationCache.put(station.getCode(), station);
}
// List<Skid> skids = skidMapper.findList(new WhereFilter(), Skid.class);
// for (PaintshopStation station : stations) {
// stationCache.put(station.getCode(), station);
// }
}
}
package net.vtstar.zhongtong.avi.monitoring.service;
import net.vtstar.zhongtong.avi.monitoring.domain.Skid;
import net.vtstar.zhongtong.avi.monitoring.domain.Vehicle;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Map;
@Service
public class PDAService {
public void bound(String busOrderNo) {
@Resource(name = "redisTemplate")
protected HashOperations hashOperations;
@Resource(name = "redisTemplate")
protected ValueOperations valueOperations;
//钣金上车绑定
public void bound(String vehicleNo, String busNo) {
// TODO: 2019-11-02 判断车身工单号是否在计划中
valueOperations.set(vehicleNo, busNo);
}
}
package net.vtstar.zhongtong.avi.monitoring.service;
import net.vtstar.zhongtong.avi.global.constant.Constant;
import net.vtstar.zhongtong.avi.monitoring.domain.Skid;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Map;
@Service
public class SkidService {
@Resource(name = "redisTemplate")
protected HashOperations hashOperations;
@Resource(name = "redisTemplate")
protected ValueOperations valueOperations;
public void boundSkid(String busNo,String skidNo){
String skidName = Constant.SKID_PREFIX + skidNo;
Skid skid = (Skid) valueOperations.get(skidName);
skid.setBusNo(busNo);
valueOperations.set(skidName,skid);
}
}
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;
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;
import net.vtstar.zhongtong.avi.global.constant.Constant;
import net.vtstar.zhongtong.avi.monitoring.domain.Skid;
import net.vtstar.zhongtong.avi.monitoring.domain.Vehicle;
import net.vtstar.zhongtong.avi.monitoring.domain.enums.StationState;
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.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHeaders;
import org.springframework.messaging.MessagingException;
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;
import java.util.Set;
import java.util.stream.Collectors;
@Slf4j
@Component
public class RfidMessageHandler extends AbstractTesterMessageHandler {
@Autowired
private RedisTemplate redisTemplate;
@Resource(name = "redisTemplate")
private ListOperations listOperations;
@Resource(name = "redisTemplate")
private HashOperations hashOperations;
@Resource(name = "redisTemplate")
private ValueOperations valueOperations;
@Resource(name = "laneStationCache")
private Cache laneStationCache;
@Autowired
private ModbusService modbusService;
@Autowired
private ModbusTemplate modbusTemplate;
@Autowired
private PaintshopStationMapper stationMapper;
public RfidMessageHandler() {
super("skid", "data/all");
}
@Override
public void handleMessage(Message<?> message) throws MessagingException {
Skid skid = (Skid) message.getPayload();
System.out.println(skid);
JSONObject json = (JSONObject) message.getPayload();
String id = json.getString("ID");
Integer state = json.getIntValue("state");
MessageHeaders headers = message.getHeaders();
String code = headers.get(MqttConstants.MSG_HEADER_KEY_EQUIPMENTNUMBER, String.class);
String vehicleCode = headers.get(MqttConstants.MSG_HEADER_KEY_EQUIPMENTNUMBER, String.class);
Map<String, Vehicle> vehicleMap = hashOperations.entries("vehicle");
Vehicle vehicle = vehicleMap.get(code);
vehicle.setState(skid.getState() == 1 ? true : false);
vehicle.setCurrentRfid(skid.getRfid());
valueOperations.set(code,vehicle);
Skid skid = (Skid) valueOperations.get(Constant.SKID_PREFIX + id);
if (vehicleCode.equals(Constant.HANZHUANG_VEHICLE1_RFID) || vehicleCode.equals(Constant.HANZHUANG_VEHICLE1_RFID)) {
String busNo = (String) valueOperations.get(vehicleCode);
skid.setBusNo(busNo);
valueOperations.set(Constant.SKID_PREFIX + id, skid);
}
Vehicle vehicle = vehicleMap.get(vehicleCode);
// TODO: 2019-11-02 获得正反转信息,以及相邻的工位
Integer land = vehicle.getLane();
Set<String> keys = redisTemplate.keys(Constant.STATION_PREFIX + land + ":*");
List<PaintshopStation> arriveList = new ArrayList<>();
List<PaintshopStation> stationList = laneStationCache.get(land.toString(), ArrayList.class);
for (PaintshopStation station : stationList) {
String code = station.getCode();
PaintshopStation sta = (PaintshopStation) valueOperations.get(Constant.STATION_PREFIX + code);
if (sta.getArrive()) {
arriveList.add(sta);
}
}
if (CollectionUtils.isEmpty(stationList)) {
log.error("找不到对平移车到位信号! 平移车 id:{},滑撬 {}", vehicle.getCode(), id);
}
Map<String, List<PaintshopStation>> listMap = stationList.stream().filter(sta -> sta.getTurn() != null)
.collect(Collectors.groupingBy(PaintshopStation::getLaneCode));
PaintshopStation sourceStation;
if (listMap.size() > 1) {
} else {
List<PaintshopStation> stations = listMap.get(0);
if (stations.size() == 1) {
sourceStation = stations.get(0);
} else {
}
}
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());
addOrderBy(RuntimeRecord.class, "sequence", OrderBy.DESC);
}}, PaintshopStation.class);
for (PaintshopStation station : stations) {
station.setOldState(oldState);
station.setSkidID(oldSkidId);
oldState = station.getState();
oldSkidId = station.getSkidID();
station.setState(StationState.USE);
station.setSkidID(id);
}
String currentRfid = vehicle.getCurrentRfid();
vehicle.setCurrentRfid(null);
} else if (state == 0) {
List<PaintshopStation> stations = new ArrayList<>();
for (PaintshopStation station : stations) {
station.setOldState(oldState);
station.setSkidID(oldSkidId);
oldState = station.getState();
oldSkidId = station.getSkidID();
station.setState(StationState.FREE);
station.setSkidID(id);
}
PaintshopStation station = new PaintshopStation();
station.setState(StationState.FREE);
station.setSkidID(null);
}
}
}
......@@ -9,7 +9,7 @@ spring.aop.auto=true
spring.main.allow-bean-definition-overriding=true
# server
server.port=8080
server.port=8082
spring.servlet.multipart.max-file-size=1000MB
spring.servlet.multipart.max-request-size=2000MB
spring.servlet.multipart.enabled=true
......
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