Commit befd2dd5 authored by 夏东伟's avatar 夏东伟

网关采集

parent 5a5c3c1b
......@@ -68,7 +68,8 @@ public class AssemblyNewEnergyJob extends QuartzJobBean {
continue;
}
//todo:账户, 密码需要变
String url = "smb://wanteng:wanteng@" + ipAddress + "/AN9637H/testdata@" + dateString + ".mdb";
String url = "smb://admin:123456@" + ipAddress + "/AN9637H/testdata@" + dateString + ".mdb";
// String url = "smb://admin:123456@10.1.25.128/an9637h/testdata@2018-05-04.mdb";
SmbFile file = null;
try {
file = new SmbFile(url);
......
......@@ -8,6 +8,7 @@ import net.vtstar.zhongtong.avi.global.web.Show;
import javax.persistence.Column;
import javax.persistence.Table;
import java.util.Date;
/**
* @Author: xiadongwei
......@@ -62,8 +63,29 @@ public class MesWorkOrderInfo {
@Column(name = "production_line")
private String productionLine;
@Show(label = "读取标识")
@ApiModelProperty(notes = "读取标识")
@Column(name = "reading_id")
private String readingId;
@Show(label = "计划开始时间")
@ApiModelProperty(notes = "计划开始时间")
@Column(name = "start_date")
private Date startDate;
@Show(label = "计划结束时间")
@ApiModelProperty(notes = "计划结束时间")
@Column(name = "end_date")
private Date endDate;
@Show(label = "计划交期")
@ApiModelProperty(notes = "计划交期")
@Column(name = "delivery_date")
private Date deliveryDate;
@Show(label = "状态")
@ApiModelProperty(notes = "状态")
@Column(name = "status")
private String status;
@Show(label = "创建时间")
@ApiModelProperty(notes = "创建时间")
@Column(name = "crt_date")
private Date crtDate;
}
......@@ -52,6 +52,9 @@ public class CleanStatusDataJob extends QuartzJobBean {
}
//插入设备监控数据
equipmentDataMapper.insertList(dataList);
if (key.contains("DRYING_ROOM_TEMP") || key.contains("SPRAY_BOOTH")){
continue;
}
equipDataService.updateLastStatus(dataList.get(dataList.size() - 1));
String equipCode = dataList.get(0).getEquipCode();
......
......@@ -29,11 +29,27 @@ public class CentralizedFillingClutchMachine extends EquipmentData {
@Search
private String equipCode;
@Show(label = "设备名称")
@Column(name = "eqp_name")
@ApiModelProperty(notes = "设备名称")
@Search
private String alias;
@Show(label = "加注设定值(ml)")
@ApiModelProperty(notes = "加注设定值")
@Column(name = "filling_settings")
private Long fillingSettings;
@Show(label = "加注量(ml)")
@ApiModelProperty(notes = "加注量")
@Column(name = "filling_amount")
private Long fillingAmount;
@Show(label = "压力设定值")
@ApiModelProperty(notes = "压力设定值")
@Column(name = "pressure_settings")
private Long pressureSettings;
@Show(label = "加注压力(bar)")
@ApiModelProperty(notes = "加注压力(bar)")
@Column(name = "filling_pressure")
......@@ -44,7 +60,7 @@ public class CentralizedFillingClutchMachine extends EquipmentData {
@ApiModelProperty(notes = "设备状态(0是关机,1是运行)")
private Integer status;
@Show(label = "时间",dataType = FieldType.DATETIME)
@Show(label = "采集时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间")
@Column(name = "create_time")
@Search
......
......@@ -28,6 +28,12 @@ public class FloorLeatherHotMachine extends EquipmentData {
@ApiModelProperty(notes = "设备编号")
private String equipCode;
@Show(label = "设备名称")
@Column(name = "eqp_name")
@ApiModelProperty(notes = "设备名称")
@Search
private String alias;
@Show(label = "模头1区温度")
@ApiModelProperty(notes = "模头1区温度")
@Column(name = "die_temperature1")
......@@ -98,7 +104,7 @@ public class FloorLeatherHotMachine extends EquipmentData {
@ApiModelProperty(notes = "设备状态(0是关机,1是运行)")
private Integer status;
@Show(label = "时间",dataType = FieldType.DATETIME)
@Show(label = "采集时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间")
@Column(name = "create_time")
@Search
......
......@@ -29,6 +29,17 @@ public class FocusAddingRefrigerantMachine extends EquipmentData {
@Search
private String equipCode;
@Show(label = "设备名称")
@Column(name = "eqp_name")
@ApiModelProperty(notes = "设备名称")
@Search
private String alias;
@Show(label = "加注设定值(ml)")
@ApiModelProperty(notes = "加注设定值")
@Column(name = "filling_settings")
private Long fillingSettings;
@Show(label = "加注量(ml)")
@ApiModelProperty(notes = "加注量")
@Column(name = "filling_amount")
......@@ -44,7 +55,7 @@ public class FocusAddingRefrigerantMachine extends EquipmentData {
@ApiModelProperty(notes = "设备状态(0是关机,1是运行)")
private Integer status;
@Show(label = "时间",dataType = FieldType.DATETIME)
@Show(label = "采集时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间")
@Column(name = "create_time")
@Search
......
......@@ -29,6 +29,12 @@ public class FocusBoosterOilMachine extends EquipmentData {
@Search
private String equipCode;
@Show(label = "设备名称")
@Column(name = "eqp_name")
@ApiModelProperty(notes = "设备名称")
@Search
private String alias;
@Show(label = "枪1加注量(ml)")
@ApiModelProperty(notes = "枪1加注量(ml)")
@Column(name = "filling_amount1")
......@@ -44,7 +50,7 @@ public class FocusBoosterOilMachine extends EquipmentData {
@ApiModelProperty(notes = "设备状态(0是关机,1是运行)")
private Integer status;
@Show(label = "时间",dataType = FieldType.DATETIME)
@Show(label = "采集时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间")
@Column(name = "create_time")
@Search
......
......@@ -28,12 +28,18 @@ public class PlateChainMachine{
@Search
private String equipCode;
@Show(label = "设备名称")
@Column(name = "eqp_name")
@ApiModelProperty(notes = "设备名称")
@Search
private String alias;
@Show(label = "当班平均运行间隔时间")
@ApiModelProperty(notes = "当班平均运行间隔时间")
@Column(name = "average_time")
private String averageTime;
@Show(label = "时间",dataType = FieldType.DATETIME)
@Show(label = "采集时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间")
@Column(name = "create_time")
@Search
......
......@@ -39,7 +39,7 @@ public class CentralizedFillingClutchMachineJob extends GatherJob {
@Override
public Object handleValue(String fieldName, Object value) {
if ("fillingPressure".equals(fieldName)){
if ("fillingPressure".equals(fieldName) || "pressureSettings".equals(fieldName)){
return Integer.valueOf(value.toString()) / 10;
}
return value;
......
......@@ -34,6 +34,9 @@ public class FloorLeatherHotMachineJob extends GatherJob {
if (state != null && state == 0) {
return false;
}
if (data.getCurrentYield() == 0){
return false;
}
equipmentData.setEquipStatus(EquipStatusEnum.RUN);
return true;
}
......
......@@ -34,10 +34,10 @@ public class FocusAddingRefrigerantMachineJob extends GatherJob {
if (state != null && state == 0) {
return false;
}
if (null == ((FocusAddingRefrigerantMachine) equipmentData).getFillingAmount() ||
/*if (null == ((FocusAddingRefrigerantMachine) equipmentData).getFillingAmount() ||
((FocusAddingRefrigerantMachine) equipmentData).getFillingAmount().intValue() == 0){
return false;
}
}*/
equipmentData.setEquipStatus(EquipStatusEnum.RUN);
return true;
}
......
......@@ -29,6 +29,12 @@ public class ChassisTorqueWrench extends EquipmentData {
@Search
private String equipCode;
@Show(label = "设备名称")
@Column(name = "eqp_name")
@ApiModelProperty(notes = "设备名称")
@Search
private String alias;
@Show(label = "一轴扭矩")
@ApiModelProperty(notes = "一轴扭矩")
@Column(name = "shaft_torque_1")
......@@ -54,7 +60,7 @@ public class ChassisTorqueWrench extends EquipmentData {
@ApiModelProperty(notes = "设备状态(0是关机,1是运行)")
private Integer status;
@Show(label = "时间",dataType = FieldType.DATETIME)
@Show(label = "采集时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间")
@Column(name = "create_time")
@Search
......
package net.vtstar.zhongtong.avi.gateway.painting.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.vtstar.scada.base.gather.domain.EquipmentData;
import javax.persistence.Column;
import javax.persistence.Table;
import java.util.Date;
@Data
@ApiModel("涂装--烘干室温度")
@Table(name = "eqp_data_drying_room_temp")
public class DryingRoomTempMachine extends EquipmentData {
@Column(name = "eqp_code")
@ApiModelProperty(notes = "设备编号")
private String equipCode;
@Column(name = "temperature")
@ApiModelProperty(notes = "温度")
private Float temperature;
@ApiModelProperty("采集时间")
@Column(name = "create_time")
private Date createTime;
private Integer status;
}
......@@ -39,7 +39,7 @@ public class PaintingRobotMachine extends EquipmentData {
@ApiModelProperty(notes = "系统状态")
private Integer status;
@Show(label = "时间",dataType = FieldType.DATETIME)
@Show(label = "采集时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间")
@Column(name = "create_time")
@Search
......
package net.vtstar.zhongtong.avi.gateway.painting.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.vtstar.scada.base.gather.domain.EquipmentData;
import net.vtstar.user.search.Search;
import net.vtstar.zhongtong.avi.global.web.Show;
import javax.persistence.Column;
import javax.persistence.Table;
import java.util.Date;
@Data
@Search(code = "SPRAY_BOOTH")
@ApiModel("涂装-喷涂室温湿度")
@Table(name = "eqp_data_spray_booth")
public class SprayBoothMachine extends EquipmentData {
@Show(label = "设备编号")
@Column(name = "eqp_code")
@ApiModelProperty(notes = "设备编号")
@Search
private String equipCode;
@Show(label = "温度")
@Column(name = "temperature")
@ApiModelProperty(notes = "温度")
private Float temperature;
@Show(label = "湿度")
@Column(name = "humidity")
@ApiModelProperty(notes = "湿度")
private Float humidity;
@Show(label = "采集时间")
@ApiModelProperty("时间")
@Column(name = "create_time")
private Date createTime;
private Integer status;
}
package net.vtstar.zhongtong.avi.gateway.painting.job;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.scada.base.gather.domain.EquipmentData;
import net.vtstar.scada.base.gather.job.GatherJob;
import net.vtstar.zhongtong.avi.gateway.painting.domain.DryingRoomTempMachine;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.stereotype.Component;
/**
* 烘干室温度数据采集JOB
*/
@Slf4j
@Component
public class DryingRoomTempMachineJob extends GatherJob {
private static final String NAME = "DRYING_ROOM_TEMP";
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, DryingRoomTempMachine.class);
}
@Override
public boolean handleObject(EquipmentData equipmentData) {
DryingRoomTempMachine data = (DryingRoomTempMachine) equipmentData;
Integer state = data.getStatus();
if (state != null && state == 0) {
return false;
}
if (null == data.getTemperature()){
return false;
}
return true;
}
@Override
public Object handleValue(String fieldName, Object value) {
return value;
}
@Override
protected void postHandle(EquipmentData equipmentData) {
}
}
package net.vtstar.zhongtong.avi.gateway.painting.listener;
import com.jnrsmcu.sdk.netdevice.*;
import java.text.SimpleDateFormat;
/**
* 温湿度传感器监听类默认实现
* @Author: xiadongwei
* @Date: 2019/11/4 19:03
*/
public class MyIDataListener implements 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);
}}
package net.vtstar.zhongtong.avi.gateway.painting.listener;
import com.jnrsmcu.sdk.netdevice.NodeData;
import com.jnrsmcu.sdk.netdevice.RSServer;
import com.jnrsmcu.sdk.netdevice.RealTimeData;
import net.vtstar.zhongtong.avi.gateway.painting.domain.SprayBoothMachine;
import net.vtstar.zhongtong.avi.gateway.painting.mapper.SprayBoothMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 温度传感器监听
* @Author: xiadongwei
* @Date: 2019/11/4 18:55
*/
@Component
@Order(99)
public class SprayBoothListener implements CommandLineRunner {
@Autowired
private SprayBoothMapper mapper;
@Override
public void run(String... args) throws Exception {
// 初始化
RSServer rsServer = RSServer.Initiate(2404);
rsServer.addDataListener(new MyIDataListener(){
@Override
public void receiveRealtimeData(RealTimeData data){
List<SprayBoothMachine> list = new ArrayList<>();
for (NodeData nd : data.getNodeList()) {
//TODO: 根据设备地址设置设备编号
SprayBoothMachine sprayBoothMachine = new SprayBoothMachine();
sprayBoothMachine.setTemperature(nd.getTem());
sprayBoothMachine.setHumidity(nd.getHum());
sprayBoothMachine.setCreateTime(new Date());
list.add(sprayBoothMachine);
}
mapper.insertList(list);
}
});
rsServer.start();
}
}
package net.vtstar.zhongtong.avi.gateway.painting.mapper;
import net.vtstar.user.mybatis.BaseMapper;
import net.vtstar.zhongtong.avi.gateway.painting.domain.SprayBoothMachine;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SprayBoothMapper extends BaseMapper<SprayBoothMachine> {
}
......@@ -38,7 +38,7 @@ public class DustingLineMachine extends EquipmentData {
@ApiModelProperty(notes = "喷粉二状态")
private String state2;
@Show(label = "时间",dataType = FieldType.DATETIME)
@Show(label = "采集时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间")
@Column(name = "create_time")
@Search
......
......@@ -98,7 +98,7 @@ public class PretreatmentMachine extends EquipmentData {
@ApiModelProperty(notes = "10#防锈液时间")
private Integer fx10Time;
@Show(label = "时间",dataType = FieldType.DATETIME)
@Show(label = "采集时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间")
@Column(name = "create_time")
@Search
......
......@@ -23,12 +23,18 @@ public class SteelCncCuttingMachine extends EquipmentData {
@ApiModelProperty(notes = "设备编号")
private String equipCode;
@Show(label = "设备名称")
@Column(name = "eqp_name")
@ApiModelProperty(notes = "设备名称")
@Search
private String alias;
@Show(label = "设备状态")
@Column(name = "state")
@ApiModelProperty(notes = "设备状态")
private String stateString;
@Show(label = "时间",dataType = FieldType.DATETIME)
@Show(label = "采集时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间")
@Column(name = "create_time")
@Search
......
......@@ -26,6 +26,12 @@ public class WeldingRobotMachine{
@ApiModelProperty(notes = "设备编号")
private String equipCode;
@Show(label = "设备名称")
@Column(name = "eqp_name")
@ApiModelProperty(notes = "设备名称")
@Search
private String alias;
@Show(label = "开机时间")
@Column(name = "turn_on_time")
@ApiModelProperty(notes = "开机时间")
......@@ -36,7 +42,7 @@ public class WeldingRobotMachine{
@ApiModelProperty(notes = "焊接时间")
private String weldingTime;
@Show(label = "时间",dataType = FieldType.DATETIME)
@Show(label = "采集时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间")
@Column(name = "create_time")
@Search
......
......@@ -28,6 +28,12 @@ public class ChargingPileMachine extends EquipmentData {
@ApiModelProperty(notes = "设备编号")
private String equipCode;
@Show(label = "设备名称")
@Column(name = "eqp_name")
@ApiModelProperty(notes = "设备名称")
@Search
private String alias;
@Show(label = "车辆编号")
@ApiModelProperty(notes = "车辆编号")
@Column(name = "bus_code")
......@@ -79,7 +85,7 @@ public class ChargingPileMachine extends EquipmentData {
@Column(name = "soc")
private Integer soc;
@Show(label = "时间",dataType = FieldType.DATETIME)
@Show(label = "采集时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间")
@Column(name = "create_time")
private Date createTime;
......
package net.vtstar.zhongtong.avi.gateway.trial.job;
import jcifs.smb.SmbFile;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.user.mybatis.provider.Operation;
import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.utils.CollecUtils;
import net.vtstar.utils.DateUtils;
import net.vtstar.zhongtong.avi.sqlserver.domain.TestSpeedResult;
import net.vtstar.zhongtong.avi.sqlserver.mapper.TestSpeedMapper;
import net.vtstar.zhongtong.avi.utils.PingIpUtils;
import net.vtstar.zhongtong.avi.utils.SmbFileUtil;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.io.*;
import java.util.*;
/**
* 试交车间--错误帧
*
* @Author: xiadongwei
* @Date: 2019/10/16 18:20
*/
@Slf4j
@Component
@DisallowConcurrentExecution
public class ErrorFrameJob extends QuartzJobBean {
@Autowired
private TestSpeedMapper mapper;
@Value("${zt.ip.errorframe}")
private String ipAddress;
@Value("${zt.ip.pingtimes}")
private int pingTimes;
@Value("${zt.ip.timeout}")
private int timeOut;
private String baseUrl = "D:/scada/errorframe/";
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("--------开始同步试交车间错误帧数据--------");
//ZTLOG_2019-10-26_11-35-46
String dateString = DateUtils.parseDateToString(new Date(), "yyyy-MM-dd");
if (!PingIpUtils.ping(ipAddress, pingTimes, timeOut)) {
log.error("ping: {}失败, 此次同步试交车间错误帧数据操作结束!", ipAddress);
return;
}
//todo:账户, 密码需要变
String url = "smb://" + ipAddress + "/ztlog/";
SmbFile file = null;
InputStream in = null;
List<String> fileName = new ArrayList<>();
try {
file = new SmbFile(url);
if (file.exists()) {
SmbFile[] files = file.listFiles();
for (SmbFile f : files) {
String name = f.getName();
String[] split = name.split("_");
if (split.length != 3 || !dateString.equals(split[1])) {
continue;
}
fileName.add(name);
}
} else {
log.error("试交车间错误帧共享文件夹: {}不存在!", url);
return;
}
if (CollecUtils.isEmpty(fileName)) {
log.error("试交车间错误帧共享文件夹中不存在当天日期的文件!", dateString);
return;
}
for (String name : fileName){
String urlName = url + name;
SmbFile remoteFile = new SmbFile(urlName);
if (!remoteFile.exists()) {
log.error("远程共享文件: {}不存在", urlName);
continue;
}
SmbFileUtil.smbGet(url, baseUrl + ipAddress);
}
List<TestSpeedResult> results = new ArrayList<>();
for (String name : fileName) {
String urlName = baseUrl + ipAddress + "/" + name;
File remoteFile = new File(urlName);
if (!remoteFile.exists()) {
log.error("本地共享文件: {}不存在", urlName);
continue;
}
List<TestSpeedResult> item = new ArrayList<>();
in = new BufferedInputStream(new FileInputStream(urlName));
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
String lineString = "";
String err = "";
Map<Integer, String> vinMap = new HashMap<>();
while ((lineString = bufferedReader.readLine()) != null) {
if (lineString.contains("cfeec21")) {
String[] split = lineString.split(",");
if (split.length == 3) {
if (split[1].trim().startsWith("01")) {
vinMap.put(1, split[1].trim());
}
if (split[1].trim().startsWith("02")) {
vinMap.put(2, split[1].trim());
}
if (split[1].trim().startsWith("03")) {
vinMap.put(3, split[1].trim());
}
}
}
if (lineString.contains("err=")) {
if (vinMap.size() == 3) {
StringBuilder vin = new StringBuilder();
for (int i = 1; i <= 3; i++) {
String[] ascString = vinMap.get(i).split(" ");
for (int j = 1; j < ascString.length; j++) {
if ("ff".equals(ascString[j])){
continue;
}
vin.append((char) Integer.parseInt(ascString[j], 16));
}
}
lineString.replace(" ", "");
err = lineString.substring(lineString.indexOf("err=") + 4, lineString.indexOf("rec=")).trim();
if (StringUtils.isEmpty(vin.toString()) || StringUtils.isEmpty(err)) {
continue;
}
TestSpeedResult result = new TestSpeedResult();
result.setVin(vin.toString());
result.setErrorFrame(Integer.valueOf(err));
item.add(result);
vinMap.clear();
}else{
vinMap.clear();
}
}
}
int errItem = 0;
String vinItem = "";
for (TestSpeedResult itemResult : item){
vinItem = itemResult.getVin();
if (itemResult.getErrorFrame() > errItem){
errItem = itemResult.getErrorFrame();
}
}
TestSpeedResult result = new TestSpeedResult();
result.setVin(vinItem);
result.setErrorFrame(errItem);
result.setMODEL_ID("错误帧");
String[] split = name.split("_");
Date date = DateUtils.parse(split[1] + " " + split[2], "yyyy-MM-dd HH-mm-ss");
result.setTestDate(date);
results.add(result);
}
//当天零点
Date startOfDay = DateUtils.getStartOfDay(0);
String startString = DateUtils.parseDateToString(startOfDay, "yyyy-MM-dd HH-mm-ss");
mapper.delByFilter(new WhereFilter() {{
addFilter("test_date", Operation.GREATER_THAN, startString);
addFilter("MODEL_ID", Operation.EQUAL, "错误帧");
}}, TestSpeedResult.class);
mapper.insertList(results);
log.info("更新试交车间错误帧: {} 数据: {}条", ipAddress, results.size());
} catch (Exception e) {
log.error("获取试交车间错误帧共享文件失败!ip: {}", ipAddress);
} finally {
try {
if (in != null) {
in.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
log.info("--------同步试交车间错误帧数据结束--------");
}
}
package net.vtstar.zhongtong.avi.gateway.welding.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.vtstar.scada.base.gather.domain.EquipmentData;
import net.vtstar.user.search.Search;
import net.vtstar.zhongtong.avi.global.web.Show;
import net.vtstar.zhongtong.avi.global.web.domain.enums.FieldType;
import javax.persistence.Column;
import javax.persistence.Table;
import java.util.Date;
@Data
@Search(code = "AUTOMATIC_SPOT_WELDING")
@ApiModel("车顶点焊")
@Table(name = "eqp_data_automatic_spot_welding")
public class AutomaticSpotWeldingMachine extends EquipmentData {
@Show(label = "设备编号")
@Column(name = "eqp_code")
@ApiModelProperty(notes = "设备编号")
private String equipCode;
@Show(label = "设备名称")
@Column(name = "eqp_name")
@ApiModelProperty(notes = "设备名称")
@Search
private String alias;
@Show(label = "焊点1电流")
@Column(name = "welding_spot_A_1")
@ApiModelProperty(notes = "焊点1电流")
private Integer weldingSpotA1;
@Show(label = "焊点1电压")
@Column(name = "welding_spot_V_1")
@ApiModelProperty(notes = "焊点1电压")
private Integer weldingSpotV1;
@Show(label = "焊点2电流")
@Column(name = "welding_spot_A_2")
@ApiModelProperty(notes = "焊点2电流")
private Integer weldingSpotA2;
@Show(label = "焊点2电压")
@Column(name = "welding_spot_V_2")
@ApiModelProperty(notes = "焊点2电压")
private Integer weldingSpotV2;
@Show(label = "采集时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间")
@Column(name = "create_time")
@Search
private Date createTime;
private Integer status;
}
......@@ -23,6 +23,12 @@ public class PlateChainMachine extends EquipmentData {
@ApiModelProperty(notes = "设备编号")
private String equipCode;
@Show(label = "设备名称")
@Column(name = "eqp_name")
@ApiModelProperty(notes = "设备名称")
@Search
private String alias;
@Show(label = "系统是否报警")
@Column(name = "error_state")
@ApiModelProperty(notes = "系统是否报警")
......@@ -33,7 +39,7 @@ public class PlateChainMachine extends EquipmentData {
@ApiModelProperty(notes = "系统是否运行")
private int state;
@Show(label = "时间",dataType = FieldType.DATETIME)
@Show(label = "采集时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间")
@Column(name = "create_time")
@Search
......
......@@ -94,7 +94,7 @@ public class PlcControlTireMachine1 extends EquipmentData {
private Float vehicleWidth;
@Show(label = "时间",dataType = FieldType.DATETIME)
@Show(label = "采集时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间")
@Column(name = "create_time")
@Search
......
......@@ -68,7 +68,7 @@ public class PlcControlTireMachine2 extends EquipmentData {
@ApiModelProperty(notes = "地盘高")
private Float siteHeight;
@Show(label = "时间",dataType = FieldType.DATETIME)
@Show(label = "采集时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间")
@Column(name = "create_time")
@Search
......
package net.vtstar.zhongtong.avi.gateway.welding.job;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.scada.base.equipmgt.domain.Enum.EquipStatusEnum;
import net.vtstar.scada.base.gather.domain.EquipmentData;
import net.vtstar.scada.base.gather.job.GatherJob;
import net.vtstar.zhongtong.avi.gateway.welding.domain.AutomaticSpotWeldingMachine;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* 焊装车顶点焊数据采集JOB
*/
@Slf4j
@Component
public class AutomaticSpotWeldingMachineJob extends GatherJob {
private static final String NAME = "AUTOMATIC_SPOT_WELDING";
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, AutomaticSpotWeldingMachine.class);
}
@Override
public boolean handleObject(EquipmentData equipmentData) {
AutomaticSpotWeldingMachine data = (AutomaticSpotWeldingMachine) equipmentData;
Integer state = data.getStatus();
if (state != null && state == 0) {
return false;
}
if (data.getWeldingSpotA1() == null || data.getWeldingSpotA2() == null){
return false;
}
equipmentData.setEquipStatus(EquipStatusEnum.RUN);
return true;
}
@Override
public Object handleValue(String fieldName, Object value) {
return value;
}
@Override
protected void postHandle(EquipmentData equipmentData) {
AutomaticSpotWeldingMachine data = (AutomaticSpotWeldingMachine) equipmentData;
(data).setWeldingSpotV1((data).getWeldingSpotA1() * 4000);
(data).setWeldingSpotV2((data).getWeldingSpotA2() * 4000);
(data).setCreateTime(new Date());
}
}
package net.vtstar.zhongtong.avi.sqlserver.job;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.user.mybatis.provider.Operation;
import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.utils.CollecUtils;
import net.vtstar.utils.DateUtils;
import net.vtstar.zhongtong.avi.equipment.domain.MesWorkOrderInfo;
import net.vtstar.zhongtong.avi.equipment.mapper.MesWorkOrderMapper;
import net.vtstar.zhongtong.avi.utils.PingIpUtils;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
* mes工单同步数据
* @Author: xiadongwei
* @Date: 2019/11/4 18:20
*/
@Slf4j
@Component
@DisallowConcurrentExecution
public class MesWorkOrderJob extends QuartzJobBean {
@Resource(name = "mesSqlServerJdbcTemplate")
private JdbcTemplate mesSqlServerJdbcTemplate;
@Autowired
private MesWorkOrderMapper mapper;
@Value("${zt.ip.mes}")
private String ipAddress;
@Value("${zt.ip.pingtimes}")
private int pingTimes;
@Value("${zt.ip.timeout}")
private int timeOut;
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
if (!PingIpUtils.ping(ipAddress, pingTimes, timeOut)){
log.error("ping: {}失败, 此次同步mes数据操作结束!", ipAddress);
return;
}
log.info("--------开始同步mes数据--------");
Date startOfDay = DateUtils.getStartOfDay(0);
String dateString = DateUtils.parseDateToString(startOfDay, "yyyy-MM-dd HH:mm:ss");
StringBuilder sql = new StringBuilder();
sql.append("SELECT SaleOrderNo, PreWONo, WONo, MaterialNo, ORDER_COUNT, UNIT, " +
"WorkShopCode, MLine, StartDate, EndDate, DeliveryDate, Status, CrtDate FROM PAINTING_WORKORDER " +
"WHERE WorkShopCode = 'HZ-焊装车间' or WorkShopCode = 'TZ-涂装车间'");
List<MesWorkOrderInfo> query = mesSqlServerJdbcTemplate.query(sql.toString(), (rs, rowNum) -> {
MesWorkOrderInfo map = new MesWorkOrderInfo();
map.setSalesOrderNo(rs.getString("SaleOrderNo"));
map.setMasterWorkOrderNo(rs.getString("PreWONo"));
map.setWorkOrderNo(rs.getString("WONo"));
map.setVehicleModel(rs.getString("MaterialNo"));
map.setOrderQuantity(rs.getInt("ORDER_COUNT"));
map.setUnit(rs.getString("UNIT"));
map.setWorkshop(rs.getString("WorkShopCode"));
map.setProductionLine(rs.getString("MLine"));
map.setStartDate(rs.getDate("StartDate"));
map.setEndDate(rs.getDate("EndDate"));
map.setDeliveryDate(rs.getDate("DeliveryDate"));
map.setStatus(rs.getString("Status"));
map.setCrtDate(rs.getDate("CrtDate"));
return map;
});
log.error("mes查询到数据: {} 条", query.size());
if (CollectionUtils.isEmpty(query)) {
//todo: ping通
log.error("连接mesSQL SERVER失败!");
return;
}
for (MesWorkOrderInfo info : query){
List<MesWorkOrderInfo> orderNo = mapper.findList(new WhereFilter() {{
addFilter("work_order_no", Operation.EQUAL, info.getWorkOrderNo());
}}, MesWorkOrderInfo.class);
if (CollecUtils.isEmpty(orderNo)){
mapper.insert(info);
}
}
log.info("--------同步mes数据结束--------");
}
}
......@@ -38,7 +38,7 @@ public class LaserCuttingMachine extends EquipmentData {
private BigDecimal gasPressure;
@Search
@Show(label = "时间",dataType = FieldType.DATETIME)
@Show(label = "采集时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间")
@Column(name = "create_time")
private Date createTime;
......
......@@ -50,7 +50,7 @@ public class PingIpUtils {
//如果出现类似=23 ms ttl=64(TTL=64 Windows)这样的字样,出现的次数=测试次数则返回真
//return connectedCount == pingTimes;
log.info("ping通设备IP :{}的次数为:" +connectedCount, ipAddress);
return connectedCount >= 2 ? true : false;
return connectedCount >= pingTimes ? true : false;
} catch (Exception ex) {
ex.printStackTrace(); //出现异常则返回假
return false;
......
......@@ -125,35 +125,35 @@ quartz.job.taskInfos[7].start=false
quartz.job.taskInfos[22].jobName=net.vtstar.zhongtong.avi.gateway.assembly.job.PlateChainStateMachineJob
quartz.job.taskInfos[22].jobGroup=PlateChainStateMachineJob
quartz.job.taskInfos[22].jobDescription=\u677f\u94feJob
quartz.job.taskInfos[22].cronExpression=0/5 * * * * ?
quartz.job.taskInfos[22].cronExpression=0/10 * * * * ?
quartz.job.taskInfos[22].start=false
#离合油加注机
quartz.job.taskInfos[16].jobName=net.vtstar.zhongtong.avi.gateway.assembly.job.CentralizedFillingClutchMachineJob
quartz.job.taskInfos[16].jobGroup=CentralizedFillingClutchMachineJob
quartz.job.taskInfos[16].jobDescription=\u79bb\u5408\u6cb9\u52a0\u6ce8\u673aJob
quartz.job.taskInfos[16].cronExpression=0 0/15 * * * ?
quartz.job.taskInfos[16].cronExpression=0/10 * * * * ?
quartz.job.taskInfos[16].start=false
#冷媒加注机
quartz.job.taskInfos[17].jobName=net.vtstar.zhongtong.avi.gateway.assembly.job.FocusAddingRefrigerantMachineJob
quartz.job.taskInfos[17].jobGroup=FocusAddingRefrigerantMachineJob
quartz.job.taskInfos[17].jobDescription=\u51b7\u5a92\u52a0\u6ce8\u673aJob
quartz.job.taskInfos[17].cronExpression=0/5 * * * * ?
quartz.job.taskInfos[17].cronExpression=0/10 * * * * ?
quartz.job.taskInfos[17].start=false
#助力油加注
quartz.job.taskInfos[18].jobName=net.vtstar.zhongtong.avi.gateway.assembly.job.FocusBoosterOilMachineJob
quartz.job.taskInfos[18].jobGroup=FocusBoosterOilMachineJob
quartz.job.taskInfos[18].jobDescription=\u52a9\u529b\u6cb9\u52a0\u6ce8\u673aJob
quartz.job.taskInfos[18].cronExpression=0/5 * * * * ?
quartz.job.taskInfos[18].cronExpression=0/10 * * * * ?
quartz.job.taskInfos[18].start=false
#地板革热熔涂胶
quartz.job.taskInfos[19].jobName=net.vtstar.zhongtong.avi.gateway.assembly.job.FloorLeatherHotMachineJob
quartz.job.taskInfos[19].jobGroup=FloorLeatherHotMachineJob
quartz.job.taskInfos[19].jobDescription=\u5730\u677f\u9694\u70ed\u7194\u8bbe\u5907Job
quartz.job.taskInfos[19].cronExpression=0/5 * * * * ?
quartz.job.taskInfos[19].cronExpression=0/10 * * * * ?
quartz.job.taskInfos[19].start=false
#智能扭力扳手
......@@ -167,7 +167,7 @@ quartz.job.taskInfos[5].start=false
quartz.job.taskInfos[6].jobName=net.vtstar.zhongtong.avi.access.job.AssemblyNewEnergyJob
quartz.job.taskInfos[6].jobGroup=AssemblyNewEnergyJob
quartz.job.taskInfos[6].jobDescription=\u65b0\u80fd\u6e90\u68c0\u6d4b\u70b9Job
quartz.job.taskInfos[6].cronExpression=0 0/15 * * * ?
quartz.job.taskInfos[6].cronExpression=0/5 * * * * ?
quartz.job.taskInfos[6].start=false
#试交车间
......@@ -189,7 +189,7 @@ quartz.job.taskInfos[4].start=false
quartz.job.taskInfos[25].jobName=net.vtstar.zhongtong.avi.gateway.trial.job.ErrorFrameJob
quartz.job.taskInfos[25].jobGroup=ErrorFrameJob
quartz.job.taskInfos[25].jobDescription=\u9519\u8bef\u5e27Job
quartz.job.taskInfos[25].cronExpression=0/5 * * * * ?
quartz.job.taskInfos[25].cronExpression=0/10 * * * * ?
quartz.job.taskInfos[25].start=false
#充电桩
......
......@@ -37,5 +37,5 @@ zt.ip.assemblytorquewrench=10.100.172.150
zt.ip.mes=192.168.100.226
zt.ip.pingtimes=2
zt.ip.timeout=500
\ No newline at end of file
zt.ip.pingtimes=1
zt.ip.timeout=1500
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="net.vtstar.zhongtong.avi.gateway.painting.mapper.SprayBoothMapper">
</mapper>
\ No newline at end of file
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