Commit 112657c3 LN

1

1 个父辈 db2e662c
......@@ -60,6 +60,13 @@ public class LiteOrderCache {
@Autowired
private SmfApi smfApi;
//最大工单数
public int MaxOrderCount=1;
public boolean SingleOrderMode(){
return MaxOrderCount==1;
}
/**
* 正在执行的liteOrderMap, key 为orderNo,value 为order
*/
......
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.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.bean.TMSPart;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
......@@ -26,6 +30,10 @@ public class HanwhaController {
@Autowired
private TMSApis apis;
@Autowired
private LiteOrderCache liteOrderCache;
@ApiOperation("requestGetPartInfo")
@GetMapping("/requestGetPartInfo")
@AnonymousAccess
......@@ -34,4 +42,18 @@ public class HanwhaController {
List<TMSPart> result= apis.RequestGetPartInfo(0,barcode);
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 {
if (ObjectUtil.isNotEmpty(shortValue) && shortValue.equals("true")) {
//查找库存中是否有此物料,如果数量不足返回2003,否则返回2002
List<InventoryItem> itmes = dataCache.getInventoryByPN(item.getPn());
TMSPart p;
if (itmes.size() > 0) {
//如果是有库存但是库存不足,发送2003
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不存在,返回2003
p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2003, "", "");
log.info(requestCmd+" pn=" + item.getPn() + ",出库失败缺料,PN不存在:code=" + TMS_Code.CODE_2003);
}else {
//库存无此物料,发送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);
}
}
TMSPart p=tmsUtil.GetPnTMSPart(requestCmd,parts,item);
// List<InventoryItem> itmes = dataCache.getInventoryByPN(item.getPn());
// TMSPart p;
// if (itmes.size() > 0) {
// //如果是有库存但是库存不足,发送2003
// 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不存在,返回2003
// p = TMSPart.newBean(parts.size(), item.getPn(), "", item.getNeedNum(), item.getOutNum(), TMS_Code.CODE_2003, "", "");
// log.info(requestCmd+" pn=" + item.getPn() + ",出库失败缺料,PN不存在:code=" + TMS_Code.CODE_2003);
// }else {
// //库存无此物料,发送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);
} else {
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 {
}
StoragePos pos = storagePosManager.getByPosName(posName);
if (pos == null) {
log.info("RequestDeliveryOrderByLocation : cid=" + cid + ", pos=" + posName + ",未找到库位号,出库结果:code=" + TMS_Code.CODE_2002);
posResultMap.put(posName, TMS_Code.CODE_2002);
log.info("RequestDeliveryOrderByLocation : cid=" + cid + ", pos=" + posName + ",未找到库位号,出库结果:code=" + TMS_Code.CODE_2003);
posResultMap.put(posName, TMS_Code.CODE_2003);
} else if (pos.getBarcode() == null) {
log.info("RequestDeliveryOrderByLocation : cid=" + cid + ", pos=" + posName + ",库位为空,出库失败,结果:code=" + TMS_Code.CODE_2002);
posResultMap.put(posName, TMS_Code.CODE_2002);
log.info("RequestDeliveryOrderByLocation : cid=" + cid + ", pos=" + posName + ",库位为空,出库失败,结果:code=" + TMS_Code.CODE_2003);
posResultMap.put(posName, TMS_Code.CODE_2003);
} else {
posResultMap.put(posName, TMS_Code.CODE_1011); //默认是开始送货时失败
......
......@@ -135,21 +135,21 @@ public class TMSUtil {
}
if(autoOut){
//判断是否有已执行的工单,有的话创建失败
Query query = new Query(Criteria.where("status").ne(LITEORDER_STATUS.CLOSED).ne(LITEORDER_STATUS.NEW));
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() + ",创建工单失败");
if(HasExeOrder()){
log.info(requestCmd + ": 有正在执行的工单,创建工单失败");
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{
}
......@@ -186,6 +186,39 @@ public class TMSUtil {
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) {
List<StoragePos> lockPosList = storagePosManager.findLockPos(liteOrder.getOrderNo());
......@@ -217,36 +250,36 @@ public class TMSUtil {
//预留失败
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);
}
}
// List<InventoryItem> items = dataCache.getInventoryByPN(item.getPn());
TMSPart p=GetPnTMSPart(requestCmd,parts,item);
// 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);
// }
// }
parts.add(p);
}
......@@ -258,6 +291,18 @@ public class TMSUtil {
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) {
TMSReserve tmsReserve = new TMSReserve();
tmsReserve.setReserveCode(reserveCode);
......@@ -335,7 +380,13 @@ public class TMSUtil {
LiteOrder order = liteOrderCache.getLiteOrder(reserveCode);
if (order != null) {
log.error("ProcessOrder 工单开始出库:" + reserveCode + "");
//工单出库
if (HasExeOrder()) {
log.info("ProcessOrder: 当前有未关闭的工单 ,工单出库失败");
tmsParts = GetReserveList("ProcessOrder", order);
} else { //工单出库
liteOrderCache.checkOutLiteOrder(order.getOrderNo(), false, false, true);
//查找工单的所有任务
......@@ -353,6 +404,7 @@ public class TMSUtil {
tmsParts.add(part);
}
}
}
} else {
log.error("ProcessOrder 未找到工单号:" + reserveCode);
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!