Commit 0a0627a0 zshaohui

1.差异料功能提交

2.工单出库优先挑任务少的仓
1 个父辈 dc37a63d
......@@ -495,7 +495,12 @@ public class LiteOrderCache {
if (StringUtils.isNotBlank(export)){
exportStr = export;
} else {
exportStr = StorageExportUtil.getExportByOrderNo(cacheOrder.getOrderNo(),true,cacheOrder.isMaiZheng());
if (!cacheOrder.isDifferenceReq()) {
exportStr = StorageExportUtil.getExportByOrderNo(cacheOrder.getOrderNo(), true, cacheOrder.isMaiZheng());
} else {
log.info(cacheOrder.getOrderNo()+"为ng料,出料口为ng");
exportStr = "ng";
}
}
if (StringUtils.isBlank(exportStr)) {
//log.info(cacheOrder.getOrderNo() + "没有空闲的出料口");
......@@ -533,6 +538,26 @@ public class LiteOrderCache {
//List<LiteOrderItem> orderItems = liteOrderItemManager.findOrderItems(cacheOrder.getId());
for (LiteOrderItem orderItem : cacheOrder.getOrderItems()) {
List<String> fewTasksStorageIdList = new ArrayList<>(); //任务少的id
for (String availableStorageId : availableStorageIds) {
Storage storage = dataCache.getStorageById(availableStorageId);
if (!storage.isVirtual()) {
int taskCount = 0;
for (DataLog task : taskService.getAllTasks()) {
if (task.isCheckOutTask() && availableStorageId.equals(task.getStorageId())) {
if (!task.isFinished() && !task.isCancel()) {
taskCount++;
}
}
}
log.info("[{}]的任务数量为[{}],ID为[{}]", storage.getName(), taskCount,availableStorageId);
if (taskCount < 10) {
fewTasksStorageIdList.add(availableStorageId);
}
}
}
Collection<String> excludePosIds = excludeOutPosIds();
//如果已出数量大于已出盘数,则跳过
......@@ -575,7 +600,15 @@ public class LiteOrderCache {
//PN
do {
for (String pn : partNumberSpl) {
pos = storagePosManager.findPartNumberInStorages(storageIdList, pn, excludePosIds, checkoutType, orderItem.getBrand());
//先从数量少的,去挑
if (fewTasksStorageIdList != null && !fewTasksStorageIdList.isEmpty()) {
log.info("先从任务数量少的料仓,去挑,partNumber为[{}],工单号为[{}]",pn,orderNo);
pos = storagePosManager.findPartNumberInStorages(fewTasksStorageIdList, pn, excludePosIds, checkoutType, orderItem.getBrand());
}
if (pos == null) {
log.info("从任务数量少的料仓未找到出库的物料,从全部料仓中去挑的料仓,去挑,partNumber为[{}],工单号为[{}]",pn,orderNo);
pos = storagePosManager.findPartNumberInStorages(storageIdList, pn, excludePosIds, checkoutType, orderItem.getBrand());
}
if (pos != null){
break;
}
......@@ -647,6 +680,7 @@ public class LiteOrderCache {
task.setModel(orderItem.getModel());
task.setMo(orderItem.getMo());
task.setMaiZhengOrder(cacheOrder.isMaiZheng());
task.setDifferenceReq(cacheOrder.isDifferenceReq());
//先调用tower发料
String result = lizhenApi.towerCheck(task);
......
......@@ -172,7 +172,7 @@ public class LiteOrder extends BasePo implements Serializable {
private String count;
private String startTime;
private boolean differenceReq = false;
public void setClosed(boolean value){
this.closed=value;
......
......@@ -385,6 +385,10 @@ public class DataLog extends BasePo implements Serializable {
private boolean maiZhengOrder = false;
private boolean differenceReq = false;
public String getBarcode() {
if(barcode == null){
return "";
......
......@@ -264,7 +264,7 @@ public class InnerBoxRestController {
//String export = StorageExportUtil.getExportByOrderNo(sourceName,false);
//判断是否禁用了
String exportStr = dataLog.getExport();
if (StringUtils.isNotBlank(exportStr)) {
if (StringUtils.isNotBlank(exportStr) && !dataLog.isDifferenceReq()) {
StorageExport export = StorageExportUtil.getExport(exportStr);
if (export.isDisable()) {
log.info(exportStr + "出料口被禁用");
......
......@@ -2,10 +2,12 @@ package com.neotel.smfcore.custom.lizhen.wcs;
import com.alibaba.fastjson.JSONObject;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.order.LiteOrderCache;
import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager;
import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import com.neotel.smfcore.custom.lizhen.wcs.bean.DifferentMaterial;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
......@@ -32,18 +34,24 @@ public class DifferenceReelController {
@ApiOperation("工单差异料上传")
@RequestMapping("/api/Mes/differenceReel")
@AnonymousAccess
public ResultBean differenceReel(@RequestBody List<Map<String, String>> paramList) {
log.info("收到mes的差异料数据为:" + JSONObject.toJSONString(paramList));
public synchronized String differenceReel(@RequestBody List<DifferentMaterial> differentMaterialList) {
log.info("收到mes的差异料数据为:" + JSONObject.toJSONString(differentMaterialList));
List<LiteOrderItem> itemList = new ArrayList<>();
for (Map<String, String> paramMap : paramList) {
String mo = paramMap.get("mo");
String mc = paramMap.get("mc");
String ipn = paramMap.get("ipn");
String zone = paramMap.get("zone");
String gidLineSide = paramMap.get("gidLineSide");
for (DifferentMaterial differentMaterial : differentMaterialList) {
String mo = differentMaterial.getMo();
String mc = differentMaterial.getMc();
String ipn = differentMaterial.getIpn();
if (StringUtils.isEmpty(ipn)){
continue;
}
String zone = differentMaterial.getZone();
String gidLineSide = differentMaterial.getGidLineSide();
String[] gidLineSideS = gidLineSide.split("_");
if (gidLineSideS.length < 3){
return gidLineSide+"格式不正确";
}
String line = gidLineSideS[0];
String side = gidLineSideS[2];
......@@ -57,7 +65,6 @@ public class DifferenceReelController {
item.setSide(side);
item.setNeedNum(1);
item.setNeedReelCount(1);
//item.setDifferenceReq(true);
itemList.add(item);
}
......@@ -70,12 +77,13 @@ public class DifferenceReelController {
liteOrder.setLine(line);
liteOrder.setTotalTaskReelCount(item.size());
liteOrder.setOrderItems(item);
liteOrder.setDifferenceReq(true);
liteOrder = liteOrderManager.createWithItems(liteOrder);
liteOrderCache.addOrderToMap(liteOrder);
}
}
return ResultBean.newOkResult("");
return "";
}
......
package com.neotel.smfcore.custom.lizhen.wcs.bean;
import lombok.Data;
@Data
public class DifferentMaterial {
/**
* wo;//工单
* mc;//机台
* ipn;//物料
* zone;//站位
* gidLineSide;//线_Line_面
*/
private String mo;
private String mc;
private String ipn;
private String zone;
private String gidLineSide;
/*
[
{
"wo": "030000248583",
"mc": "NPM-2",
"ipn": "377S00070",
"zone": "1-07-L",
"gidLineSide": "A05-5FRF-01_1A_B"
},
{
"wo": "030000248583",
"mc": "NPM-2",
"ipn": "117S00069$YA0A01B5",
"zone": "1-08-L",
"gidLineSide": "A05-5FRF-01_1A_B"
},
{
"wo": "030000248583",
"mc": "NPM-2",
"ipn": "N/A",
"zone": "1-10",
"gidLineSide": "A05-5FRF-01_1B_T"
}
]
*/
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!