Commit 112657c3 LN

1

1 个父辈 db2e662c
...@@ -60,6 +60,13 @@ public class LiteOrderCache { ...@@ -60,6 +60,13 @@ public class LiteOrderCache {
@Autowired @Autowired
private SmfApi smfApi; private SmfApi smfApi;
//最大工单数
public int MaxOrderCount=1;
public boolean SingleOrderMode(){
return MaxOrderCount==1;
}
/** /**
* 正在执行的liteOrderMap, key 为orderNo,value 为order * 正在执行的liteOrderMap, key 为orderNo,value 为order
*/ */
......
package com.neotel.smfcore.custom.hanwha.controller; package com.neotel.smfcore.custom.hanwha.controller;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.bean.ResultBean; import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.core.order.LiteOrderCache;
import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.custom.hanwha.handler.TMSApis; import com.neotel.smfcore.custom.hanwha.handler.TMSApis;
import com.neotel.smfcore.custom.hanwha.handler.bean.TMSPart; import com.neotel.smfcore.custom.hanwha.handler.bean.TMSPart;
import com.neotel.smfcore.security.annotation.AnonymousAccess; import com.neotel.smfcore.security.annotation.AnonymousAccess;
...@@ -26,6 +30,10 @@ public class HanwhaController { ...@@ -26,6 +30,10 @@ public class HanwhaController {
@Autowired @Autowired
private TMSApis apis; private TMSApis apis;
@Autowired
private LiteOrderCache liteOrderCache;
@ApiOperation("requestGetPartInfo") @ApiOperation("requestGetPartInfo")
@GetMapping("/requestGetPartInfo") @GetMapping("/requestGetPartInfo")
@AnonymousAccess @AnonymousAccess
...@@ -34,4 +42,18 @@ public class HanwhaController { ...@@ -34,4 +42,18 @@ public class HanwhaController {
List<TMSPart> result= apis.RequestGetPartInfo(0,barcode); List<TMSPart> result= apis.RequestGetPartInfo(0,barcode);
return ResultBean.newOkResult(result); return ResultBean.newOkResult(result);
} }
@ApiOperation("更新最大工单数")
@GetMapping("/UpdateOrderMode")
@AnonymousAccess
public ResultBean UpdateOrderMode(@RequestParam Integer maxOrderCount) {
if(ObjectUtil.isEmpty(maxOrderCount)){
return ResultBean.newErrorResult(-1,"Error","Error");
}
liteOrderCache.MaxOrderCount=maxOrderCount;
log.info("UpdateOrderMode 设置 liteOrderCache.MaxOrderCount="+liteOrderCache.MaxOrderCount);
return ResultBean.newOkResult(maxOrderCount);
}
} }
...@@ -686,26 +686,27 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -686,26 +686,27 @@ public class TMSCommunicator implements WsMsgReceivedListener {
if (ObjectUtil.isNotEmpty(shortValue) && shortValue.equals("true")) { if (ObjectUtil.isNotEmpty(shortValue) && shortValue.equals("true")) {
//查找库存中是否有此物料,如果数量不足返回2003,否则返回2002 //查找库存中是否有此物料,如果数量不足返回2003,否则返回2002
List<InventoryItem> itmes = dataCache.getInventoryByPN(item.getPn()); TMSPart p=tmsUtil.GetPnTMSPart(requestCmd,parts,item);
TMSPart p; // List<InventoryItem> itmes = dataCache.getInventoryByPN(item.getPn());
if (itmes.size() > 0) { // TMSPart p;
//如果是有库存但是库存不足,发送2003 // if (itmes.size() > 0) {
p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2001, "", ""); // //如果是有库存但是库存不足,发送2003
log.info(requestCmd+" pn=" + item.getPn() + ",出库失败缺料,库存不足:code=" + TMS_Code.CODE_2001); // p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2001, "", "");
} else { // log.info(requestCmd+" pn=" + item.getPn() + ",出库失败缺料,库存不足:code=" + TMS_Code.CODE_2001);
// } else {
//判断pn是否存在,存在返回2002,否则返回2003 //
Component component=componentManager.findOneByPN(item.getPn()); // //判断pn是否存在,存在返回2002,否则返回2003
if(component==null){ // Component component=componentManager.findOneByPN(item.getPn());
//pn不存在,返回2003 // if(component==null){
p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2003, "", ""); // //pn不存在,返回2003
log.info(requestCmd+" pn=" + item.getPn() + ",出库失败缺料,PN不存在:code=" + TMS_Code.CODE_2003); // p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2003, "", "");
}else { // log.info(requestCmd+" pn=" + item.getPn() + ",出库失败缺料,PN不存在:code=" + TMS_Code.CODE_2003);
//库存无此物料,发送2002 // }else {
p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2002, "", ""); // //库存无此物料,发送2002
log.info(requestCmd+" pn=" + item.getPn() + ",出库失败缺料,库存无此料:code=" + TMS_Code.CODE_2002); // p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2002, "", "");
} // log.info(requestCmd+" pn=" + item.getPn() + ",出库失败缺料,库存无此料:code=" + TMS_Code.CODE_2002);
} // }
// }
parts.add(p); parts.add(p);
} else { } else {
TMSPart p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2010, "", ""); TMSPart p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2010, "", "");
...@@ -978,11 +979,11 @@ public class TMSCommunicator implements WsMsgReceivedListener { ...@@ -978,11 +979,11 @@ public class TMSCommunicator implements WsMsgReceivedListener {
} }
StoragePos pos = storagePosManager.getByPosName(posName); StoragePos pos = storagePosManager.getByPosName(posName);
if (pos == null) { if (pos == null) {
log.info("RequestDeliveryOrderByLocation : cid=" + cid + ", pos=" + posName + ",未找到库位号,出库结果:code=" + TMS_Code.CODE_2002); log.info("RequestDeliveryOrderByLocation : cid=" + cid + ", pos=" + posName + ",未找到库位号,出库结果:code=" + TMS_Code.CODE_2003);
posResultMap.put(posName, TMS_Code.CODE_2002); posResultMap.put(posName, TMS_Code.CODE_2003);
} else if (pos.getBarcode() == null) { } else if (pos.getBarcode() == null) {
log.info("RequestDeliveryOrderByLocation : cid=" + cid + ", pos=" + posName + ",库位为空,出库失败,结果:code=" + TMS_Code.CODE_2002); log.info("RequestDeliveryOrderByLocation : cid=" + cid + ", pos=" + posName + ",库位为空,出库失败,结果:code=" + TMS_Code.CODE_2003);
posResultMap.put(posName, TMS_Code.CODE_2002); posResultMap.put(posName, TMS_Code.CODE_2003);
} else { } else {
posResultMap.put(posName, TMS_Code.CODE_1011); //默认是开始送货时失败 posResultMap.put(posName, TMS_Code.CODE_1011); //默认是开始送货时失败
......
...@@ -135,21 +135,21 @@ public class TMSUtil { ...@@ -135,21 +135,21 @@ public class TMSUtil {
} }
if(autoOut){ if(autoOut){
//判断是否有已执行的工单,有的话创建失败 if(HasExeOrder()){
Query query = new Query(Criteria.where("status").ne(LITEORDER_STATUS.CLOSED).ne(LITEORDER_STATUS.NEW)); log.info(requestCmd + ": 有正在执行的工单,创建工单失败");
List<LiteOrder> orderList = liteOrderManager.findByQuery(query);
List<LiteOrder> orders=new ArrayList<>();
for (LiteOrder order:orderList
) {
if (order.isNew()) {
continue;
}
orders.add(order);
}
if (orders.size() > 0) {
log.info(requestCmd + ": 当前有未关闭的工单" + orderList.size() + ",创建工单失败");
return null; return null;
} }
// //判断是否有已执行的工单,有的话创建失败
// Query query = new Query(Criteria.where("status").ne(LITEORDER_STATUS.CLOSED).ne(LITEORDER_STATUS.NEW));
// List<LiteOrder> orderList = liteOrderManager.findByQuery(query);
// if(liteOrderCache.SingleOrderMode()){
// if (orderList.size() > 0) {
// log.info(requestCmd + ": 当前有未关闭的工单" + orderList.size() + ",创建工单失败");
// return null;
// }
// }else{
// log.info(requestCmd + ": 多工单模式,当前执行工单数:" + orderList.size() + ",继续创建工单");
// }
}else{ }else{
} }
...@@ -186,6 +186,39 @@ public class TMSUtil { ...@@ -186,6 +186,39 @@ public class TMSUtil {
return liteOrder; return liteOrder;
} }
public TMSPart GetPnTMSPart(String requestCmd,List<TMSPart> parts, LiteOrderItem item){
List<InventoryItem> items = dataCache.getInventoryByPN(item.getPn());
TMSPart p;
if (items.size() > 0 ) {
//如果库存的料都是已锁定的,需要返回2003 .已锁定的需要更新缓存
InventoryItem inventoryItem=items.get(0);
if(inventoryItem.getLockReel()>=inventoryItem.getStockReel()) {
//如果是有库存但是库存不足,发送2001
p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2003, "", "");
log.info(requestCmd + " pn=" + item.getPn() + ",出库失败缺料,库存不足:code=" + TMS_Code.CODE_2003);
}
else {
//如果是有库存但是库存不足,发送2001
p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2001, "", "");
log.info(requestCmd + " pn=" + item.getPn() + ",出库失败缺料,库存不足:code=" + TMS_Code.CODE_2001);
}
} else {
//判断pn是否存在,存在返回2002,否则返回2003
Component component = componentManager.findOneByPN(item.getPn());
if (component == null) {
//pn不存在,返回2002
p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2002, "", "");
log.info(requestCmd + " pn=" + item.getPn() + ",出库失败缺料,PN不存在:code=" + TMS_Code.CODE_2002);
} else {
//库存无此物料,发送2003
p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2003, "", "");
log.info(requestCmd + " pn=" + item.getPn() + ",出库失败缺料,库存无此料:code=" + TMS_Code.CODE_2003);
}
}
return p;
}
public List<TMSPart> GetReserveList(String requestCmd, LiteOrder liteOrder) { public List<TMSPart> GetReserveList(String requestCmd, LiteOrder liteOrder) {
List<StoragePos> lockPosList = storagePosManager.findLockPos(liteOrder.getOrderNo()); List<StoragePos> lockPosList = storagePosManager.findLockPos(liteOrder.getOrderNo());
...@@ -217,36 +250,36 @@ public class TMSUtil { ...@@ -217,36 +250,36 @@ public class TMSUtil {
//预留失败 //预留失败
List<InventoryItem> items = dataCache.getInventoryByPN(item.getPn()); // List<InventoryItem> items = dataCache.getInventoryByPN(item.getPn());
TMSPart p; TMSPart p=GetPnTMSPart(requestCmd,parts,item);
if (items.size() > 0 ) { // if (items.size() > 0 ) {
//
//如果库存的料都是已锁定的,需要返回2003 .已锁定的需要更新缓存 // //如果库存的料都是已锁定的,需要返回2003 .已锁定的需要更新缓存
InventoryItem inventoryItem=items.get(0); // InventoryItem inventoryItem=items.get(0);
if(inventoryItem.getLockReel()>=inventoryItem.getStockReel()) { // if(inventoryItem.getLockReel()>=inventoryItem.getStockReel()) {
//如果是有库存但是库存不足,发送2001 // //如果是有库存但是库存不足,发送2001
p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2003, "", ""); // p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2003, "", "");
log.info(requestCmd + " pn=" + item.getPn() + ",出库失败缺料,库存不足:code=" + TMS_Code.CODE_2003); // log.info(requestCmd + " pn=" + item.getPn() + ",出库失败缺料,库存不足:code=" + TMS_Code.CODE_2003);
} // }
else { // else {
//如果是有库存但是库存不足,发送2001 // //如果是有库存但是库存不足,发送2001
p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2001, "", ""); // p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2001, "", "");
log.info(requestCmd + " pn=" + item.getPn() + ",出库失败缺料,库存不足:code=" + TMS_Code.CODE_2001); // log.info(requestCmd + " pn=" + item.getPn() + ",出库失败缺料,库存不足:code=" + TMS_Code.CODE_2001);
} // }
} else { // } else {
//
//判断pn是否存在,存在返回2002,否则返回2003 // //判断pn是否存在,存在返回2002,否则返回2003
Component component = componentManager.findOneByPN(item.getPn()); // Component component = componentManager.findOneByPN(item.getPn());
if (component == null) { // if (component == null) {
//pn不存在,返回2002 // //pn不存在,返回2002
p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2002, "", ""); // p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2002, "", "");
log.info(requestCmd + " pn=" + item.getPn() + ",出库失败缺料,PN不存在:code=" + TMS_Code.CODE_2002); // log.info(requestCmd + " pn=" + item.getPn() + ",出库失败缺料,PN不存在:code=" + TMS_Code.CODE_2002);
} else { // } else {
//库存无此物料,发送2003 // //库存无此物料,发送2003
p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2003, "", ""); // p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2003, "", "");
log.info(requestCmd + " pn=" + item.getPn() + ",出库失败缺料,库存无此料:code=" + TMS_Code.CODE_2003); // log.info(requestCmd + " pn=" + item.getPn() + ",出库失败缺料,库存无此料:code=" + TMS_Code.CODE_2003);
} // }
} // }
parts.add(p); parts.add(p);
} }
...@@ -258,6 +291,18 @@ public class TMSUtil { ...@@ -258,6 +291,18 @@ public class TMSUtil {
return parts; return parts;
} }
public boolean HasExeOrder(){
if(liteOrderCache.SingleOrderMode()){
Query query = new Query(Criteria.where("status").ne(LITEORDER_STATUS.CLOSED).ne(LITEORDER_STATUS.NEW));
List<LiteOrder> orderList = liteOrderManager.findByQuery(query);
if (orderList.size() > 0) {
log.info( " 有正在执行的工单" + orderList.size() + "");
return true;
}
}
return false;
}
public TMSReserve ProcessOrder(String reserveCode, String resultCode) { public TMSReserve ProcessOrder(String reserveCode, String resultCode) {
TMSReserve tmsReserve = new TMSReserve(); TMSReserve tmsReserve = new TMSReserve();
tmsReserve.setReserveCode(reserveCode); tmsReserve.setReserveCode(reserveCode);
...@@ -335,7 +380,13 @@ public class TMSUtil { ...@@ -335,7 +380,13 @@ public class TMSUtil {
LiteOrder order = liteOrderCache.getLiteOrder(reserveCode); LiteOrder order = liteOrderCache.getLiteOrder(reserveCode);
if (order != null) { if (order != null) {
log.error("ProcessOrder 工单开始出库:" + reserveCode + ""); log.error("ProcessOrder 工单开始出库:" + reserveCode + "");
//工单出库
if (HasExeOrder()) {
log.info("ProcessOrder: 当前有未关闭的工单 ,工单出库失败");
tmsParts = GetReserveList("ProcessOrder", order);
} else { //工单出库
liteOrderCache.checkOutLiteOrder(order.getOrderNo(), false, false, true); liteOrderCache.checkOutLiteOrder(order.getOrderNo(), false, false, true);
//查找工单的所有任务 //查找工单的所有任务
...@@ -353,6 +404,7 @@ public class TMSUtil { ...@@ -353,6 +404,7 @@ public class TMSUtil {
tmsParts.add(part); tmsParts.add(part);
} }
} }
}
} else { } else {
log.error("ProcessOrder 未找到工单号:" + reserveCode); log.error("ProcessOrder 未找到工单号:" + reserveCode);
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!