Commit 0cb430a4 孙克

阳光电源增加感应料架

1 个父辈 0ed0ccf9
package com.myproject.bean.utils;
import java.io.Serializable;
public class PosInfo implements Serializable {
/**
* 库位号
*/
private String pos;
/**
* 优先级
*/
private Integer pri;
/**
* 高度
*/
private Integer h;
/**
* 宽度
*/
private Integer w;
public String getPos() {
return pos;
}
public void setPos(String pos) {
this.pos = pos;
}
public Integer getPri() {
return pri;
}
public void setPri(Integer pri) {
this.pri = pri;
}
public Integer getH() {
return h;
}
public void setH(Integer h) {
this.h = h;
}
public Integer getW() {
return w;
}
public void setW(Integer w) {
this.w = w;
}
}
\ No newline at end of file \ No newline at end of file
...@@ -22,7 +22,18 @@ public class StatusBean { ...@@ -22,7 +22,18 @@ public class StatusBean {
/// </summary>; /// </summary>;
private String cid; private String cid;
/// <summary> ///@ApiOperation("客户端判断CID是否存在")
// @RequestMapping(value = "/service/store/cidIsExists")
// @ResponseBody
// @AnonymousAccess
// public ResultBean cidIsExists(HttpServletRequest request) {
// String cid = request.getParameter("cid");
// Storage storage = dataCache.getStorage(cid);
// if (storage == null) {
// return ResultBean.newErrorResult(1, "smfcore.valueNotFind", "未找到{0}[{1}]", new String[]{"CID", cid});
// }
// return ResultBean.newOkResult(cid);
// } <summary>
/// 请求序列号 /// 请求序列号
/// </summary> /// </summary>
private int seq; private int seq;
...@@ -71,6 +82,9 @@ public class StatusBean { ...@@ -71,6 +82,9 @@ public class StatusBean {
/// </summary> /// </summary>
private Map<Integer,BoxStatusBean> boxStatus = new HashMap<>(); private Map<Integer,BoxStatusBean> boxStatus = new HashMap<>();
private List<PosInfo> posList=null;
/** /**
* 报警集合 * 报警集合
*/ */
...@@ -462,4 +476,13 @@ public class StatusBean { ...@@ -462,4 +476,13 @@ public class StatusBean {
} }
return doorReelSignal; return doorReelSignal;
} }
public List<PosInfo> getPosList() {
return posList;
}
public void setPosList(List<PosInfo> posList) {
this.posList = posList;
}
} }
...@@ -38,6 +38,10 @@ public interface IStoragePosManager extends IManager<StoragePos> { ...@@ -38,6 +38,10 @@ public interface IStoragePosManager extends IManager<StoragePos> {
StoragePos getByBarcodeId(String barcodeId); StoragePos getByBarcodeId(String barcodeId);
List<StoragePos> findUsedPosNameByStorageId(String storageId);
List<StoragePos> findDisabled();
List<StoragePos> findEnablePosList(String storageId); List<StoragePos> findEnablePosList(String storageId);
void clearPos(String storageId); void clearPos(String storageId);
...@@ -100,6 +104,8 @@ public interface IStoragePosManager extends IManager<StoragePos> { ...@@ -100,6 +104,8 @@ public interface IStoragePosManager extends IManager<StoragePos> {
List<StoragePos> findLockPos(String lockId); List<StoragePos> findLockPos(String lockId);
List<StoragePos> findByStorage(String storageId);
int countByQuery(Query query); int countByQuery(Query query);
/** /**
......
...@@ -17,8 +17,6 @@ import com.myproject.manager.IStoragePosManager; ...@@ -17,8 +17,6 @@ import com.myproject.manager.IStoragePosManager;
import com.myproject.util.DateUtil; import com.myproject.util.DateUtil;
import com.myproject.util.PLATE_SIZE; import com.myproject.util.PLATE_SIZE;
import com.myproject.util.StorageConstants; import com.myproject.util.StorageConstants;
import com.myproject.webapp.controller.webService.DataCache;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -48,6 +46,25 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -48,6 +46,25 @@ public class StoragePosManagerImpl implements IStoragePosManager {
} }
@Override @Override
public List<StoragePos> findUsedPosNameByStorageId(String storageId) {
Criteria c = Criteria.where("barcode").exists(true)
.and("enabled").is(true);//可用;
if(!Strings.isNullOrEmpty(storageId)){
c = c.and("storageId").is(storageId);
}
Query query = new Query(c);
// query.fields().include("posName").exclude("id");
return storagePosDao.findByQuery(query);
}
@Override
public List<StoragePos> findDisabled(){
Criteria c = Criteria.where("enabled").is(false);//不可用;
Query query = new Query(c);
return storagePosDao.findByQuery(query);
}
@Override
public List<StoragePos> findEnablePosList(String storageId) { public List<StoragePos> findEnablePosList(String storageId) {
Criteria c = Criteria.where("storageId").is(storageId).and("enabled").is(true);//可用 Criteria c = Criteria.where("storageId").is(storageId).and("enabled").is(true);//可用
Query query = new Query(c); Query query = new Query(c);
...@@ -565,6 +582,11 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -565,6 +582,11 @@ public class StoragePosManagerImpl implements IStoragePosManager {
} }
@Override @Override
public List<StoragePos> findByStorage(String storageId) {
return storagePosDao.findListByCondition(new String[]{"storageId" }, new String[]{storageId });
}
@Override
public int countByQuery(Query query) { public int countByQuery(Query query) {
return storagePosDao.countByQuery(query); return storagePosDao.countByQuery(query);
} }
......
...@@ -260,7 +260,7 @@ public class StorageConstants { ...@@ -260,7 +260,7 @@ public class StorageConstants {
/** /**
* 6智能料架 * 6智能料架
*/ */
SHELF("storage.type.shelf"), SHELF("storage.type.nlp"),
/** /**
* 7 料柜 * 7 料柜
...@@ -293,6 +293,7 @@ public class StorageConstants { ...@@ -293,6 +293,7 @@ public class StorageConstants {
*/ */
VERTICALBOX("storage.type.verticalBox") VERTICALBOX("storage.type.verticalBox")
; ;
private String key; private String key;
......
...@@ -36,6 +36,7 @@ public class DataCache{ ...@@ -36,6 +36,7 @@ public class DataCache{
protected final transient Logger log = LogManager.getLogger(getClass()); protected final transient Logger log = LogManager.getLogger(getClass());
//客户 //客户
public static class CUSTOMER{ public static class CUSTOMER{
public static String LIAN_DIAN = "LianDian"; public static String LIAN_DIAN = "LianDian";
...@@ -715,10 +716,13 @@ public class DataCache{ ...@@ -715,10 +716,13 @@ public class DataCache{
//出库 //出库
amount = - barcode.getAmount(); amount = - barcode.getAmount();
storage.emptyOnePos(pos); storage.emptyOnePos(pos);
removeUsedPosNameList(cid, pos.getPosName());
}else{ }else{
//入库 //入库
amount = barcode.getAmount(); amount = barcode.getAmount();
storage.useOnePos(pos); storage.useOnePos(pos);
addUsedPosNameList(cid, pos.getPosName());
} }
allStorage.put(cid, storage); allStorage.put(cid, storage);
return updateInventoryAmount(cid,partNumber,amount); return updateInventoryAmount(cid,partNumber,amount);
...@@ -744,4 +748,89 @@ public class DataCache{ ...@@ -744,4 +748,89 @@ public class DataCache{
return allBoxMap; return allBoxMap;
} }
/**
* 库位占用Map, key为cid,value为已使用的库位列表
*/
private static Map<String, List<String>> usedPosNameMap = new ConcurrentHashMap<>();
/**
* 出库时清除使用库位列表
*/
private void removeUsedPosNameList(String cid, String posName) {
List<String> usedPosNameList = getUsedPosNameList(cid);
usedPosNameList.remove(posName);
usedPosNameMap.put(cid, usedPosNameList);
}
/**
* 入库时增加使用库位列表
*/
private void addUsedPosNameList(String cid, String posName) {
List<String> usedPosNameList = getUsedPosNameList(cid);
usedPosNameList.add(posName);
usedPosNameMap.put(cid, usedPosNameList);
}
/**
* 获取设备所有占用的库位名称列表
*/
public synchronized List<String> getUsedPosNameList(String cid) {
if(cid == null || cid.isEmpty()){
return new ArrayList<>();
}
List<String> posNameList = usedPosNameMap.get(cid);
if (posNameList == null) {
Storage storage = getStorage(cid);
posNameList = new ArrayList<>();
if (storage != null) {
log.info("加载[" + cid + "]所有已使用库位到缓存");
List<StoragePos> allPos = storagePosManager.findNotEmptyByStorageId(storage.getId());
for (StoragePos pos : allPos) {
posNameList.add(pos.getPosName());
}
usedPosNameMap.put(cid, posNameList);
}
}
return posNameList;
}
/**
* 禁用库位名称列表
*/
private static Set<String> disabledPosNameSet;
/**
* 获取禁用库位缓存
*/
public Set<String> getDisabledPosNameSet(){
initDisabledPosNameSet();
return disabledPosNameSet;
}
/**
* 初始化禁用库位缓存
*/
private synchronized void initDisabledPosNameSet(){
if(disabledPosNameSet == null){
disabledPosNameSet = new HashSet<>();
List<StoragePos> disabledPosList = storagePosManager.findDisabled();
for (StoragePos disabledPos : disabledPosList) {
disabledPosNameSet.add(disabledPos.getPosName());
}
log.info("加载禁用库位缓存,共" + disabledPosNameSet.size() + "个");
}
}
/**
* 更新禁用库位缓存
*/
public void updateDisablePos(StoragePos pos){
initDisabledPosNameSet();
if(pos.isEnabled()){
disabledPosNameSet.remove(pos.getPosName());
}else{
disabledPosNameSet.add(pos.getPosName());
}
}
} }
...@@ -75,4 +75,9 @@ public interface ITaskService { ...@@ -75,4 +75,9 @@ public interface ITaskService {
void addTaskToFinished(StoragePos pos, Barcode barcode, String opUser); void addTaskToFinished(StoragePos pos, Barcode barcode, String opUser);
void addTaskToExecute(DataLog task); void addTaskToExecute(DataLog task);
//入仓位完成
void putInFinished(DataLog task) throws ValidateException;
void checkoutFinished(DataLog task) throws ValidateException;
} }
...@@ -1699,6 +1699,7 @@ public class TaskService implements ITaskService { ...@@ -1699,6 +1699,7 @@ public class TaskService implements ITaskService {
//入仓位完成 //入仓位完成
@Override
public void putInFinished(DataLog task) throws ValidateException { public void putInFinished(DataLog task) throws ValidateException {
//从队列里面移除操作 //从队列里面移除操作
...@@ -1810,6 +1811,7 @@ public class TaskService implements ITaskService { ...@@ -1810,6 +1811,7 @@ public class TaskService implements ITaskService {
/** /**
* 出库完成 * 出库完成
*/ */
@Override
public void checkoutFinished(DataLog task) throws ValidateException { public void checkoutFinished(DataLog task) throws ValidateException {
//从队列里面移除操作 //从队列里面移除操作
......
...@@ -168,7 +168,7 @@ ...@@ -168,7 +168,7 @@
<c:set var="detailUrl" value="${ctx}/cabinet/${storage.cid}"/> <c:set var="detailUrl" value="${ctx}/cabinet/${storage.cid}"/>
</c:if> </c:if>
<c:if test="${storage.shelf}"> <c:if test="${storage.shelf}">
<c:set var="detailUrl" value="${ctx}/storage/shelf/${storage.cid}"/> <c:set var="detailUrl" value="${ctx}/storage/nlp/${storage.cid}"/>
</c:if> </c:if>
<c:if test="${storage.accShelf}"> <c:if test="${storage.accShelf}">
<c:set var="detailUrl" value="${ctx}/storage/accShelf/${storage.cid}"/> <c:set var="detailUrl" value="${ctx}/storage/accShelf/${storage.cid}"/>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!