bug修改,日志文件配置
This commit is contained in:
@@ -24,6 +24,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.groups.Default;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -79,6 +80,8 @@ public class EnergyController extends BaseController {
|
||||
private KilnInfoServiceBiz kilnInfoServiceBiz;
|
||||
@Autowired
|
||||
private CurrTaskServiceBiz currTaskServiceBiz;
|
||||
@Autowired
|
||||
private TaskHisServiceBiz taskHisServiceBiz;
|
||||
|
||||
@PostMapping(value = "eletric")
|
||||
@ApiOperation(value = "根据窑炉id获取消耗情况")
|
||||
@@ -215,8 +218,7 @@ public class EnergyController extends BaseController {
|
||||
@PostMapping(value = "energyList")
|
||||
@ApiOperation(value = "根据加工炉id获取能源消耗情况")
|
||||
public R<String> energyList(@Validated({Default.class}) @RequestBody ElectricQueryParam electricQueryParam){
|
||||
electricQueryParam.getTaskId();
|
||||
CurrTask currTask = currTaskServiceBiz.getById(electricQueryParam.getTaskId());
|
||||
TaskHis currTask = taskHisServiceBiz.getById(electricQueryParam.getTaskId());
|
||||
Long kilnId = currTask.getKilnId();
|
||||
KilnInfo kilnInfo = kilnInfoServiceBiz.getById(kilnId);
|
||||
Integer kilnType = kilnInfo.getType();
|
||||
@@ -224,25 +226,33 @@ public class EnergyController extends BaseController {
|
||||
JSONObject jsonObject=new JSONObject();
|
||||
ConsumeDataVo consumeDataVo=ConsumeDataVo.builder().build();
|
||||
|
||||
Map map=new HashMap();
|
||||
Map<String,Object> map=new HashMap<>();
|
||||
//电能消耗
|
||||
List<ParEleValue> parEleValueList = parEleValueServiceBiz.list(new QueryWrapper<ParEleValue>()
|
||||
.eq(ParEleValue.KILN_ID, kilnId)
|
||||
.eq(ParEleValue.TASK_ID, electricQueryParam.getTaskId()));
|
||||
if (parEleValueList.size()>0){
|
||||
List eleList=new ArrayList();
|
||||
List<Object> eleList=new ArrayList<>();
|
||||
//电能消耗
|
||||
List eleConsume=new ArrayList<>();
|
||||
List<Object> eleConsume=new ArrayList<>();
|
||||
//A向电压
|
||||
List aVolConsume=new ArrayList<>();
|
||||
List<Object> aVolConsume=new ArrayList<>();
|
||||
//B向电压
|
||||
List bVolConsume=new ArrayList<>();
|
||||
List<Object> bVolConsume=new ArrayList<>();
|
||||
//C向电压
|
||||
List cVolConsume=new ArrayList<>();
|
||||
List<Object> cVolConsume=new ArrayList<>();
|
||||
Float talBat=0F;
|
||||
int i=0;
|
||||
for (ParEleValue parEleValue:parEleValueList
|
||||
) {
|
||||
//首位置为0
|
||||
if (i==0){
|
||||
talBat=parEleValue.getTotalBat();
|
||||
}
|
||||
|
||||
i++;
|
||||
map.put("time",parEleValue.getCreateTime());
|
||||
map.put("value",parEleValue.getTotalBat());
|
||||
map.put("value",floatSubtract(parEleValue.getTotalBat(),talBat));
|
||||
map.put("name","耗电量");
|
||||
map.put("unit","KW");
|
||||
eleConsume.add(JSONObject.toJSON(map));
|
||||
@@ -278,37 +288,50 @@ public class EnergyController extends BaseController {
|
||||
.eq(ParEleValue.TASK_ID, electricQueryParam.getTaskId()));
|
||||
if (parGasValueList.size()>0){
|
||||
if (kilnType==1){
|
||||
List gasList=new ArrayList();
|
||||
List<Object> gasList=new ArrayList<>();
|
||||
//氮气
|
||||
List nitConsume=new ArrayList<>();
|
||||
List<Object> nitConsume=new ArrayList<>();
|
||||
Float nit=0F;
|
||||
//甲醇
|
||||
List metConsume=new ArrayList<>();
|
||||
List<Object> metConsume=new ArrayList<>();
|
||||
Float met=0F;
|
||||
//丙烷
|
||||
List propaneConsume=new ArrayList<>();
|
||||
List<Object> propaneConsume=new ArrayList<>();
|
||||
Float propane=0F;
|
||||
//氨气
|
||||
List ammoniaConsume=new ArrayList<>();
|
||||
List<Object> ammoniaConsume=new ArrayList<>();
|
||||
Float ammonia=0F;
|
||||
int i=0;
|
||||
for (ParGasValue parGasValue:parGasValueList
|
||||
) {
|
||||
//累计值的量首位置为0
|
||||
if (i==0){
|
||||
nit=parGasValue.getNitFlowValue();
|
||||
met=parGasValue.getMethanolFlow();
|
||||
propane=parGasValue.getPropaneFlow();
|
||||
ammonia=parGasValue.getAmmoniaFlowValue();
|
||||
}
|
||||
i++;
|
||||
map.put("time",parGasValue.getCreateTime());
|
||||
map.put("value",parGasValue.getNitFlowValue());
|
||||
map.put("value",floatSubtract(parGasValue.getNitFlowValue(),nit));
|
||||
map.put("name","氮气");
|
||||
map.put("unit","m³");
|
||||
nitConsume.add(JSONObject.toJSON(map));
|
||||
map.clear();
|
||||
map.put("time",parGasValue.getCreateTime());
|
||||
map.put("value",parGasValue.getMethanolFlow());
|
||||
map.put("value",floatSubtract(parGasValue.getMethanolFlow(),met));
|
||||
map.put("name","甲醇");
|
||||
map.put("unit","m³");
|
||||
metConsume.add(JSONObject.toJSON(map));
|
||||
map.clear();
|
||||
map.put("time",parGasValue.getCreateTime());
|
||||
map.put("value",parGasValue.getPropaneFlow());
|
||||
map.put("value",floatSubtract(parGasValue.getPropaneFlow(),propane));
|
||||
map.put("name","丙烷");
|
||||
map.put("unit","m³");
|
||||
propaneConsume.add(JSONObject.toJSON(map));
|
||||
map.clear();
|
||||
map.put("time",parGasValue.getCreateTime());
|
||||
map.put("value",parGasValue.getAmmoniaFlowValue());
|
||||
map.put("value",floatSubtract(parGasValue.getAmmoniaFlowValue(),ammonia));
|
||||
map.put("name","氨气");
|
||||
map.put("unit","m³");
|
||||
ammoniaConsume.add(JSONObject.toJSON(map));
|
||||
@@ -321,29 +344,40 @@ public class EnergyController extends BaseController {
|
||||
jsonObject.put("gas",gasList);
|
||||
}
|
||||
if (kilnType==3){
|
||||
List gasList=new ArrayList();
|
||||
List<Object> gasList=new ArrayList<>();
|
||||
//氮气
|
||||
List nitConsume=new ArrayList<>();
|
||||
List<Object> nitConsume=new ArrayList<>();
|
||||
Float nit=0F;
|
||||
//二氧化碳
|
||||
List carbonConsume=new ArrayList<>();
|
||||
List<Object> carbonConsume=new ArrayList<>();
|
||||
Float carbon=0F;
|
||||
//氨气
|
||||
List ammoniaConsume=new ArrayList<>();
|
||||
List<Object> ammoniaConsume=new ArrayList<>();
|
||||
Float ammonia=0F;
|
||||
int i=0;
|
||||
for (ParGasValue parGasValue:parGasValueList
|
||||
) {
|
||||
//累计值的量首位置为0
|
||||
if (i==0){
|
||||
nit=parGasValue.getNitFlowValue();
|
||||
carbon=parGasValue.getCarDioxideFlowValue();
|
||||
ammonia=parGasValue.getAmmoniaFlowValue();
|
||||
}
|
||||
i++;
|
||||
map.put("time",parGasValue.getCreateTime());
|
||||
map.put("value",parGasValue.getNitFlowValue());
|
||||
map.put("value",floatSubtract(parGasValue.getNitFlowValue(),nit));
|
||||
map.put("name","氮气");
|
||||
map.put("unit","m³");
|
||||
nitConsume.add(JSONObject.toJSON(map));
|
||||
map.clear();
|
||||
map.put("time",parGasValue.getCreateTime());
|
||||
map.put("value",parGasValue.getCarDioxideFlowValue());
|
||||
map.put("value",floatSubtract(parGasValue.getCarDioxideFlowValue(),carbon));
|
||||
map.put("name","二氧化碳");
|
||||
map.put("unit","m³");
|
||||
carbonConsume.add(JSONObject.toJSON(map));
|
||||
map.clear();
|
||||
map.put("time",parGasValue.getCreateTime());
|
||||
map.put("value",parGasValue.getAmmoniaFlowValue());
|
||||
map.put("value",floatSubtract(parGasValue.getAmmoniaFlowValue(),ammonia));
|
||||
map.put("name","氨气");
|
||||
map.put("unit","m³");
|
||||
ammoniaConsume.add(JSONObject.toJSON(map));
|
||||
@@ -361,9 +395,9 @@ public class EnergyController extends BaseController {
|
||||
.eq(ParEleValue.TASK_ID, electricQueryParam.getTaskId()));
|
||||
if (parRotSpeedValueList.size()>0){
|
||||
if (kilnType==1){
|
||||
List rotList=new ArrayList();
|
||||
List rot1Consume=new ArrayList<>();
|
||||
List rot2Consume=new ArrayList<>();
|
||||
List<Object> rotList=new ArrayList<>();
|
||||
List<Object> rot1Consume=new ArrayList<>();
|
||||
List<Object> rot2Consume=new ArrayList<>();
|
||||
for (ParRotSpeedValue parRotSpeedValue:parRotSpeedValueList
|
||||
) {
|
||||
map.put("time",parRotSpeedValue.getCreateTime());
|
||||
@@ -390,11 +424,11 @@ public class EnergyController extends BaseController {
|
||||
.eq(ParEleValue.TASK_ID, electricQueryParam.getTaskId()));
|
||||
if (parTemValueList.size()>0){
|
||||
if (kilnType==1){
|
||||
List tempList=new ArrayList();
|
||||
List actualTempConsume=new ArrayList<>();
|
||||
List setupTempConsume=new ArrayList<>();
|
||||
List actualOilTempConsume=new ArrayList<>();
|
||||
List setupOilTempConsume=new ArrayList<>();
|
||||
List<Object> tempList=new ArrayList<>();
|
||||
List<Object> actualTempConsume=new ArrayList<>();
|
||||
List<Object> setupTempConsume=new ArrayList<>();
|
||||
List<Object> actualOilTempConsume=new ArrayList<>();
|
||||
List<Object> setupOilTempConsume=new ArrayList<>();
|
||||
for (ParTemValue parTemValue:parTemValueList
|
||||
) {
|
||||
map.put("time",parTemValue.getCreateTime());
|
||||
@@ -429,9 +463,9 @@ public class EnergyController extends BaseController {
|
||||
jsonObject.put("temp",tempList);
|
||||
}
|
||||
if (kilnType==2){
|
||||
List tempList=new ArrayList();
|
||||
List actualTempConsume=new ArrayList<>();
|
||||
List setupTempConsume=new ArrayList<>();
|
||||
List<Object> tempList=new ArrayList<>();
|
||||
List<Object> actualTempConsume=new ArrayList<>();
|
||||
List<Object> setupTempConsume=new ArrayList<>();
|
||||
for (ParTemValue parTemValue:parTemValueList
|
||||
) {
|
||||
map.put("time",parTemValue.getCreateTime());
|
||||
@@ -453,11 +487,11 @@ public class EnergyController extends BaseController {
|
||||
}
|
||||
if (kilnType==3){
|
||||
|
||||
List tempList=new ArrayList();
|
||||
List actualTempConsume=new ArrayList<>();
|
||||
List setupTempConsume=new ArrayList<>();
|
||||
List outerZone1TempConsume=new ArrayList<>();
|
||||
List outerZone2TempConsume=new ArrayList<>();
|
||||
List<Object> tempList=new ArrayList<>();
|
||||
List<Object> actualTempConsume=new ArrayList<>();
|
||||
List<Object> setupTempConsume=new ArrayList<>();
|
||||
List<Object> outerZone1TempConsume=new ArrayList<>();
|
||||
List<Object> outerZone2TempConsume=new ArrayList<>();
|
||||
for (ParTemValue parTemValue:parTemValueList
|
||||
) {
|
||||
map.put("time",parTemValue.getCreateTime());
|
||||
@@ -479,6 +513,7 @@ public class EnergyController extends BaseController {
|
||||
outerZone1TempConsume.add(JSONObject.toJSON(map));
|
||||
map.clear();
|
||||
map.put("time",parTemValue.getCreateTime());
|
||||
|
||||
map.put("value",parTemValue.getOuterZone2Temp());
|
||||
map.put("name","外二区温度");
|
||||
map.put("unit","℃");
|
||||
@@ -494,5 +529,10 @@ public class EnergyController extends BaseController {
|
||||
}
|
||||
return R.ok(jsonObject.toJSONString());
|
||||
}
|
||||
private Float floatSubtract(Float a,Float b){
|
||||
BigDecimal a1 = new BigDecimal(Float.toString(a));
|
||||
BigDecimal b1 = new BigDecimal(Float.toString(b));
|
||||
return a1.subtract(b1).floatValue();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ public class StockInfoServiceImpl extends BaseService implements StockInfoServic
|
||||
private OrderInfoServiceBiz orderInfoServiceBiz;
|
||||
@Override
|
||||
public R<List<CurrTaskDetVo>> get(IdParam idParam) {
|
||||
Long taskId = inStockInfoServiceBiz.getById(idParam).getTaskId();
|
||||
Long taskId = inStockInfoServiceBiz.getOne(new QueryWrapper<InStockInfo>().eq(InStockInfo.LOCATION_ID,idParam.getId())).getTaskId();
|
||||
List<CurrTaskDet> currTaskDetList = currTaskDetServiceBiz.list(new QueryWrapper<CurrTaskDet>().eq("curr_task_id", taskId));
|
||||
List<CurrTaskDetVo> currTaskDetVoList = com.mt.wms.core.utils.BeanUtils.copyList(currTaskDetList, CurrTaskDetVo.class);
|
||||
for (CurrTaskDetVo currTaskDetVo:currTaskDetVoList
|
||||
|
||||
@@ -109,7 +109,6 @@ public class AsynRunTaskService extends BaseService {
|
||||
runTask.setVehicleId(vehicleId);
|
||||
runTask.setStartPosition(currTask.getStartPosition());
|
||||
runTask.setEndPosition(currTask.getTargetPosition());
|
||||
setCommonField(runTask);
|
||||
runTask.setBeginTime(LocalDateTime.now());
|
||||
runTaskServiceBiz.save(runTask);
|
||||
//调用车辆填入起终点,得到车辆执行结果
|
||||
@@ -149,6 +148,7 @@ public class AsynRunTaskService extends BaseService {
|
||||
Location location = locationServiceBiz.getById(inStockInfo.getLocationId());
|
||||
Long currTaskId = inStockInfo.getTaskId();
|
||||
CurrTask currTask = currTaskServiceBiz.getById(currTaskId);
|
||||
VehicleInfo vehicle = vehicleInfoServiceBiz.getById(vehicleId);
|
||||
if (vehicleId==1){
|
||||
//获取RGV2当前位置
|
||||
Double rgv2CurrPosition = RGVCurrPosition(2);
|
||||
@@ -186,7 +186,6 @@ public class AsynRunTaskService extends BaseService {
|
||||
// 起点为库位
|
||||
runTask.setStartPosition(location.getCode());
|
||||
runTask.setEndPosition(currTask.getTargetPosition());
|
||||
setCommonField(runTask);
|
||||
runTask.setBeginTime(LocalDateTime.now());
|
||||
runTaskServiceBiz.save(runTask);
|
||||
//修改缓存区存储情况表状态
|
||||
@@ -216,6 +215,9 @@ public class AsynRunTaskService extends BaseService {
|
||||
currTask.setRunTaskId(runTask.getId());
|
||||
currTask.setUpdateTime(LocalDateTime.now());
|
||||
currTaskServiceBiz.updateById(currTask);
|
||||
//更新小车状态
|
||||
vehicle.setStatus(0);
|
||||
vehicleInfoServiceBiz.updateById(vehicle);
|
||||
}else {
|
||||
runTask.setStatus(3);
|
||||
runTask.setUpdateTime(LocalDateTime.now());
|
||||
@@ -264,7 +266,6 @@ public class AsynRunTaskService extends BaseService {
|
||||
}
|
||||
//新建一条执行任务的关系表存放任务执行信息,终点为缓存区空闲库位
|
||||
RunTask runTask=new RunTask();
|
||||
setCommonField(runTask);
|
||||
runTask.setTaskId(currTask.getId());
|
||||
runTask.setTaskCode(currTask.getTaskCode());
|
||||
runTask.setVehicleId(vehicleId);
|
||||
@@ -284,7 +285,7 @@ public class AsynRunTaskService extends BaseService {
|
||||
inStockInfo.setLocationId(location.getId());
|
||||
inStockInfo.setLocationName(location.getLocationNameAlias());
|
||||
inStockInfo.setType(1);
|
||||
setCommonField(inStockInfo);
|
||||
inStockInfo.setCreateTime(LocalDateTime.now());
|
||||
inStockInfoServiceBiz.save(inStockInfo);
|
||||
// 调用车辆填入起终点,得到车辆执行结果,填入任务号(待确认)
|
||||
Long startPoint = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, runTask.getStartPosition())).getCode();
|
||||
@@ -299,6 +300,7 @@ public class AsynRunTaskService extends BaseService {
|
||||
runTaskServiceBiz.updateById(runTask);
|
||||
//更新currTask表
|
||||
currTask.setCacheSatatus(2);
|
||||
currTask.setStatus(3);
|
||||
currTask.setUpdateTime(LocalDateTime.now());
|
||||
currTaskServiceBiz.updateById(currTask);
|
||||
//更新in_stock_info表
|
||||
@@ -355,7 +357,6 @@ public class AsynRunTaskService extends BaseService {
|
||||
}
|
||||
//新建一条执行任务的关系表存放任务执行信息,终点为缓存区空闲库位
|
||||
RunTask runTask=new RunTask();
|
||||
setCommonField(runTask);
|
||||
runTask.setTaskId(currTask.getId());
|
||||
runTask.setTaskCode(currTask.getTaskCode());
|
||||
runTask.setVehicleId(vehicleId);
|
||||
@@ -380,8 +381,7 @@ public class AsynRunTaskService extends BaseService {
|
||||
inStockInfo.setKilnName(currTask.getKilnName());
|
||||
inStockInfo.setLocationId(location.getId());
|
||||
inStockInfo.setLocationName(location.getLocationNameAlias());
|
||||
inStockInfo.setType(0);
|
||||
setCommonField(inStockInfo);
|
||||
inStockInfo.setCreateTime(LocalDateTime.now());
|
||||
inStockInfoServiceBiz.save(inStockInfo);
|
||||
// 2021/12/14 调用车辆填入起终点,得到车辆执行结果,填入任务号
|
||||
Long startPoint = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, runTask.getStartPosition())).getCode();
|
||||
@@ -426,7 +426,7 @@ public class AsynRunTaskService extends BaseService {
|
||||
//两辆小车是否冲突
|
||||
Boolean conflictBoolean = taskDistanceUtils.conflictForVehicle(vehicleId, location.getCode(), yeyaTaiCode, rgv2CurrPosition);
|
||||
if (conflictBoolean){
|
||||
Integer status = moveRgv(2, 1L, 39);
|
||||
Integer status = moveRgv(2, 1L, 1);
|
||||
if (status!=1){
|
||||
logger.info("===执行出库任务时车辆位置冲突,执行车辆位移任务,车辆"+vehicleId+"移动到点位39,执行失败===");
|
||||
// 2022/3/6 websocket通知页面
|
||||
@@ -441,7 +441,7 @@ public class AsynRunTaskService extends BaseService {
|
||||
//两辆小车是否冲突
|
||||
Boolean conflictBoolean = taskDistanceUtils.conflictForVehicle(vehicleId, location.getCode(), yeyaTaiCode, rgv1CurrPosition);
|
||||
if (conflictBoolean){
|
||||
Integer status = moveRgv(1, 1L, 1);
|
||||
Integer status = moveRgv(1, 1L, 12);
|
||||
if (status!=1){
|
||||
logger.info("===执行任务出库任务时车辆位置冲突,执行车辆位移任务,车辆"+vehicleId+"移动到点位1,执行失败===");
|
||||
// 2022/3/6 websocket通知页面
|
||||
@@ -452,7 +452,7 @@ public class AsynRunTaskService extends BaseService {
|
||||
}
|
||||
}
|
||||
RunTask runTask=new RunTask();
|
||||
setCommonField(runTask);
|
||||
// setCommonField(runTask);
|
||||
runTask.setVehicleId(vehicleId);
|
||||
runTask.setBeginTime(LocalDateTime.now());
|
||||
runTask.setStartPosition(location.getCode());
|
||||
@@ -470,7 +470,7 @@ public class AsynRunTaskService extends BaseService {
|
||||
Integer status = sendTaskToRgv(vehicleId, 0L, startPoint, endPoint, 0);
|
||||
if (status==1){
|
||||
logger.info("===执行任务出库任务,车辆搬运任务,车辆:"+vehicleId+" ,起点:"+startPoint+" ,终点:"+endPoint+"任务执行成功===");
|
||||
//更新关系表状态为完成
|
||||
//更新调度任务表状态为完成
|
||||
runTask.setUpdateTime(LocalDateTime.now());
|
||||
runTask.setStatus(2);
|
||||
runTask.setEndTime(LocalDateTime.now());
|
||||
@@ -487,13 +487,17 @@ public class AsynRunTaskService extends BaseService {
|
||||
//更新库位状态
|
||||
location.setStatus(0);
|
||||
locationServiceBiz.updateById(location);
|
||||
|
||||
//更新车辆状态
|
||||
VehicleInfo vehicleInfo = vehicleInfoServiceBiz.getById(vehicleId);
|
||||
vehicleInfo.setStatus(0);
|
||||
vehicleInfoServiceBiz.updateById(vehicleInfo);
|
||||
}else {
|
||||
runTask.setStatus(3);
|
||||
runTask.setUpdateTime(LocalDateTime.now());
|
||||
runTaskServiceBiz.updateById(runTask);
|
||||
logger.info("任务 "+runTask.getTaskCode()+" 车辆从缓存区到提升平台过程中失败。");
|
||||
logger.info("===执行任务出库任务,车辆搬运任务,车辆:"+vehicleId+" ,起点:"+startPoint+" ,终点:"+endPoint+"任务执行失败===");
|
||||
System.out.println("===执行任务出库任务,车辆搬运任务,车辆:"+vehicleId+" ,起点:"+startPoint+" ,终点:"+endPoint+"任务执行失败===");
|
||||
// 2021/12/14 websocket推送到前端
|
||||
webSocketServer.sendtoAll("出库任务车辆从缓存区到提升平台过程中失败。");
|
||||
}
|
||||
@@ -896,7 +900,7 @@ public class AsynRunTaskService extends BaseService {
|
||||
json.put("identifier",identifier);
|
||||
String result = null;
|
||||
try {
|
||||
result = HttpClient.httpPost("http://localhost:8009/opcua/read", JSON.toJSONString(json));
|
||||
result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.info("能源消耗统计:获取 "+identifier+" 的值失败");
|
||||
@@ -921,12 +925,13 @@ public class AsynRunTaskService extends BaseService {
|
||||
}
|
||||
String result = null;
|
||||
try {
|
||||
result = HttpClient.httpPost("http://localhost:8009/opcua/read", JSON.toJSONString(json));
|
||||
result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.info("获取RGV1的当前位置失败");
|
||||
}
|
||||
return Double.valueOf(JSONObject.parseObject(result).get("result").toString());
|
||||
Double value = Double.valueOf(JSONObject.parseObject(result).get("result").toString());
|
||||
return value*0.0001;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -942,16 +947,21 @@ public class AsynRunTaskService extends BaseService {
|
||||
Map<String, Integer> json = new HashMap();
|
||||
//type=1为 入
|
||||
// taskType 4 单移动
|
||||
|
||||
json.put("taskType", 4);
|
||||
json.put("sendRow", sendRow);
|
||||
json.put("pickRow",0);
|
||||
json.put("taskNo",1);
|
||||
json.put("ideNumber",1);
|
||||
json.put("processNumber",1);
|
||||
String taskJson = JSON.toJSONString(json);
|
||||
logger.info("===执行任务:"+currTaskId+" 时车辆位置冲突,即将执行车辆位移任务,车辆"+vehicleId+"移动到点位"+sendRow+"===");
|
||||
String result =null;
|
||||
try {
|
||||
if (vehicleId==1){
|
||||
result=HttpClient.httpPost("http://localhost:8009/rgv2/sendTask",taskJson);
|
||||
result=HttpClient.httpPost("http://192.168.6.51:8009/rgv1/sendTask",taskJson);
|
||||
}else {
|
||||
result=HttpClient.httpPost("http://localhost:8009/rgv1/sendTask",taskJson);
|
||||
result=HttpClient.httpPost("http://192.168.6.51:8009/rgv2/sendTask",taskJson);
|
||||
}
|
||||
|
||||
JSONObject jsonObject = JSON.parseObject(result);
|
||||
@@ -987,10 +997,10 @@ public class AsynRunTaskService extends BaseService {
|
||||
logger.info("===执行任务:"+currTaskId+" ,即将执行车辆搬运任务,车辆:"+vehicleId+" ,起点:"+startPoint+" ,终点:"+endPoint+"===");
|
||||
try {
|
||||
if (vehicleId==1){
|
||||
result = HttpClient.httpPost("http://localhost:8009/rgv1/sendTask", taskJson);
|
||||
result = HttpClient.httpPost("http://192.168.6.51:8009/rgv1/sendTask", taskJson);
|
||||
}
|
||||
if (vehicleId==2){
|
||||
result = HttpClient.httpPost("http://localhost:8009/rgv2/sendTask", taskJson);
|
||||
result = HttpClient.httpPost("http://192.168.6.51:8009/rgv2/sendTask", taskJson);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
|
||||
@@ -66,18 +66,23 @@ public class RunTaskUtils {
|
||||
//起点,起点和终点是液压台code、窑炉code、缓存区code
|
||||
String startPosition = currTask.getStartPosition();
|
||||
PointInfo startPoint = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, startPosition));
|
||||
// 可以根据点位类型判断起点是否为液压台
|
||||
// 可以根据点位类型判断起点是否为液压台(2是液压台)
|
||||
Integer startPointType = startPoint.getType();
|
||||
if (startPointType==3){
|
||||
if (startPointType==2){
|
||||
Map<String, Object> yeya = new HashMap();
|
||||
//type=1为 入
|
||||
yeya.put("type", 1);
|
||||
yeya.put("number", startPoint.getCode());
|
||||
if ("YYT003".equals(startPoint.getNote())){
|
||||
yeya.put("number", 2);
|
||||
}
|
||||
if ("YYT004".equals(startPoint.getNote())){
|
||||
yeya.put("number", 1);
|
||||
}
|
||||
String yeyaJudgeStatus = JSON.toJSONString(yeya);
|
||||
//判断起点液压台是否已放货且提升到位
|
||||
String yeyaStatus=null;
|
||||
try {
|
||||
yeyaStatus = HttpClient.httpPost("http://localhost:8009/yeya/isReadyForYeyaStatus", yeyaJudgeStatus);
|
||||
yeyaStatus = HttpClient.httpPost("http://192.168.6.51:8009/yeya/isReadyForYeyaStatus", yeyaJudgeStatus);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.error(new Date() + "WCS接口超时未响应!");
|
||||
@@ -108,6 +113,9 @@ public class RunTaskUtils {
|
||||
if (resultBoolean){
|
||||
//计算出路径最短的车辆id
|
||||
Long vehicleId = taskDistanceUtils.chooseVehicle(currTask.getStartPosition(), currTask.getTargetPosition());
|
||||
if (vehicleId==0){
|
||||
return R.failed("两辆车都不在线,请检查后重试!");
|
||||
}
|
||||
//占用车辆
|
||||
VehicleInfo vehicleInfo = vehicleInfoServiceBiz.getById(vehicleId);
|
||||
vehicleInfo.setStatus(1);
|
||||
@@ -130,7 +138,7 @@ public class RunTaskUtils {
|
||||
if (count >0) {
|
||||
//分配一个缓存区库位
|
||||
Location location = locationServiceBiz.list(new QueryWrapper<Location>()
|
||||
.eq(Location.STATUS, 1)
|
||||
.eq(Location.STATUS, 0)
|
||||
.eq(Location.VALID, 1)).get(0);
|
||||
//更新 location 表对应库位状态为占用
|
||||
location.setStatus(1);
|
||||
@@ -140,6 +148,9 @@ public class RunTaskUtils {
|
||||
PointInfo pointInfo = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, location.getCode()));
|
||||
//计算出路径最短的车辆id,起点液压台,终点缓存区库位点
|
||||
Long vehicleId = taskDistanceUtils.chooseVehicle(currTask.getStartPosition(), location.getCode());
|
||||
if (vehicleId==0){
|
||||
return R.failed("两辆车都不在线,请检查后重试!");
|
||||
}
|
||||
//占用车辆
|
||||
VehicleInfo vehicleInfo = vehicleInfoServiceBiz.getById(vehicleId);
|
||||
vehicleInfo.setStatus(1);
|
||||
@@ -233,6 +244,9 @@ public class RunTaskUtils {
|
||||
//窑炉为起点,缓存区为终点
|
||||
Location location = locationList.get(0);
|
||||
Long vehicleId = taskDistanceUtils.chooseVehicle(kilnInfo.getCode(), location.getCode());
|
||||
if (vehicleId==0){
|
||||
return R.failed("两辆车都不在线,请检查后重试!");
|
||||
}
|
||||
//占用车辆
|
||||
VehicleInfo vehicleInfo = vehicleInfoServiceBiz.getById(vehicleId);
|
||||
vehicleInfo.setStatus(1);
|
||||
@@ -267,8 +281,17 @@ public class RunTaskUtils {
|
||||
//有小车在运行,提示当前有车辆在运行,请稍后
|
||||
return R.failed("当前轨道有RGV车辆在运动,请等待当前RGV车辆执行完毕再执行任务!");
|
||||
}
|
||||
Boolean platFormStatus = platFormStatus(yeyaTaiCode);
|
||||
if (!platFormStatus){
|
||||
// TODO: 2022/3/19 delete
|
||||
System.out.println("当前选定的液压台为在线或未提升到位,请检查后重试!");
|
||||
return R.failed("当前选定的液压台为在线或未提升到位,请检查后重试!");
|
||||
}
|
||||
//计算出路径最短的车辆id
|
||||
Long vehicleId = taskDistanceUtils.chooseVehicle(location.getCode(), yeyaTaiCode);
|
||||
if (vehicleId==0){
|
||||
return R.failed("两辆车都不在线,请检查后重试!");
|
||||
}
|
||||
//占用车辆
|
||||
VehicleInfo vehicleInfo = vehicleInfoServiceBiz.getById(vehicleId);
|
||||
vehicleInfo.setStatus(1);
|
||||
@@ -276,6 +299,8 @@ public class RunTaskUtils {
|
||||
vehicleInfoServiceBiz.updateById(vehicleInfo);
|
||||
//异步调用车辆
|
||||
asynRunTaskService.asynRunOutStock(locationId,yeyaTaiCode,vehicleInfo.getId());
|
||||
// TODO: 2022/3/19
|
||||
System.out.println("操作成功,任务已开始执行。");
|
||||
return R.ok("操作成功,任务已开始执行。");
|
||||
}
|
||||
|
||||
@@ -293,7 +318,7 @@ public class RunTaskUtils {
|
||||
json.put("identifier",identifier);
|
||||
String result = null;
|
||||
try {
|
||||
result = HttpClient.httpPost("http://localhost:8009/opcua/read", JSON.toJSONString(json));
|
||||
result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.info("readPLC: "+identifier+" 的值失败");
|
||||
@@ -301,4 +326,86 @@ public class RunTaskUtils {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断液压台是否准备好放货
|
||||
* @param platFormCode 液压台编码
|
||||
* @return 是/否
|
||||
*/
|
||||
private Boolean platFormStatus(String platFormCode){
|
||||
String identifier=null;
|
||||
if ("YYT001".equals(platFormCode)){
|
||||
identifier="S7-1200 station_2.Boutique.DB500_PLCToWCS.Platform4ToWCS.";
|
||||
Map<String, Object> json = new HashMap();
|
||||
json.put("nameSpace", 6);
|
||||
json.put("plcName", "plc1");
|
||||
json.put("identifier",identifier+"Online");
|
||||
String result = null;
|
||||
try {
|
||||
result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.info("获取液压台1当前是否在线失败");
|
||||
}
|
||||
Boolean aBoolean = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
|
||||
if (aBoolean){
|
||||
Map<String, Object> statusJson = new HashMap();
|
||||
json.put("nameSpace", 6);
|
||||
json.put("plcName", "plc1");
|
||||
json.put("identifier",identifier+"TaskState");
|
||||
String statusResult = null;
|
||||
try {
|
||||
statusResult = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(statusJson));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.info("获取液压台1当前状态失败");
|
||||
}
|
||||
Integer status = Integer.valueOf(JSONObject.parseObject(statusResult).get("result").toString());
|
||||
if (status==1){
|
||||
return true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if ("YYT002".equals(platFormCode)){
|
||||
identifier="S7-1200 station_2.Boutique.DB500_PLCToWCS.Platform3ToWCS.";
|
||||
Map<String, Object> json = new HashMap();
|
||||
json.put("nameSpace", 6);
|
||||
json.put("plcName", "plc1");
|
||||
json.put("identifier",identifier+"Online");
|
||||
String result = null;
|
||||
try {
|
||||
result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.info("获取液压台2当前是否在线失败");
|
||||
}
|
||||
Boolean aBoolean = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
|
||||
if (aBoolean){
|
||||
Map<String, Object> statusJson = new HashMap();
|
||||
statusJson.put("nameSpace", 6);
|
||||
statusJson.put("plcName", "plc1");
|
||||
statusJson.put("identifier",identifier+"TaskState");
|
||||
String statusResult = null;
|
||||
try {
|
||||
statusResult = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(statusJson));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.info("获取液压台2当前状态失败");
|
||||
}
|
||||
Integer status = Integer.valueOf(JSONObject.parseObject(statusResult).get("result").toString());
|
||||
if (status==1){
|
||||
return true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.IOException;
|
||||
@@ -28,6 +29,7 @@ import java.util.Map;
|
||||
* @Date: 2021/12/13 19:54
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Component
|
||||
public class ScheduledTask extends BaseService {
|
||||
|
||||
private final static Logger logger = LoggerFactory.getLogger(AsynRunTaskService.class);
|
||||
@@ -65,7 +67,6 @@ public class ScheduledTask extends BaseService {
|
||||
@Resource
|
||||
private WebSocketServer webSocketServer;
|
||||
|
||||
@Scheduled(fixedDelay = 5000)
|
||||
public void testWebsocket() throws IOException {
|
||||
webSocketServer.sendtoAll(LocalDateTime.now()+"测试");
|
||||
}
|
||||
@@ -73,7 +74,6 @@ public class ScheduledTask extends BaseService {
|
||||
/**
|
||||
* 查询加工完成的窑炉
|
||||
*/
|
||||
@Scheduled
|
||||
public void taskForStockToKiln() throws IOException {
|
||||
//两辆车是否都空闲,只有两辆车都空闲才被允许做任务
|
||||
List<VehicleInfo> vehicleInfoList = vehicleInfoServiceBiz.list(new QueryWrapper<VehicleInfo>().eq(VehicleInfo.STATUS, 0));
|
||||
@@ -105,23 +105,24 @@ public class ScheduledTask extends BaseService {
|
||||
}
|
||||
|
||||
|
||||
//查询出正在加工的窑炉,遍历,根据采集频率的不同,采集高频数据能源消耗。
|
||||
//查询出正在加工的窑炉,遍历,根据采集频率的不同,采集高频数据能源消耗。暂定30秒
|
||||
//@Scheduled(fixedDelay = 1000*30)
|
||||
public void getFastValue(){
|
||||
//加工炉列表
|
||||
List<KilnInfo> kilnInfoList = kilnInfoServiceBiz.list(new QueryWrapper<KilnInfo>().in(KilnInfo.TYPE,1,3));
|
||||
for (KilnInfo kilnInfo:kilnInfoList
|
||||
) {
|
||||
PlcNameSpace nameSpace = plcNameSpaceServiceBiz.getOne(new QueryWrapper<PlcNameSpace>()
|
||||
.eq(PlcNameSpace.EQ_TYPE, 1)
|
||||
.eq(PlcNameSpace.EQ_TYPE, 0)
|
||||
.eq(PlcNameSpace.EQ_ID, kilnInfo.getId())
|
||||
.eq(PlcNameSpace.TYPE,1));
|
||||
.eq(PlcNameSpace.TYPE,0));
|
||||
String nameSpaceNote = nameSpace.getName();
|
||||
String result = readPlcToString(nameSpaceNote, "Working");
|
||||
Boolean resultBoolean = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
|
||||
//该炉子在工作中
|
||||
if (resultBoolean){
|
||||
Long kilnId = kilnInfo.getId();
|
||||
String identificationNumber = readPlcToString(nameSpaceNote, "Identification number");
|
||||
String identificationNumber = readPlcToString(nameSpaceNote, "DischargeIdentNumber");
|
||||
Long currTaskId = Long.valueOf(JSONObject.parseObject(identificationNumber).get("result").toString());
|
||||
//加工炉
|
||||
if (kilnInfo.getType()==1){
|
||||
@@ -134,7 +135,7 @@ public class ScheduledTask extends BaseService {
|
||||
parRotSpeedValue.setOilStiSpeedAValue(oilStirringSpeed2.floatValue());
|
||||
parRotSpeedValue.setKilnId(kilnId);
|
||||
parRotSpeedValue.setTaskId(currTaskId);
|
||||
setCommonField(parRotSpeedValue);
|
||||
parRotSpeedValue.setCreateTime(LocalDateTime.now());
|
||||
parRotSpeedValueServiceBiz.save(parRotSpeedValue);
|
||||
//氮气
|
||||
Double nitrogenFlow = readPlc(nameSpaceNote, "NitrogenFlow");
|
||||
@@ -157,7 +158,7 @@ public class ScheduledTask extends BaseService {
|
||||
parGasValue.setSetNitPotValue(setupCarbon.floatValue());
|
||||
parGasValue.setKilnId(kilnId);
|
||||
parGasValue.setTaskId(currTaskId);
|
||||
setCommonField(parGasValue);
|
||||
parGasValue.setCreateTime(LocalDateTime.now());
|
||||
parGasValueServiceBiz.save(parGasValue);
|
||||
}
|
||||
//氮化炉
|
||||
@@ -175,7 +176,7 @@ public class ScheduledTask extends BaseService {
|
||||
//氮气量
|
||||
Double nitrogenFlow=readPlc(nameSpaceNote,"NitrogenFlow");
|
||||
//二氧化碳量
|
||||
Double carbonDioxideFlow = readPlc(nameSpaceNote, "CarbonDioxideFlow");
|
||||
Double carbonDioxideFlow = readPlc(nameSpaceNote, "CO2Flow");
|
||||
ParGasValue parGasValue3=new ParGasValue();
|
||||
parGasValue3.setNitFlowValue(nitrogenFlow.floatValue());
|
||||
parGasValue3.setAmmoniaFlowValue(ammoniaFlow.floatValue());
|
||||
@@ -185,27 +186,29 @@ public class ScheduledTask extends BaseService {
|
||||
parGasValue3.setDecompositionRate(decompositionRate.floatValue());
|
||||
parGasValue3.setKilnId(kilnId);
|
||||
parGasValue3.setTaskId(currTaskId);
|
||||
setCommonField(parGasValue3);
|
||||
parGasValue3.setCreateTime(LocalDateTime.now());
|
||||
parGasValueServiceBiz.save(parGasValue3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//查询出正在加工的窑炉,遍历,根据采集频率的不同,采集低频数据能源消耗。
|
||||
//查询出正在加工的窑炉,遍历,根据采集频率的不同,采集低频数据能源消耗。暂定3分钟一次
|
||||
//@Scheduled(fixedDelay = 1000*60*3)
|
||||
public void getSlowValue(){
|
||||
System.out.println("开始采集数据");
|
||||
List<KilnInfo> kilnInfoList = kilnInfoServiceBiz.list();
|
||||
for (KilnInfo kilnInfo:kilnInfoList
|
||||
) {
|
||||
PlcNameSpace nameSpace = plcNameSpaceServiceBiz.getOne(new QueryWrapper<PlcNameSpace>()
|
||||
.eq(PlcNameSpace.EQ_TYPE, 1)
|
||||
.eq(PlcNameSpace.EQ_TYPE, 0)
|
||||
.eq(PlcNameSpace.EQ_ID, kilnInfo.getId())
|
||||
.eq(PlcNameSpace.TYPE,1));
|
||||
.eq(PlcNameSpace.TYPE,0));
|
||||
String nameSpaceNote = nameSpace.getName();
|
||||
String result = readPlcToString(nameSpaceNote, "Working");
|
||||
Boolean resultBoolean = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
|
||||
if (resultBoolean){
|
||||
Long kilnId = kilnInfo.getId();
|
||||
String identificationNumber = readPlcToString(nameSpaceNote, "Identification number");
|
||||
String identificationNumber = readPlcToString(nameSpaceNote, "DischargeIdentNumber");
|
||||
Long currTaskId = Long.valueOf(JSONObject.parseObject(identificationNumber).get("result").toString());
|
||||
//加工炉
|
||||
if (kilnInfo.getType()==1){
|
||||
@@ -224,7 +227,7 @@ public class ScheduledTask extends BaseService {
|
||||
parTemValue.setOilTankActTemValue(actualOilTemp.floatValue());
|
||||
parTemValue.setKilnId(kilnId);
|
||||
parTemValue.setTaskId(currTaskId);
|
||||
setCommonField(parTemValue);
|
||||
parTemValue.setCreateTime(LocalDateTime.now());
|
||||
parTemValueServiceBiz.save(parTemValue);
|
||||
//电度值
|
||||
Double electricalValue = readPlc(nameSpaceNote,"ElectricalValue");
|
||||
@@ -239,7 +242,7 @@ public class ScheduledTask extends BaseService {
|
||||
parEleValue.setTotalBat(electricalValue.floatValue());
|
||||
parEleValue.setKilnId(kilnId);
|
||||
parEleValue.setTaskId(currTaskId);
|
||||
setCommonField(parEleValue);
|
||||
parEleValue.setCreateTime(LocalDateTime.now());
|
||||
parEleValueServiceBiz.save(parEleValue);
|
||||
}
|
||||
//回火炉
|
||||
@@ -253,14 +256,14 @@ public class ScheduledTask extends BaseService {
|
||||
parTemValue2.setActTemValue(actualTemp.floatValue());
|
||||
parTemValue2.setKilnId(kilnId);
|
||||
parTemValue2.setTaskId(currTaskId);
|
||||
setCommonField(parTemValue2);
|
||||
parTemValue2.setCreateTime(LocalDateTime.now());
|
||||
parTemValueServiceBiz.save(parTemValue2);
|
||||
//电度值
|
||||
Double electricalValue = readPlc(nameSpaceNote,"TotalElectricity");
|
||||
//A向电压
|
||||
Double phaseAVoltage = readPlc(nameSpaceNote,"PhaseAVoltage");
|
||||
Double phaseBVoltage = readPlc(nameSpaceNote, "PhaseBVoltage");
|
||||
Double phaseCVoltage = readPlc(nameSpaceNote, "PhaseCVoltage");
|
||||
Double phaseAVoltage = readPlc(nameSpaceNote,"AVoltage");
|
||||
Double phaseBVoltage = readPlc(nameSpaceNote, "BVoltage");
|
||||
Double phaseCVoltage = readPlc(nameSpaceNote, "CVoltage");
|
||||
ParEleValue parEleValue2=new ParEleValue();
|
||||
parEleValue2.setAVoltagevValue(phaseAVoltage.floatValue());
|
||||
parEleValue2.setAVoltagevValue(phaseBVoltage.floatValue());
|
||||
@@ -268,7 +271,7 @@ public class ScheduledTask extends BaseService {
|
||||
parEleValue2.setTotalBat(electricalValue.floatValue());
|
||||
parEleValue2.setKilnId(kilnId);
|
||||
parEleValue2.setTaskId(currTaskId);
|
||||
setCommonField(parEleValue2);
|
||||
parEleValue2.setCreateTime(LocalDateTime.now());
|
||||
parEleValueServiceBiz.save(parEleValue2);
|
||||
}
|
||||
//氮化炉
|
||||
@@ -291,7 +294,7 @@ public class ScheduledTask extends BaseService {
|
||||
parTemValue3.setFurnacePressure(furnacePressure.floatValue());
|
||||
parTemValue3.setKilnId(kilnId);
|
||||
parTemValue3.setTaskId(currTaskId);
|
||||
setCommonField(parTemValue3);
|
||||
parTemValue3.setCreateTime(LocalDateTime.now());
|
||||
parTemValueServiceBiz.save(parTemValue3);
|
||||
//电度值
|
||||
Double electricalValue = readPlc(nameSpaceNote,"ElectricalValue");
|
||||
@@ -306,7 +309,7 @@ public class ScheduledTask extends BaseService {
|
||||
parEleValue3.setTotalBat(electricalValue.floatValue());
|
||||
parEleValue3.setKilnId(kilnId);
|
||||
parEleValue3.setTaskId(currTaskId);
|
||||
setCommonField(parEleValue3);
|
||||
parEleValue3.setCreateTime(LocalDateTime.now());
|
||||
parEleValueServiceBiz.save(parEleValue3);
|
||||
}
|
||||
//清洗炉
|
||||
@@ -314,9 +317,9 @@ public class ScheduledTask extends BaseService {
|
||||
//电度值
|
||||
Double electricalValue = readPlc(nameSpaceNote,"TotalElectricity");
|
||||
//A向电压
|
||||
Double phaseAVoltage = readPlc(nameSpaceNote,"PhaseAVoltage");
|
||||
Double phaseBVoltage = readPlc(nameSpaceNote, "PhaseBVoltage");
|
||||
Double phaseCVoltage = readPlc(nameSpaceNote, "PhaseCVoltage");
|
||||
Double phaseAVoltage = readPlc(nameSpaceNote,"AVoltage");
|
||||
Double phaseBVoltage = readPlc(nameSpaceNote, "BVoltage");
|
||||
Double phaseCVoltage = readPlc(nameSpaceNote, "CVoltage");
|
||||
ParEleValue parEleValue4=new ParEleValue();
|
||||
parEleValue4.setAVoltagevValue(phaseAVoltage.floatValue());
|
||||
parEleValue4.setAVoltagevValue(phaseBVoltage.floatValue());
|
||||
@@ -324,42 +327,56 @@ public class ScheduledTask extends BaseService {
|
||||
parEleValue4.setTotalBat(electricalValue.floatValue());
|
||||
parEleValue4.setKilnId(kilnId);
|
||||
parEleValue4.setTaskId(currTaskId);
|
||||
setCommonField(parEleValue4);
|
||||
parEleValue4.setCreateTime(LocalDateTime.now());
|
||||
parEleValueServiceBiz.save(parEleValue4);
|
||||
}
|
||||
}
|
||||
}
|
||||
System.out.println("采集完成");
|
||||
}
|
||||
|
||||
//遍历窑炉,空窑炉查询缓存区是否有等待加工的任务,
|
||||
//待加工任务存在且没有状态为正在进炉的情况下,按照先进先出的规则选择待加工任务呼叫车辆进炉
|
||||
//@Scheduled(fixedDelay = 1000*10)
|
||||
public void runTaskForEmptyKiln() throws IOException {
|
||||
List<KilnInfo> kilnInfoList = kilnInfoServiceBiz.list(new QueryWrapper<KilnInfo>()
|
||||
.eq(KilnInfo.VALID, 1).eq(KilnInfo.STATUS, 0));
|
||||
// 呼叫车辆运送货物给炉子
|
||||
//存在空闲窑炉
|
||||
if (kilnInfoList.size()!=0){
|
||||
//缓存去是否有目标位置为窑炉的待加工任务
|
||||
KilnInfo kilnInfo = kilnInfoList.get(0);
|
||||
List<InStockInfo> inStockInfoList = inStockInfoServiceBiz.list(new QueryWrapper<InStockInfo>()
|
||||
.eq(InStockInfo.TYPE, 1)
|
||||
.eq(InStockInfo.KILN_ID, kilnInfo.getId())
|
||||
.orderByAsc(InStockInfo.IN_TIME));
|
||||
if (inStockInfoList.size()>0){
|
||||
InStockInfo inStockInfo = inStockInfoList.get(0);
|
||||
CurrTask currTask = currTaskServiceBiz.getById(inStockInfo.getTaskId());
|
||||
Location location = locationServiceBiz.getById(inStockInfo.getLocationId());
|
||||
//是否有小车在运行
|
||||
List<VehicleInfo> vehicleInfoList = vehicleInfoServiceBiz.list(new QueryWrapper<VehicleInfo>().eq(VehicleInfo.STATUS, 1));
|
||||
//两辆车同时空闲(其中一辆车在运行时,不能调度另一辆车,防止运行中路线冲突)
|
||||
if (vehicleInfoList.size()==0){
|
||||
//计算出路径最短的车辆id
|
||||
Long vehicleId = taskDistanceUtils.chooseVehicle(location.getCode(), kilnInfo.getCode());
|
||||
//占用车辆
|
||||
VehicleInfo vehicleInfo = vehicleInfoServiceBiz.getById(vehicleId);
|
||||
vehicleInfo.setStatus(1);
|
||||
vehicleInfo.setUpdateTime(LocalDateTime.now());
|
||||
vehicleInfoServiceBiz.updateById(vehicleInfo);
|
||||
asynRunTaskService.asynRunTaskForStockToKiln(inStockInfo.getId(),vehicleId);
|
||||
if (kilnInfoList.size()!=0) {
|
||||
for (KilnInfo kilnInfo:kilnInfoList
|
||||
) {
|
||||
//查询是否有车辆正在执行任务,如果有,等。(根据车辆是否正在运行可以避免出现前一个任务获取还没进去炉子,炉子状态依然为allowIn,从而继续发送任务的情况)
|
||||
List<VehicleInfo> vehicleInfos = vehicleInfoServiceBiz.list(new QueryWrapper<VehicleInfo>().eq(VehicleInfo.STATUS, 1));
|
||||
if (vehicleInfos.size()>0){
|
||||
return;
|
||||
}
|
||||
//查询炉子是否allowIn
|
||||
Boolean kilnAllowIn = kilnAllowIn(kilnInfo.getId());
|
||||
if (kilnAllowIn){
|
||||
//缓存去是否有目标位置为窑炉的待加工任务
|
||||
List<InStockInfo> inStockInfoList = inStockInfoServiceBiz.list(new QueryWrapper<InStockInfo>()
|
||||
.eq(InStockInfo.TYPE, 1)
|
||||
.eq(InStockInfo.KILN_ID, kilnInfo.getId())
|
||||
.orderByAsc(InStockInfo.IN_TIME));
|
||||
if (inStockInfoList.size() > 0) {
|
||||
InStockInfo inStockInfo = inStockInfoList.get(0);
|
||||
CurrTask currTask = currTaskServiceBiz.getById(inStockInfo.getTaskId());
|
||||
Location location = locationServiceBiz.getById(inStockInfo.getLocationId());
|
||||
//是否有小车在运行
|
||||
List<VehicleInfo> vehicleInfoList = vehicleInfoServiceBiz.list(new QueryWrapper<VehicleInfo>().eq(VehicleInfo.STATUS, 1));
|
||||
//两辆车同时空闲(其中一辆车在运行时,不能调度另一辆车,防止运行中路线冲突)
|
||||
if (vehicleInfoList.size() == 0) {
|
||||
//计算出路径最短的车辆id
|
||||
Long vehicleId = taskDistanceUtils.chooseVehicle(location.getCode(), kilnInfo.getCode());
|
||||
//占用车辆
|
||||
VehicleInfo vehicleInfo = vehicleInfoServiceBiz.getById(vehicleId);
|
||||
vehicleInfo.setStatus(1);
|
||||
vehicleInfo.setUpdateTime(LocalDateTime.now());
|
||||
vehicleInfoServiceBiz.updateById(vehicleInfo);
|
||||
asynRunTaskService.asynRunTaskForStockToKiln(inStockInfo.getId(), vehicleId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -446,11 +463,12 @@ public class ScheduledTask extends BaseService {
|
||||
json.put("identifier",identifier);
|
||||
String result = null;
|
||||
try {
|
||||
result = HttpClient.httpPost("http://localhost:8009/opcua/read", JSON.toJSONString(json));
|
||||
result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.info("readPLC: "+identifier+" 的值失败");
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
@@ -467,7 +485,7 @@ public class ScheduledTask extends BaseService {
|
||||
json.put("identifier",identifier);
|
||||
String result = null;
|
||||
try {
|
||||
result = HttpClient.httpPost("http://localhost:8009/opcua/read", JSON.toJSONString(json));
|
||||
result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.info("能源消耗统计:获取 "+identifier+" 的值失败");
|
||||
@@ -475,32 +493,14 @@ public class ScheduledTask extends BaseService {
|
||||
return Double.valueOf(JSONObject.parseObject(result).get("result").toString());
|
||||
}
|
||||
|
||||
private Boolean rgvOnline(Long vehicleId) throws IOException {
|
||||
VehicleInfo vehicleInfo = vehicleInfoServiceBiz.getById(vehicleId);
|
||||
// TODO: 2022/3/19 小车的命名空间
|
||||
String identifier=null;
|
||||
if (vehicleId==1){
|
||||
identifier="S7-1200 station_2.Boutique.DB500_PLCToWCS.Platform4ToWCS.";
|
||||
}
|
||||
if (vehicleId==2){
|
||||
identifier="S7-1200 station_2.Boutique.DB500_PLCToWCS.Platform4ToWCS.";
|
||||
}
|
||||
Map<String, Object> json = new HashMap();
|
||||
json.put("nameSpace", 6);
|
||||
json.put("plcName", "plc1");
|
||||
json.put("identifier",identifier+"Online");
|
||||
String result = null;
|
||||
try {
|
||||
result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.info("获取小车1当前是否在线失败");
|
||||
}
|
||||
Boolean aBoolean = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
|
||||
if (!aBoolean){
|
||||
webSocketServer.sendtoAll(vehicleInfo.getVehicleName()+"当前不在线,请人工确认车辆状态,如不能恢复未在线状态,请尽快手动移动车辆到轨道尽头,以避免车辆阻碍任务执行!");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
private Boolean kilnAllowIn(Long kilnId){
|
||||
PlcNameSpace nameSpace = plcNameSpaceServiceBiz.getOne(new QueryWrapper<PlcNameSpace>()
|
||||
.eq(PlcNameSpace.EQ_TYPE, 0)
|
||||
.eq(PlcNameSpace.EQ_ID, kilnId)
|
||||
.eq(PlcNameSpace.TYPE,0));
|
||||
String nameSpaceNote = nameSpace.getName();
|
||||
String result = readPlcToString(nameSpaceNote, "AllowIn");
|
||||
return Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.mt.wms.core.dal.entity.PointInfo;
|
||||
import com.mt.wms.core.dal.entity.VehicleInfo;
|
||||
import com.mt.wms.core.dal.service.PointInfoServiceBiz;
|
||||
import com.mt.wms.core.utils.HttpClient;
|
||||
import org.slf4j.Logger;
|
||||
@@ -35,15 +36,47 @@ public class TaskDistanceUtils {
|
||||
* @param endPoint 终点
|
||||
* @return 路径最短的小车id
|
||||
*/
|
||||
public Long chooseVehicle(String startPoint,String endPoint){
|
||||
Double startDistance = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.CODE, startPoint)).getDistance();
|
||||
public Long chooseVehicle(String startPoint,String endPoint) throws IOException {
|
||||
//车辆是否在线,若不在线,返回在线的那一辆,都不在线返回0
|
||||
if (!rgvOnline(1L)){
|
||||
|
||||
//液压台4 和 1号回火炉只能调用车辆1
|
||||
if ("BMC1".equals(startPoint)||"BMC1".equals(endPoint)||"YYT004".equals(startPoint)||"YYT004".equals(endPoint)){
|
||||
return 0L;
|
||||
}
|
||||
if (!rgvOnline(2L)){
|
||||
return 0L;
|
||||
}
|
||||
return 2L;
|
||||
}
|
||||
if (!rgvOnline(2L)){
|
||||
|
||||
//3-4号回火炉只能调用车辆2
|
||||
if ("BMC3".equals(startPoint)||"BMC3".equals(endPoint)||"BMC4".equals(startPoint)||"BMC4".equals(endPoint)){
|
||||
return 0L;
|
||||
}
|
||||
if (!rgvOnline(1L)){
|
||||
return 0L;
|
||||
}
|
||||
return 1L;
|
||||
}
|
||||
//3-4号回火炉只能调用车辆2
|
||||
if ("BMC3".equals(startPoint)||"BMC3".equals(endPoint)||"BMC4".equals(startPoint)||"BMC4".equals(endPoint)){
|
||||
return 2L;
|
||||
}
|
||||
//液压台4 和 1号回火炉只能调用车辆1
|
||||
if ("BMC1".equals(startPoint)||"BMC1".equals(endPoint)||"YYT004".equals(startPoint)||"YYT004".equals(endPoint)){
|
||||
return 1L;
|
||||
}
|
||||
Double startDistance = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, startPoint)).getDistance();
|
||||
// 2022/2/19 两辆小车都空闲,获取出当前位置
|
||||
Double rgv1CurrPosition = RGVCurrPosition(1L);
|
||||
Double rgv2CurrPosition = RGVCurrPosition(2L);
|
||||
//计算空闲小车当前位置到起点的距离
|
||||
Double vehicle1Distance = Math.abs(startDistance - rgv1CurrPosition);
|
||||
Double vehicle2Distance = Math.abs(startDistance - rgv2CurrPosition);
|
||||
return (vehicle1Distance< vehicle2Distance)?1L:2L;
|
||||
return (vehicle1Distance < vehicle2Distance) ? 1L : 2L;
|
||||
|
||||
}
|
||||
/**
|
||||
* 计算执行任务的小车本次任务的剩余路径经过的点位集合
|
||||
@@ -67,9 +100,12 @@ public class TaskDistanceUtils {
|
||||
}
|
||||
|
||||
//判断小车是否冲突,传入选定小车的id,任务起终点,另一小车位置。
|
||||
public Boolean conflictForVehicle(Long vehicleId,String startPoint,String endPoint,Double otherNowPosition){
|
||||
Double startDistance = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.CODE, startPoint)).getDistance();
|
||||
Double endDistance = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.CODE, endPoint)).getDistance();
|
||||
public Boolean conflictForVehicle(Long vehicleId,String startPoint,String endPoint,Double otherNowPosition) throws IOException {
|
||||
if (!rgvOnline(1L)||!rgvOnline(2L)){
|
||||
return false;
|
||||
}
|
||||
Double startDistance = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, startPoint)).getDistance();
|
||||
Double endDistance = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, endPoint)).getDistance();
|
||||
//获取点位list
|
||||
List<PointInfo> pointInfoList = pointInfoServiceBiz.list(new QueryWrapper<PointInfo>().orderByAsc(PointInfo.ID));
|
||||
// 2022/2/19 获取小车当前位置
|
||||
@@ -108,11 +144,41 @@ public class TaskDistanceUtils {
|
||||
}
|
||||
String result = null;
|
||||
try {
|
||||
result = HttpClient.httpPost("http://localhost:8009/opcua/read", JSON.toJSONString(json));
|
||||
result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.info("获取RGV的当前位置失败");
|
||||
}
|
||||
return Double.valueOf(JSONObject.parseObject(result).get("result").toString());
|
||||
Double value = Double.valueOf(JSONObject.parseObject(result).get("result").toString());
|
||||
return value*0.0001;
|
||||
}
|
||||
|
||||
/**
|
||||
* 车辆是否在线
|
||||
* @param vehicleId 车辆id
|
||||
* @return true/false
|
||||
* @throws IOException plc访问失败
|
||||
*/
|
||||
private Boolean rgvOnline(Long vehicleId) throws IOException {
|
||||
String identifier=null;
|
||||
if (vehicleId==1){
|
||||
identifier="S7-1200 station_2.Boutique.DB500_PLCToWCS.RGV1ToWCS.Online";
|
||||
}
|
||||
if (vehicleId==2){
|
||||
identifier="S7-1200 station_2.Boutique.DB500_PLCToWCS.RGV2ToWCS.Online";
|
||||
}
|
||||
Map<String, Object> json = new HashMap();
|
||||
json.put("nameSpace", 6);
|
||||
json.put("plcName", "plc1");
|
||||
json.put("identifier",identifier);
|
||||
String result = null;
|
||||
try {
|
||||
result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.info("获取车辆"+vehicleId+"当前是否在线失败");
|
||||
}
|
||||
Boolean online = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
|
||||
return online;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user