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")));
......
...@@ -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!