no message
parent
47589b2743
commit
009873c137
|
|
@ -43,9 +43,12 @@ public class InventoryQueryCriteria{
|
||||||
@Query(joinName = "itemKey>item>", propName="name",type = Query.Type.INNER_LIKE)
|
@Query(joinName = "itemKey>item>", propName="name",type = Query.Type.INNER_LIKE)
|
||||||
private String itemName;
|
private String itemName;
|
||||||
|
|
||||||
@Query(joinName = "itemKey>", propName="propC1",type = Query.Type.INNER_LIKE)
|
@Query(joinName = "itemKey", propName="propC1",type = Query.Type.INNER_LIKE)
|
||||||
private String propC1;
|
private String propC1;
|
||||||
|
|
||||||
|
@Query(joinName = "itemKey", propName="orderNumber",type = Query.Type.INNER_LIKE)
|
||||||
|
private String orderNumber;
|
||||||
|
|
||||||
@Query(joinName = "itemKey>item>", propName="code",type = Query.Type.IN)
|
@Query(joinName = "itemKey>item>", propName="code",type = Query.Type.IN)
|
||||||
private List<String> itemCode;
|
private List<String> itemCode;
|
||||||
|
|
||||||
|
|
@ -56,8 +59,8 @@ public class InventoryQueryCriteria{
|
||||||
@Query(type = Query.Type.NOT_EQUAL)
|
@Query(type = Query.Type.NOT_EQUAL)
|
||||||
private Double quantity;
|
private Double quantity;
|
||||||
|
|
||||||
@Query(joinName = "stock", propName="name",type = Query.Type.INNER_LIKE)
|
@Query(joinName = "stock", propName="code",type = Query.Type.INNER_LIKE)
|
||||||
private String stockName;
|
private String stockCode;
|
||||||
|
|
||||||
@Query(joinName = "point>area>", propName="name",type = Query.Type.INNER_LIKE)
|
@Query(joinName = "point>area>", propName="name",type = Query.Type.INNER_LIKE)
|
||||||
private String areaName;
|
private String areaName;
|
||||||
|
|
|
||||||
|
|
@ -468,85 +468,24 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
||||||
String agv_on_off = "OFF";
|
String agv_on_off = "OFF";
|
||||||
agv_on_off = dictService.getDictDescription("agv_on_off") == null ? "OFF" : dictService.getDictDescription("agv_on_off").getDescription();
|
agv_on_off = dictService.getDictDescription("agv_on_off") == null ? "OFF" : dictService.getDictDescription("agv_on_off").getDescription();
|
||||||
String code = "0";
|
String code = "0";
|
||||||
|
|
||||||
if (status.equals("ARRIVED")) {
|
if (status.equals("ARRIVED")) {
|
||||||
|
|
||||||
} else if (status.equals("UP_CONTAINER")) {
|
} else if (status.equals("UP_CONTAINER")) {
|
||||||
|
|
||||||
} else if (status.equals("COMPLETED")) {
|
} else if (status.equals("COMPLETED")) {
|
||||||
//任务完成;根据AGV任务的目标点位走对应流程
|
|
||||||
Point endPoint = pointService.findByCode(agvTask.getEndSlotCode(), null, null, null, null);
|
|
||||||
String endAreaName = endPoint.getArea().getName();
|
|
||||||
if (endPoint != null) {
|
|
||||||
Stock stock = stockRepository.getStockByCode(containerCode);
|
|
||||||
if (stock == null) {
|
|
||||||
throw new RuntimeException(containerCode + "容器不存在! 请维护");
|
|
||||||
}
|
|
||||||
List<Task> taskList = taskRepository.getAgvTaskList(agvTask.getId());
|
List<Task> taskList = taskRepository.getAgvTaskList(agvTask.getId());
|
||||||
if (endAreaName.equals(AreaNameDic.OneFCX) || endAreaName.equals(AreaNameDic.TwoFCX)) {
|
if(agvTask.getType().equals(BizStatus.ASN)){
|
||||||
//目标点位容器都由人为拉走,调用容器出场
|
|
||||||
/* if (agv_on_off.equals("ON")) {
|
|
||||||
String jsonObject = this.containerOut(containerCode);
|
|
||||||
String resultJson = HttpPostUtil.sendPostReq(UrlApi.containerOut, jsonObject.toString());
|
|
||||||
JSONObject resulObject = JSON.parseObject(resultJson);
|
|
||||||
code = resulObject.getString("code") == null ? "" : resulObject.getString("code");
|
|
||||||
}
|
|
||||||
if (code.equals("0")) {
|
|
||||||
stock.setPoint(null);
|
|
||||||
stock.setStatus(BaseStatus.FREE);
|
|
||||||
stockRepository.save(stock);
|
|
||||||
}*/
|
|
||||||
stock.setPoint(endPoint);
|
|
||||||
stockRepository.save(stock);
|
|
||||||
//线边点位释放
|
|
||||||
endPoint.setStatus(BaseStatus.FREE);
|
|
||||||
pointService.update(endPoint);
|
|
||||||
}
|
|
||||||
//处理实际逻辑
|
|
||||||
if (endAreaName.equals(AreaNameDic.OneFK) || endAreaName.equals(AreaNameDic.TwoFK)) {
|
|
||||||
stock.setPoint(endPoint);
|
|
||||||
stock.setStatus(BaseStatus.FREE);
|
|
||||||
stockRepository.save(stock);
|
|
||||||
endPoint.setStatus(BaseStatus.USED);
|
|
||||||
pointService.update(endPoint);
|
|
||||||
} else if (endAreaName.equals(AreaNameDic.TwoFCX)) {
|
|
||||||
//扣除库存
|
|
||||||
for (Task task : taskList) {
|
|
||||||
try {
|
|
||||||
taskService.pickConfirm(task.getId(), task.getPlanQty());
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new RuntimeException(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//容器出场
|
|
||||||
if (agv_on_off.equals("ON")) {
|
|
||||||
String jsonObject = this.containerOut(containerCode);
|
|
||||||
String resultJson = HttpPostUtil.sendPostReq(UrlApi.containerOut, jsonObject.toString());
|
|
||||||
JSONObject resulObject = JSON.parseObject(resultJson);
|
|
||||||
code = resulObject.getString("code") == null ? "" : resulObject.getString("code");
|
|
||||||
}
|
|
||||||
if (code.equals("0")) {
|
|
||||||
stock.setPoint(null);
|
|
||||||
stock.setStatus(BaseStatus.FREE);
|
|
||||||
stockRepository.save(stock);
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if (endAreaName.equals(AreaNameDic.TwoFB) || endAreaName.equals(AreaNameDic.OneFC)) {
|
|
||||||
//增加库存
|
//增加库存
|
||||||
for (Task task : taskList) {
|
for (Task task : taskList) {
|
||||||
AsnDetail ad = task.getAsnDetail();
|
AsnDetail ad = task.getAsnDetail();
|
||||||
ad.setReceivedQty(ad.getOrderQty());
|
ad.setReceivedQty(ad.getOrderQty());
|
||||||
ad.setStatus(BizStatus.RECEIVED);
|
ad.setStatus(BizStatus.RECEIVED);
|
||||||
ad.setStock(stock);
|
|
||||||
asnDetailRepository.save(ad);
|
asnDetailRepository.save(ad);
|
||||||
task.setTaskStatus(BizStatus.FINISH);
|
task.setTaskStatus(BizStatus.FINISH);
|
||||||
task.setMoveQty(task.getPlanQty());
|
task.setMoveQty(task.getPlanQty());
|
||||||
task.setSrcStock(stock);
|
|
||||||
if (stock != null) {
|
|
||||||
task.setSrcStockCode(stock.getCode());
|
|
||||||
task.setDstStockCode(stock.getCode());
|
|
||||||
}
|
|
||||||
task.setDstStock(stock);
|
|
||||||
taskService.update(task);
|
taskService.update(task);
|
||||||
|
Stock stock=task.getSrcStock();
|
||||||
|
|
||||||
List<Inventory> inventoryList = inventoryService.queryInventory(stock);
|
List<Inventory> inventoryList = inventoryService.queryInventory(stock);
|
||||||
for (Inventory inventory : inventoryList) {
|
for (Inventory inventory : inventoryList) {
|
||||||
|
|
@ -557,25 +496,28 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
||||||
|
|
||||||
|
|
||||||
//生成库存
|
//生成库存
|
||||||
Inventory inventory = inventoryService.getInventory(task.getItemKey(), task.getDstPoint(), stock, task.getDept(), BizStatus.RECEIVING_UP);
|
Inventory inventory = inventoryService.getInventory(task.getItemKey(), task.getDstPoint(), task.getSrcStock(), task.getDept(), BizStatus.RECEIVING_UP);
|
||||||
double srcQty = inventory.getQuantity();
|
inventory.setQuantity(task.getPlanQty());
|
||||||
inventory.addQty(inventory, task.getPlanQty());
|
|
||||||
inventoryService.update(inventory);
|
inventoryService.update(inventory);
|
||||||
stock.setStatus(BaseStatus.USED);
|
inventoryLogService.storeInventoryLog(BizStatus.RECEIVING_UP, BizStatus.ADD, null, task.getItemKey(), task.getSrcPoint(), task.getDstPoint(), task.getSrcStock(), task.getSrcStock(), task.getPlanQty(), task.getPlanQty(), BizStatus.ASN, ad.getId(), inventory.getId(), ad.getRemark());
|
||||||
stock.setPoint(inventory.getPoint());
|
|
||||||
stockRepository.save(stock);
|
|
||||||
Point point = inventory.getPoint();
|
|
||||||
point.setStatus(BaseStatus.USED);
|
|
||||||
pointService.update(point);
|
|
||||||
inventoryLogService.storeInventoryLog(BizStatus.RECEIVING_UP, BizStatus.ADD, null, task.getItemKey(), task.getSrcPoint(), task.getDstPoint(), task.getSrcStock(), task.getSrcStock(), srcQty, task.getPlanQty(), BizStatus.ASN, ad.getId(), inventory.getId(), ad.getRemark());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
}else if(agvTask.getType().equals(BizStatus.PICK)){
|
||||||
|
//处理实际逻辑
|
||||||
|
|
||||||
|
//扣除库存
|
||||||
|
for (Task task : taskList) {
|
||||||
|
try {
|
||||||
|
taskService.pickConfirm(task.getId(), task.getPlanQty());
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
//任务完成
|
//任务完成
|
||||||
agvTask.setStatus(BizStatus.FINISH);
|
agvTask.setStatus(BizStatus.FINISH);
|
||||||
agvTask.setStockCode(containerCode);
|
|
||||||
agvTask.setEndTime(new Timestamp(new Date().getTime()));
|
agvTask.setEndTime(new Timestamp(new Date().getTime()));
|
||||||
this.update(agvTask);
|
this.update(agvTask);
|
||||||
|
|
||||||
|
|
@ -585,33 +527,6 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
||||||
String endAreaName = endPoint.getArea().getName();
|
String endAreaName = endPoint.getArea().getName();
|
||||||
//呼叫空车时异常,容器不出场,线边点位释放
|
//呼叫空车时异常,容器不出场,线边点位释放
|
||||||
if (endAreaName.equals(AreaNameDic.OneFCX)) {
|
if (endAreaName.equals(AreaNameDic.OneFCX)) {
|
||||||
//查询容器状态
|
|
||||||
String jsonObject = this.containerQuery(containerCode);
|
|
||||||
String resultJson = HttpPostUtil.sendPostReq(UrlApi.containerQuery, jsonObject.toString());
|
|
||||||
JSONObject resulObject = JSON.parseObject(resultJson);
|
|
||||||
if (resulObject != null) {
|
|
||||||
code = resulObject.getString("code") == null ? "" : resulObject.getString("code");
|
|
||||||
if (code.equals("0")) {
|
|
||||||
String data1 = resulObject.getString("data") == null ? "" : resulObject.getString("data");
|
|
||||||
JSONArray jsonArray = JSON.parseArray(data1);
|
|
||||||
JSONObject dataObject = JSON.parseObject(jsonArray.get(0).toString());
|
|
||||||
String isCarry = dataObject.getString("isCarry") == null ? "" : dataObject.getString("isCarry");
|
|
||||||
if (isCarry.equals("0")) {
|
|
||||||
log.info(agvTask.getId() + "任务" + containerCode + "容器未移动!");
|
|
||||||
} else {
|
|
||||||
//容器已经移则释放空车点位状态
|
|
||||||
Point startPoint = pointService.findByCode(agvTask.getStartSlotCode(), null, null, null, null);
|
|
||||||
startPoint.setStatus(BaseStatus.FREE);
|
|
||||||
pointService.update(startPoint);
|
|
||||||
}
|
|
||||||
//线边点位释放
|
|
||||||
endPoint.setStatus(BaseStatus.FREE);
|
|
||||||
pointService.update(endPoint);
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
throw new RuntimeException("查询容器信息接口异常!");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} else if (endAreaName.equals(AreaNameDic.TwoFCX)) {
|
} else if (endAreaName.equals(AreaNameDic.TwoFCX)) {
|
||||||
|
|
|
||||||
|
|
@ -214,7 +214,7 @@ public class MoServiceImpl implements MoService {
|
||||||
createTasks(item, stock, srcPoint, endPoint, moDto.getLabelNo(), moDto, orderDto);
|
createTasks(item, stock, srcPoint, endPoint, moDto.getLabelNo(), moDto, orderDto);
|
||||||
|
|
||||||
// 更新容器状态和目标点位状态
|
// 更新容器状态和目标点位状态
|
||||||
updateStockAndEndPoint(stock);
|
updateStockAndEndPoint(stock,endPoint);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -240,8 +240,11 @@ public class MoServiceImpl implements MoService {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 提取更新容器状态和目标点位状态的逻辑到单独方法
|
// 提取更新容器状态和目标点位状态的逻辑到单独方法
|
||||||
private void updateStockAndEndPoint(Stock stock) {
|
private void updateStockAndEndPoint(Stock stock,Point point) {
|
||||||
stock.setStatus(BaseStatus.USED);
|
stock.setStatus(BaseStatus.USED);
|
||||||
|
stock.setPoint(point);
|
||||||
stockService.update(stock);
|
stockService.update(stock);
|
||||||
|
point.setStatus(BaseStatus.USED);
|
||||||
|
pointService.update(point);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue