Commit c4ac20cb zshaohui

1.回库导出

2.治具物料没有先出问题修改
3.切换下一个Feeder后,清除上一个Feeder数据
4.出料口页面,默认10001L-10015R,10016L-10030R从上到下全部显示,工单出库时,Feeder有物料的显示数据,无物料的只显示Feeder号,服务器无当前工单的物料,显示PN,Feeder号背景红色显示
1 个父辈 a1ab9dbe
...@@ -274,11 +274,19 @@ public class XLRBoxHandler extends BaseDeviceHandler { ...@@ -274,11 +274,19 @@ public class XLRBoxHandler extends BaseDeviceHandler {
String posName = task.getPosName(); String posName = task.getPosName();
if (!Strings.isNullOrEmpty(posName)) {//有库位号 if (!Strings.isNullOrEmpty(posName)) {//有库位号
Boolean isBox = task.getAppendData("isBox"); Boolean isBox = task.getAppendData("isBox");
if (isBox != null && isBox) { if (isBox == null){
isBox = false;
}
if (isBox) {
//单盘优先出库 //单盘优先出库
if (boxTask == null || task.getCreateDate().before(boxTask.getCreateDate())) { if (boxTask == null || task.getCreateDate().before(boxTask.getCreateDate())) {
boxTask = task; boxTask = task;
} }
} else {
String barcode = task.getBarcode();
if (barcode.startsWith("T0") && barcode.length() == 9){
boxTask = task;
}
} }
} }
} }
......
...@@ -932,6 +932,9 @@ public class LiteOrderCache { ...@@ -932,6 +932,9 @@ public class LiteOrderCache {
return "smfcore.order.noEmptyExport"; return "smfcore.order.noEmptyExport";
} }
log.info(orderNo + "获取到的出料口信息为:" + JSON.toJSONString(emptyExportList)); log.info(orderNo + "获取到的出料口信息为:" + JSON.toJSONString(emptyExportList));
log.info("开始加载出料口站位信息");
StorageExportUtil.feederInfoToExport(emptyExportList,orderNo);
log.info("开始执行工单[" + orderNo + "]"); log.info("开始执行工单[" + orderNo + "]");
cacheOrder.setTaskReelCount(0); cacheOrder.setTaskReelCount(0);
...@@ -972,18 +975,26 @@ public class LiteOrderCache { ...@@ -972,18 +975,26 @@ public class LiteOrderCache {
String partNumber = orderItem.getPn(); String partNumber = orderItem.getPn();
String feederInfo = orderItem.getFeederInfo(); String feederInfo = orderItem.getFeederInfo();
StoragePos pos = storagePosManager.findPartNumberInStorages(availableStorageIds, partNumber, excludePosIds, checkoutType);
if (pos == null) {
log.info(orderNo + "未找到可以出库的物料,料号为:" + partNumber + ",站位号为:" + feederInfo);
break;
}
countTask++;
//根据站位号,分配到不同出料口 //根据站位号,分配到不同出料口
String putInExport = StorageExportUtil.getPutInExport(emptyExportList, countTask > 1, feederInfo); String putInExport = StorageExportUtil.getPutInExport(emptyExportList, countTask > 1, feederInfo);
log.info("feeder为:" + feederInfo + ",工单号为:" + orderNo + ",获取到的出料口为:" + putInExport); log.info("feeder为:" + feederInfo + ",工单号为:" + orderNo + ",获取到的出料口为:" + putInExport);
if (StringUtils.isEmpty(putInExport)){ if (StringUtils.isEmpty(putInExport)){
break; break;
} }
StoragePos pos = storagePosManager.findPartNumberInStorages(availableStorageIds, partNumber, excludePosIds, checkoutType);
if (pos == null) {
log.info(orderNo + "未找到可以出库的物料,料号为:" + partNumber + ",站位号为:" + feederInfo);
//物料为空,同步更新出料口信息
if (countTask < 1) {
StorageExportUtil.updateExportByOrder(putInExport, "", feederInfo, orderNo, OP_STATUS.NONE.name(), partNumber, countTask > 1);
}
break;
}
countTask++;
//开始生成出库任务 //开始生成出库任务
Barcode barcode = pos.getBarcode(); Barcode barcode = pos.getBarcode();
//List<Barcode> subCodeList = barcode.getSubCodeList(); //List<Barcode> subCodeList = barcode.getSubCodeList();
...@@ -1019,8 +1030,6 @@ public class LiteOrderCache { ...@@ -1019,8 +1030,6 @@ public class LiteOrderCache {
+ "]是否为料盒[" + barcode.isBox() + "]是否为料盒[" + barcode.isBox()
); );
DataLog task = newTask(pos); DataLog task = newTask(pos);
task.setSourceId(cacheOrder.getId()); task.setSourceId(cacheOrder.getId());
task.setSourceName(cacheOrder.getOrderNo()); task.setSourceName(cacheOrder.getOrderNo());
...@@ -1036,12 +1045,12 @@ public class LiteOrderCache { ...@@ -1036,12 +1045,12 @@ public class LiteOrderCache {
if (barcode.isBox()) { if (barcode.isBox()) {
task.updateAppendData("isBox", true); task.updateAppendData("isBox", true);
} }
// task = dataLogDao.save(task); //先更新出料口,再更新任务
taskService.addTaskToExecute(task);
if (!barcode.isBox()) { if (!barcode.isBox()) {
log.info(barcode.getBarcode()+"为非料盒信息,需要更改出料口信息"); log.info(barcode.getBarcode()+"为非料盒信息,需要更改出料口信息");
StorageExportUtil.updateExportData(putInExport, barcode.getBarcode(), feederInfo, orderNo, task.getStatus(),task.getPartNumber()); StorageExportUtil.updateExportByOrder(putInExport, barcode.getBarcode(), feederInfo, orderNo, task.getStatus(),task.getPartNumber(),countTask>1);
} }
taskService.addTaskToExecute(task);
} }
} }
} }
......
...@@ -59,7 +59,7 @@ public class SolderBoxCache { ...@@ -59,7 +59,7 @@ public class SolderBoxCache {
private Map<String,List<StoragePos>> spTaskMap=new HashMap<>(); private Map<String,List<StoragePos>> spTaskMap=new HashMap<>();
@PostConstruct /* @PostConstruct
public void init(){ public void init(){
ExecutorService executorService = Executors.newSingleThreadExecutor(); ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.execute(new Runnable() { executorService.execute(new Runnable() {
...@@ -76,7 +76,7 @@ public class SolderBoxCache { ...@@ -76,7 +76,7 @@ public class SolderBoxCache {
} }
} }
}); });
} }*/
public void updateSpTasks(String storageId, List<StoragePos> taskPosList){ public void updateSpTasks(String storageId, List<StoragePos> taskPosList){
......
...@@ -175,7 +175,7 @@ public class TaskService { ...@@ -175,7 +175,7 @@ public class TaskService {
isBox = false; isBox = false;
} }
if (StringUtils.isNotEmpty(export) && !isBox) { if (StringUtils.isNotEmpty(export) && !isBox) {
StorageExportUtil.updateExportData(export, task.getBarcode(), task.getAppendData("feederInfo"), task.getSourceName(), task.getStatus(),task.getPartNumber()); StorageExportUtil.updateExportByTask(export, task.getBarcode(), task.getAppendData("feederInfo"), task.getSourceName(), task.getStatus(),task.getPartNumber());
} }
} }
} catch (Exception e){ } catch (Exception e){
......
...@@ -631,7 +631,7 @@ public class JkemController { ...@@ -631,7 +631,7 @@ public class JkemController {
if (detailList != null && !detailList.isEmpty()) { if (detailList != null && !detailList.isEmpty()) {
for (StorageExportOutDetail detail : detailList) { for (StorageExportOutDetail detail : detailList) {
String status = detail.getStatus(); String status = detail.getStatus();
if (!OP_STATUS.FINISHED.name().equals(status) && !OP_STATUS.CANCEL.name().equals(status)){ if (!OP_STATUS.FINISHED.name().equals(status) && !OP_STATUS.CANCEL.name().equals(status) && !OP_STATUS.NONE.name().equals(status)){
String feederInfo = detail.getFeederInfo(); String feederInfo = detail.getFeederInfo();
if (feederInfo.startsWith(feeder)){ if (feederInfo.startsWith(feeder)){
log.info(detail.getBarcode()+"站位号为:"+feederInfo+",对应的出料口为:"+export.getExportName()+",任务未结束"); log.info(detail.getBarcode()+"站位号为:"+feederInfo+",对应的出料口为:"+export.getExportName()+",任务未结束");
......
package com.neotel.smfcore.custom.Jkem21481.controller; package com.neotel.smfcore.custom.Jkem21481.controller;
import com.google.common.collect.Lists;
import com.neotel.smfcore.common.base.IExcelDownLoad;
import com.neotel.smfcore.common.bean.PageData; import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.QueryHelp; import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.custom.Jkem21481.bean.ReturnStorage; import com.neotel.smfcore.custom.Jkem21481.bean.ReturnStorage;
import com.neotel.smfcore.custom.Jkem21481.bean.query.ReturnStorageQueryCondition; import com.neotel.smfcore.custom.Jkem21481.bean.query.ReturnStorageQueryCondition;
import com.neotel.smfcore.custom.Jkem21481.manager.IReturnStorageManager; import com.neotel.smfcore.custom.Jkem21481.manager.IReturnStorageManager;
...@@ -15,6 +19,13 @@ import org.springframework.data.mongodb.core.query.Query; ...@@ -15,6 +19,13 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping("/returnStorage") @RequestMapping("/returnStorage")
...@@ -30,4 +41,49 @@ public class ReturnStorageController { ...@@ -30,4 +41,49 @@ public class ReturnStorageController {
Query query = QueryHelp.getQuery(queryCondition); Query query = QueryHelp.getQuery(queryCondition);
return returnStorageManager.findByPage(query, pageable); return returnStorageManager.findByPage(query, pageable);
} }
@ApiOperation("回库列表")
@RequestMapping("/list/download")
@AnonymousAccess
public void listDownload(ReturnStorageQueryCondition queryCondition, HttpServletResponse response, Pageable pageable, HttpServletRequest request) throws IOException {
Query query = QueryHelp.getQuery(queryCondition);
FileUtil.downloadExcel(query, pageable, response, new IExcelDownLoad() {
@Override
public List<List<String>> getHeader() {
List<List<String>> header = new ArrayList<>();
Locale locale = request.getLocale();
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.lockName",locale,"工单号")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.pn",locale,"PN")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.feederInfo",locale,"站位信息")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.needNum",locale,"需求数量")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.outNum",locale,"已出数量")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.ri",locale,"RI")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.outLet",locale,"出料口")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.messages.createDate", locale, "创建时间")));
return header;
}
@Override
public List<List<Object>> getPageData(Query query, Pageable pageable) {
List<List<Object>> dataList = new ArrayList<>();
List<ReturnStorage> returnStorageList = returnStorageManager.findByQuery(query,pageable);
for (ReturnStorage returnStorage : returnStorageList) {
List<Object> data = new ArrayList<>();
data.add(returnStorage.getOrderNo());
data.add(returnStorage.getPn());
data.add(returnStorage.getFeederInfo());
data.add(returnStorage.getNeedNum());
data.add(returnStorage.getOutNum());
data.add(returnStorage.getReturnBarcode());
data.add(returnStorage.getLastExport());
data.add(returnStorage.getCreateDate());
dataList.add(data);
}
return dataList;
}
});
}
} }
...@@ -148,17 +148,24 @@ public class StorageExportController { ...@@ -148,17 +148,24 @@ public class StorageExportController {
StorageExportDto dto = new StorageExportDto(); StorageExportDto dto = new StorageExportDto();
dto.setExportName(export); dto.setExportName(export);
List<StorageExport> outDetailList = new ArrayList<>(); List<StorageExport> outDetailList = new ArrayList<>();
Map<String, StorageExport> exportMap = StorageExportUtil.exportMap; Map<String, StorageExport> exportMap = StorageExportUtil.getExportMap();
for (String key : exportMap.keySet()) { for (String key : exportMap.keySet()) {
if (key.contains(export)) { if (key.contains(export)) {
StorageExport storageExport = exportMap.get(key); StorageExport storageExport = exportMap.get(key);
dto.setHSerial(storageExport.getHSerial()); dto.setHSerial(storageExport.getHSerial());
dto.setFeederInfo(StorageExportUtil.getCurrentExportFeeder(key)); dto.setFeederInfo(StorageExportUtil.getCurrentExportFeeder(key));
List<StorageExportOutDetail> resultList = new ArrayList<>();
List<StorageExportOutDetail> detailList = storageExport.getDetailList(); List<StorageExportOutDetail> detailList = storageExport.getDetailList();
if (detailList != null && !detailList.isEmpty()){ if (detailList != null && !detailList.isEmpty()){
detailList = detailList.stream().sorted(Comparator.comparing(StorageExportOutDetail::getFeederInfo)).collect(Collectors.toList()); detailList = detailList.stream().sorted(Comparator.comparing(StorageExportOutDetail::getFeederInfo)).collect(Collectors.toList());
for (StorageExportOutDetail detail : detailList) {
if (detail.getFeederInfo().startsWith(storageExport.getFeeder())){
resultList.add(detail);
}
}
} }
storageExport.setDetailList(detailList); storageExport.setDetailList(resultList);
outDetailList.add(storageExport); outDetailList.add(storageExport);
} }
} }
......
...@@ -2,9 +2,14 @@ package com.neotel.smfcore.custom.Jkem21481.manager; ...@@ -2,9 +2,14 @@ package com.neotel.smfcore.custom.Jkem21481.manager;
import com.neotel.smfcore.common.base.IBaseManager; import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.custom.Jkem21481.bean.ReturnStorage; import com.neotel.smfcore.custom.Jkem21481.bean.ReturnStorage;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query;
import java.util.List;
public interface IReturnStorageManager extends IBaseManager<ReturnStorage> { public interface IReturnStorageManager extends IBaseManager<ReturnStorage> {
void saveOrUpdateReturnStorage(String barcode); void saveOrUpdateReturnStorage(String barcode);
List<ReturnStorage> findByQuery(Query query, Pageable pageable);
} }
...@@ -61,6 +61,10 @@ public class ReturnStorageManagerImpl implements IReturnStorageManager { ...@@ -61,6 +61,10 @@ public class ReturnStorageManagerImpl implements IReturnStorageManager {
return returnStorageDao.findByQuery(query); return returnStorageDao.findByQuery(query);
} }
public List<ReturnStorage> findByQuery(Query query, Pageable pageable){
return returnStorageDao.findByQuery(query,pageable);
}
@Override @Override
public void saveOrUpdateReturnStorage(String barcode) { public void saveOrUpdateReturnStorage(String barcode) {
LiteOrderItem item = liteOrderItemManager.findOne(new Query(Criteria.where("outBarcodeList.barcode").is(barcode)).with(Sort.by(Sort.Direction.DESC,"createDate"))); LiteOrderItem item = liteOrderItemManager.findOne(new Query(Criteria.where("outBarcodeList.barcode").is(barcode)).with(Sort.by(Sort.Direction.DESC,"createDate")));
......
...@@ -10,11 +10,9 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -10,11 +10,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
@Slf4j @Slf4j
@Component @Component
...@@ -37,28 +35,17 @@ public class StorageExportUtil { ...@@ -37,28 +35,17 @@ public class StorageExportUtil {
public static final String EXPORT_PREFIX = "Storage_Export"; public static final String EXPORT_PREFIX = "Storage_Export";
//出口信息缓存 //出口信息缓存
public static Map<String, StorageExport> exportMap = new ConcurrentHashMap<>(); private static Map<String, StorageExport> exportMap = new ConcurrentHashMap<>();
private static Map<String,List<String>> exportFeederMap = new ConcurrentHashMap<>();
@PostConstruct @PostConstruct
private void initExport() { private void initExport() {
for (String export : leftExportList) { initExportMap();
StorageExport storageExport = dataCache.getCache(EXPORT_PREFIX + "_" + export); initExportFeederMap();
if (storageExport == null) {
storageExport = new StorageExport();
storageExport.setExportName(export);
}
exportMap.put(export, storageExport);
}
for (String export : rightExportList) {
StorageExport storageExport = dataCache.getCache(EXPORT_PREFIX + "_" + export);
if (storageExport == null) {
storageExport = new StorageExport();
storageExport.setExportName(export);
}
exportMap.put(export, storageExport);
}
} }
private final static List<String> leftExportList = Arrays.asList( private final static List<String> leftExportList = Arrays.asList(
"UM1_1", "UM1_2", "UM1_3" "UM1_1", "UM1_2", "UM1_3"
, "UM2_1", "UM2_2", "UM2_3" , "UM2_1", "UM2_2", "UM2_3"
...@@ -232,89 +219,34 @@ public class StorageExportUtil { ...@@ -232,89 +219,34 @@ public class StorageExportUtil {
return export; return export;
} }
public static synchronized void updateExportData(String export, String barcode, String feederInfo, String orderNo,String status,String partNumber) { public static synchronized void updateExportByTask(String export, String barcode, String feederInfo, String orderNo,String status,String partNumber) {
log.info("工单任务修改出料口信息:"+export+"barcode为:"+barcode+",站位信息为:"+feederInfo+"工单号为:"+orderNo+",状态为:"+status);
log.info("修改出料口:"+export+"barcode为:"+barcode+",站位信息为:"+feederInfo+"工单号为:"+orderNo+",状态为:"+status);
StorageExport storageExport = exportMap.get(export); StorageExport storageExport = exportMap.get(export);
List<StorageExportOutDetail> detailList = storageExport.getDetailList(); List<StorageExportOutDetail> detailList = storageExport.getDetailList();
if (detailList == null) { if (detailList == null) {
detailList = new ArrayList<>(); detailList = new ArrayList<>();
} }
if (StringUtils.isNotEmpty(barcode)){ //判断barcode有没有相同的
StorageExportOutDetail outDetail = null; boolean hasSameBarcode = false;
for (StorageExportOutDetail detail : detailList) { for (StorageExportOutDetail detail : detailList) {
if (detail.getBarcode().equals(barcode)){ if (barcode.equals(detail.getBarcode())){
outDetail = detail; String lastStatus = detail.getStatus();
detail.setStatus(status);
detail.setLastStatus(lastStatus);
hasSameBarcode= true;
break; break;
} }
} }
if (outDetail == null){ if (!hasSameBarcode){
outDetail = new StorageExportOutDetail(); StorageExportOutDetail outDetail = new StorageExportOutDetail();
}
String lastStatus = outDetail.getStatus(); String lastStatus = outDetail.getStatus();
outDetail.setLastStatus(lastStatus); outDetail.setLastStatus(lastStatus);
outDetail.setStatus(status); outDetail.setStatus(status);
outDetail.setFeederInfo(feederInfo); outDetail.setFeederInfo(feederInfo);
outDetail.setBarcode(barcode); outDetail.setBarcode(barcode);
outDetail.setPartNumber(partNumber); outDetail.setPartNumber(partNumber);
detailList.removeIf(t->t.getBarcode().equals(barcode));
detailList.add(outDetail); detailList.add(outDetail);
} }
storageExport.setHSerial(orderNo);
String feeder = storageExport.getFeeder();
//只放feeder为1/5的
if (export.equals("UM1_1")
|| export.equals("UM1_2")
|| export.equals("UM1_3")
|| export.equals("UM5_1")
|| export.equals("UM5_2")
|| export.equals("UM5_3")
) {
if ("-1".equals(feeder)){
storageExport.setFeeder("1");
}
}
//只放feeder为2/6的
else if (export.equals("UM2_1")
|| export.equals("UM2_2")
|| export.equals("UM2_3")
|| export.equals("UM6_1")
|| export.equals("UM6_2")
|| export.equals("UM6_3")
) {
if ("-1".equals(feeder)){
storageExport.setFeeder("2");
}
}
//只放feeder为3/7的
else if (export.equals("UM3_1")
|| export.equals("UM3_2")
|| export.equals("UM3_3")
|| export.equals("UM7_1")
|| export.equals("UM7_2")
|| export.equals("UM7_3")
) {
if ("-1".equals(feeder)){
storageExport.setFeeder("3");
}
}
//只放feeder为4/8的
else if (export.equals("UM4_1")
|| export.equals("UM4_2")
|| export.equals("UM4_3")
|| export.equals("UM8_1")
|| export.equals("UM8_2")
|| export.equals("UM8_3")
) {
if ("-1".equals(feeder)){
storageExport.setFeeder("4");
}
}
storageExport.setDetailList(detailList); storageExport.setDetailList(detailList);
exportMap.put(export,storageExport); exportMap.put(export,storageExport);
dataCache.updateCache(EXPORT_PREFIX + "_" + export,storageExport); dataCache.updateCache(EXPORT_PREFIX + "_" + export,storageExport);
...@@ -346,15 +278,6 @@ public class StorageExportUtil { ...@@ -346,15 +278,6 @@ public class StorageExportUtil {
dataCache.updateCache(EXPORT_PREFIX + "_" + export,storageExport); dataCache.updateCache(EXPORT_PREFIX + "_" + export,storageExport);
} }
public static StorageExport getExport(String export){
StorageExport storageExport = exportMap.get(export);
if (storageExport == null){
storageExport = new StorageExport();
storageExport.setExportName(export);
}
return storageExport;
}
public static StorageExportOutDetail getFeederByBarcode(String barcodeStr) { public static StorageExportOutDetail getFeederByBarcode(String barcodeStr) {
for (StorageExport export : exportMap.values()) { for (StorageExport export : exportMap.values()) {
List<StorageExportOutDetail> detailList = export.getDetailList(); List<StorageExportOutDetail> detailList = export.getDetailList();
...@@ -407,4 +330,225 @@ public class StorageExportUtil { ...@@ -407,4 +330,225 @@ public class StorageExportUtil {
} }
public static synchronized void updateExportByOrder(String export, String barcode, String feederInfo, String orderNo, String status, String partNumber, boolean countTask) {
log.info("修改出料口:" + export + "barcode为:" + barcode + ",站位信息为:" + feederInfo + "工单号为:" + orderNo + ",状态为:" + status + ",partNumber为:" + partNumber);
//获取到对应的出料口
boolean hasFeederInfo = false;
StorageExport storageExport = exportMap.get(export);
List<StorageExportOutDetail> detailList = storageExport.getDetailList();
if (detailList == null){
detailList = new ArrayList<>();
}
if(countTask){
hasFeederInfo = false;
} else {
if (detailList != null && !detailList.isEmpty()) {
for (StorageExportOutDetail detail : detailList) {
String detailFeederInfo = detail.getFeederInfo();
if (detailFeederInfo.equals(feederInfo)) {
detail.setBarcode(barcode);
detail.setPartNumber(partNumber);
detail.setStatus(status);
detail.setLastStatus(status);
hasFeederInfo = true;
break;
}
}
}
}
if (!hasFeederInfo){
StorageExportOutDetail detail = new StorageExportOutDetail();
detail.setBarcode(barcode);
detail.setPartNumber(partNumber);
detail.setStatus(status);
detail.setFeederInfo(feederInfo);
detailList.add(detail);
}
storageExport.setDetailList(detailList);
exportMap.put(export,storageExport);
dataCache.updateCache(EXPORT_PREFIX + "_" + export,storageExport);
}
public static synchronized void feederInfoToExport(List<String> exportList,String orderNo) {
for (String export : exportList) {
StorageExport storageExport = exportMap.get(export);
storageExport.setHSerial(orderNo);
String feeder = storageExport.getFeeder();
//加载数据
List<StorageExportOutDetail> detailList = new ArrayList<>();
List<String> feederList = exportFeederMap.get(export);
if (feederList != null && !feederList.isEmpty()) {
for (String feederStr : feederList) {
StorageExportOutDetail detail = new StorageExportOutDetail();
detail.setFeederInfo(feederStr);
detailList.add(detail);
}
}
storageExport.setDetailList(detailList);
if (export.equals("UM1_1")
|| export.equals("UM1_2")
|| export.equals("UM1_3")
|| export.equals("UM5_1")
|| export.equals("UM5_2")
|| export.equals("UM5_3")
) {
if ("-1".equals(feeder) || StringUtils.isEmpty(feeder)) {
storageExport.setFeeder("1");
}
}
//只放feeder为2/6的
else if (export.equals("UM2_1")
|| export.equals("UM2_2")
|| export.equals("UM2_3")
|| export.equals("UM6_1")
|| export.equals("UM6_2")
|| export.equals("UM6_3")
) {
if ("-1".equals(feeder) || StringUtils.isEmpty(feeder)) {
storageExport.setFeeder("2");
}
}
//只放feeder为3/7的
else if (export.equals("UM3_1")
|| export.equals("UM3_2")
|| export.equals("UM3_3")
|| export.equals("UM7_1")
|| export.equals("UM7_2")
|| export.equals("UM7_3")
) {
if ("-1".equals(feeder) || StringUtils.isEmpty(feeder)) {
storageExport.setFeeder("3");
}
}
//只放feeder为4/8的
else if (export.equals("UM4_1")
|| export.equals("UM4_2")
|| export.equals("UM4_3")
|| export.equals("UM8_1")
|| export.equals("UM8_2")
|| export.equals("UM8_3")
) {
if ("-1".equals(feeder) || StringUtils.isEmpty(feeder)) {
storageExport.setFeeder("4");
}
}
exportMap.put(export,storageExport);
dataCache.updateCache(EXPORT_PREFIX + "_" + export,storageExport);
}
}
private void initExportMap(){
for (String export : leftExportList) {
StorageExport storageExport = dataCache.getCache(EXPORT_PREFIX + "_" + export);
if (storageExport == null) {
storageExport = new StorageExport();
storageExport.setExportName(export);
}
exportMap.put(export, storageExport);
}
for (String export : rightExportList) {
StorageExport storageExport = dataCache.getCache(EXPORT_PREFIX + "_" + export);
if (storageExport == null) {
storageExport = new StorageExport();
storageExport.setExportName(export);
}
exportMap.put(export, storageExport);
}
}
private void initExportFeederMap(){
List<String> endList = Arrays.asList("L", "R");
for (String end : endList) {
for (int feederStart = 1; feederStart <= 8; feederStart++) {
for (int feederEnd = 1; feederEnd <= 30; feederEnd++) {
String feeder = "";
if (1 <= feederEnd && feederEnd < 10) {
feeder = feederStart + "000" + feederEnd + end;
} else {
feeder = feederStart + "00" + feederEnd + end;
}
//feeder为10001L-10015L/50001L-50015L只可以放1_3或者5_3
if (feederStart == 5 || feederStart == 1) {
if (1 <= feederEnd && feederEnd <= 15) {
addFeederMap("UM1_3",feeder);
addFeederMap("UM5_3",feeder);
}
if (feederEnd >= 16 && feederEnd <= 30){
addFeederMap("UM1_2",feeder);
addFeederMap("UM5_2",feeder);
}
}
//feeder为20001L-20015L/60001L-60015L只可以放2_3或者6_3
if (feederStart == 2 || feederStart == 6) {
if (1 <= feederEnd && feederEnd <= 15) {
addFeederMap("UM2_3",feeder);
addFeederMap("UM6_3",feeder);
}
if (feederEnd >= 16 && feederEnd <= 30){
addFeederMap("UM2_2",feeder);
addFeederMap("UM6_2",feeder);
}
}
//feeder为30001L-30015L/70001L-70015L只可以放3_3或者7_3
if (feederStart == 3 || feederStart == 7) {
if (1 <= feederEnd && feederEnd <= 15) {
addFeederMap("UM3_3",feeder);
addFeederMap("UM7_3",feeder);
}
if (feederEnd >= 16 && feederEnd <= 30){
addFeederMap("UM3_2",feeder);
addFeederMap("UM7_2",feeder);
}
}
//feeder为40001L-40015L/40001L-40015L只可以放4_3或者8_3
if (feederStart == 4 || feederStart == 8) {
if (1 <= feederEnd && feederEnd <= 15) {
addFeederMap("UM4_3",feeder);
addFeederMap("UM8_3",feeder);
}
if (feederEnd >= 16 && feederEnd <= 30){
addFeederMap("UM4_2",feeder);
addFeederMap("UM8_2",feeder);
}
}
}
}
}
}
private void addFeederMap(String export, String feeder) {
List<String> feederList = exportFeederMap.get(export);
if (feederList == null) {
feederList = new ArrayList<>();
}
if (!feederList.contains(feeder)) {
feederList.add(feeder);
}
feederList = feederList.stream().sorted().collect(Collectors.toList());
exportFeederMap.put(export, feederList);
}
public static Map<String, StorageExport> getExportMap(){
Map<String, StorageExport> resultMap = new HashMap<>();
for (String key : exportMap.keySet()) {
StorageExport storageExport = exportMap.get(key);
StorageExport newExport = new StorageExport();
newExport.setExportName(storageExport.getExportName());
newExport.setHSerial(storageExport.getHSerial());
newExport.setDetailList(storageExport.getDetailList());
newExport.setFeeder(storageExport.getFeeder());
resultMap.put(key,newExport);
}
return resultMap;
}
} }
...@@ -47,7 +47,7 @@ app: ...@@ -47,7 +47,7 @@ app:
type: "" type: ""
menu: menu:
show: partNumberManager,translation,returnStorage show:
hide: hide:
smd: smd:
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!