acs测试提交

This commit is contained in:
18188916393
2022-08-04 15:58:04 +08:00
parent ad5da5aeff
commit e64259eb9f
10 changed files with 190 additions and 14 deletions

View File

@@ -0,0 +1,54 @@
package org.nl.wms.common;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import org.nl.exception.BadRequestException;
import org.nl.wql.core.bean.WQLObject;
import java.util.Queue;
import java.util.concurrent.ArrayBlockingQueue;
public class KilnUtil {
static Queue<String> KilnQueue = new ArrayBlockingQueue<>(10);
//入窑扫码
public static void inKiln(String vehicle_code) {
KilnQueue.offer(vehicle_code);
//插入窑设备记录表
WQLObject recordTable = WQLObject.getWQLObject("pdm_bi_kilnrecord");
WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup");
JSONObject groupObj = groupTable.query("vehicle_code ='" + vehicle_code + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(groupObj)) {
throw new BadRequestException("未找到组盘信息,不能入窑!");
}
JSONObject jo = new JSONObject();
jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId());
jo.put("vehicle_code", vehicle_code);
jo.put("material_id", groupObj.getString("material_id"));
jo.put("material_code", groupObj.getString("material_code"));
jo.put("material_name", groupObj.getString("material_name"));
jo.put("material_spec", groupObj.getString("material_spec"));
jo.put("qty", groupObj.getString("qty"));
jo.put("in_time", DateUtil.now());
jo.put("out_time", "");
jo.put("is_success", "0");
jo.put("is_delete", "0");
recordTable.insert(jo);
}
//出窑扫码
public static void outKiln(String vehicle_code) {
KilnQueue.offer(vehicle_code);
//更新窑设备记录表
WQLObject recordTable = WQLObject.getWQLObject("pdm_bi_kilnrecord");
JSONObject vehicleObj = recordTable.query("vehicle_code='" + vehicle_code + " and out_time ='''").uniqueResult(0);
if (ObjectUtil.isEmpty(vehicleObj)) {
throw new BadRequestException("未找到信息");
}
vehicleObj.put("out_time", DateUtil.now());
recordTable.update(vehicleObj);
}
}

View File

@@ -51,6 +51,13 @@ public class AcsToWmsController {
acsToWmsService.group(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/inKiln")
@Log("入窑扫码器")
@ApiOperation("入窑扫码器")
public ResponseEntity<Object> inKiln(@RequestBody Map whereJson) {
acsToWmsService.inKiln(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/ispackage")
@Log("ACS给WMS请求是否自动码垛")
@@ -96,4 +103,10 @@ public class AcsToWmsController {
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/status")
@Log("ACS给WMS反馈任务状态")
@ApiOperation("ACS给WMS反馈任务状态")
public ResponseEntity<Object> receiveTaskStatusAcs(@RequestBody String string) {
return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(string), HttpStatus.OK);
}
}

View File

@@ -31,7 +31,14 @@ public interface AcsToWmsService {
*/
void group(Map jsonObject);
/**
* 入窑扫码器
*
* @param jsonObject 条件
* @return Map<String, Object>
*/
Map<String, Object> inKiln(Map jsonObject);
/**
* ACS给WMS请求是否优先包装
@@ -75,5 +82,14 @@ public interface AcsToWmsService {
void sureProduceTask(Map jsonObject);
void updateVehicleType(Map jsonObject);
/**
* ACS客户端--->WMS服务端
* ACS向WMS反馈任务状态
*
* @param jsonObject 条件
* @return Map<String, Object>
*/
Map<String, Object> receiveTaskStatusAcs(String string);
}

View File

@@ -9,21 +9,29 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.K;
import org.nl.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
import org.nl.utils.SecurityUtils;
import org.nl.wms.WorkProcedureEnum;
import org.nl.wms.common.KilnUtil;
import org.nl.wms.common.PointUpdateUtil;
import org.nl.wms.common.StructFindUtil;
import org.nl.wms.database.service.dto.VehicleDto;
import org.nl.wms.ext.acs.service.AcsToWmsService;
import org.nl.wms.sch.manage.AreaEnum;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.manage.buss.*;
import org.nl.wms.sch.service.TaskService;
import org.nl.wms.sch.service.dto.TaskDto;
import org.nl.wql.WQL;
import org.nl.wql.core.bean.WQLObject;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Map;
@Service
@@ -37,6 +45,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
private final RgvTask rgvTask;
private final WmsToAcsServiceImpl wmsToAcsServiceImpl;
private final ToConveyorTask toConveyorTask;
private final TaskService taskService;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -160,7 +170,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
if (ObjectUtil.isEmpty(produceInfoByCode)) {
throw new BadRequestException("未找到点位为'" + device_code + "'对应机械手的生产工单!");
}
jsonObject.put("vehicle_type",produceInfoByCode.getString("vehicle_type"));
jsonObject.put("vehicle_type", produceInfoByCode.getString("vehicle_type"));
callEmptyVehicleTask.createTask((JSONObject) JSON.toJSON(jsonObject));
break;
@@ -340,6 +350,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
}
}
@Override
public Map<String, Object> inKiln(Map jsonObject) {
String vehicle_code = String.valueOf(jsonObject.get("vehicle_code"));
KilnUtil.inKiln(vehicle_code);
return new JSONObject();
}
@Override
@Transactional(rollbackFor = Exception.class)
public Map<String, Object> ispackage(Map jsonObject) {
@@ -355,7 +372,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
JSONObject groupObj = groupTable.query("vehicle_code ='" + vehicle_code + "'").uniqueResult(0);
groupTable.query("vehicle_code ='" + vehicle_code + "'").uniqueResult(0);
JSONObject returnjo = new JSONObject();
returnjo.put("is_autopackage", groupObj.getString("is_autopackage"));
returnjo.put("code", groupObj.getString("is_autopackage"));
//更新窑的信息
KilnUtil.outKiln(vehicle_code);
return returnjo;
}
@@ -424,8 +443,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
String producetask_code = (String) jsonObject.get("producetask_code");
String device_code = (String) jsonObject.get("device_code");
String material_code = (String) jsonObject.get("material_code");
String qty = (String) jsonObject.get("qty");
String weight = (String) jsonObject.get("weight");
String qty = String.valueOf(jsonObject.get("qty"));
String type = (String) jsonObject.get("type");
if (StrUtil.isEmpty(type)) {
throw new BadRequestException("类型不能为空!");
@@ -459,14 +477,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
if (!StrUtil.equals(materiObj.getString("material_id"), taskObj.getString("material_id"))) {
throw new BadRequestException("物料标识不一样!");
}
taskObj.put("producetask_status", "03");
taskObj.put("producetask_status", "04");
}
if (StrUtil.equals("2", type)) {
taskObj.put("producetask_status", "04");
}
if (StrUtil.equals("3", type)) {
taskObj.put("producetask_status", "05");
taskObj.put("real_qty",qty);
}
taskTable.update(taskObj);
}
@@ -494,6 +510,72 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
}
@Override
public Map<String, Object> receiveTaskStatusAcs(String string) {
{
JSONArray array = JSONArray.parseArray(string);
//返回处理失败的任务
JSONArray errArr = new JSONArray();
for (int i = 0; i < array.size(); i++) {
JSONObject row = array.getJSONObject(i);
String task_id = row.getString("ext_task_uuid");
row.put("task_id",task_id);
TaskDto taskDto = taskService.findById(task_id);
String processing_class = taskDto.getHandle_class();
//1:执行中,2:完成 ,3:acs取消
String acs_task_status = row.getString("task_status");
String message = "";
String status = "";
if ("1".equals(acs_task_status)) {
status = TaskStatusEnum.EXECUTING.getCode();
}
if ("2".equals(acs_task_status)) {
status = TaskStatusEnum.FINISHED.getCode();
}
// 任务处理类
try {
Class<?> clz = Class.forName(processing_class);
Object obj = clz.newInstance();
// 调用每个任务类的forceFinishInst()强制结束方法
Method m = obj.getClass().getDeclaredMethod("updateTaskStatus", JSONObject.class, String.class);
m.invoke(obj, row, status);
} catch (InvocationTargetException e) {
e.printStackTrace();
//空指针
if (ObjectUtil.isNull(e.getTargetException().getMessage())) {
message = e.getTargetException().toString();
} else {
message = e.getTargetException().getMessage();
}
log.info("任务状态更新失败:{}", message);
JSONObject json = new JSONObject();
json.put("task_id", task_id);
json.put("message", message);
errArr.add(json);
} catch (Exception e) {
e.printStackTrace();
message = e.getMessage();
log.info("任务状态更新失败:{}", message);
JSONObject json = new JSONObject();
json.put("task_id", task_id);
json.put("message", message);
errArr.add(json);
}
}
JSONObject result = new JSONObject();
result.put("status", HttpStatus.OK.value());
result.put("message", "任务状态反馈成功!");
result.put("data", new JSONObject());
result.put("errArr", errArr);
return result;
}
}
private JSONObject getProduceInfoByCode(String code) {
//根据 设备点位去找生产任务信息
//1 根据点位去找设备,去找对应的设备信息

View File

@@ -48,7 +48,7 @@ public abstract class AbstractAcsTask {
for (int i = 0, j = tasks.size(); i < j; i++) {
JSONObject json = tasks.getJSONObject(i);
AcsTaskDto taskDto = new AcsTaskDto();
taskDto.setTask_id(json.getString("task_id"));
taskDto.setExt_task_uuid(json.getString("task_id"));
taskDto.setTask_code(json.getString("task_code"));
taskDto.setTask_type("1");
taskDto.setRoute_plan_code("normal");
@@ -114,7 +114,7 @@ public abstract class AbstractAcsTask {
for (int i = 0, j = arr.size(); i < j; i++) {
JSONObject json = arr.getJSONObject(i);
AcsTaskDto taskDto = new AcsTaskDto();
taskDto.setTask_id(json.getString("task_id"));
taskDto.setExt_task_uuid(json.getString("task_id"));
taskDto.setTask_code(json.getString("task_code"));
taskDto.setTask_type("1");
taskDto.setRoute_plan_code("normal");

View File

@@ -5,7 +5,7 @@ import lombok.Data;
@Data
public class AcsTaskDto {
//任务标识
private String task_id;
private String ext_task_uuid;
//任务编码
private String task_code;
//任务类型

View File

@@ -90,7 +90,7 @@ public class AutoCreateTask {
if ("200".equals(status)) {
taskList.forEach(item -> {
JSONObject taskObj = new JSONObject();
taskObj.put("task_id", item.getTask_id());
taskObj.put("task_id", item.getExt_task_uuid());
taskObj.put("task_status", TaskStatusEnum.ISSUE.getCode());
taskObj.put("remark", "下发成功");
taskObj.put("update_time", DateUtil.now());
@@ -99,7 +99,7 @@ public class AutoCreateTask {
} else {//下发失败
taskList.forEach(item -> {
JSONObject taskObj = new JSONObject();
taskObj.put("task_id", item.getTask_id());
taskObj.put("task_id", item.getExt_task_uuid());
taskObj.put("task_status", TaskStatusEnum.ISSUE.getCode());
taskObj.put("remark", "下发失败:" + message);
taskObj.put("update_time", DateUtil.now());

View File

@@ -13,6 +13,8 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Queue;
import java.util.concurrent.ArrayBlockingQueue;
public class Test3 extends BaseTest {
@org.junit.Test
@@ -424,6 +426,15 @@ public class Test3 extends BaseTest {
ruleTable.insert(joObj);
}
}
public static void main(String[] args) {
Queue<String> ma = new ArrayBlockingQueue<>(10);
for (int i = 0; i <9 ; i++) {
ma.offer("pla00"+i);
}
ma.poll();
for (String str:ma){
System.out.println(str);
}
}
}