Commit 20f70078 zshaohui

1131 外仓功能提交

1 个父辈 6e7fda45
......@@ -47,6 +47,7 @@ public enum OP_STATUS {
IN_ON_LINE,
IN_ON_AGV,
OUT_ON_LINE,
OUT_ON_AGV
OUT_ON_AGV,
ERROR
;
}
......@@ -302,9 +302,9 @@ public class DataLog extends BasePo implements Serializable {
*/
public boolean needRemoveFromCache(){
if(isFinished() || isCancel()){
if(System.currentTimeMillis() - super.getUpdateDate().getTime() > 5 * 60 * 1000){
//if(System.currentTimeMillis() - super.getUpdateDate().getTime() > 5 * 60 * 1000){
return true;
}
//}
}
return false;
}
......
package com.neotel.smfcore.custom.lizhen.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author sunke
* @date 2022/9/22 4:32 PM
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Station {
/**
......@@ -19,10 +23,26 @@ public class Station {
*/
private String currentRfid = "";
/**
* 物料当前扫描数量
*/
private int reelCurrentNum = 0;
/**
* 物料总数量
*/
private int reelNum;
/**
* 料箱当前数量
*/
private int boxCurrentNum = 0;
/**
* 数量
* 料箱数量
*/
private int num;
private int boxNum;
/**
* 宽
......@@ -38,4 +58,7 @@ public class Station {
* GR标签
*/
private String grLabel;
private String lastScanBoxCode = "";
}
package com.neotel.smfcore.custom.lizhen.rest;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.utils.ReelLockPosUtil;
import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
......@@ -10,6 +11,7 @@ import com.neotel.smfcore.core.storage.enums.DeviceType;
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.dao.IDataLogDao;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.custom.lizhen.bean.Station;
......@@ -48,6 +50,9 @@ public class AgvBoxDeviceClientController {
@Autowired
private IStoragePosManager storagePosManager;
@Autowired
private IDataLogDao dataLogDao;
/**
* 料箱锁定的目的地
*/
......@@ -62,7 +67,7 @@ public class AgvBoxDeviceClientController {
@ResponseBody
@AnonymousAccess
public ResultBean stationInfo(HttpServletRequest request) {
for (int i = 1; i < 5; i++) {
for (int i = 1; i <= 5; i++) {
String stationName = "s" + i;
String rfid = request.getParameter(stationName);
StationCacheUtil.updateCurrentRfid(stationName, rfid);
......@@ -92,10 +97,10 @@ public class AgvBoxDeviceClientController {
* 根据料箱RFID获取工位信息
*/
private String getStationByRfid(String rfid) {
String prefixRfid = rfid + "-";
//String prefixRfid = rfid + "-";
for (Station station : StationCacheUtil.getAllStations()) {
String stationRfid = station.getCurrentRfid();
if (stationRfid.startsWith(prefixRfid)) {
if (stationRfid.startsWith(rfid)) {
return station.getName();
}
}
......@@ -149,7 +154,7 @@ public class AgvBoxDeviceClientController {
DataLog opTask = null;
Collection<DataLog> tasks = taskService.getAllTasks();
for (DataLog task : tasks) {
if (!task.isFinished()) {
if (!task.isFinished() && !task.isCancel()) {
Storage storage = dataCache.getStorageById(task.getStorageId());
if (storage.isStorage(DeviceType.AGV_BOX)) {
if (isSameBarcodeTask(rfid, task)) {
......@@ -238,7 +243,9 @@ public class AgvBoxDeviceClientController {
List<DataLog> allTasks = taskService.getAllTasks();
for (DataLog task : allTasks) {
if (rfid.startsWith(task.getBarcode())) {
opTask = task;
if (!task.isCancel()) {
opTask = task;
}
break;
}
}
......@@ -277,6 +284,8 @@ public class AgvBoxDeviceClientController {
if (OP_STATUS.OUT_ON_AGV.name().equals(statusStr)) {
//从库位中取出,需要移到完成队列中,并且清理库存
outFromPos(opTask);
//清理锁定库位
ReelLockPosUtil.removeReelLockPosInfo(rfid);
}
taskService.updateFinishedTask(opTask);
......
......@@ -4,10 +4,13 @@ import com.neotel.smfcore.common.bean.ResultBean;
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.IStorageManager;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.core.storage.service.po.Storage;
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.security.annotation.AnonymousAccess;
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;
......@@ -16,7 +19,8 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
public class TaskRestController{
@Slf4j
public class TaskRestController {
@Autowired
private IDataLogManager dataLogManager;
......@@ -25,12 +29,15 @@ public class TaskRestController{
private DataCache dataCache;
@Autowired
private IStorageManager storageManager;
private TaskService taskService;
@Autowired
private IStoragePosManager storagePosManager;
@RequestMapping("/putIn")
@AnonymousAccess
public ResultBean putIn(@RequestBody Map<String,String> paramMap){
public ResultBean putIn(@RequestBody Map<String, String> paramMap) {
String barcode = paramMap.get("barcode");
String posName = paramMap.get("posName");
String cid = paramMap.get("cid");
......@@ -38,12 +45,36 @@ public class TaskRestController{
DataLog dataLog = new DataLog();
dataLog.setStorageId(storage.getId());
dataLog.setPosName(posName);
dataLog.setPosId(storagePosManager.getByPosName(posName).getId());
dataLog.setCid(cid);
dataLog.setBarcode(barcode);
dataLog.setPartNumber(barcode);
dataLog.setType(1);
dataLog.setStatus(OP_STATUS.WAIT.name());
dataLogManager.save(dataLog);
taskService.addTaskToExecute(dataLog);
return ResultBean.newOkResult("");
}
@RequestMapping("/outIn")
@AnonymousAccess
public ResultBean outIn(@RequestBody Map<String, String> paramMap) {
String barcode = paramMap.get("barcode");
String posName = paramMap.get("posName");
String cid = paramMap.get("cid");
String name = paramMap.get("name");
Storage storage = dataCache.getStorage(cid);
DataLog dataLog = new DataLog();
dataLog.setStorageId(storage.getId());
dataLog.setPosName(posName);
dataLog.setPosId(storagePosManager.getByPosName(posName).getId());
dataLog.setCid(cid);
dataLog.setBarcode(barcode);
dataLog.setPartNumber(barcode);
dataLog.setType(2);
dataLog.setStatus(OP_STATUS.WAIT.name());
dataLog.setLoc(name);
log.info("工位信息--" + name);
taskService.addTaskToExecute(dataLog);
return ResultBean.newOkResult("");
}
......
package com.neotel.smfcore.custom.lizhen.util;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.custom.lizhen.bean.Station;
import lombok.extern.slf4j.Slf4j;
......@@ -22,6 +23,13 @@ public class StationCacheUtil {
*/
private static Map<String, Station> stationMap = new ConcurrentHashMap<>();
public static void saveReelToBoxCode(Station station) {
int reelCurrentNum = station.getReelCurrentNum();
reelCurrentNum++;
station.setReelCurrentNum(reelCurrentNum);
StationCacheUtil.updateStation(station);
}
@PostConstruct
public void init() {
log.info("开始工位缓存信息");
......@@ -31,13 +39,13 @@ public class StationCacheUtil {
if(station == null){
station = new Station();
station.setName(stationName);
stationMap.put(stationName,station);
dataCache.updateCache(stationName, station);
}
stationMap.put(stationName,station);
dataCache.updateCache(stationName, station);
}
}
private static synchronized void updateStation(Station station){
public static synchronized void updateStation(Station station){
stationMap.put(station.getName(),station);
dataCache.updateCache(station.getName(), station);
}
......@@ -59,6 +67,11 @@ public class StationCacheUtil {
station.setCurrentRfid(rfid);
updateStation(station);
}
} else {
station = new Station();
station.setName(stationName);
station.setCurrentRfid(rfid);
updateStation(station);
}
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!