no message
parent
47589b2743
commit
009873c137
|
|
@ -43,9 +43,12 @@ public class InventoryQueryCriteria{
|
|||
@Query(joinName = "itemKey>item>", propName="name",type = Query.Type.INNER_LIKE)
|
||||
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;
|
||||
|
||||
@Query(joinName = "itemKey", propName="orderNumber",type = Query.Type.INNER_LIKE)
|
||||
private String orderNumber;
|
||||
|
||||
@Query(joinName = "itemKey>item>", propName="code",type = Query.Type.IN)
|
||||
private List<String> itemCode;
|
||||
|
||||
|
|
@ -56,8 +59,8 @@ public class InventoryQueryCriteria{
|
|||
@Query(type = Query.Type.NOT_EQUAL)
|
||||
private Double quantity;
|
||||
|
||||
@Query(joinName = "stock", propName="name",type = Query.Type.INNER_LIKE)
|
||||
private String stockName;
|
||||
@Query(joinName = "stock", propName="code",type = Query.Type.INNER_LIKE)
|
||||
private String stockCode;
|
||||
|
||||
@Query(joinName = "point>area>", propName="name",type = Query.Type.INNER_LIKE)
|
||||
private String areaName;
|
||||
|
|
|
|||
|
|
@ -468,114 +468,56 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
|||
String agv_on_off = "OFF";
|
||||
agv_on_off = dictService.getDictDescription("agv_on_off") == null ? "OFF" : dictService.getDictDescription("agv_on_off").getDescription();
|
||||
String code = "0";
|
||||
|
||||
if (status.equals("ARRIVED")) {
|
||||
|
||||
} else if (status.equals("UP_CONTAINER")) {
|
||||
|
||||
} 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());
|
||||
if (endAreaName.equals(AreaNameDic.OneFCX) || endAreaName.equals(AreaNameDic.TwoFCX)) {
|
||||
//目标点位容器都由人为拉走,调用容器出场
|
||||
/* 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");
|
||||
List<Task> taskList = taskRepository.getAgvTaskList(agvTask.getId());
|
||||
if(agvTask.getType().equals(BizStatus.ASN)){
|
||||
//增加库存
|
||||
for (Task task : taskList) {
|
||||
AsnDetail ad = task.getAsnDetail();
|
||||
ad.setReceivedQty(ad.getOrderQty());
|
||||
ad.setStatus(BizStatus.RECEIVED);
|
||||
asnDetailRepository.save(ad);
|
||||
task.setTaskStatus(BizStatus.FINISH);
|
||||
task.setMoveQty(task.getPlanQty());
|
||||
taskService.update(task);
|
||||
Stock stock=task.getSrcStock();
|
||||
|
||||
List<Inventory> inventoryList = inventoryService.queryInventory(stock);
|
||||
for (Inventory inventory : inventoryList) {
|
||||
Long[] ids = new Long[1];
|
||||
ids[0] = inventory.getId();
|
||||
inventoryService.deleteAll(ids);
|
||||
}
|
||||
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);
|
||||
|
||||
|
||||
//生成库存
|
||||
Inventory inventory = inventoryService.getInventory(task.getItemKey(), task.getDstPoint(), task.getSrcStock(), task.getDept(), BizStatus.RECEIVING_UP);
|
||||
inventory.setQuantity(task.getPlanQty());
|
||||
inventoryService.update(inventory);
|
||||
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());
|
||||
|
||||
|
||||
}
|
||||
|
||||
}else if(agvTask.getType().equals(BizStatus.PICK)){
|
||||
//处理实际逻辑
|
||||
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());
|
||||
}
|
||||
|
||||
//扣除库存
|
||||
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) {
|
||||
AsnDetail ad = task.getAsnDetail();
|
||||
ad.setReceivedQty(ad.getOrderQty());
|
||||
ad.setStatus(BizStatus.RECEIVED);
|
||||
ad.setStock(stock);
|
||||
asnDetailRepository.save(ad);
|
||||
task.setTaskStatus(BizStatus.FINISH);
|
||||
task.setMoveQty(task.getPlanQty());
|
||||
task.setSrcStock(stock);
|
||||
if (stock != null) {
|
||||
task.setSrcStockCode(stock.getCode());
|
||||
task.setDstStockCode(stock.getCode());
|
||||
}
|
||||
task.setDstStock(stock);
|
||||
taskService.update(task);
|
||||
|
||||
List<Inventory> inventoryList = inventoryService.queryInventory(stock);
|
||||
for (Inventory inventory : inventoryList) {
|
||||
Long[] ids = new Long[1];
|
||||
ids[0] = inventory.getId();
|
||||
inventoryService.deleteAll(ids);
|
||||
}
|
||||
|
||||
|
||||
//生成库存
|
||||
Inventory inventory = inventoryService.getInventory(task.getItemKey(), task.getDstPoint(), stock, task.getDept(), BizStatus.RECEIVING_UP);
|
||||
double srcQty = inventory.getQuantity();
|
||||
inventory.addQty(inventory, task.getPlanQty());
|
||||
inventoryService.update(inventory);
|
||||
stock.setStatus(BaseStatus.USED);
|
||||
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());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//任务完成
|
||||
agvTask.setStatus(BizStatus.FINISH);
|
||||
agvTask.setStockCode(containerCode);
|
||||
agvTask.setEndTime(new Timestamp(new Date().getTime()));
|
||||
this.update(agvTask);
|
||||
|
||||
|
|
@ -585,33 +527,6 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
|||
String endAreaName = endPoint.getArea().getName();
|
||||
//呼叫空车时异常,容器不出场,线边点位释放
|
||||
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)) {
|
||||
|
|
|
|||
|
|
@ -214,7 +214,7 @@ public class MoServiceImpl implements MoService {
|
|||
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.setPoint(point);
|
||||
stockService.update(stock);
|
||||
point.setStatus(BaseStatus.USED);
|
||||
pointService.update(point);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue