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

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

parent 492c84b8
......@@ -12,7 +12,6 @@ import net.vtstar.utils.DateUtils;
import net.vtstar.zhongtong.avi.access.domain.WheelAlignment;
import net.vtstar.zhongtong.avi.access.mapper.WheelAlignmentMapper;
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.SmbFileUtil;
import org.quartz.DisallowConcurrentExecution;
......@@ -26,6 +25,7 @@ import org.springframework.stereotype.Component;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
......@@ -39,6 +39,7 @@ import java.util.*;
@DisallowConcurrentExecution
public class WheelAlignmentJob extends QuartzJobBean {
private static SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, MMM dd, yyyy HH:mm aa", Locale.UK);
@Autowired
private WheelAlignmentMapper mapper;
......@@ -134,13 +135,13 @@ public class WheelAlignmentJob extends QuartzJobBean {
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);
for (Row row : table) {
WheelAlignment map = new WheelAlignment();
map.setWorkOrderID(row.getString("WorkOrderID"));
map.setStartDateTime(row.getString("StartDateTime"));
map.setEndDateTime(row.getString("EndDateTime"));
map.setStartDateTime(DateUtils.parseDateToString(dateFormat.parse(row.getString("StartDateTime")), "yyyy-MM-dd HH:mm:ss"));
map.setEndDateTime(DateUtils.parseDateToString(dateFormat.parse(row.getString("EndDateTime")), "yyyy-MM-dd HH:mm:ss"));
map.setMake(row.getString("Make"));
map.setModel(row.getString("Model"));
map.setVIN(row.getString("VIN"));
......
......@@ -24,7 +24,7 @@ public class EquipStatusRecord {
@Column(name = "equip_type")
private String equipType;
@ApiModelProperty(notes = "设备编号")
@ApiModelProperty(notes = "设备名称")
@Column(name = "equip_code")
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;
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.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;
......@@ -22,6 +22,7 @@ import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Slf4j
@Component
......@@ -58,14 +59,15 @@ public class CleanStatusDataJob extends QuartzJobBean {
if (CollectionUtils.isEmpty(dataList)) {
continue;
}
if (key.contains("DRYING_ROOM_TEMP")){
if (key.contains("DRYING_ROOM_TEMP")) {
//插入设备监控数据
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;
}
equipDataService.updateLastStatus(dataList.get(dataList.size() - 1));
......@@ -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;
import com.alibaba.excel.util.StringUtils;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.scada.base.equipmgt.service.EquipDataService;
import net.vtstar.user.mybatis.provider.Operation;
......@@ -15,8 +14,8 @@ import net.vtstar.zhongtong.avi.gateway.painting.domain.DryingRoomTempMachine;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Author: xiadongwei
......@@ -39,28 +38,38 @@ public class DryingRoomTempService {
* 查询温度状态列表
*/
public List<EquipStatusRecord> findPageEquip(Integer pageNum, Integer pageSize, String equipCode, Date beginTime) {
PageHelper.startPage(pageNum, pageSize);
if (null == beginTime){
beginTime = DateUtils.getStartOfDay(1);
}
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");
List<EquipStatusRecord> list = new ArrayList<>();
if (StringUtils.isEmpty(equipCode)){
return statusRecordMapper.findList(new WhereFilter(){{
list = statusRecordMapper.findList(new WhereFilter() {{
addFilter("equip_type", Operation.EQUAL, "DRYING_ROOM_TEMP");
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);
}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(){{
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);
return records;
}
......
......@@ -188,71 +188,70 @@ public class EquipmentService {
String path = "";
NtlmPasswordAuthentication auth = null;
switch (transferVO.getEquipCode()) {
case "076103-19":
case "071603-19":
ip = "10.1.4.120";
path = "smb://" + ip + " /数控下料/";
path = "smb://" + ip + "/数控下料/";
break;
case "076103-28":
case "071603-28":
//PING不通
ip = "10.1.25.114";
path = "smb://" + ip + " /数控下料/";
path = "smb://" + ip + "/数控下料/";
break;
case "076103-14":
case "071603-14":
ip = "10.1.4.107";
path = "smb://" + ip + " /数控下料/";
path = "smb://" + ip + "/数控下料/";
break;
case "076103-25":
case "071603-25":
ip = "10.1.4.129";
path = "smb://" + ip + " /数控下料/";
path = "smb://admin:123456@" + ip + "/数控下料/";
break;
//TODO: 网口不通
case "076103-13":
case "071603-13":
ip = "10.1.4.108";
path = "smb://" + ip + " /数控下料/";
path = "smb://" + ip + "/数控下料/";
break;
case "076103-17":
case "071603-17":
ip = "10.1.4.106";
path = "smb://" + ip + " /数控下料/";
path = "smb://" + ip + "/数控下料/";
break;
//三维激光切割机
case "076707-165":
case "076707-105":
ip = "10.1.25.175";
path = "smb://" + ip + "/NCPrg/";
break;
//激光切管机
case "076707-174":
//NCPrg, PA8000
ip = "10.1.25.176";
case "076707-146":
ip = "10.1.25.177";
path = "smb://" + ip + " /NCPrg/";
break;
//激光切管机
case "076707-166":
ip = "10.1.25.177";
ip = "10.1.25.176";
path = "smb://" + ip + "/NCProg/";
break;
//平板激光切割机
case "076707-114":
//NCPrg, PA8000
ip = "10.1.25.178";
path = "smb://" + ip + " /NCPrg/";
path = "smb://" + ip + "/NCPrg/";
break;
//平板激光切割机
case "076707-167":
ip = "10.1.25.179";
path = "smb://" + ip + " /NCPrg/";
break;
//平板激光切割机
case "076707-146":
ip = "10.1.25.180";
path = "smb://" + ip + "/NCPrg/";
break;
//平板激光切割机
case "076707-178":
ip = "10.1.25.181";
ip = "10.1.25.180";
path = "smb://" + ip + "/NcProg/";
break;
//平板激光切割机
case "076707-177":
ip = "10.1.25.182";
ip = "10.1.25.181";
path = "smb://" + ip + "/NCPrg/";
break;
}
// SmbFileUtil.smbPut("smb://10.1.4.107/数控下料/", transferVO.getFilePath());
return SmbFileUtil.smbPut(path, transferVO.getFilePath());
return SmbFileUtil.smbPut(path, transferVO.getFilePath(), auth);
}
public List<EquipInfo> findByShopCode(String workshopCode) {
......
......@@ -8,7 +8,7 @@ import net.vtstar.user.mybatis.provider.Operation;
import net.vtstar.user.mybatis.provider.OrderBy;
import net.vtstar.user.mybatis.provider.WhereFilter;
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.FaultRecord;
import net.vtstar.zhongtong.avi.equipment.domain.RuntimeRecord;
......@@ -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.FaultRecordMapper;
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.monitoring.domain.Warning;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Author: xiadongwei
......@@ -92,18 +89,16 @@ public class RunRecordService {
public List<FaultRecord> findPageFault(JSONObject pageFilter) {
PageHelper.startPage(pageFilter.getIntValue("pageNum"), pageFilter.getIntValue("pageSize"));
List<FaultRecord> list = faultRecordMapper.findList(searchService.pageFilter2Filter(pageFilter, new WhereFilter() {{
/*addJoin(PaintshopStation.class, "area_id", PaintshopArea.class, "id");
addJoin(PaintshopStation.class, "lane_id", PaintshopLane.class, "id");*/
addOrderBy("begin_time", OrderBy.DESC);
}}), FaultRecord.class);
list.forEach(faultRecord -> {
faultRecord.getEquipCode();
/* list.forEach(faultRecord -> {
List<EquipInfo> equipInfos = basicInfoMapper.findList(new WhereFilter() {{
addFilter("equip_code", Operation.EQUAL, faultRecord.getEquipCode());
}}, EquipInfo.class);
if (!CollecUtils.isEmpty(equipInfos)){
faultRecord.setEquipCode(equipInfos.get(0).getEquipCode());
}
});
});*/
return list;
}
......@@ -142,7 +137,31 @@ public class RunRecordService {
* @param 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");
}}, FaultRecord.class);
List<FaultRecord> records = new ArrayList<>();
......@@ -187,8 +206,8 @@ public class RunRecordService {
faultRecordMapper.update(faultRecord);
}else{
faultRecord.setBeginTime(new Date());
faultRecordMapper.update(faultRecord);
faultRecordMapper.insert(faultRecord);
}
}
}*/
}
}
......@@ -23,7 +23,6 @@ public class CentralizedFillingClutchMachineJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, CentralizedFillingClutchMachine.class);
}
......
......@@ -23,7 +23,6 @@ public class FloorLeatherHotMachineJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, FloorLeatherHotMachine.class);
}
......
......@@ -23,7 +23,6 @@ public class FocusAddingRefrigerantMachineJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, FocusAddingRefrigerantMachine.class);
}
......
......@@ -29,7 +29,6 @@ public class PlateChainStateMachineJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, PlateChainStateMachine.class);
}
......
......@@ -23,7 +23,6 @@ public class ChassisTorqueMachineJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, ChassisTorqueWrench.class);
}
......
......@@ -18,21 +18,26 @@ import java.util.Date;
@Table(name = "eqp_data_painting_robot")
public class PaintingRobotMachine extends EquipmentData {
@Show(label = "设备名称")
@Column(name = "eqp_code")
@ApiModelProperty(notes = "设备名称")
@Search
private String equipCode;
@Show(label = "系统是否运行")
@Column(name = "run_state")
@ApiModelProperty(notes = "系统是否运行")
private String runState;
private Integer runState;
@Show(label = "系统是否报警")
@Column(name = "error_state")
@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)
@ApiModelProperty("时间")
......
......@@ -21,7 +21,6 @@ public class DryingRoomTempMachineJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, DryingRoomTempMachine.class);
}
......
......@@ -23,7 +23,6 @@ public class ElectrophoresisRectificationMachineJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, ElectrophoresisRectificationMachine.class);
}
......
......@@ -23,7 +23,6 @@ public class PaintPretreatmentMachineJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, PaintingPretreatmentMachine.class);
}
......
......@@ -23,7 +23,6 @@ public class PaintingRobotMachineJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, PaintingRobotMachine.class);
}
......@@ -34,19 +33,26 @@ public class PaintingRobotMachineJob extends GatherJob {
if (state == null || "0".equals(state)) {
return false;
}
if("是".equals(data.getRunState())){
equipmentData.setEquipStatus(EquipStatusEnum.IDLE);
if(null != data.getRunState() && data.getRunState() == 1){
equipmentData.setEquipStatus(EquipStatusEnum.RUN);
}else{
}
if(null != data.getErrorState() && data.getErrorState() == 1){
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;
}
@Override
public Object handleValue(String fieldName, Object value) {
Integer valueInt = Integer.valueOf(value.toString());
return (valueInt & 0x01) == 1 ? "是" : "否";
return (valueInt & 0x01);
}
@Override
......
......@@ -23,7 +23,6 @@ public class PolishingRoomStateJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, PolishingRoomStateMachine.class);
}
......
......@@ -23,7 +23,6 @@ public class SprayBoothStateMachineJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, SprayBoothStateMachine.class);
}
......
......@@ -23,7 +23,6 @@ public class VocMachineJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, VocMachine.class);
}
......
......@@ -24,7 +24,6 @@ public class DustingLineMachineJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, DustingLineMachine.class);
}
......
......@@ -23,7 +23,6 @@ public class PretreamentMachineJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, PretreatmentMachine.class);
}
......
......@@ -23,7 +23,6 @@ public class SteelCncCuttingMachineJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, SteelCncCuttingMachine.class);
}
......
package net.vtstar.zhongtong.avi.gateway.parts.job;
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.gateway.parts.domain.SteelCncCuttingMachine;
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.data.redis.core.ValueOperations;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
......@@ -36,6 +42,9 @@ public class SteelCncCuttingMachineStateJob extends QuartzJobBean {
@Autowired
private EquipStatusRealTimeService realTimeService;
@Resource(name = "redisTemplate")
protected ValueOperations valueOperations;
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
List<String> ipAddressList = Arrays.asList(ipAddress1, ipAddress2, ipAddress3, ipAddress4);
......@@ -65,11 +74,25 @@ public class SteelCncCuttingMachineStateJob extends QuartzJobBean {
equipFactory = "制件车间05中间北侧";
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)) {
machine.setStateString("关机");
realTimeService.saveEquip("制件车间", equipCode, equipName, "关机");
machine.setEquipStatus(EquipStatusEnum.SHUTDOWN);
String key = EquipDataUtil.getLastStatusKey(machine.getEquipCode());
valueOperations.set(key, machine);
continue;
}
machine.setStateString("开机");
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;
@Table(name = "eqp_data_laser_cutting")
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
@Show(label = "切割速率",sortable = true)
@ApiModelProperty("切割速率")
......
package net.vtstar.zhongtong.avi.gateway.stamping.job;
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.gateway.stamping.domain.FlatLaserCuttingMachine;
import net.vtstar.zhongtong.avi.gateway.stamping.mapper.FlatLaserCuttingMapper;
......@@ -10,9 +12,12 @@ 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.data.redis.core.ListOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Date;
......@@ -29,7 +34,6 @@ public class FlatLaserCuttingMachineJob extends QuartzJobBean {
private String ipAddress2 = "10.1.25.179";
private String ipAddress3 = "10.1.25.180";
private String ipAddress4 = "10.1.25.181";
private String ipAddress5 = "10.1.25.182";
@Value("${zt.ip.pingtimes}")
private int pingTimes;
@Value("${zt.ip.timeout}")
......@@ -39,10 +43,14 @@ public class FlatLaserCuttingMachineJob extends QuartzJobBean {
private EquipStatusRealTimeService realTimeService;
@Autowired
private FlatLaserCuttingMapper mapper;
@Resource(name = "redisTemplate")
protected ValueOperations valueOperations;
@Resource(name = "redisTemplate")
protected ListOperations listOperations;
@Override
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) {
String equipCode = "";
String equipName = "";
......@@ -50,32 +58,41 @@ public class FlatLaserCuttingMachineJob extends QuartzJobBean {
switch (ipAddress) {
case "10.1.25.178":
equipCode = "076707-114";
equipName = "平板激光切割机";
equipFactory = "01跨西南";
equipName = "平板激光切割机01";
equipFactory = "01南门左侧";
break;
case "10.1.25.179":
equipCode = "076707-167";
equipName = "平板激光切割机";
equipFactory = "02跨西北";
equipName = "平板激光切割机02";
equipFactory = "02北门右侧";
break;
case "10.1.25.180":
equipCode = "076707-146";
equipName = "平板激光切割机";
equipFactory = "01跨西北";
break;
case "10.1.25.181":
equipCode = "076707-178";
equipName = "平板激光切割机";
equipFactory = "02跨西南";
equipName = "平板激光切割机03";
equipFactory = "03北门右侧";
break;
case "10.1.25.182":
case "10.1.25.181":
equipCode = "076707-177";
equipName = "平板激光切割机";
equipFactory = "02西西南";
equipName = "平板激光切割机04";
equipFactory = "03北门右侧";
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)) {
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;
}
realTimeService.saveEquip("制件车间", equipCode, equipName, "开机");
......@@ -89,16 +106,17 @@ public class FlatLaserCuttingMachineJob extends QuartzJobBean {
log.error("ip: {}能ping通, 但62944端口连接不上", ipAddress);
continue;
}
FlatLaserCuttingMachine machine = new FlatLaserCuttingMachine();
machine.setAlias(equipName);
machine.setEquipCode(equipCode);
machine.setCuttingSpeed(new BigDecimal(cuttingSpeed));
machine.setGasPressure(new BigDecimal(gasPressure));
machine.setLaserPower(new BigDecimal(laserPower));
machine.setCreateTime(new Date());
machine.setStatus("1");
machine.setEquipFactory(equipFactory);
machine.setEquipStatus(EquipStatusEnum.RUN);
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;
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.gateway.stamping.domain.LaserCutting3DMachine;
import net.vtstar.zhongtong.avi.gateway.stamping.mapper.LaserCutting3DMapper;
......@@ -10,9 +12,12 @@ 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.data.redis.core.ListOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Date;
......@@ -36,6 +41,11 @@ public class LaserCutting3DMachineJob extends QuartzJobBean {
@Autowired
private LaserCutting3DMapper laserCutting3DMapper;
@Resource(name = "redisTemplate")
protected ValueOperations valueOperations;
@Resource(name = "redisTemplate")
protected ListOperations listOperations;
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
List<String> ipAddressList = Arrays.asList(ipAddress1);
......@@ -45,13 +55,25 @@ public class LaserCutting3DMachineJob extends QuartzJobBean {
String equipFactory = "";
switch (ipAddress) {
case "10.1.25.175":
equipCode = "076707-165";
equipCode = "076707-105";
equipName = "三维激光切割机";
equipFactory = "01跨东南";
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)) {
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;
}
realTimeService.saveEquip("制件车间", equipCode, equipName, "开机");
......@@ -65,16 +87,16 @@ public class LaserCutting3DMachineJob extends QuartzJobBean {
log.error("ip: {}能ping通, 但62944端口连接不上", ipAddress);
continue;
}
LaserCutting3DMachine machine = new LaserCutting3DMachine();
machine.setAlias(equipName);
machine.setEquipCode(equipCode);
machine.setCuttingSpeed(new BigDecimal(cuttingSpeed));
machine.setGasPressure(new BigDecimal(gasPressure));
machine.setLaserPower(new BigDecimal(laserPower));
machine.setCreateTime(new Date());
machine.setStatus("1");
machine.setEquipFactory(equipFactory);
machine.setEquipStatus(EquipStatusEnum.RUN);
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;
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.gateway.stamping.domain.LaserCuttingMachine;
import net.vtstar.zhongtong.avi.gateway.stamping.mapper.LaserCuttingMapper;
......@@ -10,9 +12,12 @@ 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.data.redis.core.ListOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Date;
......@@ -25,8 +30,8 @@ import java.util.List;
@Component
public class LaserCuttingMachineJob extends QuartzJobBean {
private String ipAddress1 = "10.1.25.176";
private String ipAddress2 = "10.1.25.177";
private String ipAddress1 = "10.1.25.177";
private String ipAddress2 = "10.1.25.176";
@Value("${zt.ip.pingtimes}")
private int pingTimes;
@Value("${zt.ip.timeout}")
......@@ -36,6 +41,10 @@ public class LaserCuttingMachineJob extends QuartzJobBean {
private EquipStatusRealTimeService realTimeService;
@Autowired
private LaserCuttingMapper mapper;
@Resource(name = "redisTemplate")
protected ValueOperations valueOperations;
@Resource(name = "redisTemplate")
protected ListOperations listOperations;
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
......@@ -45,19 +54,31 @@ public class LaserCuttingMachineJob extends QuartzJobBean {
String equipName = "";
String equipFactory = "";
switch (ipAddress) {
case "10.1.25.176":
equipCode = "076707-174";
equipName = "激光切管机";
case "10.1.25.177":
equipCode = "076707-146";
equipName = "激光切管机01";
equipFactory = "03西北";
break;
case "10.1.25.177":
case "10.1.25.176":
equipCode = "076707-166";
equipName = "激光切管机";
equipName = "激光切管机02";
equipFactory = "03西南";
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)) {
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;
}
realTimeService.saveEquip("制件车间", equipCode, equipName, "开机");
......@@ -71,16 +92,15 @@ public class LaserCuttingMachineJob extends QuartzJobBean {
log.error("ip: {}能ping通, 但62944端口连接不上", ipAddress);
continue;
}
LaserCuttingMachine machine = new LaserCuttingMachine();
machine.setAlias(equipName);
machine.setEquipCode(equipCode);
machine.setCuttingSpeed(new BigDecimal(cuttingSpeed));
machine.setGasPressure(new BigDecimal(gasPressure));
machine.setLaserPower(new BigDecimal(laserPower));
machine.setCreateTime(new Date());
machine.setStatus("1");
machine.setEquipFactory(equipFactory);
machine.setEquipStatus(EquipStatusEnum.RUN);
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 {
}
public static String send(String ip, String data){
//TODO: 暂时不读P102的值
if ("P102".equals(data)){
return "0";
}
//连接服务端
OutputStreamWriter osw = null;
BufferedWriter bw = null;
......@@ -48,7 +52,7 @@ public class ClientSocketUtil {
StringBuilder sb = new StringBuilder();
sb.append(br.readLine());
String result = sb.toString();
log.error("大族激光读取结果:{}", result);
log.info("大族激光读取结果:{}", result);
if (result.contains("err")){
return "0";
}else{
......
......@@ -23,7 +23,6 @@ public class ChargingPileMachineJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, ChargingPileMachine.class);
}
......
......@@ -23,7 +23,6 @@ public class HydrogenStationVocMachineJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, HydrogenStationVocMachine.class);
}
......
......@@ -23,7 +23,6 @@ public class AutomaticSpotWeldingMachineJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, AutomaticSpotWeldingMachine.class);
}
......
......@@ -23,7 +23,6 @@ public class PlateChainMachineJob extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, WeldingPlateChainMachine.class);
}
......
......@@ -23,7 +23,6 @@ public class PlcControlTireMachine1Job extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, PlcControlTireMachine1.class);
}
......
......@@ -23,7 +23,6 @@ public class PlcControlTireMachine2Job extends GatherJob {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("JobName: {}", context.getJobDetail().getKey().getName());
super.gatherByModbus(NAME, PlcControlTireMachine2.class);
}
......
......@@ -13,12 +13,15 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
@Slf4j
@Api(description = "PDA相关操作模块")
@RestController
@RequestMapping("/PDA")
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
private PDAService pdaService;
......@@ -56,7 +59,6 @@ public class PDAController {
@PostMapping("/repair")
private Return repair(@RequestBody JSONObject json) {
log.info(json.toJSONString());
log.info(json.toJSONString());
String vehicleNo = json.getString("vehicleNo");
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 {
List<String> value = warningKey.getValue();
for (String s : value) {
Integer state = (Integer) valueOperations.get(s);
if (state == 1) {
if (null != state && 1 == state) {
String[] split = s.split(":");
String warningCode = split[2];
Warning warning = warningCache.get(warningCode, Warning.class);
......
......@@ -6,12 +6,9 @@ import net.vtstar.utils.CollecUtils;
import net.vtstar.zhongtong.avi.equipment.domain.PaintshopStation;
import net.vtstar.zhongtong.avi.global.constant.Constant;
import net.vtstar.zhongtong.avi.monitoring.domain.Skid;
import net.vtstar.zhongtong.avi.monitoring.domain.Vehicle;
import net.vtstar.zhongtong.avi.monitoring.domain.enums.StationState;
import 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.MesWorkOrderMapper;
import net.vtstar.zhongtong.avi.utils.EquipDataUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache;
......@@ -21,8 +18,10 @@ import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
@Service
public class PDAService {
......
......@@ -223,6 +223,9 @@ public class RfidMessageHandler extends AbstractTesterMessageHandler {
valueOperations.set(Constant.VEHICLE_PREFIX_REWORK, "");
valueOperations.set(Constant.VEHICLE_PREFIX_REWORK_BUSNO, "");
passInfoService.createPassInfo(skid.getWorkOrderNo(), skid.getBusNo(), skid.getRfid(), "返修上线", "");
//todo:将返修数据纳入涂装进车数量
String areaKey = Constant.BUS_SIZE_IN + "0:" + format;
saveRfidInfo(areaKey, messageBO);
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;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.user.mybatis.provider.Operation;
import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.utils.CollecUtils;
import net.vtstar.utils.DateUtils;
import net.vtstar.zhongtong.avi.sqlserver.domain.MesWorkOrderInfo;
import net.vtstar.zhongtong.avi.sqlserver.mapper.MesWorkOrderMapper;
......@@ -54,7 +53,7 @@ public class MesWorkOrderJob extends QuartzJobBean {
StringBuilder sql = new StringBuilder();
sql.append("SELECT SaleOrderNo, PreWONo, WONo, MaterialNo, ORDER_COUNT, UNIT, " +
"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) -> {
MesWorkOrderInfo map = new MesWorkOrderInfo();
map.setSalesOrderNo(rs.getString("SaleOrderNo"));
......@@ -80,15 +79,10 @@ public class MesWorkOrderJob extends QuartzJobBean {
log.error("连接mesSQL SERVER失败!");
return;
}
for (MesWorkOrderInfo info : query){
List<MesWorkOrderInfo> orderNo = mapper.findList(new WhereFilter() {{
addFilter("work_order_no", Operation.EQUAL, info.getWorkOrderNo());
addFilter("status", Operation.EQUAL, 4);
}}, MesWorkOrderInfo.class);
if (CollecUtils.isEmpty(orderNo)){
mapper.insert(info);
}
}
mapper.delByFilter(new WhereFilter(){{
addFilter("start_date", Operation.GREATER_THAN, dateString);
}}, MesWorkOrderInfo.class);
mapper.insertList(query);
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 {
//smb://xxx:xxx@192.168.2.188/testIndex/
//xxx:xxx是共享机器的用户名密码
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()) {
SmbFile[] files = file.listFiles();
for (SmbFile f : files) {
System.out.println(f.getName());
}
}
smbGet("smb://10.100.172.223/NCPrg/新建文本文档.txt", "D:/111111.txt");
smbPut("smb://10.100.172.223/NCPrg/", "D:/yield.xls");
// smbGet("smb://10.100.172.223/NCPrg/新建文本文档.txt", "D:/111111.txt");
smbPut("smb://10.100.172.223/NCPrg/", "D:/yield.xls", auth);
}
......@@ -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;
OutputStream out = null;
try {
File localFile = new File(localFilePath);
String fileName = localFile.getName();
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));
out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));
......@@ -91,7 +96,7 @@ public class SmbFileUtil {
buffer = new byte[1024];
}
} catch (Exception e) {
log.error("下发文件失败: {}", e.getMessage());
log.error("下发文件失败: {}", e.getMessage() + e.getLocalizedMessage());
e.printStackTrace();
return false;
} finally {
......
......@@ -38,7 +38,7 @@ spring.mes.sqlserver.password=wanteng@2019
server.port=8082
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.zhongtong.avi.equipment.mapper = 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
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].cronExpression=0 0/1 * * * ?
quartz.job.taskInfos[45].start=true
\ No newline at end of file
quartz.job.taskInfos[45].start=true
#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
server.port=8082
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.scada.base.equipmgt.mapper = error
logging.level.net.vtstar.zhongtong.avi.equipment.mapper = error
......
......@@ -22,11 +22,11 @@ zt.ip.assemblynewenergy3=10.1.25.130
zt.ip.assemblynewenergy4=10.1.25.131
#底盘车间--四轮定位A线
zt.ip.wheelalignment1=10.1.25.87
zt.ip.wheelalignment1=10.1.25.85
#底盘车间--四轮定位B线
zt.ip.wheelalignment2=10.1.25.86
#底盘车间--四轮定位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;
import java.util.Date;
@ActiveProfiles("xdw")
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class ApplicationTests {
......@@ -66,4 +65,14 @@ public class ApplicationTests {
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;
import lombok.extern.slf4j.Slf4j;
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.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.utils.PoolKey;
import net.vtstar.scada.base.equipmgt.domain.EquipDataTemplate;
......@@ -63,7 +65,15 @@ public class ModbusTest {
System.out.println("___" + b);
// 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_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