Commit 2c2436e2 authored by 夏东伟's avatar 夏东伟

新增喷涂机器人采集, mes过程扫码数据接入;

parent 492c84b8
...@@ -12,7 +12,6 @@ import net.vtstar.utils.DateUtils; ...@@ -12,7 +12,6 @@ import net.vtstar.utils.DateUtils;
import net.vtstar.zhongtong.avi.access.domain.WheelAlignment; import net.vtstar.zhongtong.avi.access.domain.WheelAlignment;
import net.vtstar.zhongtong.avi.access.mapper.WheelAlignmentMapper; import net.vtstar.zhongtong.avi.access.mapper.WheelAlignmentMapper;
import net.vtstar.zhongtong.avi.equipment.service.EquipStatusRealTimeService; import net.vtstar.zhongtong.avi.equipment.service.EquipStatusRealTimeService;
import net.vtstar.zhongtong.avi.sqlserver.domain.TestLineResult;
import net.vtstar.zhongtong.avi.utils.PingIpUtils; import net.vtstar.zhongtong.avi.utils.PingIpUtils;
import net.vtstar.zhongtong.avi.utils.SmbFileUtil; import net.vtstar.zhongtong.avi.utils.SmbFileUtil;
import org.quartz.DisallowConcurrentExecution; import org.quartz.DisallowConcurrentExecution;
...@@ -26,6 +25,7 @@ import org.springframework.stereotype.Component; ...@@ -26,6 +25,7 @@ import org.springframework.stereotype.Component;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
...@@ -39,6 +39,7 @@ import java.util.*; ...@@ -39,6 +39,7 @@ import java.util.*;
@DisallowConcurrentExecution @DisallowConcurrentExecution
public class WheelAlignmentJob extends QuartzJobBean { public class WheelAlignmentJob extends QuartzJobBean {
private static SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, MMM dd, yyyy HH:mm aa", Locale.UK);
@Autowired @Autowired
private WheelAlignmentMapper mapper; private WheelAlignmentMapper mapper;
...@@ -134,13 +135,13 @@ public class WheelAlignmentJob extends QuartzJobBean { ...@@ -134,13 +135,13 @@ public class WheelAlignmentJob extends QuartzJobBean {
log.info("--------同步底盘车间四轮定位数据结束--------"); log.info("--------同步底盘车间四轮定位数据结束--------");
} }
private void saveData(String ipAddress, Database db, List<WheelAlignment> list, String tableName) throws IOException { private void saveData(String ipAddress, Database db, List<WheelAlignment> list, String tableName) throws IOException, ParseException {
Table table = db.getTable(tableName); Table table = db.getTable(tableName);
for (Row row : table) { for (Row row : table) {
WheelAlignment map = new WheelAlignment(); WheelAlignment map = new WheelAlignment();
map.setWorkOrderID(row.getString("WorkOrderID")); map.setWorkOrderID(row.getString("WorkOrderID"));
map.setStartDateTime(row.getString("StartDateTime")); map.setStartDateTime(DateUtils.parseDateToString(dateFormat.parse(row.getString("StartDateTime")), "yyyy-MM-dd HH:mm:ss"));
map.setEndDateTime(row.getString("EndDateTime")); map.setEndDateTime(DateUtils.parseDateToString(dateFormat.parse(row.getString("EndDateTime")), "yyyy-MM-dd HH:mm:ss"));
map.setMake(row.getString("Make")); map.setMake(row.getString("Make"));
map.setModel(row.getString("Model")); map.setModel(row.getString("Model"));
map.setVIN(row.getString("VIN")); map.setVIN(row.getString("VIN"));
......
...@@ -24,7 +24,7 @@ public class EquipStatusRecord { ...@@ -24,7 +24,7 @@ public class EquipStatusRecord {
@Column(name = "equip_type") @Column(name = "equip_type")
private String equipType; private String equipType;
@ApiModelProperty(notes = "设备编号") @ApiModelProperty(notes = "设备名称")
@Column(name = "equip_code") @Column(name = "equip_code")
private String equipCode; private String equipCode;
......
package net.vtstar.zhongtong.avi.equipment.job;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.scada.base.equipmgt.service.EquipDataService;
import net.vtstar.scada.base.gather.domain.EquipmentData;
import net.vtstar.scada.base.redis.service.SimpleRedisService;
import net.vtstar.scada.base.redis.util.EquipDataUtil;
import net.vtstar.zhongtong.avi.equipment.domain.EquipInfo;
import net.vtstar.zhongtong.avi.equipment.mapper.EquipmentDataMapper;
import net.vtstar.zhongtong.avi.equipment.service.BasicInfoService;
import net.vtstar.zhongtong.avi.equipment.service.EquipStatusRealTimeService;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
@Slf4j
@Component
@DisallowConcurrentExecution
public class CleanMachineStatusDataJob extends QuartzJobBean {
@Resource(name = "redisTemplate")
protected ValueOperations valueOperations;
@Autowired
private BasicInfoService basicInfoService;
@Autowired
private EquipStatusRealTimeService realTimeService;
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("_______________________________________________________________");
List<EquipInfo> allEquip = basicInfoService.findAllEquip();
log.info("开始清洗设备实时状态数据 allEquip.size: {}", allEquip.size());
for (EquipInfo info : allEquip) {
if ("PLC".equals(info.getEquipType()) || "PAINTING_ROBOT_ERROR".equals(info.getEquipType())) {
continue;
}
if (null != info.getRemarks()) {
continue;
}
EquipmentData data;
data = (EquipmentData) valueOperations.get(EquipDataUtil.getLastStatusKey(info.getAlias()));
if (null == data || null == data.getEquipStatus()) {
realTimeService.saveEquip(info.getWorkshopName(), info.getEquipCode(), info.getAlias(), "关机");
continue;
}
String state = "";
switch (data.getEquipStatus().name()) {
case "RUN":
state = "运行";
break;
case "IDLE":
state = "待机";
break;
case "PAUSE":
state = "暂停";
break;
case "ALARM":
state = "报警";
break;
case "SHUTDOWN":
state = "关机";
break;
default:
state = "关机";
break;
}
realTimeService.saveEquip(info.getWorkshopName(), info.getEquipCode(), info.getAlias(), state);
}
log.info("_______________________________________________________________");
}
}
package net.vtstar.zhongtong.avi.equipment.job; package net.vtstar.zhongtong.avi.equipment.job;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.vtstar.scada.base.equipmgt.domain.Enum.EquipStatusEnum;
import net.vtstar.scada.base.equipmgt.service.EquipDataService; import net.vtstar.scada.base.equipmgt.service.EquipDataService;
import net.vtstar.scada.base.gather.domain.EquipmentData; import net.vtstar.scada.base.gather.domain.EquipmentData;
import net.vtstar.scada.base.redis.service.SimpleRedisService; import net.vtstar.scada.base.redis.service.SimpleRedisService;
import net.vtstar.scada.base.redis.util.EquipDataUtil; import net.vtstar.scada.base.redis.util.EquipDataUtil;
import net.vtstar.zhongtong.avi.equipment.domain.EquipInfo;
import net.vtstar.zhongtong.avi.equipment.mapper.EquipmentDataMapper; import net.vtstar.zhongtong.avi.equipment.mapper.EquipmentDataMapper;
import net.vtstar.zhongtong.avi.equipment.service.BasicInfoService; import net.vtstar.zhongtong.avi.equipment.service.BasicInfoService;
import net.vtstar.zhongtong.avi.equipment.service.EquipStatusRealTimeService; import net.vtstar.zhongtong.avi.equipment.service.EquipStatusRealTimeService;
...@@ -22,6 +22,7 @@ import org.springframework.util.CollectionUtils; ...@@ -22,6 +22,7 @@ import org.springframework.util.CollectionUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors;
@Slf4j @Slf4j
@Component @Component
...@@ -58,14 +59,15 @@ public class CleanStatusDataJob extends QuartzJobBean { ...@@ -58,14 +59,15 @@ public class CleanStatusDataJob extends QuartzJobBean {
if (CollectionUtils.isEmpty(dataList)) { if (CollectionUtils.isEmpty(dataList)) {
continue; continue;
} }
if (key.contains("DRYING_ROOM_TEMP")){ if (key.contains("DRYING_ROOM_TEMP")) {
//插入设备监控数据 //插入设备监控数据
equipmentDataMapper.insert(dataList.get(0)); equipmentDataMapper.insert(dataList.get(0));
}else{ } else {
//插入设备监控数据 //插入设备监控数据
equipmentDataMapper.insertList(dataList); List<EquipmentData> collect = dataList.stream().filter(item -> !EquipStatusEnum.SHUTDOWN.equals(item.getEquipStatus())).collect(Collectors.toList());
equipmentDataMapper.insertList(collect);
} }
if (key.contains("DRYING_ROOM_TEMP") || key.contains("SPRAY_BOOTH")){ if (key.contains("DRYING_ROOM_TEMP") || key.contains("SPRAY_BOOTH")) {
continue; continue;
} }
equipDataService.updateLastStatus(dataList.get(dataList.size() - 1)); equipDataService.updateLastStatus(dataList.get(dataList.size() - 1));
...@@ -109,45 +111,5 @@ public class CleanStatusDataJob extends QuartzJobBean { ...@@ -109,45 +111,5 @@ public class CleanStatusDataJob extends QuartzJobBean {
} }
} }
} }
log.info("_______________________________________________________________");
List<EquipInfo> allEquip = basicInfoService.findAllEquip();
log.info("开始清洗设备实时状态数据 allEquip.size: {}", allEquip.size());
for (EquipInfo info : allEquip) {
if ("PLC".equals(info.getEquipType())){
continue;
}
if (null != info.getRemarks()){
return;
}
EquipmentData data = (EquipmentData) valueOperations.get(EquipDataUtil.getLastStatusKey(info.getAlias()));
if (null == data || null == data.getEquipStatus()){
realTimeService.saveEquip(info.getWorkshopName(), info.getEquipCode(), info.getAlias(), "关机");
continue;
}
String state = "";
switch (data.getEquipStatus().name()){
case "RUN":
state = "运行";
break;
case "IDLE":
state = "待机";
break;
case "PAUSE":
state = "暂定";
break;
case "ALARM":
state = "报警";
break;
case "SHUTDOWN":
state = "关机";
break;
default:
state = "关机";
break;
}
realTimeService.saveEquip(info.getWorkshopName(), info.getEquipCode(), info.getAlias(), state);
}
log.info("_______________________________________________________________");
} }
} }
package net.vtstar.zhongtong.avi.equipment.service; package net.vtstar.zhongtong.avi.equipment.service;
import com.alibaba.excel.util.StringUtils; import com.alibaba.excel.util.StringUtils;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.vtstar.scada.base.equipmgt.service.EquipDataService; import net.vtstar.scada.base.equipmgt.service.EquipDataService;
import net.vtstar.user.mybatis.provider.Operation; import net.vtstar.user.mybatis.provider.Operation;
...@@ -15,8 +14,8 @@ import net.vtstar.zhongtong.avi.gateway.painting.domain.DryingRoomTempMachine; ...@@ -15,8 +14,8 @@ import net.vtstar.zhongtong.avi.gateway.painting.domain.DryingRoomTempMachine;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date; import java.util.*;
import java.util.List; import java.util.stream.Collectors;
/** /**
* @Author: xiadongwei * @Author: xiadongwei
...@@ -39,28 +38,38 @@ public class DryingRoomTempService { ...@@ -39,28 +38,38 @@ public class DryingRoomTempService {
* 查询温度状态列表 * 查询温度状态列表
*/ */
public List<EquipStatusRecord> findPageEquip(Integer pageNum, Integer pageSize, String equipCode, Date beginTime) { public List<EquipStatusRecord> findPageEquip(Integer pageNum, Integer pageSize, String equipCode, Date beginTime) {
PageHelper.startPage(pageNum, pageSize);
if (null == beginTime){ if (null == beginTime){
beginTime = DateUtils.getStartOfDay(1); beginTime = DateUtils.getStartOfDay(1);
} }
String startOfDay = DateUtils.parseDateToString(DateUtils.getStartOfDay(-1, beginTime), "yyyy-MM-dd HH:mm:ss"); String startOfDay = DateUtils.parseDateToString(DateUtils.getStartOfDay(-1, beginTime), "yyyy-MM-dd HH:mm:ss");
String endOfDay = DateUtils.parseDateToString(DateUtils.getEndOfDay(-1, beginTime), "yyyy-MM-dd HH:mm:ss"); String endOfDay = DateUtils.parseDateToString(DateUtils.getEndOfDay(-1, beginTime), "yyyy-MM-dd HH:mm:ss");
List<EquipStatusRecord> list = new ArrayList<>();
if (StringUtils.isEmpty(equipCode)){ if (StringUtils.isEmpty(equipCode)){
return statusRecordMapper.findList(new WhereFilter(){{ list = statusRecordMapper.findList(new WhereFilter() {{
addFilter("equip_type", Operation.EQUAL, "DRYING_ROOM_TEMP"); addFilter("equip_type", Operation.EQUAL, "DRYING_ROOM_TEMP");
addFilter("begin_time", Operation.GREATER_THAN, startOfDay); addFilter("begin_time", Operation.GREATER_THAN, startOfDay);
addFilter("end_time", Operation.LESS_THAN, endOfDay); addFilter("end_time", Operation.LESS_THAN, endOfDay);
addFilter("equip_status", Operation.EQUAL, "RUN"); addFilter("equip_status", Operation.EQUAL, "RUN");
addOrderBy(EquipStatusRecord.class, "begin_time", OrderBy.DESC); addOrderBy(EquipStatusRecord.class, "begin_time", OrderBy.DESC);
}}, EquipStatusRecord.class); }}, EquipStatusRecord.class);
}else{
list = statusRecordMapper.findList(new WhereFilter(){{
addFilter("equip_code", Operation.EQUAL, equipCode);
addFilter("begin_time", Operation.GREATER_THAN, startOfDay);
addFilter("end_time", Operation.LESS_THAN, endOfDay);
addFilter("equip_status", Operation.EQUAL, "RUN");
addOrderBy(EquipStatusRecord.class, "begin_time", OrderBy.DESC);
}}, EquipStatusRecord.class);
}
List<EquipStatusRecord> records = new ArrayList<>();
Map<String, List<EquipStatusRecord>> collect = list.stream().collect(Collectors.groupingBy(EquipStatusRecord::getEquipCode));
for (Map.Entry<String, List<EquipStatusRecord>> entry : collect.entrySet()){
List<EquipStatusRecord> compareList = entry.getValue().stream().sorted(Comparator.comparing(EquipStatusRecord::getBeginTime)).collect(Collectors.toList());
EquipStatusRecord startRecord = compareList.get(0);
startRecord.setEndTime(compareList.get(compareList.size() -1).getEndTime());
records.add(startRecord);
} }
return statusRecordMapper.findList(new WhereFilter(){{ return records;
addFilter("equip_code", Operation.EQUAL, equipCode);
addFilter("begin_time", Operation.GREATER_THAN, startOfDay);
addFilter("end_time", Operation.LESS_THAN, endOfDay);
addFilter("equip_status", Operation.EQUAL, "RUN");
addOrderBy(EquipStatusRecord.class, "begin_time", OrderBy.DESC);
}}, EquipStatusRecord.class);
} }
......
...@@ -188,71 +188,70 @@ public class EquipmentService { ...@@ -188,71 +188,70 @@ public class EquipmentService {
String path = ""; String path = "";
NtlmPasswordAuthentication auth = null; NtlmPasswordAuthentication auth = null;
switch (transferVO.getEquipCode()) { switch (transferVO.getEquipCode()) {
case "076103-19": case "071603-19":
ip = "10.1.4.120"; ip = "10.1.4.120";
path = "smb://" + ip + " /数控下料/"; path = "smb://" + ip + "/数控下料/";
break; break;
case "076103-28": case "071603-28":
//PING不通
ip = "10.1.25.114"; ip = "10.1.25.114";
path = "smb://" + ip + " /数控下料/"; path = "smb://" + ip + "/数控下料/";
break; break;
case "076103-14": case "071603-14":
ip = "10.1.4.107"; ip = "10.1.4.107";
path = "smb://" + ip + " /数控下料/"; path = "smb://" + ip + "/数控下料/";
break; break;
case "076103-25": case "071603-25":
ip = "10.1.4.129"; ip = "10.1.4.129";
path = "smb://" + ip + " /数控下料/"; path = "smb://admin:123456@" + ip + "/数控下料/";
break; break;
//TODO: 网口不通 //TODO: 网口不通
case "076103-13": case "071603-13":
ip = "10.1.4.108"; ip = "10.1.4.108";
path = "smb://" + ip + " /数控下料/"; path = "smb://" + ip + "/数控下料/";
break; break;
case "076103-17": case "071603-17":
ip = "10.1.4.106"; ip = "10.1.4.106";
path = "smb://" + ip + " /数控下料/"; path = "smb://" + ip + "/数控下料/";
break; break;
//三维激光切割机 //三维激光切割机
case "076707-165": case "076707-105":
ip = "10.1.25.175"; ip = "10.1.25.175";
path = "smb://" + ip + "/NCPrg/";
break; break;
//激光切管机 //激光切管机
case "076707-174": case "076707-146":
//NCPrg, PA8000 ip = "10.1.25.177";
ip = "10.1.25.176";
path = "smb://" + ip + " /NCPrg/"; path = "smb://" + ip + " /NCPrg/";
break; break;
//激光切管机 //激光切管机
case "076707-166": case "076707-166":
ip = "10.1.25.177"; ip = "10.1.25.176";
path = "smb://" + ip + "/NCProg/";
break; break;
//平板激光切割机 //平板激光切割机
case "076707-114": case "076707-114":
//NCPrg, PA8000 //NCPrg, PA8000
ip = "10.1.25.178"; ip = "10.1.25.178";
path = "smb://" + ip + " /NCPrg/"; path = "smb://" + ip + "/NCPrg/";
break; break;
//平板激光切割机 //平板激光切割机
case "076707-167": case "076707-167":
ip = "10.1.25.179"; ip = "10.1.25.179";
path = "smb://" + ip + " /NCPrg/"; path = "smb://" + ip + "/NCPrg/";
break;
//平板激光切割机
case "076707-146":
ip = "10.1.25.180";
break; break;
//平板激光切割机 //平板激光切割机
case "076707-178": case "076707-178":
ip = "10.1.25.181"; ip = "10.1.25.180";
path = "smb://" + ip + "/NcProg/";
break; break;
//平板激光切割机 //平板激光切割机
case "076707-177": case "076707-177":
ip = "10.1.25.182"; ip = "10.1.25.181";
path = "smb://" + ip + "/NCPrg/";
break; break;
} }
// SmbFileUtil.smbPut("smb://10.1.4.107/数控下料/", transferVO.getFilePath()); return SmbFileUtil.smbPut(path, transferVO.getFilePath(), auth);
return SmbFileUtil.smbPut(path, transferVO.getFilePath());
} }
public List<EquipInfo> findByShopCode(String workshopCode) { public List<EquipInfo> findByShopCode(String workshopCode) {
......
...@@ -8,7 +8,7 @@ import net.vtstar.user.mybatis.provider.Operation; ...@@ -8,7 +8,7 @@ import net.vtstar.user.mybatis.provider.Operation;
import net.vtstar.user.mybatis.provider.OrderBy; import net.vtstar.user.mybatis.provider.OrderBy;
import net.vtstar.user.mybatis.provider.WhereFilter; import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.user.search.service.SearchService; import net.vtstar.user.search.service.SearchService;
import net.vtstar.utils.CollecUtils; import net.vtstar.utils.DateUtils;
import net.vtstar.zhongtong.avi.equipment.domain.EquipInfo; import net.vtstar.zhongtong.avi.equipment.domain.EquipInfo;
import net.vtstar.zhongtong.avi.equipment.domain.FaultRecord; import net.vtstar.zhongtong.avi.equipment.domain.FaultRecord;
import net.vtstar.zhongtong.avi.equipment.domain.RuntimeRecord; import net.vtstar.zhongtong.avi.equipment.domain.RuntimeRecord;
...@@ -16,18 +16,15 @@ import net.vtstar.zhongtong.avi.equipment.mapper.BasicInfoMapper; ...@@ -16,18 +16,15 @@ import net.vtstar.zhongtong.avi.equipment.mapper.BasicInfoMapper;
import net.vtstar.zhongtong.avi.equipment.mapper.EquipmentDataMapper; import net.vtstar.zhongtong.avi.equipment.mapper.EquipmentDataMapper;
import net.vtstar.zhongtong.avi.equipment.mapper.FaultRecordMapper; import net.vtstar.zhongtong.avi.equipment.mapper.FaultRecordMapper;
import net.vtstar.zhongtong.avi.equipment.mapper.RuntimeRecordMapper; import net.vtstar.zhongtong.avi.equipment.mapper.RuntimeRecordMapper;
import net.vtstar.zhongtong.avi.monitoring.domain.Warning;
import net.vtstar.zhongtong.avi.gateway.stamping.domain.LaserCutting3DMachine; import net.vtstar.zhongtong.avi.gateway.stamping.domain.LaserCutting3DMachine;
import net.vtstar.zhongtong.avi.monitoring.domain.Warning;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* @Author: xiadongwei * @Author: xiadongwei
...@@ -92,18 +89,16 @@ public class RunRecordService { ...@@ -92,18 +89,16 @@ public class RunRecordService {
public List<FaultRecord> findPageFault(JSONObject pageFilter) { public List<FaultRecord> findPageFault(JSONObject pageFilter) {
PageHelper.startPage(pageFilter.getIntValue("pageNum"), pageFilter.getIntValue("pageSize")); PageHelper.startPage(pageFilter.getIntValue("pageNum"), pageFilter.getIntValue("pageSize"));
List<FaultRecord> list = faultRecordMapper.findList(searchService.pageFilter2Filter(pageFilter, new WhereFilter() {{ List<FaultRecord> list = faultRecordMapper.findList(searchService.pageFilter2Filter(pageFilter, new WhereFilter() {{
/*addJoin(PaintshopStation.class, "area_id", PaintshopArea.class, "id"); addOrderBy("begin_time", OrderBy.DESC);
addJoin(PaintshopStation.class, "lane_id", PaintshopLane.class, "id");*/
}}), FaultRecord.class); }}), FaultRecord.class);
list.forEach(faultRecord -> { /* list.forEach(faultRecord -> {
faultRecord.getEquipCode();
List<EquipInfo> equipInfos = basicInfoMapper.findList(new WhereFilter() {{ List<EquipInfo> equipInfos = basicInfoMapper.findList(new WhereFilter() {{
addFilter("equip_code", Operation.EQUAL, faultRecord.getEquipCode()); addFilter("equip_code", Operation.EQUAL, faultRecord.getEquipCode());
}}, EquipInfo.class); }}, EquipInfo.class);
if (!CollecUtils.isEmpty(equipInfos)){ if (!CollecUtils.isEmpty(equipInfos)){
faultRecord.setEquipCode(equipInfos.get(0).getEquipCode()); faultRecord.setEquipCode(equipInfos.get(0).getEquipCode());
} }
}); });*/
return list; return list;
} }
...@@ -142,7 +137,31 @@ public class RunRecordService { ...@@ -142,7 +137,31 @@ public class RunRecordService {
* @param list * @param list
*/ */
public void refreshWarning(List<Warning> list) { public void refreshWarning(List<Warning> list) {
List<FaultRecord> faultRecords = faultRecordMapper.findList(new WhereFilter() {{ String startOfDay = DateUtils.parseDateToString(DateUtils.getStartOfDay(0, new Date()), "yyyy-MM-dd HH:mm:ss");
if (CollectionUtils.isEmpty(list)){
return;
}
list.forEach(warning -> {
String equipName = warning.getName().split(" ")[0];
List<FaultRecord> faultRecords = faultRecordMapper.findList(new WhereFilter() {{
addFilter("machine_code", Operation.EQUAL, equipName);
addFilter("begin_time", Operation.GREATER_THAN, startOfDay);
addFilter("warning_info", Operation.EQUAL, warning.getInfo());
}}, FaultRecord.class);
if (CollectionUtils.isEmpty(faultRecords)){
FaultRecord faultRecord = new FaultRecord();
faultRecord.setEquipCode(equipName);
faultRecord.setWarningInfo(warning.getInfo());
faultRecord.setWorkshopCode("涂装车间");
faultRecord.setBeginTime(new Date());
faultRecordMapper.insert(faultRecord);
}else{
FaultRecord faultRecord = faultRecords.get(0);
faultRecord.setEndTime(new Date());
faultRecordMapper.update(faultRecord);
}
});
/*List<FaultRecord> faultRecords = faultRecordMapper.findList(new WhereFilter() {{
addFilter("end_time", Operation.IS, "null"); addFilter("end_time", Operation.IS, "null");
}}, FaultRecord.class); }}, FaultRecord.class);
List<FaultRecord> records = new ArrayList<>(); List<FaultRecord> records = new ArrayList<>();
...@@ -187,8 +206,8 @@ public class RunRecordService { ...@@ -187,8 +206,8 @@ public class RunRecordService {
faultRecordMapper.update(faultRecord); faultRecordMapper.update(faultRecord);
}else{ }else{
faultRecord.setBeginTime(new Date()); faultRecord.setBeginTime(new Date());
faultRecordMapper.update(faultRecord); faultRecordMapper.insert(faultRecord);
} }
} }*/
} }
} }
...@@ -23,7 +23,6 @@ public class CentralizedFillingClutchMachineJob extends GatherJob { ...@@ -23,7 +23,6 @@ public class CentralizedFillingClutchMachineJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, CentralizedFillingClutchMachine.class); super.gatherByModbus(NAME, CentralizedFillingClutchMachine.class);
} }
......
...@@ -23,7 +23,6 @@ public class FloorLeatherHotMachineJob extends GatherJob { ...@@ -23,7 +23,6 @@ public class FloorLeatherHotMachineJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, FloorLeatherHotMachine.class); super.gatherByModbus(NAME, FloorLeatherHotMachine.class);
} }
......
...@@ -23,7 +23,6 @@ public class FocusAddingRefrigerantMachineJob extends GatherJob { ...@@ -23,7 +23,6 @@ public class FocusAddingRefrigerantMachineJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, FocusAddingRefrigerantMachine.class); super.gatherByModbus(NAME, FocusAddingRefrigerantMachine.class);
} }
......
...@@ -29,7 +29,6 @@ public class PlateChainStateMachineJob extends GatherJob { ...@@ -29,7 +29,6 @@ public class PlateChainStateMachineJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, PlateChainStateMachine.class); super.gatherByModbus(NAME, PlateChainStateMachine.class);
} }
......
...@@ -23,7 +23,6 @@ public class ChassisTorqueMachineJob extends GatherJob { ...@@ -23,7 +23,6 @@ public class ChassisTorqueMachineJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, ChassisTorqueWrench.class); super.gatherByModbus(NAME, ChassisTorqueWrench.class);
} }
......
...@@ -18,21 +18,26 @@ import java.util.Date; ...@@ -18,21 +18,26 @@ import java.util.Date;
@Table(name = "eqp_data_painting_robot") @Table(name = "eqp_data_painting_robot")
public class PaintingRobotMachine extends EquipmentData { public class PaintingRobotMachine extends EquipmentData {
@Show(label = "设备名称")
@Column(name = "eqp_code") @Column(name = "eqp_code")
@ApiModelProperty(notes = "设备名称") @ApiModelProperty(notes = "设备名称")
@Search @Search
private String equipCode; private String equipCode;
@Show(label = "系统是否运行")
@Column(name = "run_state") @Column(name = "run_state")
@ApiModelProperty(notes = "系统是否运行") @ApiModelProperty(notes = "系统是否运行")
private String runState; private Integer runState;
@Show(label = "系统是否报警")
@Column(name = "error_state") @Column(name = "error_state")
@ApiModelProperty(notes = "系统是否报警") @ApiModelProperty(notes = "系统是否报警")
private String errorState; private Integer errorState;
@Column(name = "run_status_r11")
@ApiModelProperty(notes = "R11机械臂运行中")
private Integer runStatusR11;
@Column(name = "run_status_r21")
@ApiModelProperty(notes = "R21机械臂运行中")
private Integer runStatusR21;
@Show(label = "采集时间",dataType = FieldType.DATETIME) @Show(label = "采集时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间") @ApiModelProperty("时间")
......
...@@ -21,7 +21,6 @@ public class DryingRoomTempMachineJob extends GatherJob { ...@@ -21,7 +21,6 @@ public class DryingRoomTempMachineJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, DryingRoomTempMachine.class); super.gatherByModbus(NAME, DryingRoomTempMachine.class);
} }
......
...@@ -23,7 +23,6 @@ public class ElectrophoresisRectificationMachineJob extends GatherJob { ...@@ -23,7 +23,6 @@ public class ElectrophoresisRectificationMachineJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, ElectrophoresisRectificationMachine.class); super.gatherByModbus(NAME, ElectrophoresisRectificationMachine.class);
} }
......
...@@ -23,7 +23,6 @@ public class PaintPretreatmentMachineJob extends GatherJob { ...@@ -23,7 +23,6 @@ public class PaintPretreatmentMachineJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, PaintingPretreatmentMachine.class); super.gatherByModbus(NAME, PaintingPretreatmentMachine.class);
} }
......
...@@ -23,7 +23,6 @@ public class PaintingRobotMachineJob extends GatherJob { ...@@ -23,7 +23,6 @@ public class PaintingRobotMachineJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, PaintingRobotMachine.class); super.gatherByModbus(NAME, PaintingRobotMachine.class);
} }
...@@ -34,19 +33,26 @@ public class PaintingRobotMachineJob extends GatherJob { ...@@ -34,19 +33,26 @@ public class PaintingRobotMachineJob extends GatherJob {
if (state == null || "0".equals(state)) { if (state == null || "0".equals(state)) {
return false; return false;
} }
if("是".equals(data.getRunState())){ equipmentData.setEquipStatus(EquipStatusEnum.IDLE);
if(null != data.getRunState() && data.getRunState() == 1){
equipmentData.setEquipStatus(EquipStatusEnum.RUN); equipmentData.setEquipStatus(EquipStatusEnum.RUN);
}else{ }
if(null != data.getErrorState() && data.getErrorState() == 1){
equipmentData.setEquipStatus(EquipStatusEnum.ALARM); equipmentData.setEquipStatus(EquipStatusEnum.ALARM);
} }
if(null != data.getRunStatusR11() && data.getRunStatusR11() == 1){
equipmentData.setEquipStatus(EquipStatusEnum.RUN);
}
if(null != data.getRunStatusR21() && data.getRunStatusR21() == 1){
equipmentData.setEquipStatus(EquipStatusEnum.RUN);
}
return true; return true;
} }
@Override @Override
public Object handleValue(String fieldName, Object value) { public Object handleValue(String fieldName, Object value) {
Integer valueInt = Integer.valueOf(value.toString()); Integer valueInt = Integer.valueOf(value.toString());
return (valueInt & 0x01) == 1 ? "是" : "否"; return (valueInt & 0x01);
} }
@Override @Override
......
...@@ -23,7 +23,6 @@ public class PolishingRoomStateJob extends GatherJob { ...@@ -23,7 +23,6 @@ public class PolishingRoomStateJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, PolishingRoomStateMachine.class); super.gatherByModbus(NAME, PolishingRoomStateMachine.class);
} }
......
...@@ -23,7 +23,6 @@ public class SprayBoothStateMachineJob extends GatherJob { ...@@ -23,7 +23,6 @@ public class SprayBoothStateMachineJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, SprayBoothStateMachine.class); super.gatherByModbus(NAME, SprayBoothStateMachine.class);
} }
......
...@@ -23,7 +23,6 @@ public class VocMachineJob extends GatherJob { ...@@ -23,7 +23,6 @@ public class VocMachineJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, VocMachine.class); super.gatherByModbus(NAME, VocMachine.class);
} }
......
...@@ -24,7 +24,6 @@ public class DustingLineMachineJob extends GatherJob { ...@@ -24,7 +24,6 @@ public class DustingLineMachineJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, DustingLineMachine.class); super.gatherByModbus(NAME, DustingLineMachine.class);
} }
......
...@@ -23,7 +23,6 @@ public class PretreamentMachineJob extends GatherJob { ...@@ -23,7 +23,6 @@ public class PretreamentMachineJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, PretreatmentMachine.class); super.gatherByModbus(NAME, PretreatmentMachine.class);
} }
......
...@@ -23,7 +23,6 @@ public class SteelCncCuttingMachineJob extends GatherJob { ...@@ -23,7 +23,6 @@ public class SteelCncCuttingMachineJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, SteelCncCuttingMachine.class); super.gatherByModbus(NAME, SteelCncCuttingMachine.class);
} }
......
package net.vtstar.zhongtong.avi.gateway.parts.job; package net.vtstar.zhongtong.avi.gateway.parts.job;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.vtstar.scada.base.equipmgt.domain.Enum.EquipStatusEnum;
import net.vtstar.scada.base.redis.util.EquipDataUtil;
import net.vtstar.zhongtong.avi.equipment.service.EquipStatusRealTimeService; import net.vtstar.zhongtong.avi.equipment.service.EquipStatusRealTimeService;
import net.vtstar.zhongtong.avi.gateway.parts.domain.SteelCncCuttingMachine;
import net.vtstar.zhongtong.avi.utils.PingIpUtils; import net.vtstar.zhongtong.avi.utils.PingIpUtils;
import org.quartz.JobExecutionContext; import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.scheduling.quartz.QuartzJobBean; import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -36,6 +42,9 @@ public class SteelCncCuttingMachineStateJob extends QuartzJobBean { ...@@ -36,6 +42,9 @@ public class SteelCncCuttingMachineStateJob extends QuartzJobBean {
@Autowired @Autowired
private EquipStatusRealTimeService realTimeService; private EquipStatusRealTimeService realTimeService;
@Resource(name = "redisTemplate")
protected ValueOperations valueOperations;
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
List<String> ipAddressList = Arrays.asList(ipAddress1, ipAddress2, ipAddress3, ipAddress4); List<String> ipAddressList = Arrays.asList(ipAddress1, ipAddress2, ipAddress3, ipAddress4);
...@@ -65,11 +74,25 @@ public class SteelCncCuttingMachineStateJob extends QuartzJobBean { ...@@ -65,11 +74,25 @@ public class SteelCncCuttingMachineStateJob extends QuartzJobBean {
equipFactory = "制件车间05中间北侧"; equipFactory = "制件车间05中间北侧";
break; break;
} }
SteelCncCuttingMachine machine = new SteelCncCuttingMachine();
machine.setAlias(equipName);
machine.setEquipCode(equipCode);
machine.setCreateTime(new Date());
machine.setStatus("1");
machine.setEquipFactory(equipFactory);
if (!PingIpUtils.ping(ipAddress, pingTimes, timeOut)) { if (!PingIpUtils.ping(ipAddress, pingTimes, timeOut)) {
machine.setStateString("关机");
realTimeService.saveEquip("制件车间", equipCode, equipName, "关机"); realTimeService.saveEquip("制件车间", equipCode, equipName, "关机");
machine.setEquipStatus(EquipStatusEnum.SHUTDOWN);
String key = EquipDataUtil.getLastStatusKey(machine.getEquipCode());
valueOperations.set(key, machine);
continue; continue;
} }
machine.setStateString("开机");
realTimeService.saveEquip("制件车间", equipCode, equipName, "开机"); realTimeService.saveEquip("制件车间", equipCode, equipName, "开机");
machine.setEquipStatus(EquipStatusEnum.RUN);
String key = EquipDataUtil.getLastStatusKey(machine.getEquipCode());
valueOperations.set(key, machine);
} }
} }
......
...@@ -19,6 +19,18 @@ import java.util.Date; ...@@ -19,6 +19,18 @@ import java.util.Date;
@Table(name = "eqp_data_laser_cutting") @Table(name = "eqp_data_laser_cutting")
public class PlasmaCuttingMachine extends EquipmentData { public class PlasmaCuttingMachine extends EquipmentData {
@Show(label = "设备编号")
@Column(name = "eqp_code")
@ApiModelProperty(notes = "设备编号")
@Search
private String equipCode;
@Show(label = "设备名称")
@Column(name = "eqp_name")
@ApiModelProperty(notes = "设备名称")
@Search
private String alias;
@Search @Search
@Show(label = "切割速率",sortable = true) @Show(label = "切割速率",sortable = true)
@ApiModelProperty("切割速率") @ApiModelProperty("切割速率")
......
package net.vtstar.zhongtong.avi.gateway.stamping.job; package net.vtstar.zhongtong.avi.gateway.stamping.job;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.vtstar.scada.base.equipmgt.domain.Enum.EquipStatusEnum;
import net.vtstar.scada.base.redis.util.EquipDataUtil;
import net.vtstar.zhongtong.avi.equipment.service.EquipStatusRealTimeService; import net.vtstar.zhongtong.avi.equipment.service.EquipStatusRealTimeService;
import net.vtstar.zhongtong.avi.gateway.stamping.domain.FlatLaserCuttingMachine; import net.vtstar.zhongtong.avi.gateway.stamping.domain.FlatLaserCuttingMachine;
import net.vtstar.zhongtong.avi.gateway.stamping.mapper.FlatLaserCuttingMapper; import net.vtstar.zhongtong.avi.gateway.stamping.mapper.FlatLaserCuttingMapper;
...@@ -10,9 +12,12 @@ import org.quartz.JobExecutionContext; ...@@ -10,9 +12,12 @@ import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.scheduling.quartz.QuartzJobBean; import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
...@@ -29,7 +34,6 @@ public class FlatLaserCuttingMachineJob extends QuartzJobBean { ...@@ -29,7 +34,6 @@ public class FlatLaserCuttingMachineJob extends QuartzJobBean {
private String ipAddress2 = "10.1.25.179"; private String ipAddress2 = "10.1.25.179";
private String ipAddress3 = "10.1.25.180"; private String ipAddress3 = "10.1.25.180";
private String ipAddress4 = "10.1.25.181"; private String ipAddress4 = "10.1.25.181";
private String ipAddress5 = "10.1.25.182";
@Value("${zt.ip.pingtimes}") @Value("${zt.ip.pingtimes}")
private int pingTimes; private int pingTimes;
@Value("${zt.ip.timeout}") @Value("${zt.ip.timeout}")
...@@ -39,10 +43,14 @@ public class FlatLaserCuttingMachineJob extends QuartzJobBean { ...@@ -39,10 +43,14 @@ public class FlatLaserCuttingMachineJob extends QuartzJobBean {
private EquipStatusRealTimeService realTimeService; private EquipStatusRealTimeService realTimeService;
@Autowired @Autowired
private FlatLaserCuttingMapper mapper; private FlatLaserCuttingMapper mapper;
@Resource(name = "redisTemplate")
protected ValueOperations valueOperations;
@Resource(name = "redisTemplate")
protected ListOperations listOperations;
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
List<String> ipAddressList = Arrays.asList(ipAddress1, ipAddress2, ipAddress3, ipAddress4, ipAddress5); List<String> ipAddressList = Arrays.asList(ipAddress1, ipAddress2, ipAddress3, ipAddress4);
for (String ipAddress : ipAddressList) { for (String ipAddress : ipAddressList) {
String equipCode = ""; String equipCode = "";
String equipName = ""; String equipName = "";
...@@ -50,32 +58,41 @@ public class FlatLaserCuttingMachineJob extends QuartzJobBean { ...@@ -50,32 +58,41 @@ public class FlatLaserCuttingMachineJob extends QuartzJobBean {
switch (ipAddress) { switch (ipAddress) {
case "10.1.25.178": case "10.1.25.178":
equipCode = "076707-114"; equipCode = "076707-114";
equipName = "平板激光切割机"; equipName = "平板激光切割机01";
equipFactory = "01跨西南"; equipFactory = "01南门左侧";
break; break;
case "10.1.25.179": case "10.1.25.179":
equipCode = "076707-167"; equipCode = "076707-167";
equipName = "平板激光切割机"; equipName = "平板激光切割机02";
equipFactory = "02跨西北"; equipFactory = "02北门右侧";
break; break;
case "10.1.25.180": case "10.1.25.180":
equipCode = "076707-146";
equipName = "平板激光切割机";
equipFactory = "01跨西北";
break;
case "10.1.25.181":
equipCode = "076707-178"; equipCode = "076707-178";
equipName = "平板激光切割机"; equipName = "平板激光切割机03";
equipFactory = "02跨西南"; equipFactory = "03北门右侧";
break; break;
case "10.1.25.182": case "10.1.25.181":
equipCode = "076707-177"; equipCode = "076707-177";
equipName = "平板激光切割机"; equipName = "平板激光切割机04";
equipFactory = "02西西南"; equipFactory = "03北门右侧";
break; break;
} }
FlatLaserCuttingMachine machine = new FlatLaserCuttingMachine();
machine.setAlias(equipName);
machine.setEquipCode(equipCode);
machine.setCreateTime(new Date());
machine.setStatus("1");
machine.setEquipFactory(equipFactory);
machine.setBeginTime(new Date());
if (!PingIpUtils.ping(ipAddress, pingTimes, timeOut)) { if (!PingIpUtils.ping(ipAddress, pingTimes, timeOut)) {
realTimeService.saveEquip("制件车间", equipCode, equipName, "关机"); realTimeService.saveEquip("制件车间", equipCode, equipName, "关机");
machine.setEquipStatus(EquipStatusEnum.SHUTDOWN);
machine.setAlias(equipCode);
machine.setEquipCode(equipName);
String key = EquipDataUtil.getStatusKey(equipName);
listOperations.rightPush(key, machine);
key = EquipDataUtil.getLastStatusKey(equipName);
valueOperations.set(key, machine);
continue; continue;
} }
realTimeService.saveEquip("制件车间", equipCode, equipName, "开机"); realTimeService.saveEquip("制件车间", equipCode, equipName, "开机");
...@@ -89,16 +106,17 @@ public class FlatLaserCuttingMachineJob extends QuartzJobBean { ...@@ -89,16 +106,17 @@ public class FlatLaserCuttingMachineJob extends QuartzJobBean {
log.error("ip: {}能ping通, 但62944端口连接不上", ipAddress); log.error("ip: {}能ping通, 但62944端口连接不上", ipAddress);
continue; continue;
} }
FlatLaserCuttingMachine machine = new FlatLaserCuttingMachine();
machine.setAlias(equipName);
machine.setEquipCode(equipCode);
machine.setCuttingSpeed(new BigDecimal(cuttingSpeed)); machine.setCuttingSpeed(new BigDecimal(cuttingSpeed));
machine.setGasPressure(new BigDecimal(gasPressure)); machine.setGasPressure(new BigDecimal(gasPressure));
machine.setLaserPower(new BigDecimal(laserPower)); machine.setLaserPower(new BigDecimal(laserPower));
machine.setCreateTime(new Date()); machine.setEquipStatus(EquipStatusEnum.RUN);
machine.setStatus("1");
machine.setEquipFactory(equipFactory);
mapper.insert(machine); mapper.insert(machine);
machine.setAlias(equipCode);
machine.setEquipCode(equipName);
String key = EquipDataUtil.getStatusKey(equipName);
listOperations.rightPush(key, machine);
key = EquipDataUtil.getLastStatusKey(equipName);
valueOperations.set(key, machine);
} }
} }
} }
\ No newline at end of file
package net.vtstar.zhongtong.avi.gateway.stamping.job; package net.vtstar.zhongtong.avi.gateway.stamping.job;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.vtstar.scada.base.equipmgt.domain.Enum.EquipStatusEnum;
import net.vtstar.scada.base.redis.util.EquipDataUtil;
import net.vtstar.zhongtong.avi.equipment.service.EquipStatusRealTimeService; import net.vtstar.zhongtong.avi.equipment.service.EquipStatusRealTimeService;
import net.vtstar.zhongtong.avi.gateway.stamping.domain.LaserCutting3DMachine; import net.vtstar.zhongtong.avi.gateway.stamping.domain.LaserCutting3DMachine;
import net.vtstar.zhongtong.avi.gateway.stamping.mapper.LaserCutting3DMapper; import net.vtstar.zhongtong.avi.gateway.stamping.mapper.LaserCutting3DMapper;
...@@ -10,9 +12,12 @@ import org.quartz.JobExecutionContext; ...@@ -10,9 +12,12 @@ import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.scheduling.quartz.QuartzJobBean; import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
...@@ -36,6 +41,11 @@ public class LaserCutting3DMachineJob extends QuartzJobBean { ...@@ -36,6 +41,11 @@ public class LaserCutting3DMachineJob extends QuartzJobBean {
@Autowired @Autowired
private LaserCutting3DMapper laserCutting3DMapper; private LaserCutting3DMapper laserCutting3DMapper;
@Resource(name = "redisTemplate")
protected ValueOperations valueOperations;
@Resource(name = "redisTemplate")
protected ListOperations listOperations;
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
List<String> ipAddressList = Arrays.asList(ipAddress1); List<String> ipAddressList = Arrays.asList(ipAddress1);
...@@ -45,13 +55,25 @@ public class LaserCutting3DMachineJob extends QuartzJobBean { ...@@ -45,13 +55,25 @@ public class LaserCutting3DMachineJob extends QuartzJobBean {
String equipFactory = ""; String equipFactory = "";
switch (ipAddress) { switch (ipAddress) {
case "10.1.25.175": case "10.1.25.175":
equipCode = "076707-165"; equipCode = "076707-105";
equipName = "三维激光切割机"; equipName = "三维激光切割机";
equipFactory = "01跨东南"; equipFactory = "01跨东南";
break; break;
} }
LaserCutting3DMachine machine = new LaserCutting3DMachine();
machine.setAlias(equipName);
machine.setEquipCode(equipCode);
machine.setCreateTime(new Date());
machine.setStatus("1");
machine.setBeginTime(new Date());
machine.setEquipFactory(equipFactory);
if (!PingIpUtils.ping(ipAddress, pingTimes, timeOut)) { if (!PingIpUtils.ping(ipAddress, pingTimes, timeOut)) {
realTimeService.saveEquip("制件车间", equipCode, equipName, "关机"); realTimeService.saveEquip("制件车间", equipCode, equipName, "关机");
machine.setEquipStatus(EquipStatusEnum.SHUTDOWN);
String key = EquipDataUtil.getStatusKey(machine.getAlias());
listOperations.rightPush(key, machine);
key = EquipDataUtil.getLastStatusKey(machine.getAlias());
valueOperations.set(key, machine);
continue; continue;
} }
realTimeService.saveEquip("制件车间", equipCode, equipName, "开机"); realTimeService.saveEquip("制件车间", equipCode, equipName, "开机");
...@@ -65,16 +87,16 @@ public class LaserCutting3DMachineJob extends QuartzJobBean { ...@@ -65,16 +87,16 @@ public class LaserCutting3DMachineJob extends QuartzJobBean {
log.error("ip: {}能ping通, 但62944端口连接不上", ipAddress); log.error("ip: {}能ping通, 但62944端口连接不上", ipAddress);
continue; continue;
} }
LaserCutting3DMachine machine = new LaserCutting3DMachine();
machine.setAlias(equipName);
machine.setEquipCode(equipCode);
machine.setCuttingSpeed(new BigDecimal(cuttingSpeed)); machine.setCuttingSpeed(new BigDecimal(cuttingSpeed));
machine.setGasPressure(new BigDecimal(gasPressure)); machine.setGasPressure(new BigDecimal(gasPressure));
machine.setLaserPower(new BigDecimal(laserPower)); machine.setLaserPower(new BigDecimal(laserPower));
machine.setCreateTime(new Date()); machine.setEquipStatus(EquipStatusEnum.RUN);
machine.setStatus("1");
machine.setEquipFactory(equipFactory);
laserCutting3DMapper.insert(machine); laserCutting3DMapper.insert(machine);
String key = EquipDataUtil.getStatusKey(machine.getAlias());
listOperations.rightPush(key, machine);
key = EquipDataUtil.getLastStatusKey(machine.getAlias());
valueOperations.set(key, machine);
} }
} }
} }
\ No newline at end of file
package net.vtstar.zhongtong.avi.gateway.stamping.job; package net.vtstar.zhongtong.avi.gateway.stamping.job;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.vtstar.scada.base.equipmgt.domain.Enum.EquipStatusEnum;
import net.vtstar.scada.base.redis.util.EquipDataUtil;
import net.vtstar.zhongtong.avi.equipment.service.EquipStatusRealTimeService; import net.vtstar.zhongtong.avi.equipment.service.EquipStatusRealTimeService;
import net.vtstar.zhongtong.avi.gateway.stamping.domain.LaserCuttingMachine; import net.vtstar.zhongtong.avi.gateway.stamping.domain.LaserCuttingMachine;
import net.vtstar.zhongtong.avi.gateway.stamping.mapper.LaserCuttingMapper; import net.vtstar.zhongtong.avi.gateway.stamping.mapper.LaserCuttingMapper;
...@@ -10,9 +12,12 @@ import org.quartz.JobExecutionContext; ...@@ -10,9 +12,12 @@ import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.scheduling.quartz.QuartzJobBean; import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
...@@ -25,8 +30,8 @@ import java.util.List; ...@@ -25,8 +30,8 @@ import java.util.List;
@Component @Component
public class LaserCuttingMachineJob extends QuartzJobBean { public class LaserCuttingMachineJob extends QuartzJobBean {
private String ipAddress1 = "10.1.25.176"; private String ipAddress1 = "10.1.25.177";
private String ipAddress2 = "10.1.25.177"; private String ipAddress2 = "10.1.25.176";
@Value("${zt.ip.pingtimes}") @Value("${zt.ip.pingtimes}")
private int pingTimes; private int pingTimes;
@Value("${zt.ip.timeout}") @Value("${zt.ip.timeout}")
...@@ -36,6 +41,10 @@ public class LaserCuttingMachineJob extends QuartzJobBean { ...@@ -36,6 +41,10 @@ public class LaserCuttingMachineJob extends QuartzJobBean {
private EquipStatusRealTimeService realTimeService; private EquipStatusRealTimeService realTimeService;
@Autowired @Autowired
private LaserCuttingMapper mapper; private LaserCuttingMapper mapper;
@Resource(name = "redisTemplate")
protected ValueOperations valueOperations;
@Resource(name = "redisTemplate")
protected ListOperations listOperations;
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
...@@ -45,19 +54,31 @@ public class LaserCuttingMachineJob extends QuartzJobBean { ...@@ -45,19 +54,31 @@ public class LaserCuttingMachineJob extends QuartzJobBean {
String equipName = ""; String equipName = "";
String equipFactory = ""; String equipFactory = "";
switch (ipAddress) { switch (ipAddress) {
case "10.1.25.176": case "10.1.25.177":
equipCode = "076707-174"; equipCode = "076707-146";
equipName = "激光切管机"; equipName = "激光切管机01";
equipFactory = "03西北"; equipFactory = "03西北";
break; break;
case "10.1.25.177": case "10.1.25.176":
equipCode = "076707-166"; equipCode = "076707-166";
equipName = "激光切管机"; equipName = "激光切管机02";
equipFactory = "03西南"; equipFactory = "03西南";
break; break;
} }
LaserCuttingMachine machine = new LaserCuttingMachine();
machine.setAlias(equipName);
machine.setEquipCode(equipCode);
machine.setCreateTime(new Date());
machine.setStatus("1");
machine.setBeginTime(new Date());
machine.setEquipFactory(equipFactory);
if (!PingIpUtils.ping(ipAddress, pingTimes, timeOut)) { if (!PingIpUtils.ping(ipAddress, pingTimes, timeOut)) {
realTimeService.saveEquip("制件车间", equipCode, equipName, "关机"); realTimeService.saveEquip("制件车间", equipCode, equipName, "关机");
machine.setEquipStatus(EquipStatusEnum.SHUTDOWN);
String key = EquipDataUtil.getStatusKey(machine.getAlias());
listOperations.rightPush(key, machine);
key = EquipDataUtil.getLastStatusKey(machine.getAlias());
valueOperations.set(key, machine);
continue; continue;
} }
realTimeService.saveEquip("制件车间", equipCode, equipName, "开机"); realTimeService.saveEquip("制件车间", equipCode, equipName, "开机");
...@@ -71,16 +92,15 @@ public class LaserCuttingMachineJob extends QuartzJobBean { ...@@ -71,16 +92,15 @@ public class LaserCuttingMachineJob extends QuartzJobBean {
log.error("ip: {}能ping通, 但62944端口连接不上", ipAddress); log.error("ip: {}能ping通, 但62944端口连接不上", ipAddress);
continue; continue;
} }
LaserCuttingMachine machine = new LaserCuttingMachine();
machine.setAlias(equipName);
machine.setEquipCode(equipCode);
machine.setCuttingSpeed(new BigDecimal(cuttingSpeed)); machine.setCuttingSpeed(new BigDecimal(cuttingSpeed));
machine.setGasPressure(new BigDecimal(gasPressure)); machine.setGasPressure(new BigDecimal(gasPressure));
machine.setLaserPower(new BigDecimal(laserPower)); machine.setLaserPower(new BigDecimal(laserPower));
machine.setCreateTime(new Date()); machine.setEquipStatus(EquipStatusEnum.RUN);
machine.setStatus("1");
machine.setEquipFactory(equipFactory);
mapper.insert(machine); mapper.insert(machine);
String key = EquipDataUtil.getStatusKey(machine.getAlias());
listOperations.rightPush(key, machine);
key = EquipDataUtil.getLastStatusKey(machine.getAlias());
valueOperations.set(key, machine);
} }
} }
} }
\ No newline at end of file
...@@ -30,6 +30,10 @@ public class ClientSocketUtil { ...@@ -30,6 +30,10 @@ public class ClientSocketUtil {
} }
public static String send(String ip, String data){ public static String send(String ip, String data){
//TODO: 暂时不读P102的值
if ("P102".equals(data)){
return "0";
}
//连接服务端 //连接服务端
OutputStreamWriter osw = null; OutputStreamWriter osw = null;
BufferedWriter bw = null; BufferedWriter bw = null;
...@@ -48,7 +52,7 @@ public class ClientSocketUtil { ...@@ -48,7 +52,7 @@ public class ClientSocketUtil {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append(br.readLine()); sb.append(br.readLine());
String result = sb.toString(); String result = sb.toString();
log.error("大族激光读取结果:{}", result); log.info("大族激光读取结果:{}", result);
if (result.contains("err")){ if (result.contains("err")){
return "0"; return "0";
}else{ }else{
......
...@@ -23,7 +23,6 @@ public class ChargingPileMachineJob extends GatherJob { ...@@ -23,7 +23,6 @@ public class ChargingPileMachineJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, ChargingPileMachine.class); super.gatherByModbus(NAME, ChargingPileMachine.class);
} }
......
...@@ -23,7 +23,6 @@ public class HydrogenStationVocMachineJob extends GatherJob { ...@@ -23,7 +23,6 @@ public class HydrogenStationVocMachineJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, HydrogenStationVocMachine.class); super.gatherByModbus(NAME, HydrogenStationVocMachine.class);
} }
......
...@@ -23,7 +23,6 @@ public class AutomaticSpotWeldingMachineJob extends GatherJob { ...@@ -23,7 +23,6 @@ public class AutomaticSpotWeldingMachineJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, AutomaticSpotWeldingMachine.class); super.gatherByModbus(NAME, AutomaticSpotWeldingMachine.class);
} }
......
...@@ -23,7 +23,6 @@ public class PlateChainMachineJob extends GatherJob { ...@@ -23,7 +23,6 @@ public class PlateChainMachineJob extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, WeldingPlateChainMachine.class); super.gatherByModbus(NAME, WeldingPlateChainMachine.class);
} }
......
...@@ -23,7 +23,6 @@ public class PlcControlTireMachine1Job extends GatherJob { ...@@ -23,7 +23,6 @@ public class PlcControlTireMachine1Job extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, PlcControlTireMachine1.class); super.gatherByModbus(NAME, PlcControlTireMachine1.class);
} }
......
...@@ -23,7 +23,6 @@ public class PlcControlTireMachine2Job extends GatherJob { ...@@ -23,7 +23,6 @@ public class PlcControlTireMachine2Job extends GatherJob {
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, PlcControlTireMachine2.class); super.gatherByModbus(NAME, PlcControlTireMachine2.class);
} }
......
...@@ -13,12 +13,15 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -13,12 +13,15 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
@Slf4j @Slf4j
@Api(description = "PDA相关操作模块") @Api(description = "PDA相关操作模块")
@RestController @RestController
@RequestMapping("/PDA") @RequestMapping("/PDA")
public class PDAController { public class PDAController {
public static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy:MM:dd");
@Autowired @Autowired
private PDAService pdaService; private PDAService pdaService;
...@@ -56,7 +59,6 @@ public class PDAController { ...@@ -56,7 +59,6 @@ public class PDAController {
@PostMapping("/repair") @PostMapping("/repair")
private Return repair(@RequestBody JSONObject json) { private Return repair(@RequestBody JSONObject json) {
log.info(json.toJSONString());
log.info(json.toJSONString()); log.info(json.toJSONString());
String vehicleNo = json.getString("vehicleNo"); String vehicleNo = json.getString("vehicleNo");
String busNo = json.getString("busNo"); String busNo = json.getString("busNo");
......
package net.vtstar.zhongtong.avi.monitoring.job;
import lombok.extern.slf4j.Slf4j;
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.utils.DateUtils;
import net.vtstar.zhongtong.avi.equipment.domain.FaultRecord;
import net.vtstar.zhongtong.avi.equipment.mapper.FaultRecordMapper;
import net.wimpi.modbus.io.ModbusTCPTransaction;
import net.wimpi.modbus.msg.ModbusRequest;
import net.wimpi.modbus.msg.ModbusResponse;
import net.wimpi.modbus.msg.ReadMultipleRegistersRequest;
import net.wimpi.modbus.net.TCPMasterConnection;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/*
* 喷涂机器人报警监听
*/
@Slf4j
@Component
public class PaintingRobotErrorJob extends GatherJob {
private static final String EQUIPMENT_TYPE = "PAINTING_ROBOT_ERROR";
@Autowired
private EquipInfoService equipInfoService;
@Autowired
private ModbusService modbusService;
@Autowired
private FaultRecordMapper faultRecordMapper;
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
String startOfDay = DateUtils.parseDateToString(DateUtils.getStartOfDay(0), "yyyy-MM-dd HH:mm:ss");
List<EquipInfo> equipInfoList = equipInfoService.getEquipInfoList(EQUIPMENT_TYPE);
if (CollectionUtils.isEmpty(equipInfoList)) {
return;
}
log.error("喷涂机器人报警监听!");
for (EquipInfo equipInfo : equipInfoList) {
List<EquipCommunication> commList = equipInfoService.getCommunicationListByEquipType(equipInfo.getEquipType(), 1);
if (CollectionUtils.isEmpty(commList)) {
return;
}
for (EquipCommunication communication : commList) {
EquipDataChannel dataChannel = communication.getDataChannel();
String ip = dataChannel.getIp();
Integer port = dataChannel.getPort();
Integer slaveId = dataChannel.getNo();
EquipDataTemplate template = communication.getDataTemplate();
if (template == null) {
log.error("喷涂机器人无法获取设备的数据模板,设备编号:{}", dataChannel.getEquipCode());
continue;
}
List<EquipDataTemplateItem> templateItemList = template.getTemplateItemList();
if (CollectionUtils.isEmpty(templateItemList)) {
log.error("喷涂机器人无法获取数据模板的条目,设备编号:{},模板名称:{}", dataChannel.getEquipCode(), template.getName());
continue;
}
try {
TCPMasterConnection connection = new TCPMasterConnection(InetAddress.getByName(ip));
connection.setPort(port);
connection.setTimeout(3000);
connection.connect();
ModbusTCPTransaction transaction = new ModbusTCPTransaction(connection);
transaction.setReconnecting(false);
Map<Integer, List<EquipDataTemplateItem>> collect = templateItemList.stream().collect(Collectors.groupingBy(EquipDataTemplateItem::getAddress));
for (Map.Entry<Integer, List<EquipDataTemplateItem>> entry : collect.entrySet()){
Integer address = entry.getKey();
List<EquipDataTemplateItem> items = entry.getValue();
ModbusRequest modbusRequest = new ReadMultipleRegistersRequest(address, 1);
modbusRequest.setUnitID(slaveId);
transaction.setRequest(modbusRequest);
transaction.execute();
ModbusResponse response = transaction.getResponse();
if (null == response) {
log.error("喷涂机器人读取失败! response 为空!SlaveId: {}, Address:{}", slaveId, address);
continue;
}
String[] hexStrs = response.getHexMessage().split(" ");
if (hexStrs.length == 9) {
log.error("喷涂机器人读取失败! length 为9! SlaveId: {}, Address:{}", slaveId, address);
continue;
}
Byte newValue = Byte.valueOf(hexStrs[hexStrs.length - 1], 16);
List<Integer> values = new ArrayList<>();
int j = 0;
while (j < 8){
values.add((newValue >> j) & 0x01);
j ++;
}
log.info("newValue:{}, 读取结果:{}, 报警列表:{}", newValue, values, items);
items.forEach(item -> {
Integer value = values.get(item.getLength());
if (value == 1) {
log.error("喷涂机器人报警, 报警内容:{}", item.getFieldDesc());
List<FaultRecord> list = faultRecordMapper.findList(new WhereFilter() {{
addFilter("begin_time", Operation.GREATER_THAN, startOfDay);
addFilter("machine_code", Operation.EQUAL, "喷涂机器人02");
addFilter("warning_info", Operation.EQUAL, item.getFieldDesc());
}}, FaultRecord.class);
if (CollectionUtils.isEmpty(list)) {
FaultRecord faultRecord = new FaultRecord();
faultRecord.setWorkshopCode("涂装车间");
faultRecord.setEquipCode("喷涂机器人02");
faultRecord.setBeginTime(new Date());
faultRecord.setWarningInfo(item.getFieldDesc());
faultRecord.setCreateTime(new Date());
faultRecordMapper.insert(faultRecord);
} else {
FaultRecord faultRecord = list.get(0);
faultRecord.setEndTime(new Date());
faultRecordMapper.update(faultRecord);
}
}else {
log.info("喷涂机器人未报警, 报警内容:{}", item.getFieldDesc());
}
});
}
} catch (Exception e) {
log.error("读取失败。ip{}, 端口{}, slave{}", ip, port, slaveId);
}
}
}
}
}
\ No newline at end of file
...@@ -58,7 +58,7 @@ public class RedisToCacheJob extends GatherJob { ...@@ -58,7 +58,7 @@ public class RedisToCacheJob extends GatherJob {
List<String> value = warningKey.getValue(); List<String> value = warningKey.getValue();
for (String s : value) { for (String s : value) {
Integer state = (Integer) valueOperations.get(s); Integer state = (Integer) valueOperations.get(s);
if (state == 1) { if (null != state && 1 == state) {
String[] split = s.split(":"); String[] split = s.split(":");
String warningCode = split[2]; String warningCode = split[2];
Warning warning = warningCache.get(warningCode, Warning.class); Warning warning = warningCache.get(warningCode, Warning.class);
......
...@@ -6,12 +6,9 @@ import net.vtstar.utils.CollecUtils; ...@@ -6,12 +6,9 @@ import net.vtstar.utils.CollecUtils;
import net.vtstar.zhongtong.avi.equipment.domain.PaintshopStation; import net.vtstar.zhongtong.avi.equipment.domain.PaintshopStation;
import net.vtstar.zhongtong.avi.global.constant.Constant; import net.vtstar.zhongtong.avi.global.constant.Constant;
import net.vtstar.zhongtong.avi.monitoring.domain.Skid; 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 net.vtstar.zhongtong.avi.monitoring.domain.enums.StationState;
import net.vtstar.zhongtong.avi.sqlserver.domain.MesHZWorkOrderInfo; import net.vtstar.zhongtong.avi.sqlserver.domain.MesHZWorkOrderInfo;
import net.vtstar.zhongtong.avi.sqlserver.domain.MesWorkOrderInfo;
import net.vtstar.zhongtong.avi.sqlserver.mapper.MesHZWorkOrderMapper; import net.vtstar.zhongtong.avi.sqlserver.mapper.MesHZWorkOrderMapper;
import net.vtstar.zhongtong.avi.sqlserver.mapper.MesWorkOrderMapper;
import net.vtstar.zhongtong.avi.utils.EquipDataUtil; import net.vtstar.zhongtong.avi.utils.EquipDataUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache; import org.springframework.cache.Cache;
...@@ -21,8 +18,10 @@ import org.springframework.stereotype.Service; ...@@ -21,8 +18,10 @@ import org.springframework.stereotype.Service;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.ArrayList;
import java.util.stream.Collectors; import java.util.Comparator;
import java.util.Date;
import java.util.List;
@Service @Service
public class PDAService { public class PDAService {
......
...@@ -223,6 +223,9 @@ public class RfidMessageHandler extends AbstractTesterMessageHandler { ...@@ -223,6 +223,9 @@ public class RfidMessageHandler extends AbstractTesterMessageHandler {
valueOperations.set(Constant.VEHICLE_PREFIX_REWORK, ""); valueOperations.set(Constant.VEHICLE_PREFIX_REWORK, "");
valueOperations.set(Constant.VEHICLE_PREFIX_REWORK_BUSNO, ""); valueOperations.set(Constant.VEHICLE_PREFIX_REWORK_BUSNO, "");
passInfoService.createPassInfo(skid.getWorkOrderNo(), skid.getBusNo(), skid.getRfid(), "返修上线", ""); passInfoService.createPassInfo(skid.getWorkOrderNo(), skid.getBusNo(), skid.getRfid(), "返修上线", "");
//todo:将返修数据纳入涂装进车数量
String areaKey = Constant.BUS_SIZE_IN + "0:" + format;
saveRfidInfo(areaKey, messageBO);
return; return;
} }
} }
......
package net.vtstar.zhongtong.avi.sqlserver.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
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;
/**
* @Author: xiadongwei
* @Date: 2020/04/23 9:31
*/
@ApiModel("底盘车间过程扫码表")
@Data
@Search(code = "PROCESS_SCAN_CODE_DP")
@Table(name = "process_scan_code_dp")
public class MesScanCodeDpInfo {
@Show(label = "销售订单号")
@ApiModelProperty(notes = "销售订单号")
@Column(name = "SaleOrderNO")
@Search
private String SaleOrderNO;
@Show(label = "整车标识码")
@ApiModelProperty(notes = "整车标识码")
@Column(name = "VehicleID")
private String VehicleID;
@Show(label = "追溯码")
@ApiModelProperty(notes = "追溯码")
@Column(name = "PartTraceID")
@Search
private String PartTraceID;
@Show(label = "物料号")
@ApiModelProperty(notes = "物料编号")
@Column(name = "PartDrawingNo")
@Search
private String PartDrawingNo;
@Show(label = "物料名称")
@ApiModelProperty(notes = "物料名称")
@Column(name = "PartDrawingName")
@Search
private String PartDrawingName;
@Show(label = "供应商编号")
@ApiModelProperty(notes = "供应商编号")
@Column(name = "SupplierNo")
@Search
private String SupplierNo;
@Show(label = "供货商名称")
@ApiModelProperty(notes = "供货商名称")
@Column(name = "SupplierName")
@Search
private String SupplierName;
@Show(label = "车间ID")
@ApiModelProperty(notes = "车间ID")
@Column(name = "workshopID")
@Search
private String workshopID;
@Show(label = "产线ID")
@ApiModelProperty(notes = "产线ID")
@Column(name = "workLineID")
@Search
private String workLineID;
@Show(label = "产线名称")
@ApiModelProperty(notes = "产线名称")
@Column(name = "workLineName")
@Search
private String workLineName;
@Show(label = "工位编号")
@ApiModelProperty(notes = "工位编号")
@Column(name = "WPCode")
@Search
private String WPCode;
@Show(label = "工位名称")
@ApiModelProperty(notes = "工位名称")
@Column(name = "WPName")
@Search
private String WPName;
@Show(label = "生产批次")
@ApiModelProperty(notes = "生产批次")
@Column(name = "ProductionBatch")
@Search
private String ProductionBatch;
@Show(label = "操作人")
@ApiModelProperty(notes = "操作人")
@Column(name = "OperationPerson")
@Search
private String OperationPerson;
@Show(label = "操作人名称")
@ApiModelProperty(notes = "操作人名称")
@Column(name = "OperationPersonName")
@Search
private String OperationPersonName;
@Column(name = "status")
private String status;
@Show(label = "操作时间", dataType = FieldType.DATETIME)
@ApiModelProperty(notes = "操作时间")
@Column(name = "OperationTime")
private Date OperationTime;
@Column(name = "create_time")
private Date createTime;
}
package net.vtstar.zhongtong.avi.sqlserver.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
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;
/**
* @Author: xiadongwei
* @Date: 2020/04/23 9:31
*/
@ApiModel("装配车间过程扫码表")
@Data
@Search(code = "PROCESS_SCAN_CODE_ZP")
@Table(name = "process_scan_code_zp")
public class MesScanCodeZpInfo {
@Show(label = "销售订单号")
@ApiModelProperty(notes = "销售订单号")
@Column(name = "SaleOrderNO")
@Search
private String SaleOrderNO;
@Show(label = "整车标识码")
@ApiModelProperty(notes = "整车标识码")
@Column(name = "VehicleID")
private String VehicleID;
@Show(label = "追溯码")
@ApiModelProperty(notes = "追溯码")
@Column(name = "PartTraceID")
@Search
private String PartTraceID;
@Show(label = "物料号")
@ApiModelProperty(notes = "物料编号")
@Column(name = "PartDrawingNo")
@Search
private String PartDrawingNo;
@Show(label = "物料名称")
@ApiModelProperty(notes = "物料名称")
@Column(name = "PartDrawingName")
@Search
private String PartDrawingName;
@Show(label = "供应商编号")
@ApiModelProperty(notes = "供应商编号")
@Column(name = "SupplierNo")
@Search
private String SupplierNo;
@Show(label = "供货商名称")
@ApiModelProperty(notes = "供货商名称")
@Column(name = "SupplierName")
@Search
private String SupplierName;
@Show(label = "车间ID")
@ApiModelProperty(notes = "车间ID")
@Column(name = "workshopID")
@Search
private String workshopID;
@Show(label = "产线ID")
@ApiModelProperty(notes = "产线ID")
@Column(name = "workLineID")
@Search
private String workLineID;
@Show(label = "产线名称")
@ApiModelProperty(notes = "产线名称")
@Column(name = "workLineName")
@Search
private String workLineName;
@Show(label = "工位编号")
@ApiModelProperty(notes = "工位编号")
@Column(name = "WPCode")
@Search
private String WPCode;
@Show(label = "工位名称")
@ApiModelProperty(notes = "工位名称")
@Column(name = "WPName")
@Search
private String WPName;
@Show(label = "生产批次")
@ApiModelProperty(notes = "生产批次")
@Column(name = "ProductionBatch")
@Search
private String ProductionBatch;
@Show(label = "操作人")
@ApiModelProperty(notes = "操作人")
@Column(name = "OperationPerson")
@Search
private String OperationPerson;
@Show(label = "操作人名称")
@ApiModelProperty(notes = "操作人名称")
@Column(name = "OperationPersonName")
@Search
private String OperationPersonName;
@Column(name = "status")
private String status;
@Show(label = "操作时间", dataType = FieldType.DATETIME)
@ApiModelProperty(notes = "操作时间")
@Column(name = "OperationTime")
private Date OperationTime;
@Column(name = "create_time")
private Date createTime;
}
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.DateUtils;
import net.vtstar.zhongtong.avi.sqlserver.domain.MesScanCodeDpInfo;
import net.vtstar.zhongtong.avi.sqlserver.mapper.MesScanCodeDpMapper;
import net.vtstar.zhongtong.avi.utils.PingIpUtils;
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: 2020/04/23 18:20
*/
@Slf4j
@Component
public class MesScanCodeDpJob extends QuartzJobBean {
@Resource(name = "mesSqlServerJdbcTemplate")
private JdbcTemplate mesSqlServerJdbcTemplate;
@Autowired
private MesScanCodeDpMapper 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)){
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, VehicleID, PartTraceID, PartDrawingNo,PartDrawingName, SupplierNo, SupplierName, workshopID," +
" workLineID, WPCode, ProductionBatch, OperationTime, OperationPerson, OperationPersonName, IsSpecified," +
" Deleted, Memo, WkStation, DocClosedBy, Operation, DocClosed, CrtDate, UpdDate, Archived," +
" IsSynchronize, MesNoticeNo, personFlag, supplierFlag, matFlag FROM VehicleQualityTraceDocument " +
"WHERE workshopID = 'DP' AND Deleted = 'F' AND OperationTime > '" + dateString + "'");
List<MesScanCodeDpInfo> query = mesSqlServerJdbcTemplate.query(sql.toString(), (rs, rowNum) -> {
MesScanCodeDpInfo map = new MesScanCodeDpInfo();
map.setSaleOrderNO(rs.getString("SaleOrderNO"));
map.setVehicleID(rs.getString("VehicleID"));
map.setPartTraceID(rs.getString("PartTraceID"));
map.setPartDrawingNo(rs.getString("PartDrawingNo"));
map.setPartDrawingName(rs.getString("PartDrawingName"));
map.setSupplierNo(rs.getString("SupplierNo"));
map.setSupplierName(rs.getString("SupplierName"));
map.setWorkshopID(rs.getString("workshopID"));
map.setWorkLineID(rs.getString("workshopID"));
// map.setWorkLineName(rs.getString(""));
map.setWPCode(rs.getString("WPCode"));
// map.setWPName(rs.getString(""));
map.setProductionBatch(rs.getString("ProductionBatch"));
map.setOperationTime(rs.getTimestamp("OperationTime"));
map.setOperationPerson(rs.getString("OperationPerson"));
map.setOperationPersonName(rs.getString("OperationPersonName"));
map.setStatus("1");
map.setCreateTime(new Date());
return map;
});
if (CollectionUtils.isEmpty(query)) {
log.error("连接mesSQL SERVER失败!");
return;
}
mapper.delByFilter(new WhereFilter(){{
addFilter("OperationTime", Operation.GREATER_THAN, dateString);
}}, MesScanCodeDpInfo.class);
mapper.insertList(query);
log.info("--------同步mes底盘扫码数据结束--------");
}
}
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.DateUtils;
import net.vtstar.zhongtong.avi.sqlserver.domain.MesScanCodeZpInfo;
import net.vtstar.zhongtong.avi.sqlserver.mapper.MesScanCodeZpMapper;
import net.vtstar.zhongtong.avi.utils.PingIpUtils;
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: 2020/04/23 18:20
*/
@Slf4j
@Component
public class MesScanCodeZpJob extends QuartzJobBean {
@Resource(name = "mesSqlServerJdbcTemplate")
private JdbcTemplate mesSqlServerJdbcTemplate;
@Autowired
private MesScanCodeZpMapper 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)){
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, VehicleID, PartTraceID, PartDrawingNo,PartDrawingName, SupplierNo, SupplierName, workshopID," +
" workLineID, WPCode, ProductionBatch, OperationTime, OperationPerson, OperationPersonName, IsSpecified," +
" Deleted, Memo, WkStation, DocClosedBy, Operation, DocClosed, CrtDate, UpdDate, Archived," +
" IsSynchronize, MesNoticeNo, personFlag, supplierFlag, matFlag FROM VehicleQualityTraceDocument " +
"WHERE workshopID = 'ZP' AND Deleted = 'F' AND OperationTime > '" + dateString + "'");
List<MesScanCodeZpInfo> query = mesSqlServerJdbcTemplate.query(sql.toString(), (rs, rowNum) -> {
MesScanCodeZpInfo map = new MesScanCodeZpInfo();
map.setSaleOrderNO(rs.getString("SaleOrderNO"));
map.setVehicleID(rs.getString("VehicleID"));
map.setPartTraceID(rs.getString("PartTraceID"));
map.setPartDrawingNo(rs.getString("PartDrawingNo"));
map.setPartDrawingName(rs.getString("PartDrawingName"));
map.setSupplierNo(rs.getString("SupplierNo"));
map.setSupplierName(rs.getString("SupplierName"));
map.setWorkshopID(rs.getString("workshopID"));
map.setWorkLineID(rs.getString("workshopID"));
// map.setWorkLineName(rs.getString(""));
map.setWPCode(rs.getString("WPCode"));
// map.setWPName(rs.getString(""));
map.setProductionBatch(rs.getString("ProductionBatch"));
map.setOperationTime(rs.getTimestamp("OperationTime"));
map.setOperationPerson(rs.getString("OperationPerson"));
map.setOperationPersonName(rs.getString("OperationPersonName"));
map.setStatus("1");
map.setCreateTime(new Date());
return map;
});
log.error("mes查询到数据: {} 条", query.size());
if (CollectionUtils.isEmpty(query)) {
log.error("连接mesSQL SERVER失败!");
return;
}
mapper.delByFilter(new WhereFilter(){{
addFilter("OperationTime", Operation.GREATER_THAN, dateString);
}}, MesScanCodeZpInfo.class);
mapper.insertList(query);
log.info("--------同步mess装配扫码数据结束--------");
}
}
...@@ -3,7 +3,6 @@ package net.vtstar.zhongtong.avi.sqlserver.job; ...@@ -3,7 +3,6 @@ package net.vtstar.zhongtong.avi.sqlserver.job;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.vtstar.user.mybatis.provider.Operation; import net.vtstar.user.mybatis.provider.Operation;
import net.vtstar.user.mybatis.provider.WhereFilter; import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.utils.CollecUtils;
import net.vtstar.utils.DateUtils; import net.vtstar.utils.DateUtils;
import net.vtstar.zhongtong.avi.sqlserver.domain.MesWorkOrderInfo; import net.vtstar.zhongtong.avi.sqlserver.domain.MesWorkOrderInfo;
import net.vtstar.zhongtong.avi.sqlserver.mapper.MesWorkOrderMapper; import net.vtstar.zhongtong.avi.sqlserver.mapper.MesWorkOrderMapper;
...@@ -54,7 +53,7 @@ public class MesWorkOrderJob extends QuartzJobBean { ...@@ -54,7 +53,7 @@ public class MesWorkOrderJob extends QuartzJobBean {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("SELECT SaleOrderNo, PreWONo, WONo, MaterialNo, ORDER_COUNT, UNIT, " + sql.append("SELECT SaleOrderNo, PreWONo, WONo, MaterialNo, ORDER_COUNT, UNIT, " +
"WorkShopCode, MLine, StartDate, EndDate, DeliveryDate, Status, CrtDate FROM APS_PAINTING_WORKORDER " + "WorkShopCode, MLine, StartDate, EndDate, DeliveryDate, Status, CrtDate FROM APS_PAINTING_WORKORDER " +
"WHERE WorkShopCode = 'HZ' or WorkShopCode = 'TZ'"); "WHERE WorkShopCode = 'TZ' and StartDate > '" + dateString + "'");
List<MesWorkOrderInfo> query = mesSqlServerJdbcTemplate.query(sql.toString(), (rs, rowNum) -> { List<MesWorkOrderInfo> query = mesSqlServerJdbcTemplate.query(sql.toString(), (rs, rowNum) -> {
MesWorkOrderInfo map = new MesWorkOrderInfo(); MesWorkOrderInfo map = new MesWorkOrderInfo();
map.setSalesOrderNo(rs.getString("SaleOrderNo")); map.setSalesOrderNo(rs.getString("SaleOrderNo"));
...@@ -80,15 +79,10 @@ public class MesWorkOrderJob extends QuartzJobBean { ...@@ -80,15 +79,10 @@ public class MesWorkOrderJob extends QuartzJobBean {
log.error("连接mesSQL SERVER失败!"); log.error("连接mesSQL SERVER失败!");
return; return;
} }
for (MesWorkOrderInfo info : query){ mapper.delByFilter(new WhereFilter(){{
List<MesWorkOrderInfo> orderNo = mapper.findList(new WhereFilter() {{ addFilter("start_date", Operation.GREATER_THAN, dateString);
addFilter("work_order_no", Operation.EQUAL, info.getWorkOrderNo()); }}, MesWorkOrderInfo.class);
addFilter("status", Operation.EQUAL, 4); mapper.insertList(query);
}}, MesWorkOrderInfo.class);
if (CollecUtils.isEmpty(orderNo)){
mapper.insert(info);
}
}
log.info("--------同步mes数据结束--------"); log.info("--------同步mes数据结束--------");
} }
} }
package net.vtstar.zhongtong.avi.sqlserver.mapper;
import net.vtstar.user.mybatis.BaseMapper;
import net.vtstar.zhongtong.avi.sqlserver.domain.MesScanCodeDpInfo;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: xiadongwei
* @Date: 2019/9/20 9:31
*/
@Mapper
public interface MesScanCodeDpMapper extends BaseMapper<MesScanCodeDpInfo> {
}
package net.vtstar.zhongtong.avi.sqlserver.mapper;
import net.vtstar.user.mybatis.BaseMapper;
import net.vtstar.zhongtong.avi.sqlserver.domain.MesScanCodeZpInfo;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: xiadongwei
* @Date: 2019/9/20 9:31
*/
@Mapper
public interface MesScanCodeZpMapper extends BaseMapper<MesScanCodeZpInfo> {
}
...@@ -21,15 +21,16 @@ public class SmbFileUtil { ...@@ -21,15 +21,16 @@ public class SmbFileUtil {
//smb://xxx:xxx@192.168.2.188/testIndex/ //smb://xxx:xxx@192.168.2.188/testIndex/
//xxx:xxx是共享机器的用户名密码 //xxx:xxx是共享机器的用户名密码
String url = "smb://10.100.172.223/NCPrg/"; String url = "smb://10.100.172.223/NCPrg/";
SmbFile file = new SmbFile(url); NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null, "PA8000", null);
SmbFile file = new SmbFile(url, auth);
if (file.exists()) { if (file.exists()) {
SmbFile[] files = file.listFiles(); SmbFile[] files = file.listFiles();
for (SmbFile f : files) { for (SmbFile f : files) {
System.out.println(f.getName()); System.out.println(f.getName());
} }
} }
smbGet("smb://10.100.172.223/NCPrg/新建文本文档.txt", "D:/111111.txt"); // smbGet("smb://10.100.172.223/NCPrg/新建文本文档.txt", "D:/111111.txt");
smbPut("smb://10.100.172.223/NCPrg/", "D:/yield.xls"); smbPut("smb://10.100.172.223/NCPrg/", "D:/yield.xls", auth);
} }
...@@ -73,15 +74,19 @@ public class SmbFileUtil { ...@@ -73,15 +74,19 @@ public class SmbFileUtil {
} }
//向共享目录上传文件 //向共享目录上传文件
public static Boolean smbPut(String remoteUrl, String localFilePath) { public static Boolean smbPut(String remoteUrl, String localFilePath, NtlmPasswordAuthentication auth) {
log.error("共享文件路径:{}", remoteUrl);
InputStream in = null; InputStream in = null;
OutputStream out = null; OutputStream out = null;
try { try {
File localFile = new File(localFilePath); File localFile = new File(localFilePath);
String fileName = localFile.getName(); String fileName = localFile.getName();
SmbFile remoteFile; SmbFile remoteFile;
remoteFile = new SmbFile(remoteUrl + "/" + fileName); if (null == auth){
remoteFile = new SmbFile(remoteUrl + fileName);
}else {
remoteFile = new SmbFile(remoteUrl + fileName, auth);
}
in = new BufferedInputStream(new FileInputStream(localFile)); in = new BufferedInputStream(new FileInputStream(localFile));
out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile)); out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));
...@@ -91,7 +96,7 @@ public class SmbFileUtil { ...@@ -91,7 +96,7 @@ public class SmbFileUtil {
buffer = new byte[1024]; buffer = new byte[1024];
} }
} catch (Exception e) { } catch (Exception e) {
log.error("下发文件失败: {}", e.getMessage()); log.error("下发文件失败: {}", e.getMessage() + e.getLocalizedMessage());
e.printStackTrace(); e.printStackTrace();
return false; return false;
} finally { } finally {
......
...@@ -38,7 +38,7 @@ spring.mes.sqlserver.password=wanteng@2019 ...@@ -38,7 +38,7 @@ spring.mes.sqlserver.password=wanteng@2019
server.port=8082 server.port=8082
logging.level.root=error logging.level.root=error
#logging.level.net.vtstar=info logging.level.net.vtstar=error
logging.level.net.vtstar.scada.base.equipmgt.mapper = error logging.level.net.vtstar.scada.base.equipmgt.mapper = error
logging.level.net.vtstar.zhongtong.avi.equipment.mapper = error logging.level.net.vtstar.zhongtong.avi.equipment.mapper = error
logging.level.net.vtstar.protocol.modbus.tcp.netty.service = error logging.level.net.vtstar.protocol.modbus.tcp.netty.service = error
......
...@@ -346,4 +346,39 @@ quartz.job.taskInfos[45].jobName=net.vtstar.zhongtong.avi.gateway.stamping.job.F ...@@ -346,4 +346,39 @@ quartz.job.taskInfos[45].jobName=net.vtstar.zhongtong.avi.gateway.stamping.job.F
quartz.job.taskInfos[45].jobGroup=FlatLaserCuttingMachineJob quartz.job.taskInfos[45].jobGroup=FlatLaserCuttingMachineJob
quartz.job.taskInfos[45].jobDescription=\u5C01\u88C5\u7EBF\u9884\u710A\u673A\u6570\u636E\u91C7\u96C6job quartz.job.taskInfos[45].jobDescription=\u5C01\u88C5\u7EBF\u9884\u710A\u673A\u6570\u636E\u91C7\u96C6job
quartz.job.taskInfos[45].cronExpression=0 0/1 * * * ? quartz.job.taskInfos[45].cronExpression=0 0/1 * * * ?
quartz.job.taskInfos[45].start=true quartz.job.taskInfos[45].start=true
\ No newline at end of file
#mes 底盘扫码设备同步
quartz.job.taskInfos[46].jobName=net.vtstar.zhongtong.avi.sqlserver.job.MesScanCodeDpJob
quartz.job.taskInfos[46].jobGroup=MesScanCodeDpJob
quartz.job.taskInfos[46].jobDescription=\u004d\u0045\u0053\u5de5\u5355\u540c\u6b65Job
quartz.job.taskInfos[46].cronExpression=0 0/10 * * * ?
quartz.job.taskInfos[46].start=true
#mes 底盘扫码设备同步
quartz.job.taskInfos[47].jobName=net.vtstar.zhongtong.avi.sqlserver.job.MesScanCodeZpJob
quartz.job.taskInfos[47].jobGroup=MesScanCodeZpJob
quartz.job.taskInfos[47].jobDescription=\u004d\u0045\u0053\u5de5\u5355\u540c\u6b65Job
quartz.job.taskInfos[47].cronExpression=0 0/15 * * * ?
quartz.job.taskInfos[47].start=true
#喷涂机器人运行状态
quartz.job.taskInfos[48].jobName=net.vtstar.zhongtong.avi.gateway.painting.job.PaintingRobotMachineJob
quartz.job.taskInfos[48].jobGroup=PaintingRobotMachineJob
quartz.job.taskInfos[48].jobDescription=\u55b7\u6d82\u673a\u5668\u4ebaJob
quartz.job.taskInfos[48].cronExpression=0/15 * * * * ?
quartz.job.taskInfos[48].start=true
#喷涂机器人报警状态
quartz.job.taskInfos[49].jobName=net.vtstar.zhongtong.avi.monitoring.job.PaintingRobotErrorJob
quartz.job.taskInfos[49].jobGroup=PaintingRobotErrorJob
quartz.job.taskInfos[49].jobDescription=\u55b7\u6d82\u673a\u5668\u4ebaJob
quartz.job.taskInfos[49].cronExpression=0/15 * * * * ?
quartz.job.taskInfos[49].start=true
#更新设备状态
quartz.job.taskInfos[50].jobName=net.vtstar.zhongtong.avi.equipment.job.CleanMachineStatusDataJob
quartz.job.taskInfos[50].jobGroup=CleanMachineStatusDataJob
quartz.job.taskInfos[50].jobDescription=\u55b7\u6d82\u673a\u5668\u4ebaJob
quartz.job.taskInfos[50].cronExpression=0/10 * * * * ?
quartz.job.taskInfos[50].start=true
\ No newline at end of file
...@@ -38,7 +38,7 @@ spring.mes.sqlserver.password=wanteng@2019 ...@@ -38,7 +38,7 @@ spring.mes.sqlserver.password=wanteng@2019
server.port=8082 server.port=8082
mqtt.server-uri=tcp://10.1.25.223:1883 mqtt.server-uri=tcp://10.1.25.223:1883
logging.level.root=info logging.level.root=error
#logging.level.net.vtstar=info #logging.level.net.vtstar=info
logging.level.net.vtstar.scada.base.equipmgt.mapper = error logging.level.net.vtstar.scada.base.equipmgt.mapper = error
logging.level.net.vtstar.zhongtong.avi.equipment.mapper = error logging.level.net.vtstar.zhongtong.avi.equipment.mapper = error
......
...@@ -22,11 +22,11 @@ zt.ip.assemblynewenergy3=10.1.25.130 ...@@ -22,11 +22,11 @@ zt.ip.assemblynewenergy3=10.1.25.130
zt.ip.assemblynewenergy4=10.1.25.131 zt.ip.assemblynewenergy4=10.1.25.131
#底盘车间--四轮定位A线 #底盘车间--四轮定位A线
zt.ip.wheelalignment1=10.1.25.87 zt.ip.wheelalignment1=10.1.25.85
#底盘车间--四轮定位B线 #底盘车间--四轮定位B线
zt.ip.wheelalignment2=10.1.25.86 zt.ip.wheelalignment2=10.1.25.86
#底盘车间--四轮定位C线 #底盘车间--四轮定位C线
zt.ip.wheelalignment3=10.1.25.88 zt.ip.wheelalignment3=10.1.25.87
#试交车间 #试交车间
#检测线 #检测线
......
<?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.sqlserver.mapper.MesScanCodeDpMapper">
</mapper>
\ 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.sqlserver.mapper.MesScanCodeZpMapper">
</mapper>
\ No newline at end of file
...@@ -16,7 +16,6 @@ import java.net.Socket; ...@@ -16,7 +16,6 @@ import java.net.Socket;
import java.util.Date; import java.util.Date;
@ActiveProfiles("xdw") @ActiveProfiles("xdw")
@RunWith(SpringRunner.class)
@SpringBootTest @SpringBootTest
@Slf4j @Slf4j
public class ApplicationTests { public class ApplicationTests {
...@@ -66,4 +65,14 @@ public class ApplicationTests { ...@@ -66,4 +65,14 @@ public class ApplicationTests {
socket.close(); socket.close();
} }
@Test
public void testMoodbus1() throws Exception {
Integer newValue = 3;
int j = 0;
while (j < 8){
System.out.println((newValue >> j & 0x01));
j ++;
}
}
} }
...@@ -4,6 +4,8 @@ import io.netty.buffer.ByteBuf; ...@@ -4,6 +4,8 @@ import io.netty.buffer.ByteBuf;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.vtstar.protocol.modbus.tcp.netty.packet.ReadCoilsRequest; import net.vtstar.protocol.modbus.tcp.netty.packet.ReadCoilsRequest;
import net.vtstar.protocol.modbus.tcp.netty.packet.ReadCoilsResponse; import net.vtstar.protocol.modbus.tcp.netty.packet.ReadCoilsResponse;
import net.vtstar.protocol.modbus.tcp.netty.packet.ReadInputDiscretesRequest;
import net.vtstar.protocol.modbus.tcp.netty.packet.ReadInputDiscretesResponse;
import net.vtstar.protocol.modbus.tcp.netty.service.ModbusTemplate; import net.vtstar.protocol.modbus.tcp.netty.service.ModbusTemplate;
import net.vtstar.protocol.modbus.tcp.netty.utils.PoolKey; import net.vtstar.protocol.modbus.tcp.netty.utils.PoolKey;
import net.vtstar.scada.base.equipmgt.domain.EquipDataTemplate; import net.vtstar.scada.base.equipmgt.domain.EquipDataTemplate;
...@@ -63,7 +65,15 @@ public class ModbusTest { ...@@ -63,7 +65,15 @@ public class ModbusTest {
System.out.println("___" + b); System.out.println("___" + b);
// byte[] array = body.array(); // byte[] array = body.array();
} }
@Test
public void testMoodbus() throws Exception {
PoolKey poolKey = new PoolKey("localhost", 504);
ReadInputDiscretesRequest request = new ReadInputDiscretesRequest(41, 4807, 1);
ReadInputDiscretesResponse response = modbusTemplate.execute(poolKey, request, ReadInputDiscretesResponse.class);
ByteBuf body = response.getBody();
byte b = body.readByte();
System.out.println("___" + b);
}
private static final String SUFFIX_2003 = ".xls"; private static final String SUFFIX_2003 = ".xls";
private static final String SUFFIX_2007 = ".xlsx"; private static final String SUFFIX_2007 = ".xlsx";
......
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