Commit 0a0627a0 zshaohui

1.差异料功能提交

2.工单出库优先挑任务少的仓
1 个父辈 dc37a63d
...@@ -495,7 +495,12 @@ public class LiteOrderCache { ...@@ -495,7 +495,12 @@ public class LiteOrderCache {
if (StringUtils.isNotBlank(export)){ if (StringUtils.isNotBlank(export)){
exportStr = export; exportStr = export;
} else { } 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)) { if (StringUtils.isBlank(exportStr)) {
//log.info(cacheOrder.getOrderNo() + "没有空闲的出料口"); //log.info(cacheOrder.getOrderNo() + "没有空闲的出料口");
...@@ -533,6 +538,26 @@ public class LiteOrderCache { ...@@ -533,6 +538,26 @@ public class LiteOrderCache {
//List<LiteOrderItem> orderItems = liteOrderItemManager.findOrderItems(cacheOrder.getId()); //List<LiteOrderItem> orderItems = liteOrderItemManager.findOrderItems(cacheOrder.getId());
for (LiteOrderItem orderItem : cacheOrder.getOrderItems()) { 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(); Collection<String> excludePosIds = excludeOutPosIds();
//如果已出数量大于已出盘数,则跳过 //如果已出数量大于已出盘数,则跳过
...@@ -575,7 +600,15 @@ public class LiteOrderCache { ...@@ -575,7 +600,15 @@ public class LiteOrderCache {
//PN //PN
do { do {
for (String pn : partNumberSpl) { 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){ if (pos != null){
break; break;
} }
...@@ -647,6 +680,7 @@ public class LiteOrderCache { ...@@ -647,6 +680,7 @@ public class LiteOrderCache {
task.setModel(orderItem.getModel()); task.setModel(orderItem.getModel());
task.setMo(orderItem.getMo()); task.setMo(orderItem.getMo());
task.setMaiZhengOrder(cacheOrder.isMaiZheng()); task.setMaiZhengOrder(cacheOrder.isMaiZheng());
task.setDifferenceReq(cacheOrder.isDifferenceReq());
//先调用tower发料 //先调用tower发料
String result = lizhenApi.towerCheck(task); String result = lizhenApi.towerCheck(task);
......
...@@ -172,7 +172,7 @@ public class LiteOrder extends BasePo implements Serializable { ...@@ -172,7 +172,7 @@ public class LiteOrder extends BasePo implements Serializable {
private String count; private String count;
private String startTime; private String startTime;
private boolean differenceReq = false;
public void setClosed(boolean value){ public void setClosed(boolean value){
this.closed=value; this.closed=value;
......
...@@ -385,6 +385,10 @@ public class DataLog extends BasePo implements Serializable { ...@@ -385,6 +385,10 @@ public class DataLog extends BasePo implements Serializable {
private boolean maiZhengOrder = false; private boolean maiZhengOrder = false;
private boolean differenceReq = false;
public String getBarcode() { public String getBarcode() {
if(barcode == null){ if(barcode == null){
return ""; return "";
......
...@@ -264,7 +264,7 @@ public class InnerBoxRestController { ...@@ -264,7 +264,7 @@ public class InnerBoxRestController {
//String export = StorageExportUtil.getExportByOrderNo(sourceName,false); //String export = StorageExportUtil.getExportByOrderNo(sourceName,false);
//判断是否禁用了 //判断是否禁用了
String exportStr = dataLog.getExport(); String exportStr = dataLog.getExport();
if (StringUtils.isNotBlank(exportStr)) { if (StringUtils.isNotBlank(exportStr) && !dataLog.isDifferenceReq()) {
StorageExport export = StorageExportUtil.getExport(exportStr); StorageExport export = StorageExportUtil.getExport(exportStr);
if (export.isDisable()) { if (export.isDisable()) {
log.info(exportStr + "出料口被禁用"); log.info(exportStr + "出料口被禁用");
......
...@@ -2,10 +2,12 @@ package com.neotel.smfcore.custom.lizhen.wcs; ...@@ -2,10 +2,12 @@ package com.neotel.smfcore.custom.lizhen.wcs;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.neotel.smfcore.common.bean.ResultBean; 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.LiteOrderCache;
import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager; 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.LiteOrder;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem; 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 com.neotel.smfcore.security.annotation.AnonymousAccess;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -32,18 +34,24 @@ public class DifferenceReelController { ...@@ -32,18 +34,24 @@ public class DifferenceReelController {
@ApiOperation("工单差异料上传") @ApiOperation("工单差异料上传")
@RequestMapping("/api/Mes/differenceReel") @RequestMapping("/api/Mes/differenceReel")
@AnonymousAccess @AnonymousAccess
public ResultBean differenceReel(@RequestBody List<Map<String, String>> paramList) { public synchronized String differenceReel(@RequestBody List<DifferentMaterial> differentMaterialList) {
log.info("收到mes的差异料数据为:" + JSONObject.toJSONString(paramList)); log.info("收到mes的差异料数据为:" + JSONObject.toJSONString(differentMaterialList));
List<LiteOrderItem> itemList = new ArrayList<>(); List<LiteOrderItem> itemList = new ArrayList<>();
for (Map<String, String> paramMap : paramList) { for (DifferentMaterial differentMaterial : differentMaterialList) {
String mo = paramMap.get("mo"); String mo = differentMaterial.getMo();
String mc = paramMap.get("mc"); String mc = differentMaterial.getMc();
String ipn = paramMap.get("ipn"); String ipn = differentMaterial.getIpn();
String zone = paramMap.get("zone"); if (StringUtils.isEmpty(ipn)){
String gidLineSide = paramMap.get("gidLineSide"); continue;
}
String zone = differentMaterial.getZone();
String gidLineSide = differentMaterial.getGidLineSide();
String[] gidLineSideS = gidLineSide.split("_"); String[] gidLineSideS = gidLineSide.split("_");
if (gidLineSideS.length < 3){
return gidLineSide+"格式不正确";
}
String line = gidLineSideS[0]; String line = gidLineSideS[0];
String side = gidLineSideS[2]; String side = gidLineSideS[2];
...@@ -57,7 +65,6 @@ public class DifferenceReelController { ...@@ -57,7 +65,6 @@ public class DifferenceReelController {
item.setSide(side); item.setSide(side);
item.setNeedNum(1); item.setNeedNum(1);
item.setNeedReelCount(1); item.setNeedReelCount(1);
//item.setDifferenceReq(true);
itemList.add(item); itemList.add(item);
} }
...@@ -70,12 +77,13 @@ public class DifferenceReelController { ...@@ -70,12 +77,13 @@ public class DifferenceReelController {
liteOrder.setLine(line); liteOrder.setLine(line);
liteOrder.setTotalTaskReelCount(item.size()); liteOrder.setTotalTaskReelCount(item.size());
liteOrder.setOrderItems(item); liteOrder.setOrderItems(item);
liteOrder.setDifferenceReq(true);
liteOrder = liteOrderManager.createWithItems(liteOrder); liteOrder = liteOrderManager.createWithItems(liteOrder);
liteOrderCache.addOrderToMap(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!