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 {
String posName = task.getPosName();
if (!Strings.isNullOrEmpty(posName)) {//有库位号
Boolean isBox = task.getAppendData("isBox");
if (isBox != null && isBox) {
if (isBox == null){
isBox = false;
}
if (isBox) {
//单盘优先出库
if (boxTask == null || task.getCreateDate().before(boxTask.getCreateDate())) {
boxTask = task;
}
} else {
String barcode = task.getBarcode();
if (barcode.startsWith("T0") && barcode.length() == 9){
boxTask = task;
}
}
}
}
......
......@@ -932,6 +932,9 @@ public class LiteOrderCache {
return "smfcore.order.noEmptyExport";
}
log.info(orderNo + "获取到的出料口信息为:" + JSON.toJSONString(emptyExportList));
log.info("开始加载出料口站位信息");
StorageExportUtil.feederInfoToExport(emptyExportList,orderNo);
log.info("开始执行工单[" + orderNo + "]");
cacheOrder.setTaskReelCount(0);
......@@ -972,18 +975,26 @@ public class LiteOrderCache {
String partNumber = orderItem.getPn();
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);
log.info("feeder为:" + feederInfo + ",工单号为:" + orderNo + ",获取到的出料口为:" + putInExport);
if (StringUtils.isEmpty(putInExport)){
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();
//List<Barcode> subCodeList = barcode.getSubCodeList();
......@@ -1019,8 +1030,6 @@ public class LiteOrderCache {
+ "]是否为料盒[" + barcode.isBox()
);
DataLog task = newTask(pos);
task.setSourceId(cacheOrder.getId());
task.setSourceName(cacheOrder.getOrderNo());
......@@ -1036,12 +1045,12 @@ public class LiteOrderCache {
if (barcode.isBox()) {
task.updateAppendData("isBox", true);
}
// task = dataLogDao.save(task);
taskService.addTaskToExecute(task);
//先更新出料口,再更新任务
if (!barcode.isBox()) {
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 {
private Map<String,List<StoragePos>> spTaskMap=new HashMap<>();
@PostConstruct
/* @PostConstruct
public void init(){
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.execute(new Runnable() {
......@@ -76,7 +76,7 @@ public class SolderBoxCache {
}
}
});
}
}*/
public void updateSpTasks(String storageId, List<StoragePos> taskPosList){
......
......@@ -175,7 +175,7 @@ public class TaskService {
isBox = false;
}
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){
......
......@@ -631,7 +631,7 @@ public class JkemController {
if (detailList != null && !detailList.isEmpty()) {
for (StorageExportOutDetail detail : detailList) {
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();
if (feederInfo.startsWith(feeder)){
log.info(detail.getBarcode()+"站位号为:"+feederInfo+",对应的出料口为:"+export.getExportName()+",任务未结束");
......
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.utils.FileUtil;
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.query.ReturnStorageQueryCondition;
import com.neotel.smfcore.custom.Jkem21481.manager.IReturnStorageManager;
......@@ -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.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
@RestController
@RequestMapping("/returnStorage")
......@@ -30,4 +41,49 @@ public class ReturnStorageController {
Query query = QueryHelp.getQuery(queryCondition);
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 {
StorageExportDto dto = new StorageExportDto();
dto.setExportName(export);
List<StorageExport> outDetailList = new ArrayList<>();
Map<String, StorageExport> exportMap = StorageExportUtil.exportMap;
Map<String, StorageExport> exportMap = StorageExportUtil.getExportMap();
for (String key : exportMap.keySet()) {
if (key.contains(export)) {
StorageExport storageExport = exportMap.get(key);
dto.setHSerial(storageExport.getHSerial());
dto.setFeederInfo(StorageExportUtil.getCurrentExportFeeder(key));
List<StorageExportOutDetail> resultList = new ArrayList<>();
List<StorageExportOutDetail> detailList = storageExport.getDetailList();
if (detailList != null && !detailList.isEmpty()){
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);
}
}
......
......@@ -2,9 +2,14 @@ package com.neotel.smfcore.custom.Jkem21481.manager;
import com.neotel.smfcore.common.base.IBaseManager;
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> {
void saveOrUpdateReturnStorage(String barcode);
List<ReturnStorage> findByQuery(Query query, Pageable pageable);
}
......@@ -61,6 +61,10 @@ public class ReturnStorageManagerImpl implements IReturnStorageManager {
return returnStorageDao.findByQuery(query);
}
public List<ReturnStorage> findByQuery(Query query, Pageable pageable){
return returnStorageDao.findByQuery(query,pageable);
}
@Override
public void saveOrUpdateReturnStorage(String barcode) {
LiteOrderItem item = liteOrderItemManager.findOne(new Query(Criteria.where("outBarcodeList.barcode").is(barcode)).with(Sort.by(Sort.Direction.DESC,"createDate")));
......
......@@ -47,7 +47,7 @@ app:
type: ""
menu:
show: partNumberManager,translation,returnStorage
show:
hide:
smd:
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!