Commit 65d01ef4 zshaohui

回库功能优化提交

1 个父辈 a7048ed6
...@@ -362,7 +362,7 @@ public class LiteOrderCache { ...@@ -362,7 +362,7 @@ public class LiteOrderCache {
//入库的时候,增加回库信息 //入库的时候,增加回库信息
else { else {
if (task.isFinished()) { if (task.isFinished()) {
returnStorageManager.saveOrUpdateReturnStorage(task.getBarcode()); returnStorageManager.saveOrUpdateReturnStorage(task);
} }
} }
} }
...@@ -977,7 +977,7 @@ public class LiteOrderCache { ...@@ -977,7 +977,7 @@ public class LiteOrderCache {
//根据站位号,分配到不同出料口 //根据站位号,分配到不同出料口
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;
......
...@@ -359,7 +359,7 @@ public class OrderController { ...@@ -359,7 +359,7 @@ public class OrderController {
@RequestMapping("/detial/download") @RequestMapping("/detial/download")
@PreAuthorize("@el.check('workOrder:detial')") @PreAuthorize("@el.check('workOrder:detial')")
@AnonymousAccess @AnonymousAccess
public void detialDownload(@RequestParam(required = false) String id, @RequestParam(required = false) String orderNo, HttpServletResponse response, HttpServletRequest request) throws IOException { public void detialDownload(@RequestParam(required = false) String id, @RequestParam(required = false) String orderNo, HttpServletResponse response, HttpServletRequest request) throws Exception {
LiteOrder liteOrder = null; LiteOrder liteOrder = null;
if (!ObjectUtils.isEmpty(id)) { if (!ObjectUtils.isEmpty(id)) {
...@@ -470,7 +470,7 @@ public class OrderController { ...@@ -470,7 +470,7 @@ public class OrderController {
dataList.add(data); dataList.add(data);
} }
FileUtil.downloadTxtByConfig(liteOrder.getOrderNo(), header,dataList,response); FileUtil.downloadExcelByConfig(liteOrder.getOrderNo(), header,dataList,response);
} }
} }
......
...@@ -17,4 +17,6 @@ public interface IDataLogManager extends IBaseManager<DataLog> { ...@@ -17,4 +17,6 @@ public interface IDataLogManager extends IBaseManager<DataLog> {
List<SpDailyLog> getSpDailyLogs(Date start, Date end, String inoutType); List<SpDailyLog> getSpDailyLogs(Date start, Date end, String inoutType);
List<SpDailyLog> getSpPnSummaryLists(String inoutType); List<SpDailyLog> getSpPnSummaryLists(String inoutType);
DataLog findOne(Query barcode);
} }
...@@ -82,4 +82,9 @@ public class DataLogManagerImpl implements IDataLogManager { ...@@ -82,4 +82,9 @@ public class DataLogManagerImpl implements IDataLogManager {
return dataLogDao.getSpPnSummaryLists( inoutType ); return dataLogDao.getSpPnSummaryLists( inoutType );
} }
@Override
public DataLog findOne(Query q) {
return dataLogDao.findOne(q);
}
} }
package com.neotel.smfcore.custom.Jkem21481.bean; package com.neotel.smfcore.custom.Jkem21481.bean;
import com.neotel.smfcore.common.base.BasePo; import com.neotel.smfcore.common.base.BasePo;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@Data @Data
@AllArgsConstructor
public class ReturnStorage extends BasePo { public class ReturnStorage extends BasePo {
private String orderNo; private String orderNo;
private String pn; private String pn;
private String ri;
private String feederInfo; private String feederInfo;
private int needNum; private int beforeNum;
private int outNum; private int outNum;
private String returnBarcode; private int returnStorageNum;
private String lastExport;
private String orderItemId;
} }
...@@ -192,7 +192,7 @@ public class JkemController { ...@@ -192,7 +192,7 @@ public class JkemController {
for (DataLog dataLog : taskService.getQueueTasks()) { for (DataLog dataLog : taskService.getQueueTasks()) {
// if(!dataLog.isPackageReel()){ // if(!dataLog.isPackageReel()){
//已经在任务当中,返回对应的信息 //已经在任务当中,返回对应的信息
if (dataLog.getBarcode().equals(barcode.getBarcode())) { if (dataLog.getBarcode().equals(barcode.getBarcode()) && !dataLog.isCancel() && !dataLog.isFinished()) {
if (dataLog.isPutInTask()) { if (dataLog.isPutInTask()) {
//已有入库任务 //已有入库任务
errorMsg = "物料[" + dataLog.getBarcode() + "]已有入库任务,需继续执行入库动作"; errorMsg = "物料[" + dataLog.getBarcode() + "]已有入库任务,需继续执行入库动作";
...@@ -631,11 +631,13 @@ public class JkemController { ...@@ -631,11 +631,13 @@ 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) && !OP_STATUS.NONE.name().equals(status)){ if(StringUtils.isNotEmpty(status)) {
String feederInfo = detail.getFeederInfo(); if (!OP_STATUS.FINISHED.name().equals(status) && !OP_STATUS.CANCEL.name().equals(status) && !OP_STATUS.NONE.name().equals(status)) {
if (feederInfo.startsWith(feeder)){ String feederInfo = detail.getFeederInfo();
log.info(detail.getBarcode()+"站位号为:"+feederInfo+",对应的出料口为:"+export.getExportName()+",任务未结束"); if (feederInfo.startsWith(feeder)) {
count ++; log.info(detail.getBarcode() + "站位号为:" + feederInfo + ",对应的出料口为:" + export.getExportName() + ",任务未结束");
count++;
}
} }
} }
} }
......
...@@ -55,11 +55,11 @@ public class ReturnStorageController { ...@@ -55,11 +55,11 @@ public class ReturnStorageController {
Locale locale = request.getLocale(); Locale locale = request.getLocale();
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.lockName",locale,"工单号"))); 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.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.ri",locale,"RI")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.outLet",locale,"出料口"))); header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.feederInfo",locale,"站位信息")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.quantityBeforeIssuance",locale,"出库前数量")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.quantityIssued",locale,"出库数量")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.order.quantityAfterIssuance",locale,"回库后数量")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.messages.createDate", locale, "创建时间"))); header.add(Lists.newArrayList(MessageUtils.getText("smfcore.messages.createDate", locale, "创建时间")));
return header; return header;
} }
...@@ -72,11 +72,11 @@ public class ReturnStorageController { ...@@ -72,11 +72,11 @@ public class ReturnStorageController {
List<Object> data = new ArrayList<>(); List<Object> data = new ArrayList<>();
data.add(returnStorage.getOrderNo()); data.add(returnStorage.getOrderNo());
data.add(returnStorage.getPn()); data.add(returnStorage.getPn());
data.add(returnStorage.getRi());
data.add(returnStorage.getFeederInfo()); data.add(returnStorage.getFeederInfo());
data.add(returnStorage.getNeedNum()); data.add(returnStorage.getBeforeNum());
data.add(returnStorage.getOutNum()); data.add(returnStorage.getOutNum());
data.add(returnStorage.getReturnBarcode()); data.add(returnStorage.getReturnStorageNum());
data.add(returnStorage.getLastExport());
data.add(returnStorage.getCreateDate()); data.add(returnStorage.getCreateDate());
dataList.add(data); dataList.add(data);
} }
......
package com.neotel.smfcore.custom.Jkem21481.manager; 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.core.system.service.po.DataLog;
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.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
...@@ -9,7 +10,7 @@ import java.util.List; ...@@ -9,7 +10,7 @@ import java.util.List;
public interface IReturnStorageManager extends IBaseManager<ReturnStorage> { public interface IReturnStorageManager extends IBaseManager<ReturnStorage> {
void saveOrUpdateReturnStorage(String barcode); void saveOrUpdateReturnStorage(DataLog dataLog);
List<ReturnStorage> findByQuery(Query query, Pageable pageable); List<ReturnStorage> findByQuery(Query query, Pageable pageable);
} }
...@@ -2,14 +2,19 @@ package com.neotel.smfcore.custom.Jkem21481.manager.impl; ...@@ -2,14 +2,19 @@ package com.neotel.smfcore.custom.Jkem21481.manager.impl;
import com.neotel.smfcore.common.bean.PageData; import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.barcode.service.po.Barcode; import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager; import com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager;
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.core.system.service.manager.IDataLogManager;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.custom.Jkem21481.bean.ReturnStorage; import com.neotel.smfcore.custom.Jkem21481.bean.ReturnStorage;
import com.neotel.smfcore.custom.Jkem21481.dao.IReturnStorageDao; import com.neotel.smfcore.custom.Jkem21481.dao.IReturnStorageDao;
import com.neotel.smfcore.custom.Jkem21481.manager.IReturnStorageManager; import com.neotel.smfcore.custom.Jkem21481.manager.IReturnStorageManager;
import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
...@@ -34,6 +39,9 @@ public class ReturnStorageManagerImpl implements IReturnStorageManager { ...@@ -34,6 +39,9 @@ public class ReturnStorageManagerImpl implements IReturnStorageManager {
@Autowired @Autowired
private ILiteOrderManager liteOrderManager; private ILiteOrderManager liteOrderManager;
@Autowired
private IDataLogManager dataLogManager;
@Override @Override
public ReturnStorage get(String id) { public ReturnStorage get(String id) {
return returnStorageDao.findOneById(id); return returnStorageDao.findOneById(id);
...@@ -66,33 +74,28 @@ public class ReturnStorageManagerImpl implements IReturnStorageManager { ...@@ -66,33 +74,28 @@ public class ReturnStorageManagerImpl implements IReturnStorageManager {
} }
@Override @Override
public void saveOrUpdateReturnStorage(String barcode) { public void saveOrUpdateReturnStorage(DataLog task) {
LiteOrderItem item = liteOrderItemManager.findOne(new Query(Criteria.where("outBarcodeList.barcode").is(barcode)).with(Sort.by(Sort.Direction.DESC,"createDate")));
if (item != null) { //找到最后一个任务
List<Barcode> outBarcodeList = item.getOutBarcodeList(); DataLog dataLog = dataLogManager.findOne(new Query(Criteria.where("barcode").is(task.getBarcode()).and("type").is(OP.CHECKOUT)).with(Sort.by(Sort.Direction.DESC,"updateDate")));
if (outBarcodeList != null && !outBarcodeList.isEmpty()){ if (dataLog != null) {
for (Barcode subCode : outBarcodeList) { log.info(dataLog.getBarcode() + "找到上一个任务,对应的工单号为:" + dataLog.getStorageName() + "任务状态为:" + dataLog.getStatus() + ",上次出库的任务数量为:" + dataLog.getNum());
if (barcode.equals(subCode.getBarcode())){ if (dataLog.isCheckOutTask() && dataLog.isFinished()) {
Date createDate = subCode.getCreateDate(); String sourceId = dataLog.getSourceId();
//超过48小时,就不统计 if (StringUtils.isNotEmpty(sourceId)) {
if (System.currentTimeMillis()-createDate.getTime() < 1000 * 60 * 60 * 48){ //开始保存任务
ReturnStorage returnStorage = new ReturnStorage(); String sourceName = dataLog.getSourceName();
returnStorage.setReturnBarcode(barcode); ReturnStorage returnStorage = new ReturnStorage(sourceName
returnStorage.setFeederInfo(item.getFeederInfo()); , dataLog.getPartNumber()
returnStorage.setLastExport(subCode.getAppendData("export")); , task.getBarcode()
returnStorage.setNeedNum(item.getNeedNum()); , dataLog.getAppendData("feederInfo")
returnStorage.setOutNum(item.getOutNum()); , dataLog.getNum()
returnStorage.setPn(item.getPn()); , dataLog.getNum() - task.getNum()
LiteOrder liteOrder = liteOrderManager.get(item.getOrderId()); , task.getNum()
if (liteOrder != null) { );
returnStorage.setOrderNo(liteOrder.getOrderNo()); returnStorageDao.save(returnStorage);
} }
returnStorage.setOrderItemId(item.getId()); }
returnStorageDao.save(returnStorage); }
}
}
}
}
}
} }
} }
...@@ -283,8 +283,11 @@ public class StorageExportUtil { ...@@ -283,8 +283,11 @@ public class StorageExportUtil {
List<StorageExportOutDetail> detailList = export.getDetailList(); List<StorageExportOutDetail> detailList = export.getDetailList();
if (detailList != null && !detailList.isEmpty()) { if (detailList != null && !detailList.isEmpty()) {
for (StorageExportOutDetail detail : detailList) { for (StorageExportOutDetail detail : detailList) {
if (detail.getBarcode().equals(barcodeStr)){ String barcode = detail.getBarcode();
return detail; if (StringUtils.isNotEmpty(barcode)) {
if (barcode.equals(barcodeStr)){
return detail;
}
} }
} }
} }
......
...@@ -400,3 +400,6 @@ smfcore.order.outLet=\u51FA\u6599\u53E3 ...@@ -400,3 +400,6 @@ smfcore.order.outLet=\u51FA\u6599\u53E3
smfcore.umConfig=\u51FA\u6599\u53E3\u914D\u7F6E smfcore.umConfig=\u51FA\u6599\u53E3\u914D\u7F6E
smf.barcode.cannotPutInLine=\u4E0A\u4E00\u76D8\u7684\u6599\u76D8\u4E3A[{0}],\u72B6\u6001\u4E3A[{1}],\u5BF9\u5E94\u7684feeder\u4E3A[{2}],\u4E0D\u5141\u8BB8\u653E\u5230\u76AE\u5E26\u7EBF\u4E0A smf.barcode.cannotPutInLine=\u4E0A\u4E00\u76D8\u7684\u6599\u76D8\u4E3A[{0}],\u72B6\u6001\u4E3A[{1}],\u5BF9\u5E94\u7684feeder\u4E3A[{2}],\u4E0D\u5141\u8BB8\u653E\u5230\u76AE\u5E26\u7EBF\u4E0A
smfcore.order.noInventory=\u662F\u5426\u65E0\u5E93\u5B58 smfcore.order.noInventory=\u662F\u5426\u65E0\u5E93\u5B58
smfcore.order.quantityBeforeIssuance=\u51FA\u5E93\u524D\u6570\u91CF
smfcore.order.quantityIssued=\u51FA\u5E93\u6570\u91CF
smfcore.order.quantityAfterIssuance=\u56DE\u5E93\u540E\u6570\u91CF
...@@ -390,4 +390,7 @@ smfcore.barcode.checkAmount.error=The counted material quantity [{0}] exceeds th ...@@ -390,4 +390,7 @@ smfcore.barcode.checkAmount.error=The counted material quantity [{0}] exceeds th
smfcore.order.outLet=outLet smfcore.order.outLet=outLet
smfcore.umConfig=Outlet Configuration smfcore.umConfig=Outlet Configuration
smf.barcode.cannotPutInLine=smf.barcode.cannotPutInLine = The previous tray is [{0}], its status is [{1}], and the corresponding feeder is [{2}]. It is not allowed to be placed on the conveyor line. smf.barcode.cannotPutInLine=smf.barcode.cannotPutInLine = The previous tray is [{0}], its status is [{1}], and the corresponding feeder is [{2}]. It is not allowed to be placed on the conveyor line.
smfcore.order.noInventory=Is Inventory Unavailable
\ No newline at end of file \ No newline at end of file
smfcore.order.noInventory=Is Inventory Unavailable
smfcore.order.quantityBeforeIssuance =Pre-issuance quantity
smfcore.order.quantityIssued =Issued quantity
smfcore.order.quantityAfterIssuance =Remaining quantity after issuance
\ No newline at end of file \ No newline at end of file
...@@ -386,4 +386,7 @@ smfcore.barcode.checkAmount.error=\u30AB\u30A6\u30F3\u30C8\u3055\u308C\u305F\u67 ...@@ -386,4 +386,7 @@ smfcore.barcode.checkAmount.error=\u30AB\u30A6\u30F3\u30C8\u3055\u308C\u305F\u67
smfcore.order.outLet=\u306F\u3044\u3057\u3085\u3064\u3053\u3046 smfcore.order.outLet=\u306F\u3044\u3057\u3085\u3064\u3053\u3046
smfcore.umConfig=\u6392\u51FA\u53E3\u306E\u914D\u7F6E smfcore.umConfig=\u6392\u51FA\u53E3\u306E\u914D\u7F6E
smf.barcode.cannotPutInLine=\u524D\u306E\u30C8\u30EC\u30A4\u306F[{0}]\u3067\u3001\u30B9\u30C6\u30FC\u30BF\u30B9\u306F[{1}]\u3067\u3001\u5BFE\u5FDC\u3059\u308B\u30D5\u30A3\u30FC\u30C0\u30FC\u306F[{2}]\u3067\u3059\u3002\u30B3\u30F3\u30D9\u30E4\u30FC\u30E9\u30A4\u30F3\u306B\u8A2D\u7F6E\u3059\u308B\u3053\u3068\u306F\u8A31\u53EF\u3055\u308C\u3066\u3044\u307E\u305B\u3093 smf.barcode.cannotPutInLine=\u524D\u306E\u30C8\u30EC\u30A4\u306F[{0}]\u3067\u3001\u30B9\u30C6\u30FC\u30BF\u30B9\u306F[{1}]\u3067\u3001\u5BFE\u5FDC\u3059\u308B\u30D5\u30A3\u30FC\u30C0\u30FC\u306F[{2}]\u3067\u3059\u3002\u30B3\u30F3\u30D9\u30E4\u30FC\u30E9\u30A4\u30F3\u306B\u8A2D\u7F6E\u3059\u308B\u3053\u3068\u306F\u8A31\u53EF\u3055\u308C\u3066\u3044\u307E\u305B\u3093
smfcore.order.noInventory=\u5728\u5EAB\u306A\u3057\u304B
\ No newline at end of file \ No newline at end of file
smfcore.order.noInventory=\u5728\u5EAB\u306A\u3057\u304B
smfcore.order.quantityBeforeIssuance=\u51FA\u5EAB\u524D\u306E\u6570\u91CF
smfcore.order.quantityIssued=\u51FA\u5EAB\u6570\u91CF
smfcore.order.quantityAfterIssuance=\u51FA\u5EAB\u5F8C\u306E\u6570\u91CF
\ No newline at end of file \ No newline at end of file
...@@ -386,4 +386,7 @@ smfcore.barcode.checkAmount.error=\u70B9\u6599\u6570\u91CF[{0}]\u5927\u4E8E\u5B9 ...@@ -386,4 +386,7 @@ smfcore.barcode.checkAmount.error=\u70B9\u6599\u6570\u91CF[{0}]\u5927\u4E8E\u5B9
smfcore.order.outLet=\u51FA\u6599\u53E3 smfcore.order.outLet=\u51FA\u6599\u53E3
smfcore.umConfig=\u51FA\u6599\u53E3\u914D\u7F6E smfcore.umConfig=\u51FA\u6599\u53E3\u914D\u7F6E
smf.barcode.cannotPutInLine=\u4E0A\u4E00\u76D8\u7684\u6599\u76D8\u4E3A[{0}],\u72B6\u6001\u4E3A[{1}],\u5BF9\u5E94\u7684feeder\u4E3A[{2}],\u4E0D\u5141\u8BB8\u653E\u5230\u76AE\u5E26\u7EBF\u4E0A smf.barcode.cannotPutInLine=\u4E0A\u4E00\u76D8\u7684\u6599\u76D8\u4E3A[{0}],\u72B6\u6001\u4E3A[{1}],\u5BF9\u5E94\u7684feeder\u4E3A[{2}],\u4E0D\u5141\u8BB8\u653E\u5230\u76AE\u5E26\u7EBF\u4E0A
smfcore.order.noInventory=\u662F\u5426\u65E0\u5E93\u5B58
\ No newline at end of file \ No newline at end of file
smfcore.order.noInventory=\u662F\u5426\u65E0\u5E93\u5B58
smfcore.order.quantityBeforeIssuance=\u51FA\u5E93\u524D\u6570\u91CF
smfcore.order.quantityIssued=\u51FA\u5E93\u6570\u91CF
smfcore.order.quantityAfterIssuance=\u56DE\u5E93\u540E\u6570\u91CF
\ No newline at end of file \ No newline at end of file
...@@ -386,4 +386,7 @@ smfcore.barcode.checkAmount.error=\u9EDE\u6599\u6578\u91CF[{0}]\u5927\u65BC\u5BE ...@@ -386,4 +386,7 @@ smfcore.barcode.checkAmount.error=\u9EDE\u6599\u6578\u91CF[{0}]\u5927\u65BC\u5BE
smfcore.order.outLet=\u51FA\u6599\u53E3 smfcore.order.outLet=\u51FA\u6599\u53E3
smfcore.umConfig=\u51FA\u6599\u53E3\u914D\u7F6E smfcore.umConfig=\u51FA\u6599\u53E3\u914D\u7F6E
smf.barcode.cannotPutInLine=\u4E0A\u4E00\u76E4\u7684\u6599\u76E4\u70BA[{0}]\uFF0C\u72C0\u614B\u70BA[{1}]\uFF0C\u5C0D\u61C9\u7684feeder\u70BA[{2}]\uFF0C\u4E0D\u5141\u8A31\u653E\u5230\u76AE\u5E36\u7DDA\u4E0A smf.barcode.cannotPutInLine=\u4E0A\u4E00\u76E4\u7684\u6599\u76E4\u70BA[{0}]\uFF0C\u72C0\u614B\u70BA[{1}]\uFF0C\u5C0D\u61C9\u7684feeder\u70BA[{2}]\uFF0C\u4E0D\u5141\u8A31\u653E\u5230\u76AE\u5E36\u7DDA\u4E0A
smfcore.order.noInventory=\u662F\u5426\u7121\u5EAB\u5B58
\ No newline at end of file \ No newline at end of file
smfcore.order.noInventory=\u662F\u5426\u7121\u5EAB\u5B58
smfcore.order.quantityBeforeIssuance=\u51FA\u5EAB\u524D\u6578\u91CF
smfcore.order.quantityIssued=\u51FA\u5EAB\u6578\u91CF
smfcore.order.quantityAfterIssuance=\u56DE\u5EAB\u5F8C\u6578\u91CF
\ No newline at end of file \ No newline at end of file
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!