Commit 308cbb27 LN

获取料架剩余库位修改。

1 个父辈 fbe3b960
...@@ -164,11 +164,13 @@ public class DataCache { ...@@ -164,11 +164,13 @@ public class DataCache {
} }
return lanList; return lanList;
} }
public void updateCache(String cacheKey, Object value ) {
updateCache(cacheKey,value,true);
}
/** /**
* 更新缓存信息 * 更新缓存信息
*/ */
public void updateCache(String cacheKey, Object value) { public void updateCache(String cacheKey, Object value,boolean needLog) {
cacheItemDao.updateCacheItem(cacheKey, value); cacheItemDao.updateCacheItem(cacheKey, value);
cacheMap.put(cacheKey, value); cacheMap.put(cacheKey, value);
if (cacheKey.equals(Constants.CACHE_CodeRule)) { if (cacheKey.equals(Constants.CACHE_CodeRule)) {
...@@ -178,8 +180,9 @@ public class DataCache { ...@@ -178,8 +180,9 @@ public class DataCache {
if (cacheKey.equals(Constants.CACHE_ExpiresDay)) { if (cacheKey.equals(Constants.CACHE_ExpiresDay)) {
codeResolve.updateExpiresDay((Integer) value); codeResolve.updateExpiresDay((Integer) value);
} }
if (needLog) {
log.info("updateCache [" + cacheKey + "]=[" + value + "]"); log.info("updateCache [" + cacheKey + "]=[" + value + "]");
}
} }
/** /**
......
...@@ -8,6 +8,8 @@ import lombok.Data; ...@@ -8,6 +8,8 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
@Data @Data
...@@ -268,4 +270,31 @@ public class ShelfInfo { ...@@ -268,4 +270,31 @@ public class ShelfInfo {
} }
return false; return false;
} }
/**
* 返回剩余的空库位,包含锁定和未锁定的
* @return
*/
public List<Integer> getEmptySlot() {
List<Integer> result = new ArrayList<>();
int smallEmpty = 0;
int bigEmpty = 0;
for (int i = 1; i <= maxLocCount; i++) {
ShelfLoc shelfLoc = locMap.get(i);
if (shelfLoc != null) {
if (!shelfLoc.isEmpty()) {
continue;
}
}
if (i <= MAX_F_SMALL_NUM) {
smallEmpty++;
} else {
bigEmpty++;
}
}
result.add(smallEmpty);
result.add(bigEmpty);
return result;
}
} }
...@@ -30,13 +30,18 @@ public class TaskShelfUtil { ...@@ -30,13 +30,18 @@ public class TaskShelfUtil {
/**料架所在的产线位置 /**料架所在的产线位置
*key=rfid,value=位置 *key=rfid,value=位置
*/ */
public static Map<String,String> shelfLocMap=null; public static Map<String,String> lineShelfLocMap =null;
public static Map<String,ShelfInfo> lineShelfMap=null;
private static String HSERIAL_SHELF_MAP_KEY = "HSERIAL_SHELF_MAP_KEY"; private static String HSERIAL_SHELF_MAP_KEY = "HSERIAL_SHELF_MAP_KEY";
private static String SHELF_LOC_MAP_KEY = "SHELF_LOC_MAP_KEY"; private static String LINE_SHELF_LOC_MAP_KEY = "LINE_SHELF_LOC_MAP_KEY";
private static String LINE_SHELF_MAP_KEY = "LINE_SHELF_MAP_KEY";
public static String DEFAULT_ORDERNO = "1";
private static String DEFAULT_ORDERNO = "1"; public static String ShelfSpilt=",";
public static void initData(){ public static void initData(){
initShelfMap(); initShelfMap();
...@@ -45,16 +50,29 @@ public class TaskShelfUtil { ...@@ -45,16 +50,29 @@ public class TaskShelfUtil {
private static void initShelfLocMap() { private static void initShelfLocMap() {
if (shelfLocMap == null) { if (lineShelfLocMap == null) {
shelfLocMap = dataCache.getCache(SHELF_LOC_MAP_KEY); lineShelfLocMap = dataCache.getCache(LINE_SHELF_LOC_MAP_KEY);
if(shelfLocMap ==null){ if(lineShelfLocMap ==null){
shelfLocMap =new ConcurrentHashMap<>(); lineShelfLocMap =new ConcurrentHashMap<>();
} }
} }
}
private static void saveShelfLocMap(Map<String, String> map) { if(lineShelfMap==null){
dataCache.updateCache(SHELF_LOC_MAP_KEY, map); lineShelfMap=dataCache.getCache(LINE_SHELF_MAP_KEY);
if(lineShelfMap==null){
lineShelfMap=new ConcurrentHashMap<>();
}
}
}
private static void saveLineShelfMap(Map<String, ShelfInfo> map) {
dataCache.updateCache(LINE_SHELF_MAP_KEY, map);
}
private static void AddShelfToLineMap(ShelfInfo shelfInfo){
lineShelfMap.put(shelfInfo.getRealRfid(),shelfInfo);
saveLineShelfMap(lineShelfMap);
}
private static void saveLineShelfLocMap(Map<String, String> map) {
dataCache.updateCache(LINE_SHELF_LOC_MAP_KEY, map);
} }
...@@ -66,23 +84,27 @@ public class TaskShelfUtil { ...@@ -66,23 +84,27 @@ public class TaskShelfUtil {
} }
} }
} }
private static void saveShelfMap(Map<String, Map<String, ShelfInfo>> map ) {
private static void saveShelfMap(Map<String, Map<String, ShelfInfo>> map) { dataCache.updateCache(HSERIAL_SHELF_MAP_KEY, map,false);
dataCache.updateCache(HSERIAL_SHELF_MAP_KEY, map); }
private static void saveShelfMap(Map<String, Map<String, ShelfInfo>> map,boolean needLog) {
dataCache.updateCache(HSERIAL_SHELF_MAP_KEY, map,needLog);
} }
/** /**
* 清理使用过的料架 * 清理使用过的料架
*/ */
public static void clearShelf(String orderNo) { public static boolean clearShelf(String orderNo) {
if (orderNo != null) { if (orderNo != null) {
Map<String, ShelfInfo> shelfMap = taskShelfMap.get(orderNo); Map<String, ShelfInfo> shelfMap = taskShelfMap.get(orderNo);
if (shelfMap != null) { if (shelfMap != null) {
log.info("清理[" + orderNo + "]使用过的料架"); log.info("清理[" + orderNo + "]使用过的料架 成功");
taskShelfMap.remove(orderNo); taskShelfMap.remove(orderNo);
saveShelfMap(taskShelfMap); saveShelfMap(taskShelfMap,true);
return true;
} }
} }
return false;
} }
public static boolean clearShelf(String orderNo, String rfid) { public static boolean clearShelf(String orderNo, String rfid) {
...@@ -96,8 +118,9 @@ public class TaskShelfUtil { ...@@ -96,8 +118,9 @@ public class TaskShelfUtil {
String tempRfid = shelfInfo.tempRfid(); String tempRfid = shelfInfo.tempRfid();
shelfMap.remove(tempRfid); shelfMap.remove(tempRfid);
taskShelfMap.put(orderNo, shelfMap); taskShelfMap.put(orderNo, shelfMap);
log.info("清理[" + orderNo + "]使用的过料架[" + rfid + "]成功");
clearResult = true; clearResult = true;
saveShelfMap(taskShelfMap); saveShelfMap(taskShelfMap,true);
} }
} }
} }
...@@ -260,7 +283,7 @@ public class TaskShelfUtil { ...@@ -260,7 +283,7 @@ public class TaskShelfUtil {
addLoc(task); addLoc(task);
} }
ShelfInfo shelfInfo = null; ShelfInfo shelfInfo = null;
List<String> rfidList = Lists.newArrayList(rfidStr.split(";")); List<String> rfidList = Lists.newArrayList(rfidStr.split(ShelfSpilt));
ShelfLoc lockLoc = null; ShelfLoc lockLoc = null;
if (orderNo != null) { if (orderNo != null) {
Map<String, ShelfInfo> shelfMap = taskShelfMap.get(orderNo); Map<String, ShelfInfo> shelfMap = taskShelfMap.get(orderNo);
...@@ -457,8 +480,9 @@ public class TaskShelfUtil { ...@@ -457,8 +480,9 @@ public class TaskShelfUtil {
public static void updateShelfLoc(String rfid,String loc){ public static void updateShelfLoc(String rfid,String loc){
shelfLocMap.put(rfid,loc); lineShelfLocMap.put(rfid,loc);
saveShelfLocMap(shelfLocMap); saveLineShelfLocMap(lineShelfLocMap);
} }
......
...@@ -350,6 +350,7 @@ smfcore.selfAudit.noPos=\u76D8\u70B9{0}\u672A\u627E\u5230\u5E93\u4F4D\u53F7 ...@@ -350,6 +350,7 @@ smfcore.selfAudit.noPos=\u76D8\u70B9{0}\u672A\u627E\u5230\u5E93\u4F4D\u53F7
smfcore.mesApi.inCheck.error=MES\u9A8C\u8BC1\u51FA\u9519\uFF1A{0} smfcore.mesApi.inCheck.error=MES\u9A8C\u8BC1\u51FA\u9519\uFF1A{0}
smfcore.mesApi.loginCheck.fail=MES\u767B\u9646\u9A8C\u8BC1\u5931\u8D25 smfcore.mesApi.loginCheck.fail=MES\u767B\u9646\u9A8C\u8BC1\u5931\u8D25
smfcore.mesApi.loginCheck.error=MES\u767B\u9646\u9A8C\u8BC1\u9519\u8BEF\uFF1A{0} smfcore.mesApi.loginCheck.error=MES\u767B\u9646\u9A8C\u8BC1\u9519\u8BEF\uFF1A{0}
smfcore.taskShelf.notExist=\u672A\u627E\u5230\u5DE5\u5355[{0}]\u7684rfid[{1}]
#smfclient.nlp.onlyOneTray=\u4E0D\u53EF\u540C\u65F6\u653E\u5165\u591A\u76D8\u7269\u6599:{0} #smfclient.nlp.onlyOneTray=\u4E0D\u53EF\u540C\u65F6\u653E\u5165\u591A\u76D8\u7269\u6599:{0}
#smfclient.nlp.cannotFindPos={0}\u672A\u627E\u5230\u5E93\u4F4D:{1} #smfclient.nlp.cannotFindPos={0}\u672A\u627E\u5230\u5E93\u4F4D:{1}
#smfclient.nlp.inputOk={0}\u5165\u5E93\u5230{1}\u6210\u529F #smfclient.nlp.inputOk={0}\u5165\u5E93\u5230{1}\u6210\u529F
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!