Commit 467beb71 zshaohui

料箱移转提交

1 个父辈 38026629
......@@ -90,7 +90,11 @@ public class TicketController {
@ApiOperation("单据领料")
@RequestMapping("/checkOut")
//@AnonymousAccess
public synchronized ResultBean checkOut(String ticket) {
public synchronized ResultBean checkOut(String ticket,Boolean sorting) {
if (sorting == null){
sorting = false;
}
String resultStr = liteOrderCache.hasExecutingOrder();
if (StringUtils.isNotEmpty(resultStr)) {
......@@ -122,8 +126,6 @@ public class TicketController {
String result = "";
boolean sorting = false;
if (sorting) {
log.info(ticket + "是SortIng出库:" + sorting);
result = liteOrderCache.ticketOutBySorting(ticket);
......
......@@ -212,7 +212,7 @@ public class AgvDeviceController {
barcode.setUsedDate(new Date());
//仓位状态
barcode.setCheckOutDate(new Date(), "");
//barcode.setPosName("");
barcode.setPosName("");
barcode.setOrderItemId("");
barcode.setOrderId("");
barcode.setLockName("");
......
package com.neotel.smfcore.custom.luxsan.factory_c.wipstor.controller;
import com.google.common.collect.Lists;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.utils.ReelLockPosUtil;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.service.manager.IDataLogManager;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.custom.luxsan.api.LuxsanApi;
import com.neotel.smfcore.custom.luxsan.api.bean.request.PalletUpdateRequest;
import com.neotel.smfcore.custom.luxsan.api.bean.request.TicketPickPostData;
import com.neotel.smfcore.custom.luxsan.api.bean.request.TicketPickPostRequest;
import com.neotel.smfcore.custom.luxsan.factory_c.common.util.CommonUtil;
import com.neotel.smfcore.custom.luxsan.factory_c.rawstor.enums.LiteorderCheckType;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Slf4j
@RestController
@RequestMapping("/boxTrans")
public class BoxTransferController {
@Autowired
private IStoragePosManager storagePosManager;
@Autowired
private TaskService taskService;
@Autowired
private DataCache dataCache;
@Autowired
private IBarcodeManager barcodeManager;
@Autowired
private IDataLogManager dataLogManager;
@ApiOperation("料箱从一个库位移到另外一个库位")
@RequestMapping("/boxToOtherPos")
@AnonymousAccess
public ResultBean boxToOtherPos(String boxStr, String newPosNameStr){
log.info("料箱"+boxStr+"从一个库位移到另外一个库位:"+newPosNameStr);
if (StringUtils.isEmpty(boxStr)){
return ResultBean.newErrorResult(-1,"","料箱不能为空");
}
if (StringUtils.isEmpty(newPosNameStr)){
return ResultBean.newErrorResult(-1,"","库位不能为空");
}
StoragePos pos = storagePosManager.getByBarcode(boxStr);
if (pos == null){
return ResultBean.newErrorResult(-1,"",boxStr+"不在库位中");
}
//判断新库位中是否有物料
StoragePos newPos = storagePosManager.getByPosName(newPosNameStr);
if (newPos == null){
return ResultBean.newErrorResult(-1,"","库位中不存在:"+newPosNameStr);
}
//判断库别是否相同
if (StringUtils.isEmpty(newPos.getWareHouseCode())){
return ResultBean.newErrorResult(-1,"",newPosNameStr+"没有设置库别");
}
if (!newPos.getWareHouseCode().equals(pos.getWareHouseCode())){
return ResultBean.newErrorResult(-1,"",newPosNameStr+"的库别:"+newPos.getWareHouseCode()+"与料箱所在的库位:"+pos.getPosName()+"的库别:"+pos.getWareHouseCode()+"不一致");
}
Barcode barcode = pos.getBarcode();
List<DataLog> allTasks = taskService.getAllTasks();
for (DataLog dataLog : allTasks) {
if (newPos.getPosName().equals(dataLog.getPosName())){
return ResultBean.newErrorResult(-1,"",newPosNameStr+"有正在执行的任务,请确认");
}
}
//判断当前料箱是否有任务
Storage storage = dataCache.getStorageById(pos.getStorageId());
DataLog dataLog = new DataLog(storage, barcode, pos);
dataLog.setType(OP.CHECKOUT);
dataLog.setCartonId(barcode.getPalletId());
dataLog.setOperator(SecurityUtils.getLoginUsername()+"手动移库位");
dataLog.setLoc(newPosNameStr);
dataLog.updateExtraDataMap("targetPos",newPosNameStr);
taskService.addTaskToExecute(dataLog);
return ResultBean.newOkResult("");
}
@ApiOperation("修改任务状态")
@RequestMapping("/updateBoxTransStatus")
@AnonymousAccess
public ResultBean updateBoxTransStatus(@RequestBody Map<String,String> paramMap) {
String boxStr = paramMap.get("boxStr");
String statusStr = paramMap.get("statusStr");
//String posName = paramMap.get("posName");
//1.判断任务是否存在
DataLog task = null;
List<DataLog> allTasks = taskService.getAllTasks();
for (DataLog dataLog : allTasks) {
if (dataLog.isCheckOutTask() && !dataLog.isCancel() && !dataLog.isFinished()) {
if (boxStr.equals(dataLog.getBarcode())) {
task = dataLog;
break;
}
}
}
if (task == null) {
log.info(boxStr + "任务未找到,可能处理过,返回ok");
return ResultBean.newOkResult("");
}
statusStr = statusStr.toUpperCase();
log.info("更新移库料箱:" + boxStr + ",任务状态为:" + statusStr);
//2.判断更新状态和当前状态任务是否相同
if (task.getStatus().equals(statusStr)) {
return ResultBean.newOkResult("");
}
if (OP_STATUS.EXECUTING.name().equals(statusStr)) {
task.setStatus(statusStr);
taskService.updateQueueTask(task);
} else {
if (!task.isOutFromPos()) {
boxOutPos(task);
//WipBoxHandleUtil.outFromPos(task);
task.setOutFromPos(true);
taskService.updateFinishedTask(task);
}
if (OP_STATUS.FINISHED.name().equals(statusStr)) {
String targetPos = task.getExtraDataMap("targetPos").toString();
StoragePos pos = storagePosManager.getByPosName(targetPos);
Storage storage = dataCache.getStorageById(pos.getId());
Barcode barcode = barcodeManager.findByBarcode(task.getBarcode());
DataLog dataLog = new DataLog(storage, barcode, pos);
dataLog.setType(OP.PUT_IN);
dataLog.setStatus(OP_STATUS.FINISHED.name());
dataLog.setOperator(SecurityUtils.getLoginUsername()+"手动移库位");
dataLogManager.save(dataLog);
boxInPos(dataLog);
} else {
task.setStatus(statusStr);
taskService.updateFinishedTask(task);
}
}
return ResultBean.newOkResult("");
}
private void boxInPos(DataLog queueTask){
Barcode barcode = barcodeManager.findByBarcode(queueTask.getBarcode());
//已完成,加入库存,并且从完成队列中清除
StoragePos storagePos = storagePosManager.get(queueTask.getPosId());
if (barcode != null) {
barcode.setUsedCount(barcode.getUsedCount() + 1);
barcode.setPutInTime(System.currentTimeMillis(),true);
barcode.setInOpor("");
barcode.setCheckOutDate(null, "");
barcode.setPosName(queueTask.getPosName());
barcode = barcodeManager.save(barcode);
}
storagePos.setBarcode(barcode);
storagePos.setUsed(true);
storagePos.setCanCheckOutTime(System.currentTimeMillis());
storagePosManager.save(storagePos);
queueTask.setStatus(OP_STATUS.FINISHED.name());
}
private void boxOutPos(DataLog queueTask) {
Barcode barcode = barcodeManager.findByBarcode(queueTask.getBarcode());
//已完成,从库存中清除,并且从完成队列中清除
StoragePos storagePos = storagePosManager.get(queueTask.getPosId());
if (barcode != null) {
//二维码状态
barcode.setUsed(true);
barcode.setUsedDate(new Date());
//仓位状态
barcode.setCheckOutDate(new Date(), "");
barcode.setPosName("");
barcode.setOrderItemId("");
barcode.setOrderId("");
barcode.setLockName("");
barcode.setLockId("");
barcodeManager.save(barcode);
}
storagePos.setBarcode(null);
storagePos.setUsed(false);
storagePosManager.save(storagePos);
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!