Commit 6adc0672 LN

手动出库功能

1 个父辈 94b2abde
...@@ -497,7 +497,7 @@ public class BarcodeRule { ...@@ -497,7 +497,7 @@ public class BarcodeRule {
} }
codeBean.setCodeStr(codeStr); codeBean.setCodeStr(codeStr);
if(!isValidRule()){ if(!isValidRule()){
codeBean.setError("error.barcode.noRule","解析规则未定义"); codeBean.setError("smfcode.error.barcode.noRule","解析规则未定义");
return codeBean; return codeBean;
} }
String[] codeArr = new String[]{codeStr}; String[] codeArr = new String[]{codeStr};
...@@ -506,7 +506,7 @@ public class BarcodeRule { ...@@ -506,7 +506,7 @@ public class BarcodeRule {
//条码与规则长度对应不上 //条码与规则长度对应不上
if(codeArr.length != length){ if(codeArr.length != length){
log.info("条码["+codeStr+"]与规则【"+ruleStr+"】长度不同"); log.info("条码["+codeStr+"]与规则【"+ruleStr+"】长度不同");
codeBean.setError("error.barcode.wrongLength",new String[]{}, "条码["+codeStr+"]长度错误"); codeBean.setError("smfcode.error.barcode.wrongLength",new String[]{codeStr}, "条码[{0}]长度错误");
return codeBean; return codeBean;
}else{ }else{
codeArr = codeStr.split(separator,length); codeArr = codeStr.split(separator,length);
...@@ -525,7 +525,7 @@ public class BarcodeRule { ...@@ -525,7 +525,7 @@ public class BarcodeRule {
if(Strings.isNullOrEmpty(reelId)){ if(Strings.isNullOrEmpty(reelId)){
log.info("条码解析失败,未找到RI字段"); log.info("条码解析失败,未找到RI字段");
codeBean.setError("error.barcode.noField",new String[]{"RI"},"条码解析失败,未找到RI字段"); codeBean.setError("smfcode.error.barcode.noField",new String[]{"RI"},"条码解析失败,未找到{0}字段");
return codeBean; return codeBean;
} }
...@@ -533,7 +533,7 @@ public class BarcodeRule { ...@@ -533,7 +533,7 @@ public class BarcodeRule {
if(Strings.isNullOrEmpty(partNumber)){ if(Strings.isNullOrEmpty(partNumber)){
log.info("条码解析失败,未找到PN字段"); log.info("条码解析失败,未找到PN字段");
codeBean.setError("error.barcode.noField",new String[]{"PN"}, "条码解析失败,未找到PN字段"); codeBean.setError("smfcode.error.barcode.noField",new String[]{"PN"}, "条码解析失败,未找到{0}字段");
return codeBean; return codeBean;
} }
if(batch_item.hasThisField()){ if(batch_item.hasThisField()){
...@@ -545,7 +545,7 @@ public class BarcodeRule { ...@@ -545,7 +545,7 @@ public class BarcodeRule {
quantity = quantity_item.getIntValue(codeArr); quantity = quantity_item.getIntValue(codeArr);
if(quantity == -1){ if(quantity == -1){
log.info("条码解析失败,未找到QTY 字段"); log.info("条码解析失败,未找到QTY 字段");
codeBean.setError("error.barcode.noField",new String[]{"QTY"},"条码解析失败,未找到QTY 字段"); codeBean.setError("smfcode.error.barcode.noField",new String[]{"QTY"},"条码解析失败,未找到{0}字段");
return codeBean; return codeBean;
} }
} }
...@@ -553,7 +553,7 @@ public class BarcodeRule { ...@@ -553,7 +553,7 @@ public class BarcodeRule {
Date produceDate= produceDate_item.getDateValue(codeArr); Date produceDate= produceDate_item.getDateValue(codeArr);
if(produceDate_item.hasThisField() && produceDate == null){ if(produceDate_item.hasThisField() && produceDate == null){
log.info("条码解析失败,PRODATE字段不合规则"); log.info("条码解析失败,PRODATE字段不合规则");
codeBean.setError("error.barcode.noField",new String[]{"PRODATE"},"条码解析失败,未找到PRODATE字段"); codeBean.setError("smfcode.error.barcode.noField",new String[]{"PRODATE"},"条码解析失败,未找到{0}字段");
return codeBean; return codeBean;
} }
Date expireDate= expireDate_item.getDateValue(codeArr); Date expireDate= expireDate_item.getDateValue(codeArr);
......
...@@ -4,7 +4,9 @@ import com.google.common.collect.Lists; ...@@ -4,7 +4,9 @@ import com.google.common.collect.Lists;
import com.neotel.smfcore.core.barcode.enums.BARCODE_STATUS; import com.neotel.smfcore.core.barcode.enums.BARCODE_STATUS;
import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE; import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE;
import com.neotel.smfcore.core.barcode.enums.SOLDER_STATUS; import com.neotel.smfcore.core.barcode.enums.SOLDER_STATUS;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
...@@ -30,10 +32,16 @@ public class CodeDto implements Serializable { ...@@ -30,10 +32,16 @@ public class CodeDto implements Serializable {
@ApiModelProperty("高度") @ApiModelProperty("高度")
private int height=0; private int height=0;
/**
* 原始条码
*/
@ApiModelProperty("原始条码") @ApiModelProperty("原始条码")
private String fullCode; private String fullCode;
@ApiModelProperty("库位信息/仓位")
private String posName;
@ApiModelProperty("数量")
private int amount;
@ApiModelProperty("错误提示")
private String error;
} }
...@@ -50,7 +50,7 @@ public class CodeResolve { ...@@ -50,7 +50,7 @@ public class CodeResolve {
if(barcodeRuleList == null || barcodeRuleList.isEmpty()){ if(barcodeRuleList == null || barcodeRuleList.isEmpty()){
CodeBean codeBean = new CodeBean(); CodeBean codeBean = new CodeBean();
codeBean.setBarcode(null); codeBean.setBarcode(null);
codeBean.setError("error.barcode.noRules", "解析规则未定义"); codeBean.setError("smfcode.error.barcode.noRules", "解析规则未定义");
codeBean.setCodeStr(barcodeItemStr); codeBean.setCodeStr(barcodeItemStr);
return codeBean; return codeBean;
} }
...@@ -199,21 +199,21 @@ public class CodeResolve { ...@@ -199,21 +199,21 @@ public class CodeResolve {
} }
}catch (ValidateException ve){ }catch (ValidateException ve){
//档案不存在 //档案不存在
codeBeanFromRule.setError("error.barcode.pnNotExist",new String[]{barcodeFromRule.getPartNumber()},"x档案 "+barcodeFromRule.getPartNumber()+" 不存在"); codeBeanFromRule.setError("smfcode.error.barcode.pnNotExist",new String[]{barcodeFromRule.getPartNumber()},"档案 {0} 不存在");
log.warn("x档案"+barcodeFromRule.getPartNumber()+"不存在"); log.warn("档案"+barcodeFromRule.getPartNumber()+"不存在");
} }
//解析成功了,直接返回 //解析成功了,直接返回
return codeBeanFromRule; return codeBeanFromRule;
}else{ }else{
//在数据库中不存在,且未解析成功,用其他规则再解析 //在数据库中不存在,且未解析成功,用其他规则再解析
codeBeanFromRule.setError("error.barcode.invalid",new String[]{barcodeItemStr}, barcodeItemStr + "不是有效的条码"); codeBeanFromRule.setError("smfcode.error.barcode.invalid",new String[]{barcodeItemStr}, "{0}不是有效的条码");
} }
} }
if(codeBeanFromRule == null){ if(codeBeanFromRule == null){
codeBeanFromRule = new CodeBean(); codeBeanFromRule = new CodeBean();
codeBeanFromRule.setBarcode(null); codeBeanFromRule.setBarcode(null);
codeBeanFromRule.setError("error.barcode.invalid",new String[]{barcodeItemStr}, barcodeItemStr + "不是有效的条码"); codeBeanFromRule.setError("smfcode.error.barcode.invalid",new String[]{barcodeItemStr}, "{0}不是有效的条码");
codeBeanFromRule.setCodeStr(barcodeItemStr); codeBeanFromRule.setCodeStr(barcodeItemStr);
return codeBeanFromRule; return codeBeanFromRule;
} }
......
...@@ -7,8 +7,11 @@ import com.neotel.smfcore.common.bean.PageData; ...@@ -7,8 +7,11 @@ import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.bean.ResultBean; import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.QueryHelp; import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.common.utils.StorageConstants; import com.neotel.smfcore.common.utils.StorageConstants;
import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE; import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.storage.bean.InventoryItem; import com.neotel.smfcore.core.storage.bean.InventoryItem;
import com.neotel.smfcore.core.storage.rest.dto.*; import com.neotel.smfcore.core.storage.rest.dto.*;
...@@ -21,6 +24,7 @@ import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager; ...@@ -21,6 +24,7 @@ import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.core.storage.service.po.Label; import com.neotel.smfcore.core.storage.service.po.Label;
import com.neotel.smfcore.core.storage.service.po.Storage; import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos; import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.TaskService; import com.neotel.smfcore.core.system.util.TaskService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -61,6 +65,9 @@ public class MaterialController { ...@@ -61,6 +65,9 @@ public class MaterialController {
@Autowired @Autowired
private final ILabelManager labelManager; private final ILabelManager labelManager;
@Autowired
private final IBarcodeManager barcodeManager;
@ApiOperation("策略出库获取库存列表") @ApiOperation("策略出库获取库存列表")
@GetMapping(value = "/inventory") @GetMapping(value = "/inventory")
@PreAuthorize("@el.check('tacticsOuput')") @PreAuthorize("@el.check('tacticsOuput')")
...@@ -153,20 +160,20 @@ public class MaterialController { ...@@ -153,20 +160,20 @@ public class MaterialController {
@PostMapping(value = "/labelOuput") @PostMapping(value = "/labelOuput")
@PreAuthorize("@el.check('labelOuput')") @PreAuthorize("@el.check('labelOuput')")
public ResultBean labelOuput(@RequestBody PosLabelDto params) { public ResultBean labelOuput(@RequestBody PosLabelDto params) {
List<String> posIds=params.getPosIds(); List<String> posIds = params.getPosIds();
if (posIds == null) { if (posIds == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"PN"}); throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"PN"});
} }
for (String posId:posIds){ for (String posId : posIds) {
StoragePos pos = storagePosManager.get(posId); StoragePos pos = storagePosManager.get(posId);
if (pos == null) { if (pos == null) {
throw new ValidateException("smfcode.valueNotExist","{0}[{1}]不存在",new String[]{"posId",posId}); throw new ValidateException("smfcode.valueNotExist", "{0}[{1}]不存在", new String[]{"posId", posId});
} }
Storage storage = dataCache.getStorageById(pos.getStorageId()); Storage storage = dataCache.getStorageById(pos.getStorageId());
if (storage == null) { if (storage == null) {
throw new ValidateException("smfcode.valueNotExist","{0}[{1}]不存在",new String[]{"storageId",pos.getStorageId()}); throw new ValidateException("smfcode.valueNotExist", "{0}[{1}]不存在", new String[]{"storageId", pos.getStorageId()});
} }
log.info("出库料仓【" + storage.getName() + "_" + storage.getCid() + "】位置仓位【" + pos.getPosName() + "】"); log.info("出库料仓【" + storage.getName() + "_" + storage.getCid() + "】位置仓位【" + pos.getPosName() + "】");
...@@ -187,17 +194,48 @@ public class MaterialController { ...@@ -187,17 +194,48 @@ public class MaterialController {
// List<String> posIds=(List<String>) params.get("posIds"); // List<String> posIds=(List<String>) params.get("posIds");
// String labelId = params.get("labelId").toString(); // String labelId = params.get("labelId").toString();
List<String> posIds=params.getPosIds(); List<String> posIds = params.getPosIds();
String labelId =params.getLabelId(); String labelId = params.getLabelId();
if(posIds==null||posIds.size()<=0){ if (posIds == null || posIds.size() <= 0) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"ID"}); throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"ID"});
} }
if(ObjectUtil.isEmpty(labelId)){ if (ObjectUtil.isEmpty(labelId)) {
labelId=""; labelId = "";
} }
String[] array= posIds.toArray(new String[posIds.size()]) ; String[] array = posIds.toArray(new String[posIds.size()]);
storagePosManager.updatePosLabel(array,labelId); storagePosManager.updatePosLabel(array, labelId);
return ResultBean.newOkResult(""); return ResultBean.newOkResult("");
} }
@ApiOperation("手动出库")
@PostMapping(value = "/manualOut")
@PreAuthorize("@el.check('manualOut')")
public ResultBean manualOut(@RequestBody Map<String, String> paramMap) {
String code = paramMap.get("barcode");
Barcode barcode = barcodeManager.findByBarcode(code);
StoragePos storagePos = storagePosManager.getByBarcode(code);
if (storagePos != null) {
if (!ObjectUtil.isEmpty(storagePos.getBarcode().getLockId())) {
throw new ValidateException("smfcode.error.barcode.locked", "库位[{0}]已被锁定");
}
try {
if (barcode != null) {
String opUser = SecurityUtils.getCurrentUsername();
log.info(opUser + "清理库位[" + storagePos.getPosName() + "],条码[" + code + "]中的库存" + barcode.getBarcode());
taskService.addTaskToFinished(storagePos, null, opUser + "-manual");
} else {
log.info("清理库位[" + storagePos.getPosName() + "],条码[" + code + "],库位条码为空");
}
return ResultBean.newOkResult("smfcode.manualOut.ok", "手动出库成功", code);
} catch (Exception e) {
return ResultBean.newOkResult("smfcore.error", "出错{0}", new String[]{e.getMessage()}, code);
}
} else {
throw new ValidateException("smfcode.manualOut.notFound", "仓库中未找到料盘信息");
}
}
} }
...@@ -100,7 +100,15 @@ smfcode.order.out.noTask=\u5DE5\u5355\u65E0\u53EF\u6267\u884C\u7684\u4EFB\u52A1 ...@@ -100,7 +100,15 @@ smfcode.order.out.noTask=\u5DE5\u5355\u65E0\u53EF\u6267\u884C\u7684\u4EFB\u52A1
smfcode.cannotUpdateOrderNum=\u5DE5\u5355\u5DF2\u51FA\u5E93\uFF0C\u4E0D\u80FD\u4FEE\u6539\u6570\u91CF smfcode.cannotUpdateOrderNum=\u5DE5\u5355\u5DF2\u51FA\u5E93\uFF0C\u4E0D\u80FD\u4FEE\u6539\u6570\u91CF
smfcode.order.close.success=\u5DE5\u5355\u5173\u95ED\u6210\u529F smfcode.order.close.success=\u5DE5\u5355\u5173\u95ED\u6210\u529F
smfcode.order.close.taskNotEnd=\u5DE5\u5355\u8FD8\u6709\u672A\u5B8C\u6210\u7684\u4EFB\u52A1 smfcode.order.close.taskNotEnd=\u5DE5\u5355\u8FD8\u6709\u672A\u5B8C\u6210\u7684\u4EFB\u52A1
smfcore.manualOut=\u624B\u52A8\u51FA\u5E93
smfcode.error.barcode.noRules=\u89E3\u6790\u89C4\u5219\u672A\u5B9A\u4E49
smfcode.error.barcode.wrongLength=\u6761\u7801[{0}]\u957F\u5EA6\u9519\u8BEF
smfcode.error.barcode.noField=\u6761\u7801\u89E3\u6790\u5931\u8D25,\u672A\u627E\u5230{0}\u5B57\u6BB5
smfcode.error.barcode.pnNotExist=x\u6863\u6848 {0} \u4E0D\u5B58\u5728
smfcode.error.barcode.invalid={0}\u4E0D\u662F\u6709\u6548\u7684\u6761\u7801
smfcode.error.barcode.locked=\u5E93\u4F4D[{0}]\u5DF2\u88AB\u9501\u5B9A
smfcode.manualOut.ok=\u624B\u52A8\u51FA\u5E93\u6210\u529F
smfcode.manualOut.notFound=\u4ED3\u5E93\u4E2D\u672A\u627E\u5230\u6599\u76D8\u4FE1\u606F
......
...@@ -100,3 +100,12 @@ smfcode.order.out.noTask=Work order No executable tasks ...@@ -100,3 +100,12 @@ smfcode.order.out.noTask=Work order No executable tasks
smfcode.cannotUpdateOrderNum=The work order has been issued and the quantity cannot be modified smfcode.cannotUpdateOrderNum=The work order has been issued and the quantity cannot be modified
smfcode.order.close.success=Work order closed successfully smfcode.order.close.success=Work order closed successfully
smfcode.order.close.taskNotEnd=Work orders with outstanding tasks smfcode.order.close.taskNotEnd=Work orders with outstanding tasks
smfcore.manualOut=Manual outbound
smfcode.error.barcode.noRules=Parsing rules not defined
smfcode.error.barcode.wrongLength=The barcode [{0}] is of wrong length
smfcode.error.barcode.noField=Bar code parsing failed, {0} field not found
smfcode.error.barcode.pnNotExist=Material file {0} does not exist
smfcode.error.barcode.invalid={0} is not a valid barcode
smfcode.error.barcode.locked=Library bit [{0}] is locked
smfcode.manualOut.ok=Manual exit successful
smfcode.manualOut.notFound=No tray information found
\ No newline at end of file \ No newline at end of file
...@@ -100,3 +100,12 @@ smfcode.order.out.noTask=\u4F5C\u696D\u6307\u793A\u304C\u5B9F\u884C\u3067\u304D\ ...@@ -100,3 +100,12 @@ smfcode.order.out.noTask=\u4F5C\u696D\u6307\u793A\u304C\u5B9F\u884C\u3067\u304D\
smfcode.cannotUpdateOrderNum=\u30EF\u30FC\u30AF\u30AA\u30FC\u30C0\u30FC\u304C\u5728\u5EAB\u5207\u308C\u3067\u6570\u91CF\u304C\u5909\u66F4\u3067\u304D\u306A\u3044 smfcode.cannotUpdateOrderNum=\u30EF\u30FC\u30AF\u30AA\u30FC\u30C0\u30FC\u304C\u5728\u5EAB\u5207\u308C\u3067\u6570\u91CF\u304C\u5909\u66F4\u3067\u304D\u306A\u3044
smfcode.order.close.success=\u30EF\u30FC\u30AF\u30AA\u30FC\u30C0\u30FC\u304C\u6B63\u5E38\u306B\u7D42\u4E86\u3057\u307E\u3057\u305F\u3002 smfcode.order.close.success=\u30EF\u30FC\u30AF\u30AA\u30FC\u30C0\u30FC\u304C\u6B63\u5E38\u306B\u7D42\u4E86\u3057\u307E\u3057\u305F\u3002
smfcode.order.close.taskNotEnd=\u672A\u51E6\u7406\u306E\u30BF\u30B9\u30AF\u304C\u3042\u308B\u30EF\u30FC\u30AF\u30AA\u30FC\u30C0\u30FC smfcode.order.close.taskNotEnd=\u672A\u51E6\u7406\u306E\u30BF\u30B9\u30AF\u304C\u3042\u308B\u30EF\u30FC\u30AF\u30AA\u30FC\u30C0\u30FC
smfcore.manualOut=\u30DE\u30CB\u30E5\u30A2\u30EB\u30A2\u30A6\u30C8\u30D0\u30A6\u30F3\u30C9
smfcode.error.barcode.noRules=\u69CB\u6587\u89E3\u6790\u30EB\u30FC\u30EB\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u306A\u3044f
smfcode.error.barcode.wrongLength=\u30D0\u30FC\u30B3\u30FC\u30C9[{0}]\u306E\u9577\u3055\u304C\u4E0D\u6B63\u3067\u3059
smfcode.error.barcode.noField=\u30D0\u30FC\u30B3\u30FC\u30C9\u306E\u89E3\u6790\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u30D5\u30A3\u30FC\u30EB\u30C9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
smfcode.error.barcode.pnNotExist=\u30D5\u30A1\u30A4\u30EB{0}\u304C\u5B58\u5728\u3057\u306A\u3044
smfcode.error.barcode.invalid={0}\u306F\u6709\u52B9\u306A\u30D0\u30FC\u30B3\u30FC\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093
smfcode.error.barcode.locked=\u30E9\u30A4\u30D6\u30E9\u30EA\u30DD\u30B8\u30B7\u30E7\u30F3 [{0}] \u304C\u30ED\u30C3\u30AF\u3055\u308C\u3066\u3044\u308B
smfcode.manualOut.ok=\u624B\u52D5\u7D42\u4E86\u6210\u529F
smfcode.manualOut.notFound=\u5009\u5EAB\u3067\u30D1\u30EC\u30C3\u30C8\u60C5\u5831\u304C\u898B\u3064\u304B\u3089\u306A\u3044
\ No newline at end of file \ No newline at end of file
...@@ -100,3 +100,12 @@ smfcode.order.out.noTask=\u5DE5\u5355\u65E0\u53EF\u6267\u884C\u7684\u4EFB\u52A1 ...@@ -100,3 +100,12 @@ smfcode.order.out.noTask=\u5DE5\u5355\u65E0\u53EF\u6267\u884C\u7684\u4EFB\u52A1
smfcode.cannotUpdateOrderNum=\u5DE5\u5355\u5DF2\u51FA\u5E93\uFF0C\u4E0D\u80FD\u4FEE\u6539\u6570\u91CF smfcode.cannotUpdateOrderNum=\u5DE5\u5355\u5DF2\u51FA\u5E93\uFF0C\u4E0D\u80FD\u4FEE\u6539\u6570\u91CF
smfcode.order.close.success=\u5DE5\u5355\u5173\u95ED\u6210\u529F smfcode.order.close.success=\u5DE5\u5355\u5173\u95ED\u6210\u529F
smfcode.order.close.taskNotEnd=\u5DE5\u5355\u8FD8\u6709\u672A\u5B8C\u6210\u7684\u4EFB\u52A1 smfcode.order.close.taskNotEnd=\u5DE5\u5355\u8FD8\u6709\u672A\u5B8C\u6210\u7684\u4EFB\u52A1
smfcore.manualOut=\u624B\u52A8\u51FA\u5E93
smfcode.error.barcode.noRules=\u89E3\u6790\u89C4\u5219\u672A\u5B9A\u4E49
smfcode.error.barcode.wrongLength=\u6761\u7801[{0}]\u957F\u5EA6\u9519\u8BEF
smfcode.error.barcode.noField=\u6761\u7801\u89E3\u6790\u5931\u8D25,\u672A\u627E\u5230{0}\u5B57\u6BB5
smfcode.error.barcode.pnNotExist=x\u6863\u6848 {0} \u4E0D\u5B58\u5728
smfcode.error.barcode.invalid={0}\u4E0D\u662F\u6709\u6548\u7684\u6761\u7801
smfcode.error.barcode.locked=\u5E93\u4F4D[{0}]\u5DF2\u88AB\u9501\u5B9A
smfcode.manualOut.ok=\u624B\u52A8\u51FA\u5E93\u6210\u529F
smfcode.manualOut.notFound=\u4ED3\u5E93\u4E2D\u672A\u627E\u5230\u6599\u76D8\u4FE1\u606F
\ No newline at end of file \ No newline at end of file
...@@ -100,3 +100,12 @@ smfcode.order.out.noTask=\u5DE5\u55AE\u7121\u53EF\u57F7\u884C\u7684\u4EFB\u52D9 ...@@ -100,3 +100,12 @@ smfcode.order.out.noTask=\u5DE5\u55AE\u7121\u53EF\u57F7\u884C\u7684\u4EFB\u52D9
smfcode.cannotUpdateOrderNum=\u5DE5\u55AE\u5DF2\u51FA\u5EAB\uFF0C\u4E0D\u80FD\u4FEE\u6539\u6578\u91CF smfcode.cannotUpdateOrderNum=\u5DE5\u55AE\u5DF2\u51FA\u5EAB\uFF0C\u4E0D\u80FD\u4FEE\u6539\u6578\u91CF
smfcode.order.close.success=\u5DE5\u55AE\u95DC\u9589\u6210\u529F smfcode.order.close.success=\u5DE5\u55AE\u95DC\u9589\u6210\u529F
smfcode.order.close.taskNotEnd=\u5DE5\u55AE\u9084\u6709\u672A\u5B8C\u6210\u7684\u4EFB\u52D9 smfcode.order.close.taskNotEnd=\u5DE5\u55AE\u9084\u6709\u672A\u5B8C\u6210\u7684\u4EFB\u52D9
smfcore.manualOut=\u624B\u52D5\u51FA\u5EAB
smfcode.error.barcode.noRules=\u89E3\u6790\u898F\u5247\u672A\u5B9A\u7FA9
smfcode.error.barcode.wrongLength=\u689D\u78BC[{0}]\u9577\u5EA6\u932F\u8AA4
smfcode.error.barcode.noField=\u689D\u78BC\u89E3\u6790\u5931\u6557\uFF0C\u672A\u627E\u5230{0}\u5B57\u6BB5
smfcode.error.barcode.pnNotExist=\u6A94\u6848 {0} \u4E0D\u5B58\u5728
smfcode.error.barcode.invalid={0}\u4E0D\u662F\u6709\u6548\u7684\u689D\u78BC
smfcode.error.barcode.locked=\u5EAB\u4F4D[{0}]\u5DF2\u88AB\u9396\u5B9A
smfcode.manualOut.ok=\u624B\u52D5\u51FA\u5EAB\u6210\u529F
smfcode.manualOut.notFound=\u5009\u5EAB\u4E2D\u672A\u627E\u5230\u6599\u76E4\u4FE1\u606F
\ No newline at end of file \ No newline at end of file
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!