Commit ee527035 sunke

Merge remote-tracking branch 'origin/master'

2 个父辈 ae1e0bad 657398a6
正在显示 52 个修改的文件 包含 1192 行增加991 行删除
......@@ -266,7 +266,7 @@ public class CsvReader {
if(index == -1){
log.info("未包含【"+titleName+"】或【"+titleNameEn+"】列");
// throw new ValidateException("必须包含["+titleNameEn+"]列");
throw new ValidateException("smfcode.columnNotExist","必须包含[{0}列",new String[]{titleNameEn});
throw new ValidateException("smfcore.columnNotExist","必须包含[{0}列",new String[]{titleNameEn});
}
return index;
}
......
......@@ -3,6 +3,8 @@ package com.neotel.smfcore.common.exception;
import lombok.Data;
import org.springframework.http.HttpStatus;
import java.text.MessageFormat;
import static org.springframework.http.HttpStatus.BAD_REQUEST;
/**
......@@ -25,10 +27,10 @@ public class ValidateException extends RuntimeException{
}
public ValidateException(String msgKey, String defMsg,String[] msgParam){
super(defMsg);
super( defMsg= MessageFormat.format(defMsg,msgParam));
this.msgKey=msgKey;
this.msgParam=msgParam;
this.defaultMsg=defMsg;
this.defaultMsg= defMsg;
}
public ValidateException(HttpStatus status, String msg){
......
......@@ -71,7 +71,7 @@ public class DataInitManager {
role = roleManager.save(role);
log.info("创建默认角色:" + role.toString());
admin = new User(userName, "admin@qq.com", "zh", role.getId(), "$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa", true, true, new Date(), groupIds, "");
admin = new User(userName, "admin@qq.com", "zh-CN", role.getId(), "$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa", true, true, new Date(), groupIds, "");
userManager.save(admin);
log.info("创建默认用户:" + admin.toString());
......@@ -204,6 +204,14 @@ public class DataInitManager {
Menu msdSetting = new Menu(new ArrayList<Menu>(), 1, "msdSetting", "MSD设置", 1, "msdSetting", "neolight/msdSetting/index", "", 0, "MSDSet");
menus.addAll(createMenus(msd,msdManage,msdData,msdSetting));
Menu solderPaste = Menu.CreatePMenu("锡膏管理", 20, "solderPaste", 2, "sMana");
Menu solderPasteKanban = new Menu(new ArrayList<Menu>(), 1, "solderPasteKanban", "设备概览", 1, "solderPasteKanban", "neolight/solderPasteKanban/index", "", 0, "sKanban");
Menu solderPasteManage = new Menu(new ArrayList<Menu>(), 1, "solderPasteManage", "库存", 1, "solderPasteManage", "neolight/solderPasteManage/index", "", 0, "solder");
Menu solderPasteData = new Menu(new ArrayList<Menu>(), 1, "solderPasteData", "追溯性", 1, "solderPasteData", "neolight/solderPasteData/index", "", 0, "sData");
Menu solderPasteSetting = new Menu(new ArrayList<Menu>(), 1, "solderPasteSetting", "设置", 1, "solderPasteSetting", "neolight/solderPasteSetting/index", "", 0, "system");
menus.addAll(createMenus(solderPaste,solderPasteKanban,solderPasteManage,solderPasteData,solderPasteSetting));
//物料管理:元器件管理,条形码管理
Menu pMenuWl = Menu.CreatePMenu("档案管理", 30, "materiel ", 2, "BOM");
Menu menucom = new Menu(new ArrayList<Menu>(), 1, "component:list", "元器件", 1, "componentParts", "parts/component/index", "", 0, "server");
......
......@@ -255,7 +255,7 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
// 1M
int len = 1024 * 1024;
if (size > (maxSize * len)) {
throw new ValidateException("smfcode.fileToLong", "文件超出规定大小");
throw new ValidateException("smfcore.fileToLong", "文件超出规定大小");
}
}
......
......@@ -62,7 +62,7 @@ public class UserCodeUtil {
if(index == -1){
log.info("未包含【"+titleName+"】或【"+titleNameEn+"】列");
// throw new ValidateException("必须包含["+titleNameEn+"]列");
throw new ValidateException("smfcode.columnNotExist","必须包含[{0}列",new String[]{titleNameEn});
throw new ValidateException("smfcore.columnNotExist","必须包含[{0}列",new String[]{titleNameEn});
}
return index;
}
......
......@@ -497,7 +497,7 @@ public class BarcodeRule {
}
codeBean.setCodeStr(codeStr);
if(!isValidRule()){
codeBean.setError("smfcode.error.barcode.noRule","解析规则未定义");
codeBean.setError("smfcore.error.barcode.noRule","解析规则未定义");
return codeBean;
}
String[] codeArr = new String[]{codeStr};
......@@ -506,7 +506,7 @@ public class BarcodeRule {
//条码与规则长度对应不上
if(codeArr.length != length){
log.info("条码["+codeStr+"]与规则【"+ruleStr+"】长度不同");
codeBean.setError("smfcode.error.barcode.wrongLength",new String[]{codeStr}, "条码[{0}]长度错误");
codeBean.setError("smfcore.error.barcode.wrongLength",new String[]{codeStr}, "条码[{0}]长度错误");
return codeBean;
}else{
codeArr = codeStr.split(separator,length);
......@@ -525,7 +525,7 @@ public class BarcodeRule {
if(Strings.isNullOrEmpty(reelId)){
log.info("条码解析失败,未找到RI字段");
codeBean.setError("smfcode.error.barcode.noField",new String[]{"RI"},"条码解析失败,未找到{0}字段");
codeBean.setError("smfcore.error.barcode.noField",new String[]{"RI"},"条码解析失败,未找到{0}字段");
return codeBean;
}
......@@ -533,7 +533,7 @@ public class BarcodeRule {
if(Strings.isNullOrEmpty(partNumber)){
log.info("条码解析失败,未找到PN字段");
codeBean.setError("smfcode.error.barcode.noField",new String[]{"PN"}, "条码解析失败,未找到{0}字段");
codeBean.setError("smfcore.error.barcode.noField",new String[]{"PN"}, "条码解析失败,未找到{0}字段");
return codeBean;
}
if(batch_item.hasThisField()){
......@@ -545,7 +545,7 @@ public class BarcodeRule {
quantity = quantity_item.getIntValue(codeArr);
if(quantity == -1){
log.info("条码解析失败,未找到QTY 字段");
codeBean.setError("smfcode.error.barcode.noField",new String[]{"QTY"},"条码解析失败,未找到{0}字段");
codeBean.setError("smfcore.error.barcode.noField",new String[]{"QTY"},"条码解析失败,未找到{0}字段");
return codeBean;
}
}
......@@ -553,7 +553,7 @@ public class BarcodeRule {
Date produceDate= produceDate_item.getDateValue(codeArr);
if(produceDate_item.hasThisField() && produceDate == null){
log.info("条码解析失败,PRODATE字段不合规则");
codeBean.setError("smfcode.error.barcode.noField",new String[]{"PRODATE"},"条码解析失败,未找到{0}字段");
codeBean.setError("smfcore.error.barcode.noField",new String[]{"PRODATE"},"条码解析失败,未找到{0}字段");
return codeBean;
}
Date expireDate= expireDate_item.getDateValue(codeArr);
......
......@@ -84,7 +84,7 @@ public class BarcodeController {
public ResponseEntity<Object> update(@Validated @RequestBody BarcodeDto resources) {
Barcode barcode=barcodeMapper.toEntity(resources);
if (barcode.getId() == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"});
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"});
}
barcodeManager.saveBarcode(barcode);
return new ResponseEntity<>(HttpStatus.OK);
......@@ -97,7 +97,7 @@ public class BarcodeController {
List<Barcode> barcodes = new ArrayList<Barcode>();
for (String id : ids) {
if (id == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
}
}
barcodeManager.deleteBarcodes(ids);
......@@ -117,10 +117,10 @@ public class BarcodeController {
@PreAuthorize("@el.check('barcode')")
public ResponseEntity<Object> updateRules(@Validated @RequestBody List<String> codeRules) {
if(codeRules.isEmpty()){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"codeRuleList"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"codeRuleList"} );
}
if(codeRules.size()>10){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"codeRuleList"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"codeRuleList"} );
}
Settings settings=dataCache.getSettings();
settings.setCodeRuleList(codeRules);
......@@ -135,7 +135,7 @@ public class BarcodeController {
String image = "csv";
String fileType = FileUtil.getExtensionName(uploadFile.getOriginalFilename());
if(fileType != null && !image.contains(fileType)){
throw new ValidateException("smfcode.feleFormatError","文件格式错误!, 仅支持{0}格式",new String[]{image});
throw new ValidateException("smfcore.feleFormatError","文件格式错误!, 仅支持{0}格式",new String[]{image});
}
File folder = new File(properties.getPath(),"pos");
File file = FileUtil.upload(uploadFile, folder.getAbsolutePath());
......
......@@ -76,7 +76,7 @@ public class ComponentController {
public ResponseEntity<Object> update(@Validated @RequestBody ComponentDto resources) {
Component component=componentMapper.toEntity(resources);
if (component.getId() == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
}
componentManager.saveComponent(component);
// //修改元器件时更新storagePos中的数据
......@@ -97,7 +97,7 @@ public class ComponentController {
List<Component> Components = new ArrayList<Component>();
for (String id : ids) {
if (id == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
}
}
componentManager.deleteComponents(ids);
......
......@@ -109,7 +109,7 @@ public class BarcodeManagerImpl implements IBarcodeManager {
//readID不能重复
Barcode data= barcodeDao.findOne(query);
if(data!=null){
throw new ValidateException("smfcode.codeExist", "条码["+resources.getBarcode()+"]已存在");
throw new ValidateException("smfcore.codeExist", "条码["+resources.getBarcode()+"]已存在");
}
if(resources.getProvider()==null){
......@@ -177,19 +177,19 @@ public class BarcodeManagerImpl implements IBarcodeManager {
protected void validateSave(Barcode barcode) throws ValidateException {
if (barcode.getBarcode()==null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"barcode"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"barcode"} );
// throw new ValidateException("barcode.error.empty");
}
if (barcode.getPartNumber()==null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"partNumber"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"partNumber"} );
// throw new ValidateException("["+barcode.getBarcode()+"]barcode.error.partNumber.empty");
}
if (barcode.getBatch() == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"batch"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"batch"} );
// throw new ValidateException("批次不能为空");
}
if (barcode.getAmount() < 0) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"amout"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"amout"} );
// throw new ValidateException("["+barcode.getBarcode()+"]barcode.error.amount.negative" );
}
if (!validateUnique(barcode)) {
......
......@@ -126,7 +126,7 @@ public class ComponentManagerImpl implements IComponentManager {
public Component saveComponent(Component resources) {
if(resources.getPartNumber()==null){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"partNumber"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"partNumber"} );
// throw new BadRequestException("料号不能为空");
}
if(resources.getProvider()==null){
......@@ -153,7 +153,7 @@ public class ComponentManagerImpl implements IComponentManager {
}
Component com = componentDao.findOne(new Query(c));
if (com != null) {
throw new ValidateException("smfcode.valueAlreadyExist","{0}[{1}]已存在",new String[]{"partNumber",resources.getPartNumber()});
throw new ValidateException("smfcore.valueAlreadyExist","{0}[{1}]已存在",new String[]{"partNumber",resources.getPartNumber()});
// throw new BadRequestException("料号["+resources.getPartNumber()+"]已存在");
}
......
......@@ -55,7 +55,7 @@ public class CodeResolve {
if(barcodeRuleList == null || barcodeRuleList.isEmpty()){
CodeBean codeBean = new CodeBean();
codeBean.setBarcode(null);
codeBean.setError("smfcode.error.barcode.noRules", "解析规则未定义");
codeBean.setError("smfcore.error.barcode.noRules", "解析规则未定义");
codeBean.setCodeStr(barcodeItemStr);
return codeBean;
}
......@@ -195,7 +195,7 @@ public class CodeResolve {
if(component == null){
log.info("档案["+barcodeFromRule.getPartNumber()+"]不存在");
// throw new ValidateException("component.error.notExist",new String[]{barcodeFromRule.getPartNumber()});
throw new ValidateException("smfcode.valueNotExist","{0}[{1}]不存在",new String[]{"component",barcodeFromRule.getPartNumber()});
throw new ValidateException("smfcore.valueNotExist","{0}[{1}]不存在",new String[]{"component",barcodeFromRule.getPartNumber()});
}
codeBeanFromRule.setShowImg(component.getShowImg());
......@@ -219,21 +219,21 @@ public class CodeResolve {
}
}catch (ValidateException ve){
//档案不存在
codeBeanFromRule.setError("smfcode.error.barcode.pnNotExist",new String[]{barcodeFromRule.getPartNumber()},"档案 {0} 不存在");
codeBeanFromRule.setError("smfcore.error.barcode.pnNotExist",new String[]{barcodeFromRule.getPartNumber()},"档案 {0} 不存在");
log.warn("档案"+barcodeFromRule.getPartNumber()+"不存在");
}
//解析成功了,直接返回
return codeBeanFromRule;
}else{
//在数据库中不存在,且未解析成功,用其他规则再解析
codeBeanFromRule.setError("smfcode.error.barcode.invalid",new String[]{barcodeItemStr}, "{0}不是有效的条码");
codeBeanFromRule.setError("smfcore.error.barcode.invalid",new String[]{barcodeItemStr}, "{0}不是有效的条码");
}
}
if(codeBeanFromRule == null){
codeBeanFromRule = new CodeBean();
codeBeanFromRule.setBarcode(null);
codeBeanFromRule.setError("smfcode.error.barcode.invalid",new String[]{barcodeItemStr}, "{0}不是有效的条码");
codeBeanFromRule.setError("smfcore.error.barcode.invalid",new String[]{barcodeItemStr}, "{0}不是有效的条码");
codeBeanFromRule.setCodeStr(barcodeItemStr);
return codeBeanFromRule;
}
......@@ -333,7 +333,7 @@ public class CodeResolve {
if(barcode == null){
barcode = barcodeFromRule;
}else{
throw new ValidateException("smfcode.error.barcode.many","找到多个有效的条码",new String[]{codeStr});
throw new ValidateException("smfcore.error.barcode.many","找到多个有效的条码",new String[]{codeStr});
}
}else{
errorMsg = codeBean.getError();
......@@ -341,7 +341,7 @@ public class CodeResolve {
}
if(barcode == null){
throw new ValidateException("smfcode.error.barcode.noValidCode", "无效的条码",new String[]{codeBeans.size()+":",codeStr});
throw new ValidateException("smfcore.error.barcode.noValidCode", "无效的条码",new String[]{codeBeans.size()+":",codeStr});
}
return barcode;
}
......
......@@ -160,7 +160,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
//同条码,但不是同料仓
log.error("条码[" + barcodeSave.getBarcode() + "]任务正在执行,但任务料仓为:" + task.getStorageId() + " 请求料仓为:" + task.getStorageId());
//throw new ValidateException("条码["+barcodeSave.getBarcode()+"]任务正在执行");
throw new ValidateException("smfcode.error.barcode.executing","条码[{0}}]任务正在执行", new String[]{barcodeSave.getBarcode()});
throw new ValidateException("smfcore.error.barcode.executing","条码[{0}}]任务正在执行", new String[]{barcodeSave.getBarcode()});
}
}
......@@ -176,19 +176,19 @@ public class BaseDeviceHandler implements IDeviceHandler {
storagePos = storagePosManager.getByPosName(posName);
if (storagePos == null) {
throw new ValidateException("smfcode.error.pos.notExist", "库位[{0}]不存在,无法入库", new String[]{posName});
throw new ValidateException("smfcore.error.pos.notExist", "库位[{0}]不存在,无法入库", new String[]{posName});
}
if (!storage.getId().equals(storagePos.getStorageId())) {
throw new ValidateException("smfcode.error.pos.wrong", "库位[{0}]与料仓[{1}}]不匹配,无法入库", new String[]{posName, storage.getCid()});
throw new ValidateException("smfcore.error.pos.wrong", "库位[{0}]与料仓[{1}}]不匹配,无法入库", new String[]{posName, storage.getCid()});
}
if (storagePos.getBarcode() != null) {
throw new ValidateException("smfcode.error.pos.hasReel", "库位[{0}]中已有物料,无法入库", new String[]{posName});
throw new ValidateException("smfcore.error.pos.hasReel", "库位[{0}]中已有物料,无法入库", new String[]{posName});
}
if (!storage.canPutInPos(barcodeSave.getPlateSize(), barcodeSave.getHeight(), storagePos.getW(), storagePos.getH())) {
String reelSize = barcodeSave.getPlateSize() + "x" + barcodeSave.getHeight();
String posSize = storagePos.getW() + "x" + storagePos.getH();
throw new ValidateException("smfcode.error.pos.sizeNotMatch", "料盘尺寸[{0}}]与库位{1}尺寸[{2}]不符,无法入库", new String[]{reelSize,posName,posSize});
throw new ValidateException("smfcore.error.pos.sizeNotMatch", "料盘尺寸[{0}}]与库位{1}尺寸[{2}]不符,无法入库", new String[]{reelSize,posName,posSize});
}
} else {
......@@ -265,7 +265,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
//先查找空闲 BOX同尺寸的,如果找不到,再查找可入库 BOX 同尺寸或比盘尺寸大的仓位
StatusBean statusBean = DevicesStatusUtil.getStatusBean(storageCid);
if (statusBean == null) {//当前料仓不可用
throw new ValidateException("smfcode.error.storage.offline", "料仓[{0}]离线", new String[]{storageCid});
throw new ValidateException("smfcore.error.storage.offline", "料仓[{0}]离线", new String[]{storageCid});
}
//还需要排除掉正在队列里的仓位
StoragePos storagePos = null;
......@@ -312,7 +312,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
public Barcode verifyBarcodePutIn(List<Storage> storageList, Barcode barcodeSave) throws ValidateException {
if (barcodeSave == null) {
throw new ValidateException("smfcode.error.barcode.invalid", "条码无效", new String[]{""});
throw new ValidateException("smfcore.error.barcode.invalid", "条码无效", new String[]{""});
}
Date expireDate = barcodeSave.getExpireDate();
......@@ -332,11 +332,11 @@ public class BaseDeviceHandler implements IDeviceHandler {
}
if(!canPutIn){
throw new ValidateException("smfcode.error.barcode.wrongSize","尺寸[{0}]不符", new String[]{w + "x" + h});
throw new ValidateException("smfcore.error.barcode.wrongSize","尺寸[{0}]不符", new String[]{w + "x" + h});
}
if (barcodeSave.getAmount() <= 0) {
throw new ValidateException("smfcode.error.barcode.wrongQty", "条码[{0}]对应的数量<=0为: {1}" , new String[]{barcodeSave.getBarcode(), barcodeSave.getAmount() + ""});
throw new ValidateException("smfcore.error.barcode.wrongQty", "条码[{0}]对应的数量<=0为: {1}" , new String[]{barcodeSave.getBarcode(), barcodeSave.getAmount() + ""});
}
// if(barcodeSave.getPlateSize() <=0 || barcodeSave.getHeight() <= 0){
......@@ -359,7 +359,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
return barcodeSave;
}
}
throw new ValidateException("smfcode.error.barcode.taskNotEnd", "料盘[{0}]的操作未完成,无法执行入库操作", new String[]{barcodeSave.getBarcode()});
throw new ValidateException("smfcore.error.barcode.taskNotEnd", "料盘[{0}]的操作未完成,无法执行入库操作", new String[]{barcodeSave.getBarcode()});
}
}
}
......
......@@ -141,11 +141,11 @@ public class NLShelfHandler extends BaseDeviceHandler {
private void canBarcodePutInPos(StoragePos pos, Barcode barcode) throws ValidateException {
if(pos.getBarcode() != null){
throw new ValidateException("smfcode.shelf.nextPos.hasReel", "库位[{0}]已有物料,请重新扫描库位码",new String[]{pos.getPosName()});
throw new ValidateException("smfcore.shelf.nextPos.hasReel", "库位[{0}]已有物料,请重新扫描库位码",new String[]{pos.getPosName()});
}
Collection<String> excludePosIds = taskService.excludePosIds();
if(excludePosIds.contains(pos.getId())){
throw new ValidateException("smfcode.shelf.nextPos.hasTask", "库位[{0}]已有任务,请重新扫描库位码",new String[]{pos.getPosName()});
throw new ValidateException("smfcore.shelf.nextPos.hasTask", "库位[{0}]已有任务,请重新扫描库位码",new String[]{pos.getPosName()});
}
// if(barcode != null){
// Storage storage = dataCache.getStorageById(pos.getStorageId());
......@@ -155,7 +155,7 @@ public class NLShelfHandler extends BaseDeviceHandler {
// if(!storage.canPutInPos(barcode.getPlateSize(),barcode.getHeight(), pos.getW(), pos.getH())){
// String reelSize = barcode.getPlateSize() + "x" + barcode.getHeight();
// String posSize = pos.getW() + "x" + pos.getH();
// throw new ValidateException("smfcode.shelf.nextPos.wrongSize","库位["+pos.getPosName()+"]尺寸["+posSize+"]与料盘尺寸["+reelSize+"]不符,请重新扫描库位码",new String[]{pos.getPosName(),posSize, reelSize});
// throw new ValidateException("smfcore.shelf.nextPos.wrongSize","库位["+pos.getPosName()+"]尺寸["+posSize+"]与料盘尺寸["+reelSize+"]不符,请重新扫描库位码",new String[]{pos.getPosName(),posSize, reelSize});
// }
// }
}
......@@ -174,16 +174,16 @@ public class NLShelfHandler extends BaseDeviceHandler {
String ptoken=token.substring(token.length()-10);
String loginUser = SecurityUtils.getLoginUsername();
if (ObjectUtils.isEmpty(code)) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"code"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"code"});
}
if (groupId == null && storageId == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"group"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"group"});
}
Storage currentStorage = null;
if (groupId == null && storageId != null) {
currentStorage = dataCache.getStorageById(storageId);
if (currentStorage == null || !currentStorage.isNLShelf()) {
return ResultBean.newErrorResult(1, "smfcode.shelf.notFound", "未找到料架");
return ResultBean.newErrorResult(1, "smfcore.shelf.notFound", "未找到料架");
}
if (currentStorage != null) {
groupId = currentStorage.getGroupId();
......@@ -201,21 +201,21 @@ public class NLShelfHandler extends BaseDeviceHandler {
//判断库位是否是对应设备或者租
if (currentStorage != null) {
if ( ! pos.getStorageId().equals(storageId)) {
return ResultBean.newErrorResult(1, "smfcode.shelf.pos.notInStorage", "料架[{0}]中未找到库位[{1}]", new String[]{currentStorage.getName(), pos.getPosName()});
return ResultBean.newErrorResult(1, "smfcore.shelf.pos.notInStorage", "料架[{0}]中未找到库位[{1}]", new String[]{currentStorage.getName(), pos.getPosName()});
}
} else {
currentStorage = dataCache.getStorageById(pos.getStorageId());
if (currentStorage == null || !currentStorage.isNLShelf()) {
return ResultBean.newErrorResult(1, "smfcode.shelf.notFound", "未找到料架");
return ResultBean.newErrorResult(1, "smfcore.shelf.notFound", "未找到料架");
}
if (currentStorage.getGroupId() != groupId) {
return ResultBean.newErrorResult(1, "smfcode.shelf.pos.notInGroup", "组中未找到库位[{0}]", new String[]{pos.getPosName()});
return ResultBean.newErrorResult(1, "smfcore.shelf.pos.notInGroup", "组中未找到库位[{0}]", new String[]{pos.getPosName()});
}
}
//扫描的为库位条码,先关掉上一个库位灯, 当前库位中没有物料的话点亮库位灯
closeLastPos(token);
if (pos.getBarcode() != null) {
return ResultBean.newErrorResult(1, "smfcode.shelf.msg.hasReel", "库位中[{0}]已有物料", new String[]{pos.getPosName()});
return ResultBean.newErrorResult(1, "smfcore.shelf.msg.hasReel", "库位中[{0}]已有物料", new String[]{pos.getPosName()});
} else {
//设置上一个入库操作库位
openAndCloseLights(token, pos, putInColor, delayCloseTime);
......@@ -225,7 +225,7 @@ public class NLShelfHandler extends BaseDeviceHandler {
operateBean.setNextPosId(null);
shelfPutInBeanMap.put(token, operateBean);
log.info(ptoken + ":库位[" + pos.getPosName() + "]操作成功,请扫描要放入的物料");
return ResultBean.newOkResult("smfcode.shelf.msg.tipScanReel", "库位[" + pos.getPosName() + "]操作成功,请扫描要放入的物料", new String[]{pos.getPosName()},"");
return ResultBean.newOkResult("smfcore.shelf.msg.tipScanReel", "库位[" + pos.getPosName() + "]操作成功,请扫描要放入的物料", new String[]{pos.getPosName()},"");
}
} else {
//扫的是物料条码
......@@ -246,7 +246,7 @@ public class NLShelfHandler extends BaseDeviceHandler {
//5秒内同一个条码忽略
Date usedDate = barcode.getUsedDate();
if (usedDate != null && now - usedDate.getTime() < 5000) {
return ResultBean.newErrorResult(1, "smfcode.shelf.msg.fastop", "条码操作频繁,请稍后再试");
return ResultBean.newErrorResult(1, "smfcore.shelf.msg.fastop", "条码操作频繁,请稍后再试");
}
StoragePos inPos = storagePosManager.getByBarcodeId(barcode.getId());
......@@ -256,15 +256,15 @@ public class NLShelfHandler extends BaseDeviceHandler {
for (DataLog task : allTasks) {
if (task.isCheckOutTask() && task.getBarcode() != null && task.getBarcode().equals(barcode.getBarcode())) {
// if(!sourceName.equalsIgnoreCase("All") && !sourceName.equals(task.getSourceName())){
// return ResultBean.newErrorResult(1,"smfcode.shelf.error.orderError","任务与指定工单[{0}]不一致",new String[]{sourceName} );
// return ResultBean.newErrorResult(1,"smfcore.shelf.error.orderError","任务与指定工单[{0}]不一致",new String[]{sourceName} );
// }
taskService.addTaskToFinished(inPos, null, loginUser);
opPosLight("close", inPos, null);
log.info(barcode.getBarcode() + " 出库完成, 库位[" + inPos.getPosName() + "]灭灯");
return ResultBean.newErrorResult(1, "smfcode.shelf.msg.outConfirm", "出库完成, 库位[{0}]灭灯", new String[]{inPos.getPosName()} );
return ResultBean.newErrorResult(1, "smfcore.shelf.msg.outConfirm", "出库完成, 库位[{0}]灭灯", new String[]{inPos.getPosName()} );
}
}
return ResultBean.newErrorResult(1, "smfcode.shelf.msg.noTask", "操作失败,已在库位[{0}]中,未找到对应的出库任务", new String[]{inPos.getPosName()});
return ResultBean.newErrorResult(1, "smfcore.shelf.msg.noTask", "操作失败,已在库位[{0}]中,未找到对应的出库任务", new String[]{inPos.getPosName()});
}
//入库
......@@ -275,7 +275,7 @@ public class NLShelfHandler extends BaseDeviceHandler {
String operatePosId = operateBean.getNextPosId();
if (Strings.isNullOrEmpty(operatePosId)) {
log.info(ptoken + ":条码[" +code+ "],请先扫描库位码");
return ResultBean.newErrorResult(1, "smfcode.shelf.msg.scanPos", "请先扫描库位码");
return ResultBean.newErrorResult(1, "smfcore.shelf.msg.scanPos", "请先扫描库位码");
} else {
//有下一个库位
StoragePos currentPos = storagePosManager.get(String.valueOf(operatePosId));
......@@ -301,7 +301,7 @@ public class NLShelfHandler extends BaseDeviceHandler {
shelfPutInBeanMap.put(token, operateBean);
log.info(ptoken + ":条码[" + code + "]入库操作成功,请放入库位 [" + currentPos.getPosName() + "],下一个库位号:" + nextPosId);
return ResultBean.newOkResult("smfcode.shelf.msg.inOk", "操作成功,请放入库位[" + currentPos.getPosName() + "]", new String[]{currentPos.getPosName()}, "");
return ResultBean.newOkResult("smfcore.shelf.msg.inOk", "操作成功,请放入库位[" + currentPos.getPosName() + "]", new String[]{currentPos.getPosName()}, "");
}
}
......@@ -327,7 +327,7 @@ public class NLShelfHandler extends BaseDeviceHandler {
}
shelfPutInBeanMap.put(token, operateBean);
log.info(ptoken + ":条码["+code+"]入库操作成功,请放入库位 ["+opPos.getPosName()+"],下一个库位号:" + nextPosId);
return ResultBean.newOkResult("smfcode.shelf.msg.inOk", "操作成功,请放入库位["+opPos.getPosName()+"]", new String[]{opPos.getPosName()},"");
return ResultBean.newOkResult("smfcore.shelf.msg.inOk", "操作成功,请放入库位["+opPos.getPosName()+"]", new String[]{opPos.getPosName()},"");
}
} catch (ValidateException e) {
......
......@@ -71,10 +71,10 @@ public class SensorShelfHandler extends BaseDeviceHandler {
String groupId = mapValues.get("group");
String storageId=mapValues.get("storageId");
if(ObjectUtils.isEmpty(code)){
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"code"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"code"});
}
if(groupId==null&&storageId==null){
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"group"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"group"});
}
if(groupId==null&&storageId!=null){
Storage storage=dataCache.getStorageById(storageId);
......@@ -127,7 +127,7 @@ public class SensorShelfHandler extends BaseDeviceHandler {
// CodeBean codeBean = codeResolve.resolveSingleCode(codeStr);
if (barcode == null || barcode.getBarcode() == null) {
return ResultBean.newErrorResult(1, "smfcode.error.barcode.invalid", "条码无效");
return ResultBean.newErrorResult(1, "smfcore.error.barcode.invalid", "条码无效");
}
String pn = barcode.getPartNumber();
......
......@@ -133,7 +133,7 @@ public class SpBoxHandler extends BaseDeviceHandler {
//同条码,但不是同料仓
log.error("条码[" + barcodeSave.getBarcode() + "]任务正在执行,但任务料仓为:" + task.getStorageId() + " 请求料仓为:" + task.getStorageId());
//throw new ValidateException("条码["+barcodeSave.getBarcode()+"]任务正在执行");
throw new ValidateException("smfcode.error.barcode.executing","条码[{0}}]任务正在执行" ,new String[]{barcodeSave.getBarcode()});
throw new ValidateException("smfcore.error.barcode.executing","条码[{0}}]任务正在执行" ,new String[]{barcodeSave.getBarcode()});
}
}
......@@ -150,19 +150,19 @@ public class SpBoxHandler extends BaseDeviceHandler {
storagePos = storagePosManager.getByPosName(posName);
if (storagePos == null) {
throw new ValidateException("smfcode.error.pos.notExist", "库位【{0}】不存在,无法入库", new String[]{posName});
throw new ValidateException("smfcore.error.pos.notExist", "库位【{0}】不存在,无法入库", new String[]{posName});
}
if (!storage.getId().equals(storagePos.getStorageId())) {
throw new ValidateException("smfcode.error.pos.wrong", "库位【{0}】与料仓[{1}]不匹配,无法入库", new String[]{posName, storage.getCid()});
throw new ValidateException("smfcore.error.pos.wrong", "库位【{0}】与料仓[{1}]不匹配,无法入库", new String[]{posName, storage.getCid()});
}
if (storagePos.getBarcode() != null) {
throw new ValidateException("smfcode.error.pos.hasReel", "库位【{0}】中已有物料,无法入库", new String[]{posName});
throw new ValidateException("smfcore.error.pos.hasReel", "库位【{0}】中已有物料,无法入库", new String[]{posName});
}
if (!storage.canPutInPos(barcodeSave.getPlateSize(), barcodeSave.getHeight(), storagePos.getW(), storagePos.getH())) {
String reelSize = barcodeSave.getPlateSize() + "x" + barcodeSave.getHeight();
String posSize = storagePos.getW() + "x" + storagePos.getH();
throw new ValidateException("smfcode.error.pos.sizeNotMatch", "料盘尺寸[{0}]与库位{1}尺寸[{2}]不符,无法入库", new String[]{reelSize,posName,posSize});
throw new ValidateException("smfcore.error.pos.sizeNotMatch", "料盘尺寸[{0}]与库位{1}尺寸[{2}]不符,无法入库", new String[]{reelSize,posName,posSize});
}
} else {
......
......@@ -10,6 +10,9 @@ import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.common.utils.YmlUpdateUtil;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.barcode.utils.CodeResolve;
import com.neotel.smfcore.core.language.service.bean.LanguageInfo;
import com.neotel.smfcore.core.language.service.po.LanguageMsg;
import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.core.storage.bean.InventoryItem;
import com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
......@@ -102,6 +105,15 @@ public class DataCache {
return null;
}
public List<LanguageInfo> getLanguageList(){
List<LanguageInfo> lanList = getCache(Constants.CACHE_languageType);
if (lanList == null || lanList.size() <= 0) {
lanList = MessageUtils.getDefaultLanList();
updateCache(Constants.CACHE_languageType, lanList);
}
return lanList;
}
/**
* 更新缓存信息
*/
......
......@@ -4,7 +4,6 @@ import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.core.device.util.DataCache;
......@@ -13,6 +12,7 @@ import com.neotel.smfcore.core.language.rest.bean.dto.LanguageResourceDto;
import com.neotel.smfcore.core.language.rest.bean.mapstruct.LanguageMsgMapper;
import com.neotel.smfcore.core.language.rest.bean.query.LanguageMsgCriteria;
import com.neotel.smfcore.core.language.service.bean.Content;
import com.neotel.smfcore.core.language.service.bean.LanguageInfo;
import com.neotel.smfcore.core.language.service.nanager.ILanguageMsgManager;
import com.neotel.smfcore.core.language.service.po.LanguageMsg;
import com.neotel.smfcore.core.language.util.MessageUtils;
......@@ -54,18 +54,15 @@ public class LanguageMsgController {
@Autowired
DataCache dataCache;
public List<String> getAllLanList() {
public List<String> getAllLanList() {
List<String> lanList = dataCache.getCache(Constants.CACHE_languageType);
if (lanList == null || lanList.size() <= 0) {
lanList = new ArrayList<>();
lanList.add(MessageUtils.ZH_CN);
lanList.add(MessageUtils.ZH_TW);
lanList.add(MessageUtils.EN_US);
lanList.add(MessageUtils.JA_JP);
dataCache.updateCache(Constants.CACHE_languageType, lanList);
List<LanguageInfo> lanList = dataCache.getLanguageList();
List<String> list = new ArrayList<>();
for (LanguageInfo lan : lanList
) {
list.add(lan.getLanCode());
}
return lanList;
return list;
}
......@@ -73,14 +70,15 @@ public class LanguageMsgController {
@PostMapping(value = "/upload")
public ResultBean upload(@RequestParam MultipartFile uploadFile) throws Exception {
// 验证文件上传的格式
String smfcodeType = "properties";
String smfcoreType = "properties";
String smfclientType = "js";
String csvType="csv";
String fileType = FileUtil.getExtensionName(uploadFile.getOriginalFilename());
if (fileType == null) {
throw new ValidateException("smfcode.feleFormatError", "文件格式错误!, 仅支持{0}格式", new String[]{smfclientType + "/" + smfcodeType});
throw new ValidateException("smfcore.feleFormatError", "文件格式错误!, 仅支持{0}格式", new String[]{csvType+"/"+smfclientType + "/" + smfcoreType});
}
if ((!smfclientType.contains(fileType)) && !smfcodeType.contains(fileType)) {
throw new ValidateException("smfcode.feleFormatError", "文件格式错误!, 仅支持{0}格式", new String[]{smfclientType + "/" + smfcodeType});
if ((!smfclientType.contains(fileType)) && !smfcoreType.contains(fileType) && !csvType.contains(fileType)) {
throw new ValidateException("smfcore.feleFormatError", "文件格式错误!, 仅支持{0}格式", new String[]{csvType+"/"+smfclientType + "/" + smfcoreType});
}
File folder = new File(properties.getPath(), "resource");
File file = FileUtil.upload(uploadFile, folder.getAbsolutePath());
......@@ -90,12 +88,16 @@ public class LanguageMsgController {
String lanType = getLanTypeByFileName(uploadFile.getOriginalFilename());
if (smfclientType.contains(fileType)) {
//客户端js文件处理
Map<String, String> proMap = readJsFile(file);
Map<String, String> proMap = MessageUtils.readJsFile(file);
resultMsg = ResourceUpload(uploadFile.getOriginalFilename(), proMap, lanType, "smfclient");
} else if (smfcodeType.contains(fileType)) {
Map<String, String> proMap = MessageUtils.ReadPropertiesFile(file);
} else if (smfcoreType.contains(fileType)) {
Map<String, String> proMap = MessageUtils.readPropertiesFile(file);
resultMsg = ResourceUpload(uploadFile.getOriginalFilename(), proMap, lanType, "");
}
if(csvType.equals(fileType)){
List<LanguageMsg> list=MessageUtils.readCsvFile(file.getAbsolutePath(),dataCache.getLanguageList());
msgListUpload(list);
}
return ResultBean.newOkResult(resultMsg);
}
......@@ -118,6 +120,7 @@ public class LanguageMsgController {
query.addCriteria(Criteria.where(proName).exists(false));
}
}
List<LanguageMsg> list = languageMsgManager.findByQuery(query);
//下载
languageMsgManager.download(list, response);
......@@ -160,7 +163,7 @@ public class LanguageMsgController {
public ResponseEntity<Object> update( @RequestBody LanguageMsgDto resources) {
LanguageMsg msg=languageMsgMapper.toEntity(resources);
if (msg.getId() == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"});
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"});
}
languageMsgManager.saveMsg(msg);
return new ResponseEntity<>(HttpStatus.OK);
......@@ -172,7 +175,7 @@ public class LanguageMsgController {
for (String id : ids) {
if (id == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
}
}
languageMsgManager.deleteMsgs(ids);
......@@ -224,6 +227,7 @@ public class LanguageMsgController {
return list;
}
@ApiOperation("客户端提交资源列表:只增加不修改")
@PostMapping(value = "/resource")
@AnonymousAccess
......@@ -309,10 +313,10 @@ public class LanguageMsgController {
proMap.keySet()) {
String msgStr = proMap.get(key);
LanguageMsg msg = MessageUtils.getMsg(key);
LanguageMsg msg = MessageUtils.getMsg(type,key);
//导入时只能新增不能修改
if (msg == null) {
msg = new LanguageMsg(key, msgStr,"smfclient");
msg = new LanguageMsg(key, msgStr,type);
msg.setContent(lanCode, msgStr);
newLanguageList.add(msg);
} else {
......@@ -320,6 +324,12 @@ public class LanguageMsgController {
// if (!oldMsg.equals(msgStr)) {
if(ObjectUtil.isEmpty(oldMsg)){
msg.setContent(lanCode, msgStr);
//内容默认更改为中文
if(lanCode.equals(MessageUtils.ZH_CN)){
if(!msg.getMsg().equals(msgStr)){
msg.setMsg(msgStr);
}
}
updateLanguageList.add(msg);
languageMsgManager.save(msg);
MessageUtils.updateMsg(msg);
......@@ -335,138 +345,84 @@ public class LanguageMsgController {
MessageUtils.updateMsg(msg);
}
}
log.info("导入资源[" + orgFileName + "]["+type+"]["+lanCode+"]共更新[" + updateLanguageList.size() + "]条资源,新增[" + newLanguageList.size() + "]条资源");
log.info("导入资源[" + orgFileName + "]["+type+"]["+lanCode+"],共["+proMap.size()+"]条数据,共更新[" + updateLanguageList.size() + "]条资源,新增[" + newLanguageList.size() + "]条资源");
return "ok";
}
private void msgListUpload( List<LanguageMsg> msgList) {
private Map<String,String> readJsFile(File file){
Map<String,String> map=new HashMap<>();
List<LanguageMsg> newLanguageList = new ArrayList<>();
List<LanguageMsg> updateLanguageList = new ArrayList<>();
for (LanguageMsg msg :
msgList) {
try (FileInputStream fis = new FileInputStream(file.getPath());
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(isr)
) {
String line;
//网友推荐更加简洁的写法
int lineIndex=-1;
String currNodeName="";
while ((line = br.readLine()) != null) {
lineIndex++;
// if(lineIndex==0){
// continue;
// }
if(ObjectUtil.isEmpty(line)){
if(ObjectUtil.isEmpty(msg.getCode())) {
//code不能为空
continue;
}
if(ObjectUtil.isEmpty(msg.getMsg())){
//内容不能为空
continue;
} if(ObjectUtil.isEmpty(msg.getType())){
//内容不能为空
continue;
}
List<Content> contentList = new ArrayList<>();
for (Content con :
msg.getContentList()) {
if (ObjectUtil.isEmpty(con.getLanCode()) || ObjectUtil.isEmpty(con.getMsg())) {
continue;
}
if (line.contains("{")){
if(line.contains("=")){
currNodeName="";
}else{
int dendIndex=line.indexOf(':');
String lineNode=line.substring(0,dendIndex).trim();
if(ObjectUtil.isEmpty(currNodeName)){
currNodeName=lineNode;
}else{
//节点名称+
currNodeName=currNodeName+"."+lineNode;
}
contentList.add(con);
}
//判断是否是新增
LanguageMsg oldMsg=MessageUtils.getMsg(msg.getType(), msg.getCode());
if(oldMsg==null){
newLanguageList.add(msg);
}
else{
boolean isUpdate=false;
//只新增不修改
List<String> allLanList=getAllLanList();
for (String lanType :
allLanList) {
String oldValue= oldMsg.getContent(lanType);
if(ObjectUtil.isEmpty(oldValue)){
oldMsg.setContent(lanType,msg.getContent(lanType));
isUpdate=true;
//内容默认更改为中文
if(lanType.equals(MessageUtils.ZH_CN)){
if(!oldMsg.getMsg().equals(oldValue)){
oldMsg.setMsg(oldValue);
}
}
}
}else if(line.contains("}")){
//节点名称-
if(currNodeName.contains(".")){
int endIndex=currNodeName.lastIndexOf(".");
currNodeName=currNodeName.substring(0,endIndex );
}else{
currNodeName="";
}
}
else if(line .contains(":")){
if(line.endsWith(",")){
line=line.substring(0,line.length()-1);
}
String[] array=line.replace("'","").replace("\"","").split(":");
if(array.length==2){
String linekey=array[0].trim();
String lineValue=array[1].trim();
map.put(currNodeName+"."+linekey,lineValue);
}
if(isUpdate){
updateLanguageList.add(oldMsg);
languageMsgManager.save(oldMsg);
MessageUtils.updateMsg(oldMsg);
}
}
} catch (IOException e) {
log.error("readJsFile 出错:"+e.toString());
e.printStackTrace();
}
return map;
}
// private void msgListUpload(String type, List<LanguageMsg> msgList) {
//
// List<LanguageMsg> newLanguageList = new ArrayList<>();
// List<LanguageMsg> updateLanguageList = new ArrayList<>();
// for (LanguageMsg msg :
// msgList) {
// msg.setType(type);
// if(ObjectUtil.isEmpty(msg.getCode())) {
// //code不能为空
// continue;
// }
// if(ObjectUtil.isEmpty(msg.getMsg())){
// //内容不能为空
// continue;
// }
//
// List<Content> contentList = new ArrayList<>();
// for (Content con :
// msg.getContentList()) {
// if (ObjectUtil.isEmpty(con.getLanCode()) || ObjectUtil.isEmpty(con.getMsg())) {
// continue;
// }
// contentList.add(con);
// }
//
//
// //判断是否是新增
// LanguageMsg oldMsg=MessageUtils.getMsg(msg.getCode());
// if(oldMsg==null){
// newLanguageList.add(msg);
// }
// else{
// //只新增不修改
// List<String> allLanList=getAllLanList();
// for (String lanType :
// allLanList) {
// String oldValue= oldMsg.getContent(lanType);
// if(ObjectUtil.isEmpty(oldValue)){
// oldMsg.setContent(lanType,msg.getContent(lanType));
// }
// }
// updateLanguageList.add(oldMsg);
// languageMsgManager.save(oldMsg);
// MessageUtils.updateMsg(oldMsg);
// }
//
// }
//
//
//
// if (newLanguageList.size() > 0) {
// languageMsgManager.insertAll(newLanguageList);
// for (LanguageMsg msg :
// newLanguageList) {
// MessageUtils.updateMsg(msg);
// }
// }
// log.info("导入[" + type + "]类型的资源列表,共更新[" + updateLanguageList.size() + "]条资源,新增[" + newLanguageList.size() + "]条资源");
//
// }
if (newLanguageList.size() > 0) {
languageMsgManager.insertAll(newLanguageList);
for (LanguageMsg msg :
newLanguageList) {
MessageUtils.updateMsg(msg);
}
}
log.info("导入csv资源,共["+msgList.size()+"]条数据,共更新[" + updateLanguageList.size() + "]条资源,新增[" + newLanguageList.size() + "]条资源");
}
}
package com.neotel.smfcore.core.language.rest;
import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.language.service.bean.LanguageInfo;
import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.security.rest.bean.dto.UserDto;
import com.neotel.smfcore.security.service.po.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
......@@ -13,10 +17,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Slf4j
......@@ -29,87 +35,96 @@ public class LanguageSetController {
@Autowired
DataCache dataCache;
public List<String> getAllLanList() {
public List<LanguageInfo> getAllLanList() {
List<String> lanList = dataCache.getCache(Constants.CACHE_languageType);
if (lanList == null || lanList.size() <= 0) {
lanList=new ArrayList<>();
lanList.add(MessageUtils.ZH_CN);
lanList.add(MessageUtils.ZH_TW);
lanList.add(MessageUtils.EN_US);
lanList.add(MessageUtils.JA_JP);
dataCache.updateCache(Constants.CACHE_languageType, lanList);
}
return lanList;
// List<LanguageInfo> lanList = dataCache.getCache(Constants.CACHE_languageType);
// if (lanList == null || lanList.size() <= 0) {
// lanList = MessageUtils.getDefaultLanList();
// dataCache.updateCache(Constants.CACHE_languageType, lanList);
// }
return dataCache.getLanguageList();
}
@ApiOperation("获取语言列表")
@GetMapping
@PreAuthorize("@el.check('translation')")
public List<String> getList(){
return getAllLanList();
public List<LanguageInfo> getList(){
return getAllLanList();
}
@ApiOperation("新增语言")
@PostMapping
@PreAuthorize("@el.check('translation')")
public ResponseEntity<Object> create( @RequestBody String languageType) {
public ResponseEntity<Object> create( @RequestBody LanguageInfo newLan) {
//判断是否是admin
String userName= SecurityUtils.getCurrentUsername();
if(!userName.equals(Constants.SUPER_USERNAME)){
throw new ValidateException("smfcode.noLanguageSetAccess","没有编辑语言的权限");
String userName = SecurityUtils.getCurrentUsername();
if (!userName.equals(Constants.SUPER_USERNAME)) {
throw new ValidateException("smfcore.noLanguageSetAccess", "没有编辑语言的权限");
}
if(languageType==null ){
throw new ValidateException("smfcode.languageCanotNull","语言类型不能为空" );
if (newLan == null || ObjectUtil.isEmpty(newLan.getLanCode()) || ObjectUtil.isEmpty(newLan.getLanName())) {
throw new ValidateException("smfcore.languageCanotNull", "语言类型不能为空");
}
List<String> languageTypeList =getAllLanList();
if(!languageTypeList.contains(languageType)){
log.info("用户["+SecurityUtils.getCurrentUsername()+"] 新增语言:"+languageType);
languageTypeList.add(languageType);
dataCache.updateCache(Constants.CACHE_languageType, languageTypeList);
List<LanguageInfo> languageTypeList = getAllLanList();
for (LanguageInfo lan :
languageTypeList) {
if (lan.getLanCode().equals(newLan.getLanCode())) {
throw new ValidateException("smfcore.languageAlreadyExist ", "语言[{0}]已存在", new String[]{newLan.getLanCode()});
}
}
log.info("用户[" + SecurityUtils.getCurrentUsername() + "] 新增语言:" + newLan.getLanCode() + "," + newLan.getLanName());
languageTypeList.add(newLan);
dataCache.updateCache(Constants.CACHE_languageType, languageTypeList);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@ApiOperation("删除指定语言")
@DeleteMapping
@PreAuthorize("@el.check('translation')")
public ResponseEntity<Object> delete(@RequestBody Set<String> languageTypes) {
public ResponseEntity<Object> delete(@RequestBody Set<String> lanCodes) {
//判断是否是admin
String userName = SecurityUtils.getCurrentUsername();
if (!userName.equals(Constants.SUPER_USERNAME)) {
throw new ValidateException("smfcode.noLanguageSetAccess", "没有编辑语言的权限");
throw new ValidateException("smfcore.noLanguageSetAccess", "没有编辑语言的权限");
}
List<String> languageTypeList = getAllLanList();
for (String type : languageTypes) {
List<LanguageInfo> languageTypeList = getAllLanList();
for (String type : lanCodes) {
if (type == null) {
throw new ValidateException("smfcode.languageCanotNull", "语言类型不能为空");
throw new ValidateException("smfcore.languageCanotNull", "语言类型不能为空");
}
}
for (LanguageInfo lan :
languageTypeList) {
//如果是四种默认语言,不能删除
String lancode = lan.getLanCode();
if (lancode.equals(MessageUtils.ZH_CN) ||
lancode.equals(MessageUtils.ZH_TW) ||
lancode.equals(MessageUtils.JA_JP) ||
lancode.equals(MessageUtils.EN_US)
) {
throw new ValidateException("smfcore.canotRemove", "不能删除此语言");
}
languageTypeList.remove(type);
log.info("用户["+SecurityUtils.getCurrentUsername()+"] 删除语言:"+type);
}
if (languageTypeList == null || languageTypeList.size() <= 0) {
throw new ValidateException("smfcode.languageCanotRemoveAll", "不能删除所有语言");
List<LanguageInfo> newList = new ArrayList<>();
for (LanguageInfo lan :
languageTypeList) {
if (lanCodes.contains(lan.getLanCode())) {
log.info("用户[" + SecurityUtils.getCurrentUsername() + "] 删除语言:" + lan.getLanCode());
} else {
newList.add(lan);
}
}
dataCache.updateCache(Constants.CACHE_languageType, languageTypeList);
if (newList == null || newList.size() <= 0) {
throw new ValidateException("smfcore.languageCanotRemoveAll", "不能删除所有语言");
}
dataCache.updateCache(Constants.CACHE_languageType, newList);
return new ResponseEntity<>(HttpStatus.OK);
}
// @ApiOperation("修改语言列表")
// @PostMapping
// @PreAuthorize("@el.check('translation')")
// public ResultBean create(@RequestBody List<String> languageTypeList) {
// if(languageTypeList==null||languageTypeList.size()<=0){
// throw new ValidateException("smfcode.languageCanotNull","语言类型不能为空" );
// }
//
// //判断是否是admin
// String userName= SecurityUtils.getCurrentUsername();
// if(!userName.equals(Constants.SUPER_USERNAME)){
// throw new ValidateException("smfcode.noLanguageSetAccess","没有修改语言的权限");
// }
// dataCache.updateCache(Constants.CACHE_languageType, languageTypeList);
//
// return ResultBean.newOkResult("ok");
// }
}
package com.neotel.smfcore.core.language.service.bean;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LanguageInfo implements Serializable {
/**
* 语言简码:zh-CN,zh-TW 等
*/
@ApiModelProperty("语言简码:zh-CN,zh-TW 等")
private String lanCode;
/**
* 语言名称:简体中文,繁体中文 等
*/
@ApiModelProperty("语言名称:简体中文,繁体中文 等")
private String lanName;
/**
* 语言图标
*/
@ApiModelProperty("语言图标")
private String icon;
}
......@@ -9,6 +9,7 @@ import com.neotel.smfcore.core.barcode.bean.PlateSizeBean;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.language.service.bean.Content;
import com.neotel.smfcore.core.language.service.bean.LanguageInfo;
import com.neotel.smfcore.core.language.service.dao.ILanguageMsgDao;
import com.neotel.smfcore.core.language.service.nanager.ILanguageMsgManager;
import com.neotel.smfcore.core.language.service.po.LanguageMsg;
......@@ -64,18 +65,6 @@ public class LanguageMsgManagerImpl implements ILanguageMsgManager {
@Autowired
DataCache dataCache;
public List<String> getAllLanList(){
List<String> lanList=dataCache.getCache(Constants.CACHE_languageType);
if(lanList==null||lanList.size()<=0){
lanList.add(MessageUtils. ZH_CN);
lanList.add(MessageUtils.ZH_TW);
lanList.add(MessageUtils.EN_US);
lanList.add(MessageUtils.JA_JP);
dataCache.updateCache(Constants.CACHE_languageType,lanList);
}
return lanList;
}
@Override
public void download(List<LanguageMsg> msgList, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>();
......@@ -83,16 +72,16 @@ public class LanguageMsgManagerImpl implements ILanguageMsgManager {
Map<String, Object> map = new LinkedHashMap<>();
map.put("编号", msg.getCode());
map.put("类型", msg.getType());
map.put("默认值", msg.getMsg());
List<String> lanList=getAllLanList();
for (String lanType :
map.put("内容", msg.getMsg());
List<LanguageInfo> lanList=dataCache.getLanguageList();
for (LanguageInfo languageInfo :
lanList) {
map.put(lanType,msg.getContent(lanType));
String title=languageInfo.getLanCode() ;
if(ObjectUtil.isNotEmpty(languageInfo.getLanName())){
title=languageInfo.getLanName();
}
map.put(title,msg.getContent(languageInfo.getLanCode()));
}
// map.put("简体中文", msg.getContent(MessageUtils.ZH_CN));
// map.put("繁体中文", msg.getContent(MessageUtils.ZH_TW));
// map.put("英文", msg.getContent(MessageUtils.EN_US));
// map.put("日文", msg.getContent(MessageUtils.JA_JP));
list.add(map);
}
FileUtil.downloadExcel(list, response);
......@@ -100,19 +89,19 @@ public class LanguageMsgManagerImpl implements ILanguageMsgManager {
@Override
public LanguageMsg saveMsg(LanguageMsg resources) {
if (resources.getCode() == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"code"});
if ( ObjectUtil.isEmpty(resources.getCode() )) {
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"code"});
}
if (resources.getMsg() == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"msg"});
if (ObjectUtil.isEmpty(resources.getMsg() )) {
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"msg"});
}
if (resources.getType() == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"type"});
if (ObjectUtil.isEmpty(resources.getType() )) {
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"type"});
}
if (resources.getContentList() == null) {
if (ObjectUtil.isEmpty(resources.getContentList() )) {
resources.setContentList(new ArrayList<>());
}
Criteria c = Criteria.where("code").is(resources.getCode());
Criteria c = Criteria.where("code").is(resources.getCode()).and("type").is(resources.getType());
String logName = "新增资源:";
if (resources.getId() != null) {
logName = "修改资源:";
......@@ -120,7 +109,7 @@ public class LanguageMsgManagerImpl implements ILanguageMsgManager {
} //code不能重复
LanguageMsg result = languageMsgDao.findOne(new Query(c));
if (result != null) {
throw new ValidateException("smfcode.resourcesExist", "资源[" + resources.getCode() + "]已存在");
throw new ValidateException("smfcore.resourcesExist", "资源[{0}][{1}]已存在",new String[]{resources.getType(),resources.getCode()});
}
Query query = new Query(c);
......
......@@ -80,7 +80,7 @@ public class LanguageMsg extends BasePo implements Serializable {
public void setContent(String lanCode, String lanMsg) {
if(ObjectUtil.isEmpty(lanCode)){
setMsg(lanCode);
setMsg(lanMsg);
return;
}
for (Content con :
......
package com.neotel.smfcore.core.language.util;
import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.csv.CsvReader;
import com.neotel.smfcore.core.language.service.bean.Content;
import com.neotel.smfcore.core.language.service.bean.LanguageInfo;
import com.neotel.smfcore.core.language.service.nanager.ILanguageMsgManager;
import com.neotel.smfcore.core.language.service.po.LanguageMsg;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.io.*;
import java.text.MessageFormat;
import java.util.*;
/**
......@@ -22,153 +24,205 @@ import java.util.*;
public class MessageUtils {
//-----------------以下为从配置文件读取资源-------------------------------------
public static Locale getDefaultLocal(){
return new Locale("zh-CH");
}
private static MessageSource messageSource;
// public static Locale getDefaultLocal(){
// return new Locale("zh-CH");
// }
public MessageUtils(MessageSource messageSource) {
MessageUtils.messageSource = messageSource;
}
// private static MessageSource messageSource;
public static String getText(String msgKey, Locale locale,String defaultMsg) {
return getText(msgKey,null, locale,defaultMsg);
}
// public MessageUtils(MessageSource messageSource) {
// MessageUtils.messageSource = messageSource;
// }
public static String getText(String msgKey, String[] params, Locale locale, String defaultMsg) {
try{
if (params == null) {
return messageSource.getMessage(msgKey, new String[]{}, locale);
} else {
return messageSource.getMessage(msgKey,params, locale);
}
}catch (Exception ex){
log.error("获取资源["+msgKey+"]["+defaultMsg+"]["+locale.getLanguage()+"]出错:"+ex.toString());
if(defaultMsg != null){
return defaultMsg;
}
return msgKey;
}
}
// public static String getText(String msgKey, Locale locale,String defaultMsg) {
// return getText(msgKey,null, locale,defaultMsg);
// }
//
// public static String getText(String msgKey, String[] params, Locale locale, String defaultMsg) {
// try{
// if (params == null) {
// return messageSource.getMessage(msgKey, new String[]{}, locale);
// } else {
// return messageSource.getMessage(msgKey,params, locale);
// }
// }catch (Exception ex){
// log.error("获取资源["+msgKey+"]["+defaultMsg+"]["+locale.getLanguage()+"]出错:"+ex.toString());
// if(defaultMsg != null){
// return defaultMsg;
// }
// return msgKey;
// }
// }
//-------------------------------------------------------------------------------
/**
* key=code
* 资源集合,key=code
*/
private static Map<String, LanguageMsg> msgMap = new HashMap<>();
private static Map<String,Map<String, LanguageMsg>> msgMap = new HashMap<>();
@Autowired
ILanguageMsgManager languageMsgManager;
public static final String ZH_CN = "zh-CN";
public static final String ZH_TW = "zh-TW";
public static final String EN_US = "en-US";
public static final String JA_JP = "ja-JP";
//服务器type
public static final String smfcore="smfcore";
@PostConstruct
public void initialize() {
initLanguageMsgList();
}
// public static List<String> getAllLanList(){
//
//
// List<String> lanList=new ArrayList<>();
// lanList.add(ZH_CN);
// lanList.add(ZH_TW);
// lanList.add(EN_US);
// lanList.add(JA_JP);
// return lanList;
// }
//-----------------以下为从缓存读取资源-------------------------------------
public static Locale getDefaultLocal(){
return new Locale("zh-CH");
}
// public static Locale getDefaultLocal(){
// return new Locale("zh-CH");
// }
// public static String getText(String msgKey, Locale locale,String defaultMsg) {
// return getText(msgKey,null, locale,defaultMsg);
// }
//
// public static String getText(String msgKey, String[] params, Locale locale, String defaultMsg) {
// try{
// String msg=getMessage(msgKey,locale.toLanguageTag(),defaultMsg);
// if (params == null) {
// return msg;
// } else {
// return MessageFormat.format(msg,params);
// }
// }catch (Exception ex){
// log.error("获取资源["+msgKey+"]["+defaultMsg+"]["+locale.getLanguage()+"]出错:"+ex.toString());
// if(defaultMsg != null){
// return defaultMsg;
// }
// return msgKey;
// }
// }
public static String getText(String msgKey, Locale locale,String defaultMsg) {
return getText(msgKey,null, locale,defaultMsg);
}
public static String getText(String msgKey, String[] params, Locale locale, String defaultMsg) {
try{
String msg=getMessage(msgKey,locale.toLanguageTag(),defaultMsg);
if (params == null) {
return msg;
} else {
return MessageFormat.format(msg,params);
}
}catch (Exception ex){
log.error("获取资源["+msgKey+"]["+defaultMsg+"]["+locale.getLanguage()+"]出错:"+ex.toString());
if(defaultMsg != null){
return defaultMsg;
}
return msgKey;
}
}
private static String getMessage(String msgKey, String lanType, String defaultMsg) {
if (msgMap != null) {
LanguageMsg msg = msgMap.get(msgKey);
if (msgMap != null&&msgMap.containsKey(smfcore)) {
LanguageMsg msg = msgMap.get(smfcore).get(msgKey);
if (msg != null) {
for (Content con :
msg.getContentList()) {
String lanT = con.getLanCode();
if (lanT.equals(lanType)) {
if (lanT.equals(lanType)&& ObjectUtil.isNotEmpty(con.getMsg())) {
return con.getMsg();
}
}
log.info("获取资源[" + msgKey + "][" + defaultMsg + "][" + lanType + "]失败:未找到code[" + msgKey + "]对应语言[" + lanType + "]");
// log.info("获取资源[" + msgKey + "][" + defaultMsg + "][" + lanType + "]失败:未找到code[" + msgKey + "]对应语言[" + lanType + "]");
return msg.getMsg();
}
log.info("获取资源[" + msgKey + "][" + defaultMsg + "][" + lanType + "]失败:未找到code[" + msgKey + "]");
}
return defaultMsg;
}
//-------------------------------------------------------------------------------
public static void updateMsg(LanguageMsg msg) {
msgMap.put(msg.getCode(), msg);
Map<String,LanguageMsg> typeMap=msgMap.get(msg.getType());
if(typeMap==null){
typeMap=new HashMap<>();
}
typeMap.put(msg.getCode(),msg);
msgMap.put(msg.getType(), typeMap);
}
public static void removeMsg(LanguageMsg msg) {
msgMap.remove(msg.getCode());
if (msgMap.containsKey(msg.getType())) {
msgMap.get(msg.getType()).remove(msg.getCode());
}
}
public static LanguageMsg getMsg(String code) {
return msgMap.get(code);
public static LanguageMsg getMsg(String type, String code) {
Map<String,LanguageMsg> typeMap=msgMap.get(type);
if(typeMap!=null){
return typeMap.get(code);
}
return null;
}
public static List<LanguageMsg> getLanMsgByType(String type) {
List<LanguageMsg> msgList=new ArrayList<>();
for (LanguageMsg msg :
msgMap.values()) {
if(msg.getType().equals(type)){
msgList.add(msg);
}
Map<String,LanguageMsg> typeMap=msgMap.get(type);
if(typeMap!=null){
msgList=new ArrayList<>(typeMap.values());
}
// for (LanguageMsg msg :
// msgMap.values()) {
// if(msg.getType().equals(type)){
// msgList.add(msg);
// }
// }
return msgList;
}
private Map<String, LanguageMsg> loadMsgMap() {
Map<String, LanguageMsg> msgMap = new HashMap<>();
private Map<String,Map<String, LanguageMsg>> loadMsgMap() {
Map<String,Map<String, LanguageMsg>> resourceMap=new HashMap<>();
List<LanguageMsg> msgs = languageMsgManager.findByQuery(new Query());
for (LanguageMsg msg :
msgs) {
msgMap.put(msg.getCode(), msg);
if(msg.getCode().startsWith("smfcode.")||msg.getType().equals("smfcode")){
String newCode=msg.getCode().replace("smfcode.","smfcore.");
msg.setCode(newCode);
msg.setType("smfcore");
languageMsgManager.save(msg);
}
Map<String, LanguageMsg> typeMap = resourceMap.get(msg.getType());
if(typeMap==null){
typeMap=new HashMap<>();
}
typeMap.put(msg.getCode(),msg);
resourceMap.put(msg.getType(), typeMap);
}
log.info("MessageCache共加载到" + msgs.size() + "条Msg");
return resourceMap;
}
public static List<LanguageInfo> getDefaultLanList() {
List<LanguageInfo> lanList = new ArrayList<>();
if (lanList == null || lanList.size() <= 0) {
lanList=new ArrayList<>();
lanList.add(new LanguageInfo(MessageUtils.ZH_CN,"简体中文",""));
lanList.add(new LanguageInfo(MessageUtils.ZH_TW,"繁体中文",""));
lanList.add(new LanguageInfo(MessageUtils.EN_US,"English",""));
lanList.add(new LanguageInfo(MessageUtils.JA_JP,"日本语",""));
}
log.info("MessageCache共加载到" + msgMap.size() + "条Msg");
return msgMap;
return lanList;
}
private void initLanguageMsgList() {
msgMap = loadMsgMap();
if (msgMap.size() > 0) {
return;
}
//自动导入CSV内容
autoImportCsvFile();
autoImportProperties();
msgMap = loadMsgMap();
}
private void autoImportCsvFile(){
}
private void autoImportProperties() {
String fielPath = "D:\\resources";
File file = new File(fielPath); //需要获取的文件的路径
......@@ -188,12 +242,12 @@ public class MessageUtils {
String lanType = fileName.replace("messages", "").replace(".properties", "");
if (ObjectUtil.isEmpty(lanType)) {
defaultLanMap = ReadPropertiesFile(filePathLists[i]);
defaultLanMap = readPropertiesFile(filePathLists[i]);
log.info("MessageCache 从文件[" + fileName + "]中导入[" + defaultLanMap.size() + "]条默认资源");
} else {
String lan = lanType.substring(1);
lan = lan.replace('_', '-');
Map<String, String> map = ReadPropertiesFile(filePathLists[i]);
Map<String, String> map = readPropertiesFile(filePathLists[i]);
lanMsgMap.put(lan, map);
log.info("MessageCache 从文件[" + fileName + "]中导入[" + defaultLanMap.size() + "]条[" + lan + "]资源");
}
......@@ -206,14 +260,6 @@ public class MessageUtils {
for (String code :
defaultLanMap.keySet()) {
String defMsg = defaultLanMap.get(code);
// int index = code.indexOf('.');
// String type = code.substring(0, index);
// LanguageMsg msg = new LanguageMsg();
// msg.setUpdateDate(msg.getCreateDate());
// msg.setCode(code);
// msg.setType(type);
// msg.setMsg(defMsg);
LanguageMsg msg = new LanguageMsg(code, defMsg, "");
for (String lan :
lanMsgMap.keySet()) {
......@@ -226,10 +272,10 @@ public class MessageUtils {
}
languageMsgManager.insertAll(languageMsgs);
}
msgMap = loadMsgMap();
}
public static Map<String, String> ReadPropertiesFile(File file) {
public static Map<String, String> readPropertiesFile(File file) {
Map<String, String> map = new HashMap<>();
try (FileInputStream fis = new FileInputStream(file.getPath());
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
......@@ -254,7 +300,122 @@ public class MessageUtils {
}
public static List<LanguageMsg> readCsvFile(String fileURL , List<LanguageInfo> languageInfos) throws Exception{
CsvReader csvRead = CsvReader.newReader(fileURL,"编号","code");
int codeIndex = csvRead.getCsvIndex("编号","code");
int typeIndex = csvRead.getCsvIndex("类型","type");
int msgIndex = csvRead.getCsvIndex("内容","msg");
Map<String,Integer> lanCodeIndex=new HashMap<>() ;
// List<LanguageInfo> languageInfos=dataCache.getLanguageList();
for (LanguageInfo lan:languageInfos
) {
int lanIndex = csvRead.getCsvIndex(lan.getLanCode(),lan.getLanName());
if(lanIndex>=0){
lanCodeIndex.put(lan.getLanCode(),lanIndex);
}
}
int row = 1;
int newRowCount = 0;
int updateRowCount = 0;
String msg="";
List<LanguageMsg> list=new ArrayList<>();
while(csvRead.readRecord()) {
row++;
String[] lineValues = csvRead.getValues();
LanguageMsg languageMsg=new LanguageMsg();
String code = lineValues[codeIndex];
String type = lineValues[typeIndex];
String msgStr = lineValues[msgIndex];
if (code.isEmpty() || type.isEmpty() || msgStr.isEmpty()) {
log.warn("第" + row + "行中有空白内容,此行忽略");
continue;
}
languageMsg.setMsg(msgStr);
languageMsg.setCode(code);
languageMsg.setType(type);
for (String lan :
lanCodeIndex.keySet()) {
int lanIndex=lanCodeIndex.get(lan);
String lanMsg=lineValues[lanIndex];
if(!lanMsg.isEmpty()){
languageMsg.setContent(lan,lanMsg);
}
}
list.add(languageMsg);
}
return list;
}
public static Map<String,String> readJsFile(File file){
Map<String,String> map=new HashMap<>();
try (FileInputStream fis = new FileInputStream(file.getPath());
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(isr)
) {
String line;
//网友推荐更加简洁的写法
int lineIndex=-1;
String currNodeName="";
while ((line = br.readLine()) != null) {
lineIndex++;
// if(lineIndex==0){
// continue;
// }
if(ObjectUtil.isEmpty(line)){
continue;
}
if (line.contains("{")){
if(line.contains("=")){
currNodeName="";
}else{
int dendIndex=line.indexOf(':');
String lineNode=line.substring(0,dendIndex).trim();
if(ObjectUtil.isEmpty(currNodeName)){
currNodeName=lineNode;
}else{
//节点名称+
currNodeName=currNodeName+"."+lineNode;
}
}
}else if(line.contains("}")){
//节点名称-
if(currNodeName.contains(".")){
int endIndex=currNodeName.lastIndexOf(".");
currNodeName=currNodeName.substring(0,endIndex );
}else{
currNodeName="";
}
}
else if(line .contains(":")){
if(line.endsWith(",")){
line=line.substring(0,line.length()-1);
}
String[] array=line.replace("'","").replace("\"","").split(":");
if(array.length==2){
String linekey=array[0].trim();
String lineValue=array[1].trim();
map.put(currNodeName+"."+linekey,lineValue);
}
}
}
} catch (IOException e) {
log.error("readJsFile 出错:"+e.toString());
e.printStackTrace();
}
return map;
}
}
......@@ -116,11 +116,11 @@ public class MSDController {
MSDSettiings settiings = msdSettingsMapper.toEntity(msdSettiingsDto);
if (settiings.getMaxHumidity() <= settiings.getMinHumidity()) {
throw new ValidateException("smfcode.humidityValueError", "温度范围数据错误");
throw new ValidateException("smfcore.humidityValueError", "温度范围数据错误");
}
if (settiings.getMaxTemperature() <= settiings.getMinTemperature()) {
throw new ValidateException("smfcode.temperatureValueError", "湿度范围数据错误");
throw new ValidateException("smfcore.temperatureValueError", "湿度范围数据错误");
}
dataCache.updateCache(Constants.CACHE_msdSetting, settiings);
log.info("更改MSD:CACHE_msdSetting=" + settiings.toString());
......@@ -193,11 +193,11 @@ public class MSDController {
String posName = paramsMap.get("posName");
StoragePos pos = storagePosManager.getByPosName(posName);
if (pos == null || (pos.isUsed() == false) || pos.getBarcode() == null) {
throw new ValidateException("smfcode.msd.noPos", "未找到可开封的物料");
throw new ValidateException("smfcore.msd.noPos", "未找到可开封的物料");
}
Barcode barcode = barcodeManager.findByBarcode(pos.getBarcode().getBarcode());
if (barcode == null) {
throw new ValidateException("smfcode.msd.noPos", "未找到可开封的物料");
throw new ValidateException("smfcore.msd.noPos", "未找到可开封的物料");
}
DateTime dateTime = new DateTime();
pos.getBarcode().setOpenTime(dateTime);
......
......@@ -302,22 +302,22 @@ public class LiteOrderCache implements ITaskListener {
}
if (cacheOrder == null) {
return "smfcode.order.out.notFound";
return "smfcore.order.out.notFound";
}
if ( !cacheOrder.isTaskFinished() && !cacheOrder.isNew()) {
log.info("工单[" + orderNo + "]正在执行");
return "smfcode.order.out.executing";
return "smfcore.order.out.executing";
}
if(cacheOrder.isClosed()) {
log.info("工单[" + orderNo + "]已关闭,无法出库");
return "smfcode.order.hasClose";
return "smfcore.order.hasClose";
}
ORDER_COLOR nextColor = getNextColor();
if (nextColor == null) {
log.info("执行工单[" + orderNo + "] outBom=" + outBom + "时,已达最大可执行工单数");
return "smfcode.order.out.maxOrder";
return "smfcore.order.out.maxOrder";
}
log.info("开始执行工单[" + orderNo + "] outBom=" + outBom);
......@@ -409,7 +409,7 @@ public class LiteOrderCache implements ITaskListener {
liteOrderMap.put(cacheOrder.getOrderNo(), cacheOrder);
if (taskReelCount <= 0) {
//return "工单无可执行的任务";
return "smfcode.order.out.noTask";
return "smfcore.order.out.noTask";
}
return "";
}
......@@ -445,7 +445,7 @@ public class LiteOrderCache implements ITaskListener {
if (liteOrder == null) {
liteOrder=liteOrderManager.findByOrderNo(orderNo);
if(liteOrder==null){
return "smfcode.order.out.notFound";
return "smfcore.order.out.notFound";
}
}
//有任务的工单不能关闭
......@@ -457,7 +457,7 @@ public class LiteOrderCache implements ITaskListener {
String taskSourceName = task.getSourceName();
if (!Strings.isNullOrEmpty(taskSourceName) && orderNo.equals(taskSourceName)) {
log.info("关闭工单[" + orderNo + "]失败,有未完成的出库任务:"+task.getPosName());
return "smfcode.order.close.taskNotEnd";
return "smfcore.order.close.taskNotEnd";
}
}
}
......@@ -467,7 +467,7 @@ public class LiteOrderCache implements ITaskListener {
log.info("关闭工单[" + orderNo + "]成功");
liteOrder.setClosed(true);
liteOrderManager.save(liteOrder);
return "smfcode.order.close.success";
return "smfcore.order.close.success";
}
/**
......@@ -481,11 +481,11 @@ public class LiteOrderCache implements ITaskListener {
if (cacheOrder == null) {
cacheOrder=liteOrderManager.findByOrderNo(orderNo);
if(cacheOrder==null){
return "smfcode.order.out.notFound";
return "smfcore.order.out.notFound";
}
}
if(cacheOrder.isClosed()){
return "smfcode.order.hasClose";
return "smfcore.order.hasClose";
}
for (LiteOrderItem orderItem:cacheOrder.getOrderItems()
......@@ -508,7 +508,7 @@ public class LiteOrderCache implements ITaskListener {
pos = storagePosManager.findPartNumberInStorages(availableStorageIds, partNumber, excludePosIds, checkoutType);
}
if (pos == null) {
return "smfcode.order.supplementOutFail";
return "smfcore.order.supplementOutFail";
} else {
log.info("工单[" + orderNo + "]["+partNumber+"]补料出库:仓位[" + pos.getPosName() + "]RI=[" + pos.getBarcode().getBarcode() + "] PN=[" + partNumber + "] num:" + pos.getBarcode().getAmount());
DataLog task = newTask(pos) ;
......@@ -527,6 +527,6 @@ public class LiteOrderCache implements ITaskListener {
}
}
}
return "smfcode.order.supplementOutFail";
return "smfcore.order.supplementOutFail";
}
}
......@@ -147,7 +147,7 @@ public class OrderController {
liteOrder.setOrderNo(newOrderNo);
} else {
log.info("数据库中已存在工单号为[" + liteOrder.getOrderNo() + "],忽略文件:" + localFile.getAbsolutePath());
return ResultBean.newErrorResult(-1, "smfcode.order.ameExists", "工单名称[{0}]已存在", new String[]{liteOrder.getOrderNo()});
return ResultBean.newErrorResult(-1, "smfcore.order.ameExists", "工单名称[{0}]已存在", new String[]{liteOrder.getOrderNo()});
}
}
log.info("新增加订单:" + liteOrder.getOrderNo() + ",共" + liteOrderItems.size() + "条工单详情");
......@@ -155,7 +155,7 @@ public class OrderController {
liteOrderCache.addOrderToMap(liteOrder);
}
return ResultBean.newOkResult("smfcode.order.uploadOK","工单上传成功","");
return ResultBean.newOkResult("smfcore.order.uploadOK","工单上传成功","");
}
@ApiOperation("工单出库")
......@@ -164,11 +164,11 @@ public class OrderController {
public ResultBean checkOut(@RequestBody Map<String, String> mapValues) {
String orderNo = mapValues.get("orderNo");
if (orderNo == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
}
LiteOrder liteOrder = liteOrderManager.findByOrderNo(orderNo);
if (liteOrder == null) {
throw new ValidateException("smfcode.valueNotFind", "未找到{0}[{1}]", new String[]{"orderNo", orderNo});
throw new ValidateException("smfcore.valueNotFind", "未找到{0}[{1}]", new String[]{"orderNo", orderNo});
}
String result= liteOrderCache.checkOutLiteOrder(liteOrder.getOrderNo(),false);
if(ObjectUtil.isEmpty(result)){
......@@ -185,7 +185,7 @@ public class OrderController {
public ResultBean outBom(@RequestBody Map<String, String> mapValues) {
String orderNo = mapValues.get("orderNo");
if (orderNo == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
}
String result= liteOrderCache.checkOutLiteOrder(orderNo,true);
if(ObjectUtil.isEmpty(result)){
......@@ -202,7 +202,7 @@ public class OrderController {
public ResultBean outTails(@RequestBody Map<String, String> mapValues) {
String orderNo = mapValues.get("orderNo");
if (orderNo == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
}
String result= liteOrderCache.checkOutLiteOrder(orderNo,false);
......@@ -220,7 +220,7 @@ public class OrderController {
String orderNo = mapValues.get("orderNo");
String orderItemId = mapValues.get("orderItemId");
if (orderNo == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
}
String result= liteOrderCache.orderItemSupplementOut(orderNo,orderItemId);
if(ObjectUtil.isEmpty(result)){
......@@ -369,7 +369,7 @@ public class OrderController {
}
}
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
}
......@@ -381,14 +381,14 @@ public class OrderController {
float orderTimes= param.getOrderTimes();
if (orderNo == null) {
// throw new ValidateException("工单号不能为空");
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
}
LiteOrder liteOrder = liteOrderManager.findByOrderNo(orderNo);
if (liteOrder == null) {
throw new ValidateException("smfcode.valueNotFind", "未找到{0}[{1}]", new String[]{"orderNo", orderNo});
throw new ValidateException("smfcore.valueNotFind", "未找到{0}[{1}]", new String[]{"orderNo", orderNo});
}
if(!liteOrder.isNew()){
throw new ValidateException("smfcode.cannotUpdateOrderNum", "工单已出库,不能修改数量" );
throw new ValidateException("smfcore.cannotUpdateOrderNum", "工单已出库,不能修改数量" );
}
if(orderTimes<1){
orderTimes=1;
......@@ -405,7 +405,7 @@ public class OrderController {
public ResultBean closeOrder(@RequestBody Map<String, String> mapValues) {
String orderNo = mapValues.get("orderNo");
if (orderNo == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
}
String result=liteOrderCache.closeOrder(orderNo);
......@@ -422,19 +422,19 @@ public class OrderController {
@PreAuthorize("@el.check('workOrder')")
public ResultBean updateLine(@RequestBody OrderDto param) {
if (param.getId() == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
}
if (param.getLine() == null) {
throw new ValidateException("smfcode.order.lineCanotNull", "线别不能为空");
throw new ValidateException("smfcore.order.lineCanotNull", "线别不能为空");
}
LiteOrder order = liteOrderManager.get(param.getId());
if (order == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"orderNo"});
}
if (!order.isNew()) {
throw new ValidateException("smfcode.order.cannotUpdateLine", "工单已出库,不能修改线别");
throw new ValidateException("smfcore.order.cannotUpdateLine", "工单已出库,不能修改线别");
}
order.setLine(param.getLine());
liteOrderManager.save(order);
......
......@@ -66,7 +66,7 @@ public class LabelController {
public ResponseEntity<Object> update(@RequestBody LabelDto labelDto) {
Label resources=labelMapper.toEntity(labelDto);
if (resources.getId() == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
}
labelManager.saveLabel(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
......@@ -79,18 +79,18 @@ public class LabelController {
Set<Group> menuSet = new HashSet<>();
for (String id : ids) {
if (id == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
}
Label label = labelManager.get(id);
if(label==null){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"group"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"group"} );
}
//查找组下是否有设备
Query query = new Query(Criteria.where("labelId").is(id));
List<StoragePos> storagePosList = storagePosManager.findByQuery(query);
if (storagePosList != null && storagePosList.size() >= 1) {
throw new ValidateException("smfcode.labelWithStoragePos","标签[{0}]已和库位关联",new String[]{label.getLabelName()});
throw new ValidateException("smfcore.labelWithStoragePos","标签[{0}]已和库位关联",new String[]{label.getLabelName()});
}
//删除关联
......
......@@ -68,7 +68,7 @@ public class MaterialBoxController {
codeBean.setError(e.getMessage());
}
if (codeBean == null || codeBean.getBarcode() == null) {
throw new ValidateException("smfcode.error.barcode.invalid", "{0}不是有效的条码", new String[]{code});
throw new ValidateException("smfcore.error.barcode.invalid", "{0}不是有效的条码", new String[]{code});
}
if (codeBean.getErrorCode() != null) {
throw new ValidateException(codeBean.getErrorCode(), codeBean.getError(), codeBean.getParams());
......@@ -79,7 +79,7 @@ public class MaterialBoxController {
//此处需要判断是否是料盒
Component component=componentManager.findOneByPN(barcode.getPartNumber() );
if(component==null||(component.getType()!=COMPONENT_TYPE.FIXTURE)){
throw new ValidateException("smfcode.materialBox.invalid", "未找到料盒信息{0}", new String[]{code});
throw new ValidateException("smfcore.materialBox.invalid", "未找到料盒信息{0}", new String[]{code});
}
BarcodeDto barcodeDto=barcodeMapper.toDto(barcode);
......@@ -98,10 +98,10 @@ public class MaterialBoxController {
Barcode barcode = barcodeManager.findByBarcode(code);
if (barcode == null) {
throw new ValidateException("smfcode.materialBox.invalid", "未找到料盒信息{0}", new String[]{code});
throw new ValidateException("smfcore.materialBox.invalid", "未找到料盒信息{0}", new String[]{code});
}
if(describe==null){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"describe"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"describe"} );
}
barcode.setDescribe(describe);
barcodeManager.saveBarcode(barcode);
......@@ -121,18 +121,18 @@ public class MaterialBoxController {
Barcode barcode = barcodeManager.findByBarcode(code);
if (barcode == null) {
throw new ValidateException("smfcode.materialBox.invalid", "未找到料盒信息{0}", new String[]{code});
throw new ValidateException("smfcore.materialBox.invalid", "未找到料盒信息{0}", new String[]{code});
}
Barcode subBarcode = barcode.getSubCode(subPN);
if (subBarcode == null) {
throw new ValidateException("smfcode.materialBox.noReel", "料盒中未找到对应物料");
throw new ValidateException("smfcore.materialBox.noReel", "料盒中未找到对应物料");
}
int opQty = Integer.valueOf(qtyStr);
int oldAmount = subBarcode.getAmount();
if (oldAmount < opQty) {
throw new ValidateException("smfcode.materialBox.quantityshort", "物料数量不足");
throw new ValidateException("smfcore.materialBox.quantityshort", "物料数量不足");
}
int newAmount = oldAmount - opQty;
subBarcode.setAmount(newAmount);
......@@ -152,11 +152,11 @@ public class MaterialBoxController {
Barcode barcode=barcodeManager.findByBarcode(code);
if(barcode==null){
//料盒不存在
throw new ValidateException("smfcode.materialBox.invalid", "未找到料盒信息{0}", new String[]{code});
throw new ValidateException("smfcore.materialBox.invalid", "未找到料盒信息{0}", new String[]{code});
}
if(barcode.getSubCodeMap()==null||barcode.getSubCodeMap().size()<=0){
//料盒中未找到对应物料
throw new ValidateException("smfcode.materialBox.boxNoReel","料盒中无物料");
throw new ValidateException("smfcore.materialBox.boxNoReel","料盒中无物料");
}
List<Barcode> barcodes=new ArrayList<>(barcode.getSubCodeMap().values()) ;
......@@ -183,7 +183,7 @@ public class MaterialBoxController {
Barcode barcode=barcodeManager.findByBarcode(code);
if(barcode==null){
throw new ValidateException("smfcode.materialBox.invalid", "未找到料盒信息{0}", new String[]{code});
throw new ValidateException("smfcore.materialBox.invalid", "未找到料盒信息{0}", new String[]{code});
}
//用+或-分割,如果最后几位是数量,按手动输入处理
......@@ -243,7 +243,7 @@ public class MaterialBoxController {
int oldAmount = subBarcode.getAmount();
if(oldAmount < opQty){
throw new ValidateException("smfcode.materialBox.quantityshort","物料数量不足");
throw new ValidateException("smfcore.materialBox.quantityshort","物料数量不足");
}
int newAmount = oldAmount - opQty;
......@@ -255,7 +255,7 @@ public class MaterialBoxController {
log.info(subBarcode.getPartNumber() + "从料盒["+barcode.getPosName()+"]出库,物料数量:" + oldAmount + " - " + opQty + " = " + newAmount);
}else{
//无库存
throw new ValidateException("smfcode.materialBox.noReel","料盒中未找到对应物料");
throw new ValidateException("smfcore.materialBox.noReel","料盒中未找到对应物料");
}
}
......@@ -267,7 +267,7 @@ public class MaterialBoxController {
Barcode subBarcode = codeBean.getBarcode();
StoragePos pos = storagePosManager.getByBarcode(subBarcode.getBarcode());
if (pos != null) {
throw new ValidateException("smfcode.materialBox.inPos", "物料已在库位{0}中", new String[]{pos.getPosName()});
throw new ValidateException("smfcore.materialBox.inPos", "物料已在库位{0}中", new String[]{pos.getPosName()});
}
if (subBarcode.getHostBarcodeId() == null) {
......@@ -295,7 +295,7 @@ public class MaterialBoxController {
//在别的料盒中
Barcode hostBarcode = barcodeManager.get(subBarcode.getHostBarcodeId());
if (hostBarcode != null) {
throw new ValidateException("smfcode.materialBox.inOtherBox", "物料已在料盒{0}中", new String[]{hostBarcode.getBarcode()});
throw new ValidateException("smfcore.materialBox.inOtherBox", "物料已在料盒{0}中", new String[]{hostBarcode.getBarcode()});
}
}
} else {
......
......@@ -85,15 +85,15 @@ public class MaterialController {
public ResultBean tacticsOuput(@RequestBody Set<TacticsOutDto> outDtoSet) {
if (outDtoSet == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"PN"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"PN"});
}
for (TacticsOutDto dto :
outDtoSet) {
if (dto.getPartNumber() == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"PN"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"PN"});
} else if (dto.getPlateNumber() == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"Num"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"Num"});
}
}
......@@ -173,23 +173,23 @@ public class MaterialController {
String labelId = params.getLabelId();
if (Objects.isNull(labelId)) {
if (posIds == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"PN"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"PN"});
}
for (String posId : posIds) {
StoragePos pos = storagePosManager.get(posId);
if (pos == null) {
throw new ValidateException("smfcode.valueNotExist", "{0}[{1}]不存在", new String[]{"posId", posId});
throw new ValidateException("smfcore.valueNotExist", "{0}[{1}]不存在", new String[]{"posId", posId});
}
Storage storage = dataCache.getStorageById(pos.getStorageId());
if (storage == null) {
throw new ValidateException("smfcode.valueNotExist", "{0}[{1}]不存在", new String[]{"storageId", pos.getStorageId()});
throw new ValidateException("smfcore.valueNotExist", "{0}[{1}]不存在", new String[]{"storageId", pos.getStorageId()});
}
log.info("出库料仓【" + storage.getName() + "_" + storage.getCid() + "】位置仓位【" + pos.getPosName() + "】");
String outResult = taskService.checkout(storage, pos, true, SecurityUtils.getCurrentUsername());
if (!Strings.isNullOrEmpty(outResult)) {
throw new ValidateException("smfcode.error", outResult);
throw new ValidateException("smfcore.error", outResult);
}
}
} else {
......@@ -200,19 +200,19 @@ public class MaterialController {
List<StoragePos> posList = storagePosManager.findByQuery(query);
if (posList.size() <= 0) {
//未找到出库信息
throw new ValidateException("smfcode.label.noReel","未找到可出库的物料");
throw new ValidateException("smfcore.label.noReel","未找到可出库的物料");
}
for (StoragePos pos : posList
) {
Storage storage = dataCache.getStorageById(pos.getStorageId());
if (storage == null) {
throw new ValidateException("smfcode.valueNotExist", "{0}[{1}]不存在", new String[]{"storageId", pos.getStorageId()});
throw new ValidateException("smfcore.valueNotExist", "{0}[{1}]不存在", new String[]{"storageId", pos.getStorageId()});
}
log.info("出库料仓【" + storage.getName() + "_" + storage.getCid() + "】位置仓位【" + pos.getPosName() + "】");
String outResult = taskService.checkout(storage, pos, true, SecurityUtils.getCurrentUsername());
if (!Strings.isNullOrEmpty(outResult)) {
throw new ValidateException("smfcode.error", outResult);
throw new ValidateException("smfcore.error", outResult);
}
}
}
......@@ -232,7 +232,7 @@ public class MaterialController {
List<String> posIds = params.getPosIds();
String labelId = params.getLabelId();
if (posIds == null || posIds.size() <= 0) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"ID"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"ID"});
}
String labelName="";
if (ObjectUtil.isEmpty(labelId)) {
......@@ -258,7 +258,7 @@ public class MaterialController {
if (storagePos != null) {
if (!ObjectUtil.isEmpty(storagePos.getBarcode().getLockId())) {
throw new ValidateException("smfcode.error.barcode.locked", "库位[{0}]已被锁定");
throw new ValidateException("smfcore.error.barcode.locked", "库位[{0}]已被锁定");
}
try {
if (barcode != null) {
......@@ -269,12 +269,12 @@ public class MaterialController {
log.info("清理库位[" + storagePos.getPosName() + "],条码[" + code + "],库位条码为空");
}
return ResultBean.newOkResult("smfcode.manualOut.ok", "手动出库成功", code);
return ResultBean.newOkResult("smfcore.manualOut.ok", "手动出库成功", code);
} catch (Exception e) {
return ResultBean.newErrorResult(1,"smfcore.error", "出错{0}", new String[]{e.getMessage()}, true);
}
} else {
throw new ValidateException("smfcode.manualOut.notFound", "仓库中未找到料盘信息");
throw new ValidateException("smfcore.manualOut.notFound", "仓库中未找到料盘信息");
}
}
......
......@@ -143,7 +143,7 @@ public class StorageController {
public ResponseEntity<Object> update(@Validated @RequestBody StorageDto resources) {
Storage Storage=storageMapper.toEntity(resources);
if (Storage.getId() == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
}
saveStorage(Storage);
return new ResponseEntity<>(HttpStatus.OK);
......@@ -158,7 +158,7 @@ public class StorageController {
for (String id : ids) {
if (id == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
}
}
deleteStorages(ids);
......@@ -180,7 +180,7 @@ public class StorageController {
if (pos.getBarcode() == null || pos.getBarcode().equals("")) {
} else {
throw new ValidateException("smfcode.posIsused","料仓[{0}]的库位[{1}}]有料[{2}],删除失败",new String[]{ storage.getName() ,pos.getPosName(),pos.getBarcode().getBarcode()});
throw new ValidateException("smfcore.posIsused","料仓[{0}]的库位[{1}}]有料[{2}],删除失败",new String[]{ storage.getName() ,pos.getPosName(),pos.getBarcode().getBarcode()});
// throw new BadRequestException("料仓[" + storage.getName() + "]的库位[" + pos.getPosName() + "]有料[" + pos.getBarcode() + "],删除失败");
}
}
......@@ -195,16 +195,16 @@ public class StorageController {
}
private Storage saveStorage(Storage storage) {
if(storage.getName()==null){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"name"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"name"} );
// throw new BadRequestException("料仓名称不能为空");
} if(storage.getCid()==null){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"cid"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"cid"} );
// throw new BadRequestException("料仓编号不能为空");
} if(storage.getType()==null){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"type"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"type"} );
// throw new BadRequestException("料仓类型不能为空");
} if(storage.getCompatibleType()==null){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"compatibleType"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"compatibleType"} );
// throw new BadRequestException("料仓兼容性不能为空");
}
String oldCid="";
......@@ -215,11 +215,11 @@ public class StorageController {
) {
if(isNew || (!storage.getId().equals(s.getId()))) {
if(s.getName().equals(storage.getName())){
throw new ValidateException("smfcode.valueAlreadyExist","{0}[{1}]已存在",new String[]{"name",storage.getName()});
throw new ValidateException("smfcore.valueAlreadyExist","{0}[{1}]已存在",new String[]{"name",storage.getName()});
// throw new BadRequestException("料仓名称["+storage.getCid()+"]已存在");
}
if(s.getCid().equals(storage.getCid())){
throw new ValidateException("smfcode.valueAlreadyExist","{0}[{1}]已存在",new String[]{"cid",storage.getCid()});
throw new ValidateException("smfcore.valueAlreadyExist","{0}[{1}]已存在",new String[]{"cid",storage.getCid()});
// throw new BadRequestException("料仓cid["+storage.getCid()+"]已存在");
}
}
......@@ -248,7 +248,7 @@ public class StorageController {
String image = "csv";
String fileType = FileUtil.getExtensionName(uploadFile.getOriginalFilename());
if(fileType != null && !image.contains(fileType)){
throw new ValidateException("smfcode.feleFormatError","文件格式错误!, 仅支持{0}格式",new String[]{image});
throw new ValidateException("smfcore.feleFormatError","文件格式错误!, 仅支持{0}格式",new String[]{image});
}
File folder = new File(properties.getPath(),"pos");
File file = FileUtil.upload(uploadFile, folder.getAbsolutePath());
......@@ -262,7 +262,7 @@ public class StorageController {
log.info("开始更新料仓【"+storageId+"】的位置信息");
if (Strings.isNullOrEmpty(storageId)) {
log.error("Storage id is null");
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"storageId"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"storageId"} );
}
Storage storage = storageManager.get(storageId);
if (storage == null) {
......
......@@ -102,7 +102,7 @@ public class StoragePosController {
}
Storage storage = dataCache.getStorage(cid);
if (storage == null) {
throw new ValidateException("smfcode.valueNotFind", "未找到{0}[{1}]", new String[]{"cid", cid});
throw new ValidateException("smfcore.valueNotFind", "未找到{0}[{1}]", new String[]{"cid", cid});
}
List<StoragePos> allPos = storagePosManager.findByStorage(storage.getId());
for (StoragePos storagePos : allPos
......@@ -110,7 +110,7 @@ public class StoragePosController {
if (storagePos != null) {
Barcode barcode = storagePos.getBarcode();
if (barcode != null) {
throw new ValidateException("smfcode.cannotRemove", "删除库位失败,库位[{0}]中有料", new String[]{storagePos.getPosName()});
throw new ValidateException("smfcore.cannotRemove", "删除库位失败,库位[{0}]中有料", new String[]{storagePos.getPosName()});
}
}
}
......@@ -131,7 +131,7 @@ public class StoragePosController {
}
Storage storage = dataCache.getStorage(cid);
if (storage == null) {
throw new ValidateException("smfcode.valueNotFind", "未找到{0}[{1}]", new String[]{"cid", cid});
throw new ValidateException("smfcore.valueNotFind", "未找到{0}[{1}]", new String[]{"cid", cid});
}
log.info("开始手动清空料仓[" + storage.getName() + "_" + storage.getCid() + "]的所有库位");
......@@ -195,11 +195,11 @@ public class StoragePosController {
@PreAuthorize("@el.check('storagePos:edit')")
public ResultBean enabledPos(@RequestBody StoragePosEnabledDto enabledDto) {
if (enabledDto.getId() == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"ID"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"ID"});
}
StoragePos pos = storagePosDao.findOneById(enabledDto.getId());
if (pos == null) {
throw new ValidateException("smfcode.valueNotFind", "未找到{0}[{1}]", new String[]{"PosId", enabledDto.getId()});
throw new ValidateException("smfcore.valueNotFind", "未找到{0}[{1}]", new String[]{"PosId", enabledDto.getId()});
// throw new ValidateException("未找到库位 ");
}
pos.setEnabled(enabledDto.isEnabled());
......@@ -215,14 +215,14 @@ public class StoragePosController {
@PreAuthorize("@el.check('storagePos:edit')")
public ResponseEntity<Object> update(@Validated @RequestBody StoragePosSaveDto saveDto) {
if (saveDto.getId() == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"ID"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"ID"});
}
if (saveDto.getPosName() == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"ID"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"ID"});
}
StoragePos pos = storagePosDao.findOneById(saveDto.getId());
if (pos == null) {
throw new ValidateException("smfcode.valueNotFind", "未找到{0}[{1}]", new String[]{"PosId", saveDto.getId()});
throw new ValidateException("smfcore.valueNotFind", "未找到{0}[{1}]", new String[]{"PosId", saveDto.getId()});
// throw new ValidateException("未找到库位 ");
}
pos.setPosName(saveDto.getPosName());
......@@ -249,7 +249,7 @@ public class StoragePosController {
for (String id : ids) {
if (id == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"ID"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"ID"});
}
}
storagePosManager.deletePoss(ids);
......@@ -304,7 +304,7 @@ public class StoragePosController {
public ResultBean checkout(@Validated @RequestBody CheckOutDto checkOutDto) {
if (checkOutDto.getPids() == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"ID"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"ID"});
}
if (checkOutDto.getSingleOut() == null) {
checkOutDto.setSingleOut(true + "");
......@@ -315,19 +315,19 @@ public class StoragePosController {
for (String pid : checkOutDto.getPids()) {
StoragePos pos = storagePosManager.get(pid);
if (pos == null) {
throw new ValidateException("smfcode.valueNotExist", "{0}[{1}]不存在", new String[]{"pid", pid});
throw new ValidateException("smfcore.valueNotExist", "{0}[{1}]不存在", new String[]{"pid", pid});
// throw new ValidateException("位置[" + pid + "]不存在");
}
Storage storage = dataCache.getStorageById(pos.getStorageId());
if (storage == null) {
throw new ValidateException("smfcode.valueNotExist", "{0}[{1}]不存在", new String[]{"storageId", pos.getStorageId()});
throw new ValidateException("smfcore.valueNotExist", "{0}[{1}]不存在", new String[]{"storageId", pos.getStorageId()});
// throw new ValidateException("料仓[" + pos.getStorageId() + "]不存在");
}
log.info("出库料仓【" + storage.getName() + "_" + storage.getCid() + "】位置仓位【" + pos.getPosName() + "】");
String outResult = taskService.checkout(storage, pos, isSingleOut,SecurityUtils.getCurrentUsername());
if (!Strings.isNullOrEmpty(outResult)) {
throw new ValidateException("smfcode.error", outResult);
throw new ValidateException("smfcore.error", outResult);
}
}
return ResultBean.newOkResult("");
......@@ -372,14 +372,14 @@ public class StoragePosController {
dto.setAmount(codeBean.getBarcode().getAmount());
if (!ObjectUtil.isEmpty(codeBean.getBarcode().getLockId())) {
codeBean.setError("smfcode.error.barcode.locked", "库位[{0}]已被锁定");
codeBean.setError("smfcore.error.barcode.locked", "库位[{0}]已被锁定");
}
// StoragePos pos = storagePosManager.getByPosName(dto.getPosName());
// Storage storage = dataCache.getStorageById(pos.getStorageId());
// //判断是否已在出库中
// DataLog task = taskService.findExecutingTask(storage.getCid(), pos.getPosName());
// if (task == null) {
// codeBean.setError("smfcode.error.barcode.inQueue", new String[]{dto.getBarcode()}, "二维码[{0}]已在操作队列中");
// codeBean.setError("smfcore.error.barcode.inQueue", new String[]{dto.getBarcode()}, "二维码[{0}]已在操作队列中");
// }
}
if (codeBean.getErrorCode() != null) {
......@@ -387,7 +387,7 @@ public class StoragePosController {
dto.setError(error);
}
} else {
String error = MessageUtils.getText("smfcode.error.barcode.invalid", new String[]{code}, servletRequest.getLocale(), "{0}不是有效的条码");
String error = MessageUtils.getText("smfcore.error.barcode.invalid", new String[]{code}, servletRequest.getLocale(), "{0}不是有效的条码");
dto.setError(error);
}
return dto;
......
......@@ -34,12 +34,12 @@ public class LabelManagerImpl implements ILabelManager {
logName = "修改标签:";
}
if (resources.getLabelName() == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"labelName"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"labelName"});
}
Query que = new Query(c);
List<Label> groups = findByQuery(que);
if (groups != null && groups.size() > 0) {
throw new ValidateException("smfcode.valueAlreadyExist", "{0}[{1}]已存在", new String[]{"labelName", resources.getLabelName()});
throw new ValidateException("smfcore.valueAlreadyExist", "{0}[{1}]已存在", new String[]{"labelName", resources.getLabelName()});
}
Label label = labelDao.save(resources);
return label;
......
......@@ -277,7 +277,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
if(pos.getBarcode()==null||pos.getBarcode().equals("")) {
}else{
throw new ValidateException("smfcode.thePosIsused"," 库位[{0}]有料[{1}],不能删除",new String[]{ pos.getPosName(),pos.getBarcode().getBarcode()});
throw new ValidateException("smfcore.thePosIsused"," 库位[{0}]有料[{1}],不能删除",new String[]{ pos.getPosName(),pos.getBarcode().getBarcode()});
// throw new BadRequestException("库位[" + pos.getPosName() + "]中有料[" + pos.getBarcode() + "],不能删除");
}
delPosName+="["+pos.getId()+"_"+pos.getPosName()+"]";
......
......@@ -34,7 +34,7 @@ public class ClientSettingsController {
public ClientSettingDto getSettings(ClientSettingDto settingDto) {
if (settingDto == null || ObjectUtil.isEmpty(settingDto.getKey()) ) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"key"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"key"});
}
//先查找自己的用户名,没找到时再找admin
String userName = SecurityUtils.getCurrentUsername();
......@@ -58,7 +58,7 @@ public class ClientSettingsController {
public ResultBean updateSettings(@RequestBody ClientSettingDto settingDto) {
if (settingDto == null || ObjectUtil.isEmpty(settingDto.getKey()) || ObjectUtil.isEmpty(settingDto.getValue())) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"key"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"key"});
}
String userName = SecurityUtils.getCurrentUsername();
String key = Constants.CACHE_clientSetting + "_" + userName + "_" + settingDto.getKey();
......
......@@ -54,19 +54,19 @@ public class SettingsController {
//
// if(settingsDto.getMaxHumidity()<=settingsDto.getMinHumidity()){
//
// throw new ValidateException("smfcode.humidityValueError","温度范围数据错误" );
// throw new ValidateException("smfcore.humidityValueError","温度范围数据错误" );
//// throw new BadRequestException("温度范围数据错误");
// }
// if(settingsDto.getMaxHumidityShow()<=settingsDto.getMinHumidityShow()){
// throw new ValidateException("smfcode.humidityShowValueError","温度显示范围数据错误" );
// throw new ValidateException("smfcore.humidityShowValueError","温度显示范围数据错误" );
//// throw new BadRequestException("温度显示范围数据错误");
// }
// if(settingsDto.getMaxTemperature()<=settingsDto.getMinTemperature()){
// throw new ValidateException("smfcode.temperatureValueError","湿度范围数据错误" );
// throw new ValidateException("smfcore.temperatureValueError","湿度范围数据错误" );
//// throw new BadRequestException("湿度范围数据错误");
// }
// if(settingsDto.getMaxTemperatureShow()<=settingsDto.getMinTemperatureShow()){
// throw new ValidateException("smfcode.temperatureShowValueError","湿度显示范围数据错误" );
// throw new ValidateException("smfcore.temperatureShowValueError","湿度显示范围数据错误" );
//// throw new BadRequestException("湿度显示范围数据错误");
// }
//
......
......@@ -95,7 +95,7 @@ public class TaskController {
}
User curruser = userManager.get(SecurityUtils.getCurrentUserId());
if(!curruser.getGroups().contains(groupId)){
throw new ValidateException("smfcode.nogroupaccess","没有组[{0}]的操作权限",new String[] {groupId});
throw new ValidateException("smfcore.nogroupaccess","没有组[{0}]的操作权限",new String[] {groupId});
}
return getTaskList(groupId,null);
}
......
......@@ -116,7 +116,9 @@ public class DevicesStatusUtil {
public static Map<String,String> getAndRemoveOp(String cid){
Map<String, String> opMap = storageOpMap.get(cid);
opMap.remove(cid);
if(opMap!=null){
opMap.remove(cid);
}
return opMap;
}
......
......@@ -160,10 +160,10 @@ public class TaskService {
String posName = taskToExecute.getPosName();
if (!Strings.isNullOrEmpty(barcode) && task.getBarcode().equals(barcode)) {
log.info("二维码:[" + barcode + "]已在操作队列中,操作失败");
throw new ValidateException("smfcode.error.barcode.inQueue", "二维码[{0}]已在操作队列中,操作失败", new String[]{barcode});
throw new ValidateException("smfcore.error.barcode.inQueue", "二维码[{0}]已在操作队列中,操作失败", new String[]{barcode});
} else if (task.getPosName().equals(posName)&& ObjectUtil.isNotEmpty(posName)) {
log.info("位置:[" + posName + "]已在操作队列中,操作失败");
throw new ValidateException("smfcode.error.pos.inQueue", "位置:[{0}}]已在操作队列中,操作失败", new String[]{posName});
throw new ValidateException("smfcore.error.pos.inQueue", "位置:[{0}}]已在操作队列中,操作失败", new String[]{posName});
}
}
updateQueueTask(taskToExecute);
......@@ -608,7 +608,7 @@ public class TaskService {
}
if (availbleStorageList.isEmpty()) {
throw new ValidateException("smfcode.noValidStorage", "料仓列表中未找到可用的料仓");
throw new ValidateException("smfcore.noValidStorage", "料仓列表中未找到可用的料仓");
}
availbleStorageList.sort(new Comparator<Storage>() {
......@@ -658,7 +658,7 @@ public class TaskService {
private Barcode verifyBarcodePutIn(List<Storage> storageList, Barcode barcodeSave, String inRFID) throws ValidateException {
if (barcodeSave == null) {
throw new ValidateException("smfcode.error.barcode.invalid", "条码无效");
throw new ValidateException("smfcore.error.barcode.invalid", "条码无效");
}
StoragePos pos;
......@@ -670,7 +670,7 @@ public class TaskService {
pos = storagePosManager.getByBarcodeId(barcodeSave.getId());
if (barcodeSave.getAmount() <= 0) {
throw new ValidateException("smfcode.error.barcode.wrongQty", "条码[{0}]对应的数量<=0为: {1}", new String[]{barcodeSave.getBarcode(), barcodeSave.getAmount() + ""});
throw new ValidateException("smfcore.error.barcode.wrongQty", "条码[{0}]对应的数量<=0为: {1}", new String[]{barcodeSave.getBarcode(), barcodeSave.getAmount() + ""});
}
}
......@@ -680,7 +680,7 @@ public class TaskService {
Storage storage = dataCache.getStorageById(pos.getStorageId());
checkout(storage, pos, true, "");
throw new ValidateException("smfcode.error.barcode.exist", "[{0}}]已在{1}}[{2}}]中", new String[]{barcodeSave.getBarcode(), storage.getName(), pos.getPosName()});
throw new ValidateException("smfcore.error.barcode.exist", "[{0}}]已在{1}}[{2}}]中", new String[]{barcodeSave.getBarcode(), storage.getName(), pos.getPosName()});
}
Collection<DataLog> queueTasks = getQueueTasks();
......@@ -698,7 +698,7 @@ public class TaskService {
return barcodeSave;
}
}
throw new ValidateException("smfcode.error.barcode.taskNotEnd", "料盘[{0}}]的操作未完成,无法执行入库操作", new String[]{barcodeSave.getBarcode()});
throw new ValidateException("smfcore.error.barcode.taskNotEnd", "料盘[{0}}]的操作未完成,无法执行入库操作", new String[]{barcodeSave.getBarcode()});
}
}
}
......
......@@ -285,7 +285,7 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
String codeStr = command.getData().toString();
CodeBean codeBean = codeResolve.resolveSingleCode(codeStr);
if(codeBean==null||codeBean.getBarcode()==null){
return ResultBean.newErrorResult(1,"smfcode.error.barcode.invalid","条码无效");
return ResultBean.newErrorResult(1,"smfcore.error.barcode.invalid","条码无效");
}
if(ObjectUtil.isNotEmpty(codeBean.getErrorCode()) ){
return ResultBean.newErrorResult(1,codeBean.getErrorCode(),codeBean.getError(),codeBean.getParams());
......
......@@ -131,11 +131,11 @@ public class GroupController {
public ResponseEntity<Object> update(@RequestBody GroupDto groupDto) {
Group resources=groupMapper.toEntity(groupDto);
if (resources.getId() == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
}
User curruser = userManager.get(SecurityUtils.getCurrentUserId());
if(!curruser.hasGroup(resources.getId())){
throw new ValidateException("smfcode.nogroupaccess","没有组[{0}]的操作权限",new String[] {resources.getGroupName()});
throw new ValidateException("smfcore.nogroupaccess","没有组[{0}]的操作权限",new String[] {resources.getGroupName()});
}
groupManager.saveGroup(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
......@@ -148,27 +148,27 @@ public class GroupController {
Set<Group> menuSet = new HashSet<>();
for (String id : ids) {
if (id == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
}
Group group = groupManager.get(id);
if(group==null){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"group"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"group"} );
}
User curruser = userManager.get(SecurityUtils.getCurrentUserId());
if(!curruser.hasGroup(group.getId())){
throw new ValidateException("smfcode.nogroupaccess","没有组[{0}]的操作权限",new String[] {group.getGroupName()});
throw new ValidateException("smfcore.nogroupaccess","没有组[{0}]的操作权限",new String[] {group.getGroupName()});
}
// //查找组下是否有设备
// Query query = new Query(Criteria.where("groupId").is(id));
// List<Storage> storages = storageManager.findByQuery(query);
// if (storages != null && storages.size() >= 1) {
// throw new ValidateException("smfcode.groupWithStorage","组[{0}]已和设备关联",new String[]{group.getGroupName()});
// throw new ValidateException("smfcore.groupWithStorage","组[{0}]已和设备关联",new String[]{group.getGroupName()});
// }
//
// Query userQuery = new Query(Criteria.where("groups").all(id));
// List<User> users = userManager.findByQuery(userQuery);
// if (users != null && users.size() >= 1) {
// throw new ValidateException("smfcode.groupWithUser","组[{0}]已和用户关联",new String[]{group.getGroupName()});
// throw new ValidateException("smfcore.groupWithUser","组[{0}]已和用户关联",new String[]{group.getGroupName()});
//// throw new ValidateException("删除失败,组[" + group.getGroupName() + "]已和用户关联");
// }
//删除关联
......
......@@ -164,7 +164,7 @@ public class MenuController {
public ResponseEntity<Object> update(@Validated @RequestBody MenuDto menuDto) {
Menu resources=menuMapper.toEntity(menuDto);
if (resources.getId() == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
}
menuManager.saveMenu(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
......@@ -176,7 +176,7 @@ public class MenuController {
@PreAuthorize("@el.check('menu:del')")
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
if(!SecurityUtils.getCurrentUsername().equals(Constants.SUPER_USERNAME)){
throw new ValidateException("smfcode.noAccessUpdate","没有删除菜单的权限");
throw new ValidateException("smfcore.noAccessUpdate","没有删除菜单的权限");
}
Set<Menu> menuSet = new HashSet<>();
for (String id : ids) {
......
......@@ -109,7 +109,7 @@ public class RoleController {
Role resources=roleMapper.toEntity(roleDto);
Role role = roleManager.get(resources.getId());
if (resources.getId() == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
}
resources.setMenus(role.getMenus());
roleManager.saveRole(resources);
......@@ -122,9 +122,9 @@ public class RoleController {
public ResponseEntity<Object> updateMenu(@RequestBody RoleDto roleDto) {
Role resources=roleMapper.toEntity(roleDto);
if (resources.getId() == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
}
// throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
// throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
Role role = roleManager.get(resources.getId());
//判断ID是否存在
......@@ -133,7 +133,7 @@ public class RoleController {
Query query=new Query(Criteria.where("id").in(menuIds));
List<Menu> menus=menuManager.findByQuery(query);
if(menus==null&&(menus.size()!=menuIds.size())){
throw new ValidateException("smfcode.menuNotExist","菜单{0}不存在",new String[]{"ID"} );
throw new ValidateException("smfcore.menuNotExist","菜单{0}不存在",new String[]{"ID"} );
}
roleManager.updateMenu(resources);
return new ResponseEntity<>(HttpStatus.OK);
......@@ -147,13 +147,13 @@ public class RoleController {
List<Role> roles = new ArrayList<Role>();
for (String id : ids) {
if (id == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
}
Role role = roleManager.get(id);
// 验证是否被用户关联
List<User> users = userManager.findByRoleId(role.getId());
if (users != null && users.size() > 0) {
throw new ValidateException("smfcode.roleCannotDel","角色[{0}]有[{1}]个用户关联改角色,不能删除",new String[]{role.getName(),users.size()+"" });
throw new ValidateException("smfcore.roleCannotDel","角色[{0}]有[{1}]个用户关联改角色,不能删除",new String[]{role.getName(),users.size()+"" });
}
roles.add(role);
}
......
......@@ -103,15 +103,15 @@ public class UserController {
public ResponseEntity<Object> create(@Validated @RequestBody UserDto userDto) {
User resources=userMapper.toEntity(userDto);
if (resources.getId() != null) {
throw new ValidateException("smfcode.valueAlreadyExist","{0}[{1}]已存在",new String[]{"ID",resources.getId()});
throw new ValidateException("smfcore.valueAlreadyExist","{0}[{1}]已存在",new String[]{"ID",resources.getId()});
// throw new ValidateException("新增用户:ID已存在");
}
if(resources.getUsername()==null){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"username"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"username"} );
// throw new ValidateException("新增用户:用户名不能为空");
}
if(resources.getRoleId()==null){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"roleId"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"roleId"} );
// throw new ValidateException("新增用户:角色ID不能为空");
}
//判断用户名是否存在
......@@ -139,13 +139,13 @@ public class UserController {
public ResponseEntity<Object> update(@Validated @RequestBody UserDto userDto) {
User resources=userMapper.toEntity(userDto);
if (resources.getId() == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
}
if(resources.getUsername()==null){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"username"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"username"} );
}
if(resources.getRoleId()==null){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"roleId"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"roleId"} );
}
userManager.update(resources);
......@@ -158,7 +158,7 @@ public class UserController {
@PreAuthorize("@el.check('user:edit')")
public ResultBean resetPass( @RequestBody String id) {
if (id == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
}
User resources=userManager.get(id);
resources.setPassword(passwordEncoder.encode(Constants.USER_DEFAULTP_PWD));
......@@ -178,7 +178,7 @@ public class UserController {
public ResultBean center(@Validated @RequestBody UserDto userDto) {
User resources=userMapper.toEntity(userDto);
if (!resources.getId().equals(SecurityUtils.getCurrentUserId())) {
throw new ValidateException("smfcode.hasNoAccess","无权限修改此用户信息" );
throw new ValidateException("smfcore.hasNoAccess","无权限修改此用户信息" );
// throw new ValidateException("不能修改他人资料");
}
userManager.updateCenter(resources);
......@@ -193,10 +193,10 @@ public class UserController {
String oldPass = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, passVo.getOldPass());
String newPass = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, passVo.getNewPass());
if (!passwordEncoder.matches(oldPass, user.getPassword())) {
throw new ValidateException("smfcode.oldPwdError","修改失败,旧密码错误");
throw new ValidateException("smfcore.oldPwdError","修改失败,旧密码错误");
}
if (passwordEncoder.matches(newPass, user.getPassword())) {
throw new ValidateException("smfcode.newPwdError","新密码不能与旧密码相同");
throw new ValidateException("smfcore.newPwdError","新密码不能与旧密码相同");
}
userManager.updatePass(user.getUsername(), passwordEncoder.encode(newPass));
return ResultBean.newOkResult("");
......@@ -210,13 +210,13 @@ public class UserController {
//不能删除自己
String currId = SecurityUtils.getCurrentUserId();
if (currId == id) {
throw new ValidateException("smfcode.canotDelSelf","删除用户:不能删除自己");
throw new ValidateException("smfcore.canotDelSelf","删除用户:不能删除自己");
}
User user = userManager.get(id);
//admin的用户不让删除
if ( user.getUsername().equals(Constants.SUPER_USERNAME)) {
throw new ValidateException("smfcode.canotDelUser","删除用户:此用户不能删除");
throw new ValidateException("smfcore.canotDelUser","删除用户:此用户不能删除");
// throw new ValidateException("删除用户:此用户不能删除");
}
}
......@@ -233,7 +233,7 @@ public class UserController {
// String password = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, user.getPassword());
// User myUser = userManager.findByUserName(SecurityUtils.getCurrentUsername());
// if (!passwordEncoder.matches(password, myUser.getPassword())) {
// throw new ValidateException("smfcode.pwdError","修改邮箱失败,密码错误");
// throw new ValidateException("smfcore.pwdError","修改邮箱失败,密码错误");
// }
//// verificationCodeService.validated(CodeEnum.EMAIL_RESET_EMAIL_CODE.getKey() + user.getEmail(), code);
// userManager.updateEmail(myUser.getUsername(), myUser.getEmail());
......@@ -245,7 +245,7 @@ public class UserController {
public ResponseEntity<Object> updateGroup(@RequestBody UserDto userDto) {
User resources=userMapper.toEntity(userDto);
if (resources.getId() == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"ID"} );
// throw new ValidateException("修改用户组:ID不能为空");
}
User user = userManager.get(resources.getId());
......@@ -261,7 +261,7 @@ public class UserController {
String image = "csv";
String fileType = FileUtil.getExtensionName(uploadFile.getOriginalFilename());
if(fileType != null && !image.contains(fileType)){
throw new ValidateException("smfcode.feleFormatError","文件格式错误!, 仅支持{0}格式",new String[]{image});
throw new ValidateException("smfcore.feleFormatError","文件格式错误!, 仅支持{0}格式",new String[]{image});
}
File folder = new File(properties.getPath(),"user");
File file = FileUtil.upload(uploadFile, folder.getAbsolutePath());
......
......@@ -76,16 +76,16 @@ public class UserDetailsServiceImpl implements UserDetailsService {
user = userManager.findByUserName(username);
} catch (EntityNotFoundException e) {
// SpringSecurity会自动转换UsernameNotFoundException为BadCredentialsException
throw new ValidateException("smfcode.valueNotExist","{0}[{1}]不存在",new String[]{"username",username});
throw new ValidateException("smfcore.valueNotExist","{0}[{1}]不存在",new String[]{"username",username});
}
if (user == null) {
throw new ValidateException("smfcode.valueNotExist","{0}[{1}]不存在",new String[]{"username",username});
throw new ValidateException("smfcore.valueNotExist","{0}[{1}]不存在",new String[]{"username",username});
} else {
if(user.getEnabled()==null){
throw new ValidateException("smfcode.notActivated","账号未激活");
throw new ValidateException("smfcore.notActivated","账号未激活");
}
if (!user.getEnabled()) {
throw new ValidateException("smfcode.notActivated","账号未激活");
throw new ValidateException("smfcore.notActivated","账号未激活");
}
if(user.getUsername().equals(Constants.SUPER_USERNAME)){
......@@ -93,7 +93,7 @@ public class UserDetailsServiceImpl implements UserDetailsService {
//判断激活码是否正确
String code = Md5Utls.getMd5(user.getId(), user.getCreateDate());
if (!code.equals(user.getCheckCode())) {
throw new ValidateException("smfcode.notActivated","账号未激活");
throw new ValidateException("smfcore.notActivated","账号未激活");
}
}
List<Long> dataScopes = new ArrayList<>();
......
......@@ -54,14 +54,14 @@ public class GroupManagerImpl implements IGroupManager {
logName = "修改分组:";
}
if (resources.getGroupName() == null) {
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"groupName"});
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"groupName"});
// throw new BadRequestException(logName+"组名称不能为空");
}
Query que = new Query(c);
List<Group> groups = findByQuery(que);
if (groups != null && groups.size() > 0) {
// throw new ValidateException(logName+"组名称[" + resources.getGroupName() + "]已存在");
throw new ValidateException("smfcode.valueAlreadyExist", "{0}[{1}]已存在", new String[]{"groupname", resources.getGroupName()});
throw new ValidateException("smfcore.valueAlreadyExist", "{0}[{1}]已存在", new String[]{"groupname", resources.getGroupName()});
}
Group group = groupDao.save(resources);
//同时将组添加到超级管理员用户的权限中
......
......@@ -266,11 +266,11 @@ public class MenuManagerImpl implements IMenuManager {
if(menu.getType()==null){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"Type"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"Type"} );
// throw new BadRequestException("菜单类型不能为空");
}
if(menu.getTitle()==null){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"Title"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"Title"} );
// throw new BadRequestException( "菜单标题不能为空");
}
if(menu.getChildren()==null){
......@@ -307,7 +307,7 @@ public class MenuManagerImpl implements IMenuManager {
//菜单path不能重复
Menu pathMenu=menuDao.findOne(quer);
if(pathMenu!=null){
throw new ValidateException("smfcode.valueAlreadyExist","{0}[{1}]已存在",new String[]{"path",pathMenu.getPath()});
throw new ValidateException("smfcore.valueAlreadyExist","{0}[{1}]已存在",new String[]{"path",pathMenu.getPath()});
// throw new BadRequestException("路径["+pathMenu+"]已存在");
}
......
......@@ -80,7 +80,7 @@ public class RoleManagerImpl implements IRoleManager {
@Override
public Role saveRole(Role role) throws ValidateException {
if(role.getName()==null){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"name"} );
throw new ValidateException("smfcore.valueCanotNull","{0}不能为空",new String[]{"name"} );
// throw new BadRequestException("角色名称不能为空");
}
if (role.getMenus() == null) {
......@@ -102,7 +102,7 @@ public class RoleManagerImpl implements IRoleManager {
log.error(logName+"[" + role.toString() + "]出错:角色名[" + role.getName() + "]已存在");
// throw new ValidateException(logName+"角色名[" + role.getName() + "]已存在");
throw new ValidateException("smfcode.valueAlreadyExist","{0}[{1}]已存在",new String[]{"name",role.getName()});
throw new ValidateException("smfcore.valueAlreadyExist","{0}[{1}]已存在",new String[]{"name",role.getName()});
}
return roleDao.save(role);
}
......@@ -111,12 +111,12 @@ public class RoleManagerImpl implements IRoleManager {
Role role=this.get(resources.getId());
if(role==null){
throw new ValidateException("smfcode.notSelRole","请要修改的选择角色");
throw new ValidateException("smfcore.notSelRole","请要修改的选择角色");
// throw new BadRequestException("请要修改的选择角色");
}
if(role.getName().equals("admin")){
if(!SecurityUtils.getCurrentUsername().equals(Constants.SUPER_USERNAME)){
throw new ValidateException("smfcode.noaccess","无权限修改此角色的菜单");
throw new ValidateException("smfcore.noaccess","无权限修改此角色的菜单");
// throw new BadRequestException("只有超级管理员才能修改此角色的菜单");
}
}
......
......@@ -61,7 +61,7 @@ public class UserManagerImpl implements IUserManager {
}
List<User> users=userDao.findByQuery(query);
if(users!=null&&users.size()>0){
throw new ValidateException("smfcode.valueAlreadyExist","{0}[{1}]已存在",new String[]{"userName",username});
throw new ValidateException("smfcore.valueAlreadyExist","{0}[{1}]已存在",new String[]{"userName",username});
}
}
@Override
......@@ -84,7 +84,7 @@ public class UserManagerImpl implements IUserManager {
}
if (user.getUsername().equals(Constants.SUPER_USERNAME)) {
if (!user.getId().equals(SecurityUtils.getCurrentUserId())) {
throw new ValidateException("smfcode.hasNoAccess","无权限修改此用户信息" );
throw new ValidateException("smfcore.hasNoAccess","无权限修改此用户信息" );
// throw new ValidateException("无权限修改此用户信息");
}
}
......
smfcode.valueCanotNull={0}\u4E0D\u80FD\u4E3A\u7A7A
smfcode.feleFormatError=\u6587\u4EF6\u683C\u5F0F\u9519\u8BEF\uFF01, \u4EC5\u652F\u6301{0}\u683C\u5F0F
smfcode.valueAlreadyExist={0}[{1}]\u5DF2\u5B58\u5728
smfcode.valueNotExist={0}[{1}]\u4E0D\u5B58\u5728
smfcode.fileToLong=\u6587\u4EF6\u8D85\u51FA\u89C4\u5B9A\u5927\u5C0F
smfcode.fileError=\u6587\u4EF6\u89E3\u6790\u5931\u8D25
smfcode.valueNotFind=\u672A\u627E\u5230{0}[{1}]
smfcode.humidityValueError=\u6E29\u5EA6\u8303\u56F4\u6570\u636E\u9519\u8BEF
smfcode.humidityShowValueError=\u6E29\u5EA6\u663E\u793A\u8303\u56F4\u6570\u636E\u9519\u8BEF
smfcode.temperatureValueError=\u6E7F\u5EA6\u8303\u56F4\u6570\u636E\u9519\u8BEF
smfcode.temperatureShowValueError=\u6E7F\u5EA6\u663E\u793A\u8303\u56F4\u6570\u636E\u9519\u8BEF
smfcode.notActivated=\u8D26\u53F7\u672A\u6FC0\u6D3B
smfcode.userInfoError=\u7528\u6237\u4FE1\u606F\u4E0D\u5B8C\u6574
smfcode.noaccess=\u65E0\u6743\u9650\u4FEE\u6539\u6B64\u89D2\u8272\u7684\u83DC\u5355
smfcode.notSelRole=\u8BF7\u8981\u4FEE\u6539\u7684\u9009\u62E9\u89D2\u8272
smfcode.posIsused=\u6599\u4ED3[{0}]\u7684\u5E93\u4F4D[{1}}]\u6709\u6599[{2}],\u5220\u9664\u5931\u8D25
smfcode.thePosIsused= \u5E93\u4F4D[{0}]\u6709\u6599[{1}],\u4E0D\u80FD\u5220\u9664
smfcode.groupWithStorage=\u7EC4[{0}]\u5DF2\u548C\u8BBE\u5907\u5173\u8054
smfcode.groupWithUser=\u7EC4[{0}]\u5DF2\u548C\u7528\u6237\u5173\u8054
smfcode.canotDelSelf=\u5220\u9664\u7528\u6237\uFF1A\u4E0D\u80FD\u5220\u9664\u81EA\u5DF1
smfcode.canotDelUser=\u5220\u9664\u7528\u6237\uFF1A\u6B64\u7528\u6237\u4E0D\u80FD\u5220\u9664
smfcode.oldPwdError=\u4FEE\u6539\u5931\u8D25\uFF0C\u65E7\u5BC6\u7801\u9519\u8BEF
smfcode.newPwdError=\u65B0\u5BC6\u7801\u4E0D\u80FD\u4E0E\u65E7\u5BC6\u7801\u76F8\u540C
smfcode.pwdError=\u4FEE\u6539\u90AE\u7BB1\u5931\u8D25\uFF0C\u5BC6\u7801\u9519\u8BEF
smfcode.hasNoAccess=\u65E0\u6743\u9650\u4FEE\u6539\u6B64\u7528\u6237\u4FE1\u606F
smfcode.noAccessUpdate=\u6CA1\u6709\u5220\u9664\u83DC\u5355\u7684\u6743\u9650
smfcode.roleCannotDel=\u89D2\u8272[{0}]\u6709[{1}]\u4E2A\u7528\u6237\u5173\u8054\u6539\u89D2\u8272,\u4E0D\u80FD\u5220\u9664
smfcore.valueCanotNull={0}\u4E0D\u80FD\u4E3A\u7A7A
smfcore.feleFormatError=\u6587\u4EF6\u683C\u5F0F\u9519\u8BEF\uFF01, \u4EC5\u652F\u6301{0}\u683C\u5F0F
smfcore.valueAlreadyExist={0}[{1}]\u5DF2\u5B58\u5728
smfcore.valueNotExist={0}[{1}]\u4E0D\u5B58\u5728
smfcore.fileToLong=\u6587\u4EF6\u8D85\u51FA\u89C4\u5B9A\u5927\u5C0F
smfcore.fileError=\u6587\u4EF6\u89E3\u6790\u5931\u8D25
smfcore.valueNotFind=\u672A\u627E\u5230{0}[{1}]
smfcore.humidityValueError=\u6E29\u5EA6\u8303\u56F4\u6570\u636E\u9519\u8BEF
smfcore.humidityShowValueError=\u6E29\u5EA6\u663E\u793A\u8303\u56F4\u6570\u636E\u9519\u8BEF
smfcore.temperatureValueError=\u6E7F\u5EA6\u8303\u56F4\u6570\u636E\u9519\u8BEF
smfcore.temperatureShowValueError=\u6E7F\u5EA6\u663E\u793A\u8303\u56F4\u6570\u636E\u9519\u8BEF
smfcore.notActivated=\u8D26\u53F7\u672A\u6FC0\u6D3B
smfcore.userInfoError=\u7528\u6237\u4FE1\u606F\u4E0D\u5B8C\u6574
smfcore.noaccess=\u65E0\u6743\u9650\u4FEE\u6539\u6B64\u89D2\u8272\u7684\u83DC\u5355
smfcore.notSelRole=\u8BF7\u8981\u4FEE\u6539\u7684\u9009\u62E9\u89D2\u8272
smfcore.posIsused=\u6599\u4ED3[{0}]\u7684\u5E93\u4F4D[{1}}]\u6709\u6599[{2}],\u5220\u9664\u5931\u8D25
smfcore.thePosIsused= \u5E93\u4F4D[{0}]\u6709\u6599[{1}],\u4E0D\u80FD\u5220\u9664
smfcore.groupWithStorage=\u7EC4[{0}]\u5DF2\u548C\u8BBE\u5907\u5173\u8054
smfcore.groupWithUser=\u7EC4[{0}]\u5DF2\u548C\u7528\u6237\u5173\u8054
smfcore.canotDelSelf=\u5220\u9664\u7528\u6237\uFF1A\u4E0D\u80FD\u5220\u9664\u81EA\u5DF1
smfcore.canotDelUser=\u5220\u9664\u7528\u6237\uFF1A\u6B64\u7528\u6237\u4E0D\u80FD\u5220\u9664
smfcore.oldPwdError=\u4FEE\u6539\u5931\u8D25\uFF0C\u65E7\u5BC6\u7801\u9519\u8BEF
smfcore.newPwdError=\u65B0\u5BC6\u7801\u4E0D\u80FD\u4E0E\u65E7\u5BC6\u7801\u76F8\u540C
smfcore.pwdError=\u4FEE\u6539\u90AE\u7BB1\u5931\u8D25\uFF0C\u5BC6\u7801\u9519\u8BEF
smfcore.hasNoAccess=\u65E0\u6743\u9650\u4FEE\u6539\u6B64\u7528\u6237\u4FE1\u606F
smfcore.noAccessUpdate=\u6CA1\u6709\u5220\u9664\u83DC\u5355\u7684\u6743\u9650
smfcore.roleCannotDel=\u89D2\u8272[{0}]\u6709[{1}]\u4E2A\u7528\u6237\u5173\u8054\u6539\u89D2\u8272,\u4E0D\u80FD\u5220\u9664
smfcore.notFindPos=\u672A\u627E\u5230\u9501\u5B9A\u5E93\u4F4D
smfcore.error.barcode.empty=\u672A\u626B\u5230\u6761\u7801
smfcore.error.barcode.many=\u627E\u5230\u591A\u4E2A\u6709\u6548\u6761\u7801,\u65E0\u6CD5\u5165\u5E93
smfcore.error.barcode.expired=\u7269\u6599\u5DF2\u8FC7\u671F,\u65E0\u6CD5\u5165\u5E93.
smfcore.allBoxView.noReel=\u5E93\u4F4D{0}\u4E2D\u65E0\u7269\u6599
smfcode.error.barcode.many=\u627E\u5230\u591A\u4E2A\u6709\u6548\u7684\u6761\u7801
smfcode.error.barcode.noValidCode=\u65E0\u6548\u7684\u6761\u7801
smfcore.error.barcode.many=\u627E\u5230\u591A\u4E2A\u6709\u6548\u7684\u6761\u7801
smfcore.error.barcode.noValidCode=\u65E0\u6548\u7684\u6761\u7801
smfcore.error.barcode.noValidCode={0}\u4E0D\u662F\u6709\u6548\u7684\u6761\u7801
smfcode.error.barcode.executing=\u6761\u7801[{0}}]\u4EFB\u52A1\u6B63\u5728\u6267\u884C
smfcode.error.pos.notExist=\u5E93\u4F4D[{0}]\u4E0D\u5B58\u5728,\u65E0\u6CD5\u5165\u5E93
smfcode.error.pos.wrong=\u5E93\u4F4D[{0}]\u4E0E\u6599\u4ED3[{1}}]\u4E0D\u5339\u914D,\u65E0\u6CD5\u5165\u5E93
smfcode.error.pos.hasReel=\u5E93\u4F4D[{0}]\u4E2D\u5DF2\u6709\u7269\u6599,\u65E0\u6CD5\u5165\u5E93
smfcode.error.pos.sizeNotMatch=\u6599\u76D8\u5C3A\u5BF8[{0}}]\u4E0E\u5E93\u4F4D{1}\u5C3A\u5BF8[{2}]\u4E0D\u7B26,\u65E0\u6CD5\u5165\u5E93
smfcode.error.storage.offline=\u6599\u4ED3[{0}]\u79BB\u7EBF
smfcode.error.barcode.invalid=\u6761\u7801\u65E0\u6548
smfcode.error.barcode.wrongSize=\u5C3A\u5BF8[{0}]\u4E0D\u7B26
smfcode.error.barcode.wrongQty=\u6761\u7801[{0}]\u5BF9\u5E94\u7684\u6570\u91CF<=0\u4E3A: {1}
smfcode.error.barcode.taskNotEnd=\u6599\u76D8[{0}]\u7684\u64CD\u4F5C\u672A\u5B8C\u6210,\u65E0\u6CD5\u6267\u884C\u5165\u5E93\u64CD\u4F5C
smfcode.error.columnNotExist=\u5FC5\u987B\u5305\u542B[{0}\u5217
smfcore.error.barcode.executing=\u6761\u7801[{0}}]\u4EFB\u52A1\u6B63\u5728\u6267\u884C
smfcore.error.pos.notExist=\u5E93\u4F4D[{0}]\u4E0D\u5B58\u5728,\u65E0\u6CD5\u5165\u5E93
smfcore.error.pos.wrong=\u5E93\u4F4D[{0}]\u4E0E\u6599\u4ED3[{1}}]\u4E0D\u5339\u914D,\u65E0\u6CD5\u5165\u5E93
smfcore.error.pos.hasReel=\u5E93\u4F4D[{0}]\u4E2D\u5DF2\u6709\u7269\u6599,\u65E0\u6CD5\u5165\u5E93
smfcore.error.pos.sizeNotMatch=\u6599\u76D8\u5C3A\u5BF8[{0}}]\u4E0E\u5E93\u4F4D{1}\u5C3A\u5BF8[{2}]\u4E0D\u7B26,\u65E0\u6CD5\u5165\u5E93
smfcore.error.storage.offline=\u6599\u4ED3[{0}]\u79BB\u7EBF
smfcore.error.barcode.invalid=\u6761\u7801\u65E0\u6548
smfcore.error.barcode.wrongSize=\u5C3A\u5BF8[{0}]\u4E0D\u7B26
smfcore.error.barcode.wrongQty=\u6761\u7801[{0}]\u5BF9\u5E94\u7684\u6570\u91CF<=0\u4E3A: {1}
smfcore.error.barcode.taskNotEnd=\u6599\u76D8[{0}]\u7684\u64CD\u4F5C\u672A\u5B8C\u6210,\u65E0\u6CD5\u6267\u884C\u5165\u5E93\u64CD\u4F5C
smfcore.error.columnNotExist=\u5FC5\u987B\u5305\u542B[{0}\u5217
smfcore.storage.error.notExist=\u672A\u627E\u5230\u6599\u4ED3{0}
smfcode.error.barcode.inQueue=\u4E8C\u7EF4\u7801[{0}]\u5DF2\u5728\u64CD\u4F5C\u961F\u5217\u4E2D\uFF0C\u64CD\u4F5C\u5931\u8D25
smfcode.error.pos.inQueue=\u4F4D\u7F6E:[{0}}]\u5DF2\u5728\u64CD\u4F5C\u961F\u5217\u4E2D,\u64CD\u4F5C\u5931\u8D25
smfcode.columnNotExist=\u5FC5\u987B\u5305\u542B[{0}\u5217
smfcore.error.barcode.inQueue=\u4E8C\u7EF4\u7801[{0}]\u5DF2\u5728\u64CD\u4F5C\u961F\u5217\u4E2D\uFF0C\u64CD\u4F5C\u5931\u8D25
smfcore.error.pos.inQueue=\u4F4D\u7F6E:[{0}}]\u5DF2\u5728\u64CD\u4F5C\u961F\u5217\u4E2D,\u64CD\u4F5C\u5931\u8D25
smfcore.columnNotExist=\u5FC5\u987B\u5305\u542B[{0}\u5217
smfcore.conotUpdate=\u7528\u6237\u540Dadmin\u4E0D\u80FD\u4FEE\u6539
smfcore.unfinished=\u6761\u7801[{0}]\u7684\u4EFB\u52A1\u8FD8\u672A\u7ED3\u675F
smfcore.ok=ok
......@@ -77,15 +77,15 @@ smfcore.taskLog=\u7269\u6599\u65E5\u5FD7
smfcore.user=\u7528\u6237\u7BA1\u7406
smfcore.peoples=\u7528\u6237\u7BA1\u7406
smfcore.role=\u89D2\u8272\u7BA1\u7406
smfcode.menuNotExist=\u83DC\u5355{0}\u4E0D\u5B58\u5728
smfcode.noValidStorage=\u6599\u4ED3\u5217\u8868\u4E2D\u672A\u627E\u5230\u53EF\u7528\u7684\u6599\u4ED3
smfcode.error.barcode.exist=[{0}}]\u5DF2\u5728{1}}[{2}}]\u4E2D
smfcore.menuNotExist=\u83DC\u5355{0}\u4E0D\u5B58\u5728
smfcore.noValidStorage=\u6599\u4ED3\u5217\u8868\u4E2D\u672A\u627E\u5230\u53EF\u7528\u7684\u6599\u4ED3
smfcore.error.barcode.exist=[{0}}]\u5DF2\u5728{1}}[{2}}]\u4E2D
smfcore.barcodeSetting=\u6761\u7801\u8BBE\u7F6E
smfcore.posNotExist=\u4ED3\u4F4D\u4E0D\u5B58\u5728
smfcore.error=\u51FA\u9519{0}
smfcore.userManager=\u7528\u6237\u7BA1\u7406
smfcode.cannotRemove=\u5220\u9664\u5E93\u4F4D\u5931\u8D25\uFF0C\u5E93\u4F4D[{0}]\u4E2D\u6709\u6599
smfcode.nogroupaccess=\u6CA1\u6709\u7EC4[{0}]\u7684\u64CD\u4F5C\u6743\u9650
smfcore.cannotRemove=\u5220\u9664\u5E93\u4F4D\u5931\u8D25\uFF0C\u5E93\u4F4D[{0}]\u4E2D\u6709\u6599
smfcore.nogroupaccess=\u6CA1\u6709\u7EC4[{0}]\u7684\u64CD\u4F5C\u6743\u9650
smfcore.outSetting=\u51FA\u5E93\u7B56\u7565
smfcore.sysSetting=\u7CFB\u7EDF\u8BBE\u7F6E
smfcore.help=\u5E2E\u52A9
......@@ -93,53 +93,58 @@ smfcore.instruction=\u8BF4\u660E\u4E66
smfcore.about=\u5173\u4E8E
smfcore.tacticsOuput=\u7B56\u7565\u51FA\u5E93
smfcore.labelOuput=\u7269\u6599\u5206\u7EC4
smfcode.order.out.executing=\u5DE5\u5355\u6B63\u5728\u6267\u884C
smfcode.order.out.notFound=\u5DE5\u5355\u672A\u627E\u5230
smfcode.order.out.maxOrder=\u5DF2\u8FBE\u5230\u6700\u5927\u53EF\u6267\u884C\u5DE5\u5355\u6570
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.order.close.success=\u5DE5\u5355\u5173\u95ED\u6210\u529F
smfcode.order.close.taskNotEnd=\u5DE5\u5355\u8FD8\u6709\u672A\u5B8C\u6210\u7684\u4EFB\u52A1
smfcore.order.out.executing=\u5DE5\u5355\u6B63\u5728\u6267\u884C
smfcore.order.out.notFound=\u5DE5\u5355\u672A\u627E\u5230
smfcore.order.out.maxOrder=\u5DF2\u8FBE\u5230\u6700\u5927\u53EF\u6267\u884C\u5DE5\u5355\u6570
smfcore.order.out.noTask=\u5DE5\u5355\u65E0\u53EF\u6267\u884C\u7684\u4EFB\u52A1
smfcore.cannotUpdateOrderNum=\u5DE5\u5355\u5DF2\u51FA\u5E93\uFF0C\u4E0D\u80FD\u4FEE\u6539\u6570\u91CF
smfcore.order.close.success=\u5DE5\u5355\u5173\u95ED\u6210\u529F
smfcore.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
smfcode.order.lineCanotNull=\u7EBF\u522B\u4E0D\u80FD\u4E3A\u7A7A
smfcode.order.cannotUpdateLine=\u5DE5\u5355\u5DF2\u51FA\u5E93\uFF0C\u4E0D\u80FD\u4FEE\u6539\u7EBF\u522B
smfcode.order.uploadOK=\u5DE5\u5355\u4E0A\u4F20\u6210\u529F
smfcode.order.ameExists=\u5DE5\u5355\u540D\u79F0[{0}]\u5DF2\u5B58\u5728
smfcode.order.hasClose=\u5DE5\u5355\u5DF2\u5173\u95ED
smfcode.order.supplementOutFail=\u672A\u627E\u5230\u53EF\u4EE5\u51FA\u5E93\u7684\u8865\u6599
smfcode.materialBox.quantityshort=\u7269\u6599\u6570\u91CF\u4E0D\u8DB3
smfcode.materialBox.invalid=\u672A\u627E\u5230\u6599\u76D2\u4FE1\u606F{0}
smfcode.materialBox.noReel=\u6599\u76D2\u4E2D\u672A\u627E\u5230\u5BF9\u5E94\u7269\u6599
smfcode.materialBox.boxNoReel=\u6599\u76D2\u4E2D\u65E0\u7269\u6599
smfcode.materialBox.inPos=\u7269\u6599\u5DF2\u5728\u5E93\u4F4D{0}\u4E2D
smfcode.materialBox.inOtherBox=\u7269\u6599\u5DF2\u5728\u6599\u76D2{0}\u4E2D
smfcore.error.barcode.noRules=\u89E3\u6790\u89C4\u5219\u672A\u5B9A\u4E49
smfcore.error.barcode.wrongLength=\u6761\u7801[{0}]\u957F\u5EA6\u9519\u8BEF
smfcore.error.barcode.noField=\u6761\u7801\u89E3\u6790\u5931\u8D25,\u672A\u627E\u5230{0}\u5B57\u6BB5
smfcore.error.barcode.pnNotExist=x\u6863\u6848 {0} \u4E0D\u5B58\u5728
smfcore.error.barcode.invalid={0}\u4E0D\u662F\u6709\u6548\u7684\u6761\u7801
smfcore.error.barcode.locked=\u5E93\u4F4D[{0}]\u5DF2\u88AB\u9501\u5B9A
smfcore.manualOut.ok=\u624B\u52A8\u51FA\u5E93\u6210\u529F
smfcore.manualOut.notFound=\u4ED3\u5E93\u4E2D\u672A\u627E\u5230\u6599\u76D8\u4FE1\u606F
smfcore.order.lineCanotNull=\u7EBF\u522B\u4E0D\u80FD\u4E3A\u7A7A
smfcore.order.cannotUpdateLine=\u5DE5\u5355\u5DF2\u51FA\u5E93\uFF0C\u4E0D\u80FD\u4FEE\u6539\u7EBF\u522B
smfcore.order.uploadOK=\u5DE5\u5355\u4E0A\u4F20\u6210\u529F
smfcore.order.ameExists=\u5DE5\u5355\u540D\u79F0[{0}]\u5DF2\u5B58\u5728
smfcore.order.hasClose=\u5DE5\u5355\u5DF2\u5173\u95ED
smfcore.order.supplementOutFail=\u672A\u627E\u5230\u53EF\u4EE5\u51FA\u5E93\u7684\u8865\u6599
smfcore.materialBox.quantityshort=\u7269\u6599\u6570\u91CF\u4E0D\u8DB3
smfcore.materialBox.invalid=\u672A\u627E\u5230\u6599\u76D2\u4FE1\u606F{0}
smfcore.materialBox.noReel=\u6599\u76D2\u4E2D\u672A\u627E\u5230\u5BF9\u5E94\u7269\u6599
smfcore.materialBox.boxNoReel=\u6599\u76D2\u4E2D\u65E0\u7269\u6599
smfcore.materialBox.inPos=\u7269\u6599\u5DF2\u5728\u5E93\u4F4D{0}\u4E2D
smfcore.materialBox.inOtherBox=\u7269\u6599\u5DF2\u5728\u6599\u76D2{0}\u4E2D
smfcore.materialBox=\u6599\u76D2\u64CD\u4F5C
smfcode.shelf.nextPos.hasReel=\u5E93\u4F4D[{0}]\u5DF2\u6709\u7269\u6599,\u8BF7\u91CD\u65B0\u626B\u63CF\u5E93\u4F4D\u7801
smfcode.shelf.nextPos.hasTask=\u5E93\u4F4D[{0}]\u5DF2\u6709\u4EFB\u52A1,\u8BF7\u91CD\u65B0\u626B\u63CF\u5E93\u4F4D\u7801
smfcode.shelf.notFound=\u672A\u627E\u5230\u6599\u67B6
smfcode.shelf.pos.notInStorage=\u6599\u67B6[{0}]\u4E2D\u672A\u627E\u5230\u5E93\u4F4D[{1}]
smfcode.shelf.pos.notInGroup=\u7EC4\u4E2D\u672A\u627E\u5230\u5E93\u4F4D[{0}]
smfcode.shelf.msg.hasReel=\u5E93\u4F4D\u4E2D[{0}]\u5DF2\u6709\u7269\u6599
smfcode.shelf.msg.tipScanReel=\u5E93\u4F4D[{0}]\u64CD\u4F5C\u6210\u529F,\u8BF7\u626B\u63CF\u8981\u653E\u5165\u7684\u7269\u6599
smfcode.shelf.msg.fastop=\u6761\u7801\u64CD\u4F5C\u9891\u7E41,\u8BF7\u7A0D\u540E\u518D\u8BD5
smfcode.shelf.msg.outConfirm=\u51FA\u5E93\u5B8C\u6210, \u5E93\u4F4D[{0}]\u706D\u706F
smfcode.shelf.msg.noTask=\u64CD\u4F5C\u5931\u8D25,\u5DF2\u5728\u5E93\u4F4D[{0}]\u4E2D,\u672A\u627E\u5230\u5BF9\u5E94\u7684\u51FA\u5E93\u4EFB\u52A1
smfcode.shelf.msg.scanPos=\u8BF7\u5148\u626B\u63CF\u5E93\u4F4D\u7801
smfcode.shelf.msg.inOk=\u64CD\u4F5C\u6210\u529F,\u8BF7\u653E\u5165\u5E93\u4F4D[{0}]
smfcode.label.noReel=\u672A\u627E\u5230\u53EF\u51FA\u5E93\u7684\u7269\u6599
smfcore.shelf.nextPos.hasReel=\u5E93\u4F4D[{0}]\u5DF2\u6709\u7269\u6599,\u8BF7\u91CD\u65B0\u626B\u63CF\u5E93\u4F4D\u7801
smfcore.shelf.nextPos.hasTask=\u5E93\u4F4D[{0}]\u5DF2\u6709\u4EFB\u52A1,\u8BF7\u91CD\u65B0\u626B\u63CF\u5E93\u4F4D\u7801
smfcore.shelf.notFound=\u672A\u627E\u5230\u6599\u67B6
smfcore.shelf.pos.notInStorage=\u6599\u67B6[{0}]\u4E2D\u672A\u627E\u5230\u5E93\u4F4D[{1}]
smfcore.shelf.pos.notInGroup=\u7EC4\u4E2D\u672A\u627E\u5230\u5E93\u4F4D[{0}]
smfcore.shelf.msg.hasReel=\u5E93\u4F4D\u4E2D[{0}]\u5DF2\u6709\u7269\u6599
smfcore.shelf.msg.tipScanReel=\u5E93\u4F4D[{0}]\u64CD\u4F5C\u6210\u529F,\u8BF7\u626B\u63CF\u8981\u653E\u5165\u7684\u7269\u6599
smfcore.shelf.msg.fastop=\u6761\u7801\u64CD\u4F5C\u9891\u7E41,\u8BF7\u7A0D\u540E\u518D\u8BD5
smfcore.shelf.msg.outConfirm=\u51FA\u5E93\u5B8C\u6210, \u5E93\u4F4D[{0}]\u706D\u706F
smfcore.shelf.msg.noTask=\u64CD\u4F5C\u5931\u8D25,\u5DF2\u5728\u5E93\u4F4D[{0}]\u4E2D,\u672A\u627E\u5230\u5BF9\u5E94\u7684\u51FA\u5E93\u4EFB\u52A1
smfcore.shelf.msg.scanPos=\u8BF7\u5148\u626B\u63CF\u5E93\u4F4D\u7801
smfcore.shelf.msg.inOk=\u64CD\u4F5C\u6210\u529F,\u8BF7\u653E\u5165\u5E93\u4F4D[{0}]
smfcore.label.noReel=\u672A\u627E\u5230\u53EF\u51FA\u5E93\u7684\u7269\u6599
smfcore.msd=MSD\u7BA1\u7406
smfcore.msdManage=MSD\u5E93\u5B58
smfcore.msdData=MSD\u8FFD\u6EAF\u6027
smfcore.msdSetting=MSD\u8BBE\u7F6E
smfcore.translation=\u8D44\u6E90\u7FFB\u8BD1
smfcode.languageCanotNull=\u8BED\u8A00\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
smfcode.noLanguageSetAccess=\u6CA1\u6709\u7F16\u8F91\u8BED\u8A00\u7684\u6743\u9650
smfcode.languageCanotRemoveAll=\u4E0D\u80FD\u5220\u9664\u6240\u6709\u8BED\u8A00
\ No newline at end of file
smfcore.languageCanotNull=\u8BED\u8A00\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
smfcore.noLanguageSetAccess=\u6CA1\u6709\u7F16\u8F91\u8BED\u8A00\u7684\u6743\u9650
smfcore.languageCanotRemoveAll=\u4E0D\u80FD\u5220\u9664\u6240\u6709\u8BED\u8A00
smfcore.solderPaste=\u9521\u818F\u7BA1\u7406
smfcore.solderPasteKanban=\u8BBE\u5907\u6982\u89C8
smfcore.solderPasteManage=\u5E93\u5B58
smfcore.solderPasteData=\u8FFD\u6EAF\u6027
smfcore.solderPasteSetting=\u8BBE\u7F6E
\ No newline at end of file
smfcode.valueCanotNull={0} is empty
smfcode.feleFormatError=File format error! Only {0} format is supported
smfcode.valueAlreadyExist={0}[{1}] exist
smfcode.valueNotExist={0}[{1}]does not exist
smfcode.fileToLong=File exceeds specified size
smfcode.fileError=File parsing failure
smfcode.valueNotFind={0}[{1}] not found
smfcode.humidityValueError=Temperature range error
smfcode.humidityShowValueError=Temperature display range error
smfcode.temperatureValueError=Humidity range error
smfcode.temperatureShowValueError=Humidity display range error
smfcode.notActivated=Account not activated
smfcode.userInfoError=Incomplete user information
Smfcode. Noaccess =No permission to modify
smfcode.notSelRole=Please select a role to modify
smfcode.posIsused=SMD BOX [{1}] Position[{0}] has material [{2}], deletion failed
smfcode.thePosIsused=Position [{0}] has material [{1}], deletion failed
smfcode.groupWithStorage=Group [{0}] is already associated with a device
smfcode.groupWithUser=Group [{0}] is already associated with user
smfcode.canotDelSelf=Delete user: cannot delete yourself
smfcode.canotDelUser=Delete user: cannot delete
smfcode.oldPwdError=Modification failure! Wrong password
smfcode.newPwdError=New and old password cannot be the same
smfcode.pwdError=Mail mod failure! Wrong password
smfcode.hasNoAccess=No permission to modify user info
smfcode.noAccessUpdate=No permission to delete manu
smfcode.roleCannotDel=Role[{0}]has[{1}]user assiciations, deletion failed
smfcore.valueCanotNull={0} is empty
smfcore.feleFormatError=File format error! Only {0} format is supported
smfcore.valueAlreadyExist={0}[{1}] exist
smfcore.valueNotExist={0}[{1}]does not exist
smfcore.fileToLong=File exceeds specified size
smfcore.fileError=File parsing failure
smfcore.valueNotFind={0}[{1}] not found
smfcore.humidityValueError=Temperature range error
smfcore.humidityShowValueError=Temperature display range error
smfcore.temperatureValueError=Humidity range error
smfcore.temperatureShowValueError=Humidity display range error
smfcore.notActivated=Account not activated
smfcore.userInfoError=Incomplete user information
smfcore.noaccess =No permission to modify
smfcore.notSelRole=Please select a role to modify
smfcore.posIsused=SMD BOX [{1}] Position[{0}] has material [{2}], deletion failed
smfcore.thePosIsused=Position [{0}] has material [{1}], deletion failed
smfcore.groupWithStorage=Group [{0}] is already associated with a device
smfcore.groupWithUser=Group [{0}] is already associated with user
smfcore.canotDelSelf=Delete user: cannot delete yourself
smfcore.canotDelUser=Delete user: cannot delete
smfcore.oldPwdError=Modification failure! Wrong password
smfcore.newPwdError=New and old password cannot be the same
smfcore.pwdError=Mail mod failure! Wrong password
smfcore.hasNoAccess=No permission to modify user info
smfcore.noAccessUpdate=No permission to delete manu
smfcore.roleCannotDel=Role[{0}]has[{1}]user assiciations, deletion failed
smfcore.notFindPos=Locked position not found
smfcore.error.barcode.empty=Barcode empty
smfcore.error.barcode.many=Found several barcodes, storage failed
smfcore.error.barcode.expired=Reel expired, storage failed
smfcore.allBoxView.noReel=No reel in position {0}
smfcode.error.barcode.many=Found several barcodes
smfcode.error.barcode.noValidCode=Invalid barcode
smfcore.error.barcode.many=Found several barcodes
smfcore.error.barcode.noValidCode=Invalid barcode
smfcore.error.barcode.noValidCode=Invalid barcode {0}
smfcode.error.barcode.executing=Barcode [{0}}] in progress
smfcode.error.pos.notExist=Position [{0}] does not exist, storage failed
smfcode.error.pos.wrong=Position [{0}] and SMD BOX [{1}}] not match, storage failed
smfcode.error.pos.hasReel=Position [{0}] is full, storage failed
smfcode.error.pos.sizeNotMatch=Reel size[{0}}] not match with position {1} size [{2}], storage failed
smfcode.error.storage.offline=SMD BOX[{0}] disconnect
smfcode.error.barcode.invalid=Invalid barcode
smfcode.error.barcode.wrongSize=Size [{0}] is wrong
smfcode.error.barcode.wrongQty=Barcode[{0}] amount<=0 is: {1}
smfcode.error.barcode.taskNotEnd=Reel[{0}] operation not complete, storage failed
smfcode.error.columnNotExist=Column [{0} does not exist
smfcore.error.barcode.executing=Barcode [{0}}] in progress
smfcore.error.pos.notExist=Position [{0}] does not exist, storage failed
smfcore.error.pos.wrong=Position [{0}] and SMD BOX [{1}}] not match, storage failed
smfcore.error.pos.hasReel=Position [{0}] is full, storage failed
smfcore.error.pos.sizeNotMatch=Reel size[{0}}] not match with position {1} size [{2}], storage failed
smfcore.error.storage.offline=SMD BOX[{0}] disconnect
smfcore.error.barcode.invalid=Invalid barcode
smfcore.error.barcode.wrongSize=Size [{0}] is wrong
smfcore.error.barcode.wrongQty=Barcode[{0}] amount<=0 is: {1}
smfcore.error.barcode.taskNotEnd=Reel[{0}] operation not complete, storage failed
smfcore.error.columnNotExist=Column [{0} does not exist
smfcore.storage.error.notExist=SMD BOX{0} does not exist
smfcode.error.barcode.inQueue=QR code[{0}] already in operation list, operation failed
smfcode.error.pos.inQueue=Position:[{0}}]already in operation list, operation failed
smfcode.columnNotExist=Column [{0} does not exist
smfcore.error.barcode.inQueue=QR code[{0}] already in operation list, operation failed
smfcore.error.pos.inQueue=Position:[{0}}]already in operation list, operation failed
smfcore.columnNotExist=Column [{0} does not exist
smfcore.conotUpdate=User name "admin" cannot be modified
smfcore.unfinished=Barcode [{0}] task not complete
smfcore.ok=OK
......@@ -77,15 +77,15 @@ smfcore.taskLog=Material Log
smfcore.user=Users
smfcore.peoples=Users
smfcore.role=Authority
smfcode.menuNotExist=Menu{0} does not exist
smfcode.noValidStorage=No available bin found in bin list
smfcode.error.barcode.exist=[{0}}] is already in {1}}[{2}}]
smfcore.menuNotExist=Menu{0} does not exist
smfcore.noValidStorage=No available bin found in bin list
smfcore.error.barcode.exist=[{0}}] is already in {1}}[{2}}]
smfcore.barcodeSetting=Material ID
smfcore.posNotExist=Positions do not exist
smfcore.error=Error{0}
smfcore.userManager=Users
smfcode.cannotRemove=Failed to delete the location, there is material in the location [{0}].
smfcode.nogroupaccess=No operation rights for the group [{0}]
smfcore.cannotRemove=Failed to delete the location, there is material in the location [{0}].
smfcore.nogroupaccess=No operation rights for the group [{0}]
smfcore.outSetting=Retrieval Method
smfcore.sysSetting=System Setting
smfcore.help=Help
......@@ -93,53 +93,58 @@ smfcore.instruction=Instruction manual
smfcore.about=About
smfcore.tacticsOuput=Retrieval Method
smfcore.labelOuput=Grouping
smfcode.order.out.executing=Work orders are being executed
smfcode.order.out.notFound=Work order not found
smfcode.order.out.maxOrder=The maximum number of executable work orders has been reached
smfcode.order.out.noTask=Work order No executable tasks
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.taskNotEnd=Work orders with outstanding tasks
smfcore.order.out.executing=Work orders are being executed
smfcore.order.out.notFound=Work order not found
smfcore.order.out.maxOrder=The maximum number of executable work orders has been reached
smfcore.order.out.noTask=Work order No executable tasks
smfcore.cannotUpdateOrderNum=The work order has been issued and the quantity cannot be modified
smfcore.order.close.success=Work order closed successfully
smfcore.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
smfcode.order.lineCanotNull=Line cannot be empty
smfcode.order.cannotUpdateLine=Work order has been issued, can not modify the line
smfcode.order.uploadOK=Work order uploaded successfully
smfcode.order.ameExists=Work order name [{0}] already exists
smfcode.order.hasClose=The work order is closed
smfcode.order.supplementOutFail=No replenishment material found that can be discharged
smfcode.materialBox.quantityshort=Insufficient quantity of materials
smfcode.materialBox.invalid=No information found for cartridge {0}
smfcode.materialBox.noReel=The corresponding material is not found in the material box
smfcode.materialBox.boxNoReel=No material in the cassette
smfcode.materialBox.inPos=The material is already in the storage space {0}
smfcode.materialBox.inOtherBox=The material is already in the cassette {0}
smfcore.error.barcode.noRules=Parsing rules not defined
smfcore.error.barcode.wrongLength=The barcode [{0}] is of wrong length
smfcore.error.barcode.noField=Bar code parsing failed, {0} field not found
smfcore.error.barcode.pnNotExist=Material file {0} does not exist
smfcore.error.barcode.invalid={0} is not a valid barcode
smfcore.error.barcode.locked=Library bit [{0}] is locked
smfcore.manualOut.ok=Manual exit successful
smfcore.manualOut.notFound=No tray information found
smfcore.order.lineCanotNull=Line cannot be empty
smfcore.order.cannotUpdateLine=Work order has been issued, can not modify the line
smfcore.order.uploadOK=Work order uploaded successfully
smfcore.order.ameExists=Work order name [{0}] already exists
smfcore.order.hasClose=The work order is closed
smfcore.order.supplementOutFail=No replenishment material found that can be discharged
smfcore.materialBox.quantityshort=Insufficient quantity of materials
smfcore.materialBox.invalid=No information found for cartridge {0}
smfcore.materialBox.noReel=The corresponding material is not found in the material box
smfcore.materialBox.boxNoReel=No material in the cassette
smfcore.materialBox.inPos=The material is already in the storage space {0}
smfcore.materialBox.inOtherBox=The material is already in the cassette {0}
smfcore.materialBox=Container
smfcode.shelf.nextPos.hasReel=There is already material in the warehouse [{0}], please scan the warehouse code again.
smfcode.shelf.nextPos.hasTask=The library position [{0}] has an existing task, please re-scan the library code
smfcode.shelf.notFound=No shelf found
smfcode.shelf.pos.notInStorage=No storage space [{1}] was found in the shelf [{0}].
smfcode.shelf.pos.notInGroup=Library not found in group[{0}]
smfcode.shelf.msg.hasReel=There is already material in [{0}] in the storage space
smfcode.shelf.msg.tipScanReel=The operation of [{0}] is successful, please scan the material to be put in.
smfcode.shelf.msg.fastop=The barcode operation is frequent, please try again later
smfcode.shelf.msg.outConfirm=When the exit of the warehouse is completed, the light of the warehouse position [{0}] goes out
smfcode.shelf.msg.noTask=The operation failed, and the corresponding outgoing task was not found in the storage location [{0}]
smfcode.shelf.msg.scanPos=Please scan the library code first
smfcode.shelf.msg.inOk=The operation is successful, please put it into the storage space[{0}]
smfcode.label.noReel=Material not found for release
smfcore.shelf.nextPos.hasReel=There is already material in the warehouse [{0}], please scan the warehouse code again.
smfcore.shelf.nextPos.hasTask=The library position [{0}] has an existing task, please re-scan the library code
smfcore.shelf.notFound=No shelf found
smfcore.shelf.pos.notInStorage=No storage space [{1}] was found in the shelf [{0}].
smfcore.shelf.pos.notInGroup=Library not found in group[{0}]
smfcore.shelf.msg.hasReel=There is already material in [{0}] in the storage space
smfcore.shelf.msg.tipScanReel=The operation of [{0}] is successful, please scan the material to be put in.
smfcore.shelf.msg.fastop=The barcode operation is frequent, please try again later
smfcore.shelf.msg.outConfirm=When the exit of the warehouse is completed, the light of the warehouse position [{0}] goes out
smfcore.shelf.msg.noTask=The operation failed, and the corresponding outgoing task was not found in the storage location [{0}]
smfcore.shelf.msg.scanPos=Please scan the library code first
smfcore.shelf.msg.inOk=The operation is successful, please put it into the storage space[{0}]
smfcore.label.noReel=Material not found for release
smfcore.msd=MSD Management
smfcore.msdManage=MSD Inventory
smfcore.msdData=MSD Traceability
smfcore.msdSetting=MSD Setting
smfcore.translation=Resource Translation
smfcode.languageCanotNull=Language type cannot be empty
smfcode.noLanguageSetAccess=No permission to edit the language
smfcode.languageCanotRemoveAll=Cannot delete all languages
smfcore.languageCanotNull=Language type cannot be empty
smfcore.noLanguageSetAccess=No permission to edit the language
smfcore.languageCanotRemoveAll=Cannot delete all languages
smfcore.solderPaste=Solder Paste Management
smfcore.solderPasteKanban=Equipment Overview
smfcore.solderPasteManage=Inventory
smfcore.solderPasteData=Traceability
smfcore.solderPasteSetting=Setting
smfcode.valueCanotNull={0}\u306F\u7A7A\u3067\u306F\u306A\u3044
smfcode.feleFormatError=\u30D5\u30A1\u30A4\u30EB\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u30A8\u30E9\u30FC\u3067\u3059 {0}\u5F62\u5F0F\u306E\u307F\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u3059
smfcode.valueAlreadyExist={0}[{1}] \u65E2\u306B\u5B58\u5728\u3059\u308B
smfcode.valueNotExist={0}[{1}]\u304C\u5B58\u5728\u3057\u307E\u305B\u3093
smfcode.fileToLong=\u30D5\u30A1\u30A4\u30EB\u8D85\u904E\u30B5\u30A4\u30BA
smfcode.fileError=\u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30FC\u30B7\u30F3\u30B0\u306B\u5931\u6557\u3057\u307E\u3057\u305F
smfcode.valueNotFind=\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F{0}[{1}]
smfcode.hudidityValueError=\u6E29\u5EA6\u7BC4\u56F2\u30C7\u30FC\u30BF\u30A8\u30E9\u30FC
smfcode.hudidityShowValueError=\u6E29\u5EA6\u8868\u793A\u7BC4\u56F2\u30C7\u30FC\u30BF\u30A8\u30E9\u30FC
smfcode.temperatureValueError=\u6E7F\u5EA6\u7BC4\u56F2\u30C7\u30FC\u30BF\u30A8\u30E9\u30FC
smfcode.temperatureShowValueError=\u6E7F\u5EA6\u306E\u8868\u793A\u7BC4\u56F2\u30C7\u30FC\u30BF\u30A8\u30E9\u30FC
smfcode.notActivated=\u30A2\u30AB\u30A6\u30F3\u30C8\u304C\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u306A\u3044
smfcode.userInfoError=\u30E6\u30FC\u30B6\u30FC\u60C5\u5831\u306E\u4E0D\u5099
smfcode.noaccess=\u3053\u306E\u30ED\u30FC\u30EB\u306E\u30E1\u30CB\u30E5\u30FC\u3092\u5909\u66F4\u3059\u308B\u6A29\u9650\u304C\u306A\u3044
smfcode.notSelRole=\u5909\u66F4\u3059\u308B\u5F79\u5272\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044
smfcode.posIsused=\u30D3\u30F3[{0}]\u306B\u306F\u30D3\u30F3[{1}}][{2}]\u306E\u6750\u6599\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u524A\u9664\u306B\u5931\u6557\u3057\u307E\u3057\u305F
smfcode.thePosIsused= \u30E9\u30A4\u30D6\u30E9\u30EA\u306E\u30D3\u30C3\u30C8[{0}]\u306B\u8CC7\u6599[{1}]\u304C\u3042\u308A\u3001\u524A\u9664\u3067\u304D\u306A\u3044
smfcode.groupWithStorage=\u30B0\u30EB\u30FC\u30D7[{0}]\u304C\u30C7\u30D0\u30A4\u30B9\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u308B
smfcode.groupWithUser=\u30B0\u30EB\u30FC\u30D7[{0}]\u304C\u30E6\u30FC\u30B6\u30FC\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u308B
smfcode.canotDelSelf=\u81EA\u5206\u3092\u524A\u9664\u3067\u304D\u306A\u3044
smfcode.canotDelUser=\u3053\u306E\u30E6\u30FC\u30B6\u30FC\u306F\u524A\u9664\u3067\u304D\u307E\u305B\u3093
smfcode.oldPwdError=\u5909\u66F4\u5931\u6557\u3001\u53E4\u3044\u30D1\u30B9\u30EF\u30FC\u30C9\u30A8\u30E9\u30FC
smfcode.newPwdError=\u65B0\u3057\u3044\u30D1\u30B9\u30EF\u30FC\u30C9\u306F\u53E4\u3044\u30D1\u30B9\u30EF\u30FC\u30C9\u3068\u540C\u3058\u3067\u3042\u3063\u3066\u306F\u306A\u3089\u306A\u3044
smfcode.pwdError=\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u306E\u5909\u66F4\u306B\u5931\u6557\u3057\u305F\u3001\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u9055\u3046
smfcode.hasNoAccess=\u3053\u306E\u30E6\u30FC\u30B6\u30FC\u60C5\u5831\u3092\u5909\u66F4\u3059\u308B\u6A29\u9650\u304C\u306A\u3044
smfcode.noAccessUpdate=\u30E1\u30CB\u30E5\u30FC\u3092\u524A\u9664\u3059\u308B\u6A29\u9650\u304C\u306A\u3044
smfcode.roleCannotDel=\u30ED\u30FC\u30EB[{0}]\u306B\u306F[{1}]\u4EBA\u306E\u30E6\u30FC\u30B6\u30FC\u304C\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u304A\u308A\u3001\u524A\u9664\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
smfcore.valueCanotNull={0}\u306F\u7A7A\u3067\u306F\u306A\u3044
smfcore.feleFormatError=\u30D5\u30A1\u30A4\u30EB\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u30A8\u30E9\u30FC\u3067\u3059 {0}\u5F62\u5F0F\u306E\u307F\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u3059
smfcore.valueAlreadyExist={0}[{1}] \u65E2\u306B\u5B58\u5728\u3059\u308B
smfcore.valueNotExist={0}[{1}]\u304C\u5B58\u5728\u3057\u307E\u305B\u3093
smfcore.fileToLong=\u30D5\u30A1\u30A4\u30EB\u8D85\u904E\u30B5\u30A4\u30BA
smfcore.fileError=\u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30FC\u30B7\u30F3\u30B0\u306B\u5931\u6557\u3057\u307E\u3057\u305F
smfcore.valueNotFind=\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F{0}[{1}]
smfcore.humidityValueError=\u6E29\u5EA6\u7BC4\u56F2\u30C7\u30FC\u30BF\u30A8\u30E9\u30FC
smfcore.humidityShowValueError=\u6E29\u5EA6\u8868\u793A\u7BC4\u56F2\u30C7\u30FC\u30BF\u30A8\u30E9\u30FC
smfcore.temperatureValueError=\u6E7F\u5EA6\u7BC4\u56F2\u30C7\u30FC\u30BF\u30A8\u30E9\u30FC
smfcore.temperatureShowValueError=\u6E7F\u5EA6\u306E\u8868\u793A\u7BC4\u56F2\u30C7\u30FC\u30BF\u30A8\u30E9\u30FC
smfcore.notActivated=\u30A2\u30AB\u30A6\u30F3\u30C8\u304C\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u306A\u3044
smfcore.userInfoError=\u30E6\u30FC\u30B6\u30FC\u60C5\u5831\u306E\u4E0D\u5099
smfcore.noaccess=\u3053\u306E\u30ED\u30FC\u30EB\u306E\u30E1\u30CB\u30E5\u30FC\u3092\u5909\u66F4\u3059\u308B\u6A29\u9650\u304C\u306A\u3044
smfcore.notSelRole=\u5909\u66F4\u3059\u308B\u5F79\u5272\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044
smfcore.posIsused=\u30D3\u30F3[{0}]\u306B\u306F\u30D3\u30F3[{1}}][{2}]\u306E\u6750\u6599\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u524A\u9664\u306B\u5931\u6557\u3057\u307E\u3057\u305F
smfcore.thePosIsused= \u30E9\u30A4\u30D6\u30E9\u30EA\u306E\u30D3\u30C3\u30C8[{0}]\u306B\u8CC7\u6599[{1}]\u304C\u3042\u308A\u3001\u524A\u9664\u3067\u304D\u306A\u3044
smfcore.groupWithStorage=\u30B0\u30EB\u30FC\u30D7[{0}]\u304C\u30C7\u30D0\u30A4\u30B9\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u308B
smfcore.groupWithUser=\u30B0\u30EB\u30FC\u30D7[{0}]\u304C\u30E6\u30FC\u30B6\u30FC\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u308B
smfcore.canotDelSelf=\u81EA\u5206\u3092\u524A\u9664\u3067\u304D\u306A\u3044
smfcore.canotDelUser=\u3053\u306E\u30E6\u30FC\u30B6\u30FC\u306F\u524A\u9664\u3067\u304D\u307E\u305B\u3093
smfcore.oldPwdError=\u5909\u66F4\u5931\u6557\u3001\u53E4\u3044\u30D1\u30B9\u30EF\u30FC\u30C9\u30A8\u30E9\u30FC
smfcore.newPwdError=\u65B0\u3057\u3044\u30D1\u30B9\u30EF\u30FC\u30C9\u306F\u53E4\u3044\u30D1\u30B9\u30EF\u30FC\u30C9\u3068\u540C\u3058\u3067\u3042\u3063\u3066\u306F\u306A\u3089\u306A\u3044
smfcore.pwdError=\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u306E\u5909\u66F4\u306B\u5931\u6557\u3057\u305F\u3001\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u9055\u3046
smfcore.hasNoAccess=\u3053\u306E\u30E6\u30FC\u30B6\u30FC\u60C5\u5831\u3092\u5909\u66F4\u3059\u308B\u6A29\u9650\u304C\u306A\u3044
smfcore.noAccessUpdate=\u30E1\u30CB\u30E5\u30FC\u3092\u524A\u9664\u3059\u308B\u6A29\u9650\u304C\u306A\u3044
smfcore.roleCannotDel=\u30ED\u30FC\u30EB[{0}]\u306B\u306F[{1}]\u4EBA\u306E\u30E6\u30FC\u30B6\u30FC\u304C\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u304A\u308A\u3001\u524A\u9664\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
smfcore.notFindPos=\u30ED\u30C3\u30AF\u3055\u308C\u305F\u30B9\u30C8\u30EC\u30FC\u30B8\u30B9\u30DA\u30FC\u30B9\u304C\u898B\u3064\u304B\u3089\u306A\u3044
smfcore.error.barcode.empty=\u30D0\u30FC\u30B3\u30FC\u30C9\u304C\u30B9\u30AD\u30E3\u30F3\u3055\u308C\u306A\u3044
smfcore.error.barcode.many=\u8907\u6570\u306E\u6709\u52B9\u306A\u30D0\u30FC\u30B3\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F\u304C\u3001\u5728\u5EAB\u306F\u3042\u308A\u307E\u305B\u3093
smfcore.error.barcode.expired=\u6750\u6599\u304C\u53E4\u304F\u3066\u5728\u5EAB\u304C\u306A\u3044
smfcore.allBoxView.noReel=\u4FDD\u7BA1\u4E2D\u306E\u7D20\u6750\u304C\u306A\u3044{0}
smfcode.error.barcode.many=\u8907\u6570\u306E\u6709\u52B9\u306A\u30D0\u30FC\u30B3\u30FC\u30C9\u306E\u691C\u7D22
smfcode.error.barcode.noValidCode=\u7121\u52B9\u306A\u30D0\u30FC\u30B3\u30FC\u30C9
smfcore.error.barcode.many=\u8907\u6570\u306E\u6709\u52B9\u306A\u30D0\u30FC\u30B3\u30FC\u30C9\u306E\u691C\u7D22
smfcore.error.barcode.noValidCode=\u7121\u52B9\u306A\u30D0\u30FC\u30B3\u30FC\u30C9
smfcore.error.barcode.noValidCode={0}\u306F\u6709\u52B9\u306A\u30D0\u30FC\u30B3\u30FC\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093
smfcode.error.barcode.executing=\u30D0\u30FC\u30B3\u30FC\u30C9 [{0}}] \u30BF\u30B9\u30AF\u304C\u5B9F\u884C\u3055\u308C\u3066\u3044\u307E\u3059
smfcode.error.pos.notExist=[{0}]\u306E\u30DD\u30B8\u30B7\u30E7\u30F3\u304C\u5B58\u5728\u3057\u306A\u3044\u305F\u3081\u3001\u5165\u529B\u3067\u304D\u307E\u305B\u3093
smfcode.error.pos.copse=\u30D9\u30A4[{0}]\u306F\u30D3\u30F3[{1}]\u3068\u4E00\u81F4\u3057\u306A\u3044\u305F\u3081\u3001\u30B9\u30C8\u30C3\u30AF\u3067\u304D\u307E\u305B\u3093
smfcode.error.pos.hasReel=\u6750\u6599\u306F\u65E2\u306B\u30D3\u30F3[{0}]\u306B\u5165\u3063\u3066\u304A\u308A\u3001\u5165\u529B\u3067\u304D\u307E\u305B\u3093
smfcode.error.pos.sizeNotMatch=\u30D1\u30EC\u30C3\u30C8[{0}]\u306E\u30B5\u30A4\u30BA\u304C\u53CE\u7D0D\u30B9\u30DA\u30FC\u30B9[{1}][{2}]\u306E\u30B5\u30A4\u30BA\u306B\u5BFE\u5FDC\u3057\u3066\u304A\u3089\u305A\u3001\u53CE\u7D0D\u3067\u304D\u307E\u305B\u3093
smfcode.error.storage.offline=\u30D3\u30F3 [{0}] \u30AA\u30D5\u30E9\u30A4\u30F3
smfcode.error.barcode.invalid=\u30D0\u30FC\u30B3\u30FC\u30C9\u304C\u7121\u52B9\u3067\u3059
smfcode.error.barcode.wrongSize=\u30B5\u30A4\u30BA[{0}]\u304C\u4E00\u81F4\u3057\u306A\u3044
smfcode.error.barcode.wrongQty=<=0\u306B\u5BFE\u5FDC\u3059\u308B\u30D0\u30FC\u30B3\u30FC\u30C9[{0}]\u306E\u6570\u306F\uFF1A{1}\u3067\u3059
smfcode.error.barcode.taskNotEnd=\u30D1\u30EC\u30C3\u30C8[{0}]\u306B\u5BFE\u3059\u308B\u64CD\u4F5C\u304C\u5B8C\u4E86\u3057\u3066\u304A\u3089\u305A\u3001\u53CE\u7D0D\u64CD\u4F5C\u304C\u3067\u304D\u307E\u305B\u3093
smfcode.error.columnNotExist=[{0}\u5217\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
smfcore.error.barcode.executing=\u30D0\u30FC\u30B3\u30FC\u30C9 [{0}}] \u30BF\u30B9\u30AF\u304C\u5B9F\u884C\u3055\u308C\u3066\u3044\u307E\u3059
smfcore.error.pos.notExist=[{0}]\u306E\u30DD\u30B8\u30B7\u30E7\u30F3\u304C\u5B58\u5728\u3057\u306A\u3044\u305F\u3081\u3001\u5165\u529B\u3067\u304D\u307E\u305B\u3093
smfcore.error.pos.wrong=\u30D9\u30A4[{0}]\u306F\u30D3\u30F3[{1}]\u3068\u4E00\u81F4\u3057\u306A\u3044\u305F\u3081\u3001\u30B9\u30C8\u30C3\u30AF\u3067\u304D\u307E\u305B\u3093
smfcore.error.pos.hasReel=\u6750\u6599\u306F\u65E2\u306B\u30D3\u30F3[{0}]\u306B\u5165\u3063\u3066\u304A\u308A\u3001\u5165\u529B\u3067\u304D\u307E\u305B\u3093
smfcore.error.pos.sizeNotMatch=\u30D1\u30EC\u30C3\u30C8[{0}]\u306E\u30B5\u30A4\u30BA\u304C\u53CE\u7D0D\u30B9\u30DA\u30FC\u30B9[{1}][{2}]\u306E\u30B5\u30A4\u30BA\u306B\u5BFE\u5FDC\u3057\u3066\u304A\u3089\u305A\u3001\u53CE\u7D0D\u3067\u304D\u307E\u305B\u3093
smfcore.error.storage.offline=\u30D3\u30F3 [{0}] \u30AA\u30D5\u30E9\u30A4\u30F3
smfcore.error.barcode.invalid=\u30D0\u30FC\u30B3\u30FC\u30C9\u304C\u7121\u52B9\u3067\u3059
smfcore.error.barcode.wrongSize=\u30B5\u30A4\u30BA[{0}]\u304C\u4E00\u81F4\u3057\u306A\u3044
smfcore.error.barcode.wrongQty=<=0\u306B\u5BFE\u5FDC\u3059\u308B\u30D0\u30FC\u30B3\u30FC\u30C9[{0}]\u306E\u6570\u306F\uFF1A{1}\u3067\u3059
smfcore.error.barcode.taskNotEnd=\u30D1\u30EC\u30C3\u30C8[{0}]\u306B\u5BFE\u3059\u308B\u64CD\u4F5C\u304C\u5B8C\u4E86\u3057\u3066\u304A\u3089\u305A\u3001\u53CE\u7D0D\u64CD\u4F5C\u304C\u3067\u304D\u307E\u305B\u3093
smfcore.error.columnNotExist=[{0}\u5217\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
smfcore.storage.error.notExist=\u30D3\u30F3\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F{0}
smfcode.error.barcode.inQueue=QR\u30B3\u30FC\u30C9[{0}]\u306F\u3059\u3067\u306B\u64CD\u4F5C\u30AD\u30E5\u30FC\u306B\u5165\u3063\u3066\u304A\u308A\u3001\u64CD\u4F5C\u306B\u5931\u6557\u3057\u307E\u3057\u305F
smfcode.error.pos.inQueue=\u30DD\u30B8\u30B7\u30E7\u30F3 :[{0}} \u304C\u30AD\u30E5\u30FC\u306B\u5165\u3063\u3066\u3044\u307E\u3059\u304C\u3001\u64CD\u4F5C\u306B\u5931\u6557\u3057\u307E\u3057\u305F
smfcode.columnNotExist=0}\u5217\u3092\u542B\u3080\u3053\u3068
smfcore.error.barcode.inQueue=QR\u30B3\u30FC\u30C9[{0}]\u306F\u3059\u3067\u306B\u64CD\u4F5C\u30AD\u30E5\u30FC\u306B\u5165\u3063\u3066\u304A\u308A\u3001\u64CD\u4F5C\u306B\u5931\u6557\u3057\u307E\u3057\u305F
smfcore.error.pos.inQueue=\u30DD\u30B8\u30B7\u30E7\u30F3 :[{0}} \u304C\u30AD\u30E5\u30FC\u306B\u5165\u3063\u3066\u3044\u307E\u3059\u304C\u3001\u64CD\u4F5C\u306B\u5931\u6557\u3057\u307E\u3057\u305F
smfcore.columnNotExist=0}\u5217\u3092\u542B\u3080\u3053\u3068
smfcore.conotUpdate=\u30E6\u30FC\u30B6\u30FC\u540Dadmin\u306F\u5909\u66F4\u3067\u304D\u307E\u305B\u3093
smfcore.unfinished=\u30D0\u30FC\u30B3\u30FC\u30C9[{0}]\u306E\u30BF\u30B9\u30AF\u306F\u307E\u3060\u7D42\u4E86\u3057\u3066\u3044\u307E\u305B\u3093
smfcore.ok=ok
......@@ -77,15 +77,15 @@ smfcore.taskLog=\u30DE\u30C6\u30EA\u30A2\u30EB\u30ED\u30B0
smfcore.user=\u30E6\u30FC\u30B6\u30FC\u7BA1\u7406
smfcore.peoples=\u30E6\u30FC\u30B6\u30FC\u7BA1\u7406
smfcore.role=\u5F79\u5272\u7BA1\u7406
smfcode.menuNotExist=\u30E1\u30CB\u30E5\u30FC{0}\u304C\u5B58\u5728\u3057\u306A\u3044
smfcode.noValidStorage=\u30D3\u30F3\u30EA\u30B9\u30C8\u306B\u5229\u7528\u53EF\u80FD\u306A\u30D3\u30F3\u304C\u898B\u3064\u304B\u3089\u306A\u3044
smfcode.error.barcode.exist=[0}}]\u306F\u3059\u3067\u306B{1}[{2}}\u306B\u5165\u3063\u3066\u3044\u307E\u3059\u3002
smfcore.menuNotExist=\u30E1\u30CB\u30E5\u30FC{0}\u304C\u5B58\u5728\u3057\u306A\u3044
smfcore.noValidStorage=\u30D3\u30F3\u30EA\u30B9\u30C8\u306B\u5229\u7528\u53EF\u80FD\u306A\u30D3\u30F3\u304C\u898B\u3064\u304B\u3089\u306A\u3044
smfcore.error.barcode.exist=[0}}]\u306F\u3059\u3067\u306B{1}[{2}}\u306B\u5165\u3063\u3066\u3044\u307E\u3059\u3002
smfcore.barcodeSetting=\u30D0\u30FC\u30B3\u30FC\u30C9\u8A2D\u5B9A
smfcore.posNotExist=\u30E9\u30A4\u30D6\u30E9\u30EA\u30FC\u30B9\u30DA\u30FC\u30B9\u304C\u5B58\u5728\u3057\u306A\u3044
smfcore.error=\u8AA4\u308A{0}
smfcore.userManager=\u30E6\u30FC\u30B6\u30FC\u7BA1\u7406
smfcode.cannotRemove=\u30B9\u30C8\u30C3\u30AF\u30EC\u30D9\u30EB\u306E\u524A\u9664\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u30B9\u30C8\u30C3\u30AF\u30EC\u30D9\u30EB[{0}]\u306B\u6750\u6599\u304C\u3042\u308A\u307E\u3059\u3002
smfcode.nogroupaccess=\u30B0\u30EB\u30FC\u30D7[{0}]\u306E\u64CD\u4F5C\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002
smfcore.cannotRemove=\u30B9\u30C8\u30C3\u30AF\u30EC\u30D9\u30EB\u306E\u524A\u9664\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u30B9\u30C8\u30C3\u30AF\u30EC\u30D9\u30EB[{0}]\u306B\u6750\u6599\u304C\u3042\u308A\u307E\u3059\u3002
smfcore.nogroupaccess=\u30B0\u30EB\u30FC\u30D7[{0}]\u306E\u64CD\u4F5C\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002
smfcore.outSetting=\u30A2\u30A6\u30C8\u30D0\u30A6\u30F3\u30C9\u6226\u7565
smfcore.sysSetting=\u30B7\u30B9\u30C6\u30E0\u8A2D\u5B9A
smfcore.help=\u30D8\u30EB\u30D7
......@@ -93,53 +93,58 @@ smfcore.instruction=\u53D6\u6271\u8AAC\u660E\u66F8
smfcore.about=\u306B\u3064\u3044\u3066
smfcore.tacticsOuput=\u30B9\u30C8\u30E9\u30C6\u30B8\u30FC\u306F\u5728\u5EAB\u5207\u308C\u3067\u3059
smfcore.labelOuput=\u6750\u6599\u306E\u30B0\u30EB\u30FC\u30D7\u5316
smfcode.order.out.executing=\u4F5C\u696D\u6307\u793A\u304C\u5B9F\u884C\u3055\u308C\u3066\u3044\u308B
smfcode.order.out.notFound=\u4F5C\u696D\u6307\u793A\u66F8\u304C\u898B\u3064\u304B\u3089\u306A\u3044
smfcode.order.out.maxOrder=\u5B9F\u884C\u53EF\u80FD\u306A\u30EF\u30FC\u30AF\u30AA\u30FC\u30C0\u30FC\u306E\u6700\u5927\u6570\u306B\u9054\u3057\u3066\u3044\u308B
smfcode.order.out.noTask=\u4F5C\u696D\u6307\u793A\u304C\u5B9F\u884C\u3067\u304D\u306A\u3044\u30BF\u30B9\u30AF
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.taskNotEnd=\u672A\u51E6\u7406\u306E\u30BF\u30B9\u30AF\u304C\u3042\u308B\u30EF\u30FC\u30AF\u30AA\u30FC\u30C0\u30FC
smfcore.order.out.executing=\u4F5C\u696D\u6307\u793A\u304C\u5B9F\u884C\u3055\u308C\u3066\u3044\u308B
smfcore.order.out.notFound=\u4F5C\u696D\u6307\u793A\u66F8\u304C\u898B\u3064\u304B\u3089\u306A\u3044
smfcore.order.out.maxOrder=\u5B9F\u884C\u53EF\u80FD\u306A\u30EF\u30FC\u30AF\u30AA\u30FC\u30C0\u30FC\u306E\u6700\u5927\u6570\u306B\u9054\u3057\u3066\u3044\u308B
smfcore.order.out.noTask=\u4F5C\u696D\u6307\u793A\u304C\u5B9F\u884C\u3067\u304D\u306A\u3044\u30BF\u30B9\u30AF
smfcore.cannotUpdateOrderNum=\u30EF\u30FC\u30AF\u30AA\u30FC\u30C0\u30FC\u304C\u5728\u5EAB\u5207\u308C\u3067\u6570\u91CF\u304C\u5909\u66F4\u3067\u304D\u306A\u3044
smfcore.order.close.success=\u30EF\u30FC\u30AF\u30AA\u30FC\u30C0\u30FC\u304C\u6B63\u5E38\u306B\u7D42\u4E86\u3057\u307E\u3057\u305F\u3002
smfcore.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
smfcode.order.lineCanotNull=\u30E9\u30A4\u30F3\u304C\u7A7A\u304F\u3053\u3068\u306F\u306A\u3044
smfcode.order.cannotUpdateLine=\u4F5C\u696D\u6307\u793A\u66F8\u304C\u767A\u884C\u3055\u308C\u3001\u30E9\u30A4\u30F3\u306E\u5909\u66F4\u304C\u3067\u304D\u306A\u3044\u72B6\u614B\u306B\u306A\u3063\u3066\u3044\u308B
smfcode.order.uploadOK=\u4F5C\u696D\u6307\u793A\u66F8\u306E\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u6210\u529F
smfcode.order.ameExists=\u4F5C\u696D\u30AA\u30FC\u30C0\u30FC\u540D\u300C{0}\u300D\u306F\u65E2\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059
smfcode.order.hasClose=\u30EF\u30FC\u30AF\u30AA\u30FC\u30C0\u30FC\u306E\u7D42\u4E86
smfcode.order.supplementOutFail=\u6392\u51FA\u53EF\u80FD\u306A\u88DC\u5145\u54C1\u304C\u898B\u3064\u304B\u3089\u306A\u3044
smfcode.materialBox.quantityshort=\u7269\u6599\u6570\u91CF\u4E0D\u8DB3
smfcode.materialBox.invalid=\u96D1\u8A8C\u306E\u60C5\u5831\u306F\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F{0}
smfcode.materialBox.noReel=\u30AB\u30BB\u30C3\u30C8\u5185\u306B\u8A72\u5F53\u3059\u308B\u7D20\u6750\u304C\u898B\u3064\u304B\u3089\u306A\u3044
smfcode.materialBox.boxNoReel=\u30AB\u30BB\u30C3\u30C8\u306B\u7D20\u6750\u304C\u306A\u3044
smfcode.materialBox.inPos=\u3059\u3067\u306B\u5728\u5EAB\u306E\u3042\u308B\u7D20\u6750 {0}
smfcode.materialBox.inOtherBox=\u30AB\u30BB\u30C3\u30C8\u306B\u65E2\u306B\u5165\u3063\u3066\u3044\u308B\u7D20\u6750 {0}
smfcore.error.barcode.noRules=\u69CB\u6587\u89E3\u6790\u30EB\u30FC\u30EB\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u306A\u3044f
smfcore.error.barcode.wrongLength=\u30D0\u30FC\u30B3\u30FC\u30C9[{0}]\u306E\u9577\u3055\u304C\u4E0D\u6B63\u3067\u3059
smfcore.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
smfcore.error.barcode.pnNotExist=\u30D5\u30A1\u30A4\u30EB{0}\u304C\u5B58\u5728\u3057\u306A\u3044
smfcore.error.barcode.invalid={0}\u306F\u6709\u52B9\u306A\u30D0\u30FC\u30B3\u30FC\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093
smfcore.error.barcode.locked=\u30E9\u30A4\u30D6\u30E9\u30EA\u30DD\u30B8\u30B7\u30E7\u30F3 [{0}] \u304C\u30ED\u30C3\u30AF\u3055\u308C\u3066\u3044\u308B
smfcore.manualOut.ok=\u624B\u52D5\u7D42\u4E86\u6210\u529F
smfcore.manualOut.notFound=\u5009\u5EAB\u3067\u30D1\u30EC\u30C3\u30C8\u60C5\u5831\u304C\u898B\u3064\u304B\u3089\u306A\u3044
smfcore.order.lineCanotNull=\u30E9\u30A4\u30F3\u304C\u7A7A\u304F\u3053\u3068\u306F\u306A\u3044
smfcore.order.cannotUpdateLine=\u4F5C\u696D\u6307\u793A\u66F8\u304C\u767A\u884C\u3055\u308C\u3001\u30E9\u30A4\u30F3\u306E\u5909\u66F4\u304C\u3067\u304D\u306A\u3044\u72B6\u614B\u306B\u306A\u3063\u3066\u3044\u308B
smfcore.order.uploadOK=\u4F5C\u696D\u6307\u793A\u66F8\u306E\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u6210\u529F
smfcore.order.ameExists=\u4F5C\u696D\u30AA\u30FC\u30C0\u30FC\u540D\u300C{0}\u300D\u306F\u65E2\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059
smfcore.order.hasClose=\u30EF\u30FC\u30AF\u30AA\u30FC\u30C0\u30FC\u306E\u7D42\u4E86
smfcore.order.supplementOutFail=\u6392\u51FA\u53EF\u80FD\u306A\u88DC\u5145\u54C1\u304C\u898B\u3064\u304B\u3089\u306A\u3044
smfcore.materialBox.quantityshort=\u7269\u6599\u6570\u91CF\u4E0D\u8DB3
smfcore.materialBox.invalid=\u96D1\u8A8C\u306E\u60C5\u5831\u306F\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F{0}
smfcore.materialBox.noReel=\u30AB\u30BB\u30C3\u30C8\u5185\u306B\u8A72\u5F53\u3059\u308B\u7D20\u6750\u304C\u898B\u3064\u304B\u3089\u306A\u3044
smfcore.materialBox.boxNoReel=\u30AB\u30BB\u30C3\u30C8\u306B\u7D20\u6750\u304C\u306A\u3044
smfcore.materialBox.inPos=\u3059\u3067\u306B\u5728\u5EAB\u306E\u3042\u308B\u7D20\u6750 {0}
smfcore.materialBox.inOtherBox=\u30AB\u30BB\u30C3\u30C8\u306B\u65E2\u306B\u5165\u3063\u3066\u3044\u308B\u7D20\u6750 {0}
smfcore.materialBox=\u30AB\u30BB\u30C3\u30C8\u64CD\u4F5C
smfcode.shelf.nextPos.hasReel=\u30B9\u30C8\u30A2[{0}]\u306B\u3059\u3067\u306B\u7D20\u6750\u304C\u3042\u308A\u307E\u3059\u3002\u30B9\u30C8\u30A2\u30B3\u30FC\u30C9\u3092\u518D\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u304F\u3060\u3055\u3044\u3002
smfcode.shelf.nextPos.hasTask=[0}]\u65E2\u5B58\u306E\u30BF\u30B9\u30AF\u3001\u518D\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u304F\u3060\u3055\u3044
smfcode.shelf.notFound=\u68DA\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
smfcode.shelf.pos.notInStorage=\u68DA[{0}]\u306B\u53CE\u7D0D\u30B9\u30DA\u30FC\u30B9[{1}]\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
smfcode.shelf.pos.notInGroup=\u30ED\u30B1\u30FC\u30B7\u30E7\u30F3\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 [{0}]
smfcode.shelf.msg.hasReel=\u5834\u6240 [{0}] \u65E2\u5B58\u306E\u7D20\u6750
smfcode.shelf.msg.tipScanReel=\u30DD\u30B8\u30B7\u30E7\u30F3[{0}]\u304C\u6210\u529F\u3057\u305F\u306E\u3067\u3001\u6295\u5165\u3059\u308B\u7D20\u6750\u3092\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u304F\u3060\u3055\u3044
smfcode.shelf.msg.fastop=\u983B\u7E41\u306B\u52D5\u4F5C\u3059\u308B\u305F\u3081\u3001\u5F8C\u3067\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044
smfcode.shelf.msg.outConfirm=\u9000\u51FA\u304C\u5B8C\u4E86\u3057\u3001[{0}]\u3067\u6D88\u706F\u3057\u3066\u3044\u307E\u3059
smfcode.shelf.msg.noTask=\u5009\u5EAB\u306E\u4F4D\u7F6E[{0}]\u306B\u5BFE\u5FDC\u3059\u308B\u9001\u51FA\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u3089\u306A\u304B\u3063\u305F\u305F\u3081\u3001\u64CD\u4F5C\u306B\u5931\u6557\u3057\u307E\u3057\u305F
smfcode.shelf.msg.scanPos=\u307E\u305A\u306F\u30E9\u30A4\u30D6\u30E9\u30EA\u30B3\u30FC\u30C9\u3092\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u304F\u3060\u3055\u3044
smfcode.shelf.msg.inOk=\u64CD\u4F5C\u306F\u6210\u529F\u3057\u3066\u3044\u307E\u3059\u304C\u3001\u53CE\u7D0D\u30B9\u30DA\u30FC\u30B9\u306B\u300C{0}\u300D\u3092\u5165\u308C\u3066\u304F\u3060\u3055\u3044
smfcode.label.noReel=\u6750\u6599\u304C\u898B\u3064\u304B\u3089\u306A\u3044
smfcore.shelf.nextPos.hasReel=\u30B9\u30C8\u30A2[{0}]\u306B\u3059\u3067\u306B\u7D20\u6750\u304C\u3042\u308A\u307E\u3059\u3002\u30B9\u30C8\u30A2\u30B3\u30FC\u30C9\u3092\u518D\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u304F\u3060\u3055\u3044\u3002
smfcore.shelf.nextPos.hasTask=[0}]\u65E2\u5B58\u306E\u30BF\u30B9\u30AF\u3001\u518D\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u304F\u3060\u3055\u3044
smfcore.shelf.notFound=\u68DA\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
smfcore.shelf.pos.notInStorage=\u68DA[{0}]\u306B\u53CE\u7D0D\u30B9\u30DA\u30FC\u30B9[{1}]\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
smfcore.shelf.pos.notInGroup=\u30ED\u30B1\u30FC\u30B7\u30E7\u30F3\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 [{0}]
smfcore.shelf.msg.hasReel=\u5834\u6240 [{0}] \u65E2\u5B58\u306E\u7D20\u6750
smfcore.shelf.msg.tipScanReel=\u30DD\u30B8\u30B7\u30E7\u30F3[{0}]\u304C\u6210\u529F\u3057\u305F\u306E\u3067\u3001\u6295\u5165\u3059\u308B\u7D20\u6750\u3092\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u304F\u3060\u3055\u3044
smfcore.shelf.msg.fastop=\u983B\u7E41\u306B\u52D5\u4F5C\u3059\u308B\u305F\u3081\u3001\u5F8C\u3067\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044
smfcore.shelf.msg.outConfirm=\u9000\u51FA\u304C\u5B8C\u4E86\u3057\u3001[{0}]\u3067\u6D88\u706F\u3057\u3066\u3044\u307E\u3059
smfcore.shelf.msg.noTask=\u5009\u5EAB\u306E\u4F4D\u7F6E[{0}]\u306B\u5BFE\u5FDC\u3059\u308B\u9001\u51FA\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u3089\u306A\u304B\u3063\u305F\u305F\u3081\u3001\u64CD\u4F5C\u306B\u5931\u6557\u3057\u307E\u3057\u305F
smfcore.shelf.msg.scanPos=\u307E\u305A\u306F\u30E9\u30A4\u30D6\u30E9\u30EA\u30B3\u30FC\u30C9\u3092\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u304F\u3060\u3055\u3044
smfcore.shelf.msg.inOk=\u64CD\u4F5C\u306F\u6210\u529F\u3057\u3066\u3044\u307E\u3059\u304C\u3001\u53CE\u7D0D\u30B9\u30DA\u30FC\u30B9\u306B\u300C{0}\u300D\u3092\u5165\u308C\u3066\u304F\u3060\u3055\u3044
smfcore.label.noReel=\u6750\u6599\u304C\u898B\u3064\u304B\u3089\u306A\u3044
smfcore.msd=MSD\u7BA1\u7406
smfcore.msdManage=MSD\u5E93\u5B58
smfcore.msdData=MSD\u8FFD\u6EAF\u6027
smfcore.msdSetting=MSD\u8BBE\u7F6E
smfcore.translation=\u30EA\u30BD\u30FC\u30B9\u306E\u7FFB\u8A33
smfcode.languageCanotNull=\u8A00\u8A9E\u30BF\u30A4\u30D7\u306F\u7A7A\u3067\u306F\u3042\u308A\u307E\u305B\u3093
smfcode.noLanguageSetAccess=\u8A00\u8A9E\u3092\u7DE8\u96C6\u3059\u308B\u6A29\u9650\u304C\u306A\u3044
smfcode.languageCanotRemoveAll=\u3059\u3079\u3066\u306E\u8A00\u8A9E\u3092\u524A\u9664\u3067\u304D\u306A\u3044
\ No newline at end of file
smfcore.languageCanotNull=\u8A00\u8A9E\u30BF\u30A4\u30D7\u306F\u7A7A\u3067\u306F\u3042\u308A\u307E\u305B\u3093
smfcore.noLanguageSetAccess=\u8A00\u8A9E\u3092\u7DE8\u96C6\u3059\u308B\u6A29\u9650\u304C\u306A\u3044
smfcore.languageCanotRemoveAll=\u3059\u3079\u3066\u306E\u8A00\u8A9E\u3092\u524A\u9664\u3067\u304D\u306A\u3044
smfcore.solderPaste=\u9521\u818F\u7BA1\u7406
smfcore.solderPasteKanban=\u8BBE\u5907\u6982\u89C8
smfcore.solderPasteManage=\u5E93\u5B58
smfcore.solderPasteData=\u8FFD\u6EAF\u6027
smfcore.solderPasteSetting=\u8BBE\u7F6E
\ No newline at end of file
smfcode.valueCanotNull={0}\u4E0D\u80FD\u4E3A\u7A7A
smfcode.feleFormatError=\u6587\u4EF6\u683C\u5F0F\u9519\u8BEF\uFF01, \u4EC5\u652F\u6301{0}\u683C\u5F0F
smfcode.valueAlreadyExist={0}[{1}]\u5DF2\u5B58\u5728
smfcode.valueNotExist={0}[{1}]\u4E0D\u5B58\u5728
smfcode.fileToLong=\u6587\u4EF6\u8D85\u51FA\u89C4\u5B9A\u5927\u5C0F
smfcode.fileError=\u6587\u4EF6\u89E3\u6790\u5931\u8D25
smfcode.valueNotFind=\u672A\u627E\u5230{0}[{1}]
smfcode.humidityValueError=\u6E29\u5EA6\u8303\u56F4\u6570\u636E\u9519\u8BEF
smfcode.humidityShowValueError=\u6E29\u5EA6\u663E\u793A\u8303\u56F4\u6570\u636E\u9519\u8BEF
smfcode.temperatureValueError=\u6E7F\u5EA6\u8303\u56F4\u6570\u636E\u9519\u8BEF
smfcode.temperatureShowValueError=\u6E7F\u5EA6\u663E\u793A\u8303\u56F4\u6570\u636E\u9519\u8BEF
smfcode.notActivated=\u8D26\u53F7\u672A\u6FC0\u6D3B
smfcode.userInfoError=\u7528\u6237\u4FE1\u606F\u4E0D\u5B8C\u6574
smfcode.noaccess=\u65E0\u6743\u9650\u4FEE\u6539\u6B64\u89D2\u8272\u7684\u83DC\u5355
smfcode.notSelRole=\u8BF7\u8981\u4FEE\u6539\u7684\u9009\u62E9\u89D2\u8272
smfcode.posIsused=\u6599\u4ED3[{0}]\u7684\u5E93\u4F4D[{1}}]\u6709\u6599[{2}],\u5220\u9664\u5931\u8D25
smfcode.thePosIsused= \u5E93\u4F4D[{0}]\u6709\u6599[{1}],\u4E0D\u80FD\u5220\u9664
smfcode.groupWithStorage=\u7EC4[{0}]\u5DF2\u548C\u8BBE\u5907\u5173\u8054
smfcode.groupWithUser=\u7EC4[{0}]\u5DF2\u548C\u7528\u6237\u5173\u8054
smfcode.canotDelSelf=\u5220\u9664\u7528\u6237\uFF1A\u4E0D\u80FD\u5220\u9664\u81EA\u5DF1
smfcode.canotDelUser=\u5220\u9664\u7528\u6237\uFF1A\u6B64\u7528\u6237\u4E0D\u80FD\u5220\u9664
smfcode.oldPwdError=\u4FEE\u6539\u5931\u8D25\uFF0C\u65E7\u5BC6\u7801\u9519\u8BEF
smfcode.newPwdError=\u65B0\u5BC6\u7801\u4E0D\u80FD\u4E0E\u65E7\u5BC6\u7801\u76F8\u540C
smfcode.pwdError=\u4FEE\u6539\u90AE\u7BB1\u5931\u8D25\uFF0C\u5BC6\u7801\u9519\u8BEF
smfcode.hasNoAccess=\u65E0\u6743\u9650\u4FEE\u6539\u6B64\u7528\u6237\u4FE1\u606F
smfcode.noAccessUpdate=\u6CA1\u6709\u5220\u9664\u83DC\u5355\u7684\u6743\u9650
smfcode.roleCannotDel=\u89D2\u8272[{0}]\u6709[{1}]\u4E2A\u7528\u6237\u5173\u8054\u6539\u89D2\u8272,\u4E0D\u80FD\u5220\u9664
smfcore.valueCanotNull={0}\u4E0D\u80FD\u4E3A\u7A7A
smfcore.feleFormatError=\u6587\u4EF6\u683C\u5F0F\u9519\u8BEF\uFF01, \u4EC5\u652F\u6301{0}\u683C\u5F0F
smfcore.valueAlreadyExist={0}[{1}]\u5DF2\u5B58\u5728
smfcore.valueNotExist={0}[{1}]\u4E0D\u5B58\u5728
smfcore.fileToLong=\u6587\u4EF6\u8D85\u51FA\u89C4\u5B9A\u5927\u5C0F
smfcore.fileError=\u6587\u4EF6\u89E3\u6790\u5931\u8D25
smfcore.valueNotFind=\u672A\u627E\u5230{0}[{1}]
smfcore.humidityValueError=\u6E29\u5EA6\u8303\u56F4\u6570\u636E\u9519\u8BEF
smfcore.humidityShowValueError=\u6E29\u5EA6\u663E\u793A\u8303\u56F4\u6570\u636E\u9519\u8BEF
smfcore.temperatureValueError=\u6E7F\u5EA6\u8303\u56F4\u6570\u636E\u9519\u8BEF
smfcore.temperatureShowValueError=\u6E7F\u5EA6\u663E\u793A\u8303\u56F4\u6570\u636E\u9519\u8BEF
smfcore.notActivated=\u8D26\u53F7\u672A\u6FC0\u6D3B
smfcore.userInfoError=\u7528\u6237\u4FE1\u606F\u4E0D\u5B8C\u6574
smfcore.noaccess=\u65E0\u6743\u9650\u4FEE\u6539\u6B64\u89D2\u8272\u7684\u83DC\u5355
smfcore.notSelRole=\u8BF7\u8981\u4FEE\u6539\u7684\u9009\u62E9\u89D2\u8272
smfcore.posIsused=\u6599\u4ED3[{0}]\u7684\u5E93\u4F4D[{1}}]\u6709\u6599[{2}],\u5220\u9664\u5931\u8D25
smfcore.thePosIsused= \u5E93\u4F4D[{0}]\u6709\u6599[{1}],\u4E0D\u80FD\u5220\u9664
smfcore.groupWithStorage=\u7EC4[{0}]\u5DF2\u548C\u8BBE\u5907\u5173\u8054
smfcore.groupWithUser=\u7EC4[{0}]\u5DF2\u548C\u7528\u6237\u5173\u8054
smfcore.canotDelSelf=\u5220\u9664\u7528\u6237\uFF1A\u4E0D\u80FD\u5220\u9664\u81EA\u5DF1
smfcore.canotDelUser=\u5220\u9664\u7528\u6237\uFF1A\u6B64\u7528\u6237\u4E0D\u80FD\u5220\u9664
smfcore.oldPwdError=\u4FEE\u6539\u5931\u8D25\uFF0C\u65E7\u5BC6\u7801\u9519\u8BEF
smfcore.newPwdError=\u65B0\u5BC6\u7801\u4E0D\u80FD\u4E0E\u65E7\u5BC6\u7801\u76F8\u540C
smfcore.pwdError=\u4FEE\u6539\u90AE\u7BB1\u5931\u8D25\uFF0C\u5BC6\u7801\u9519\u8BEF
smfcore.hasNoAccess=\u65E0\u6743\u9650\u4FEE\u6539\u6B64\u7528\u6237\u4FE1\u606F
smfcore.noAccessUpdate=\u6CA1\u6709\u5220\u9664\u83DC\u5355\u7684\u6743\u9650
smfcore.roleCannotDel=\u89D2\u8272[{0}]\u6709[{1}]\u4E2A\u7528\u6237\u5173\u8054\u6539\u89D2\u8272,\u4E0D\u80FD\u5220\u9664
smfcore.notFindPos=\u672A\u627E\u5230\u9501\u5B9A\u5E93\u4F4D
smfcore.error.barcode.empty=\u672A\u626B\u5230\u6761\u7801
smfcore.error.barcode.many=\u627E\u5230\u591A\u4E2A\u6709\u6548\u6761\u7801,\u65E0\u6CD5\u5165\u5E93
smfcore.error.barcode.expired=\u7269\u6599\u5DF2\u8FC7\u671F,\u65E0\u6CD5\u5165\u5E93.
smfcore.allBoxView.noReel=\u5E93\u4F4D{0}\u4E2D\u65E0\u7269\u6599
smfcode.error.barcode.many=\u627E\u5230\u591A\u4E2A\u6709\u6548\u7684\u6761\u7801
smfcode.error.barcode.noValidCode=\u65E0\u6548\u7684\u6761\u7801
smfcore.error.barcode.many=\u627E\u5230\u591A\u4E2A\u6709\u6548\u7684\u6761\u7801
smfcore.error.barcode.noValidCode=\u65E0\u6548\u7684\u6761\u7801
smfcore.error.barcode.noValidCode={0}\u4E0D\u662F\u6709\u6548\u7684\u6761\u7801
smfcode.error.barcode.executing=\u6761\u7801[{0}}]\u4EFB\u52A1\u6B63\u5728\u6267\u884C
smfcode.error.pos.notExist=\u5E93\u4F4D[{0}]\u4E0D\u5B58\u5728,\u65E0\u6CD5\u5165\u5E93
smfcode.error.pos.wrong=\u5E93\u4F4D[{0}]\u4E0E\u6599\u4ED3[{1}}]\u4E0D\u5339\u914D,\u65E0\u6CD5\u5165\u5E93
smfcode.error.pos.hasReel=\u5E93\u4F4D[{0}]\u4E2D\u5DF2\u6709\u7269\u6599,\u65E0\u6CD5\u5165\u5E93
smfcode.error.pos.sizeNotMatch=\u6599\u76D8\u5C3A\u5BF8[{0}}]\u4E0E\u5E93\u4F4D{1}\u5C3A\u5BF8[{2}]\u4E0D\u7B26,\u65E0\u6CD5\u5165\u5E93
smfcode.error.storage.offline=\u6599\u4ED3[{0}]\u79BB\u7EBF
smfcode.error.barcode.invalid=\u6761\u7801\u65E0\u6548
smfcode.error.barcode.wrongSize=\u5C3A\u5BF8[{0}]\u4E0D\u7B26
smfcode.error.barcode.wrongQty=\u6761\u7801[{0}]\u5BF9\u5E94\u7684\u6570\u91CF<=0\u4E3A: {1}
smfcode.error.barcode.taskNotEnd=\u6599\u76D8[{0}]\u7684\u64CD\u4F5C\u672A\u5B8C\u6210,\u65E0\u6CD5\u6267\u884C\u5165\u5E93\u64CD\u4F5C
smfcode.error.columnNotExist=\u5FC5\u987B\u5305\u542B[{0}\u5217
smfcore.error.barcode.executing=\u6761\u7801[{0}}]\u4EFB\u52A1\u6B63\u5728\u6267\u884C
smfcore.error.pos.notExist=\u5E93\u4F4D[{0}]\u4E0D\u5B58\u5728,\u65E0\u6CD5\u5165\u5E93
smfcore.error.pos.wrong=\u5E93\u4F4D[{0}]\u4E0E\u6599\u4ED3[{1}}]\u4E0D\u5339\u914D,\u65E0\u6CD5\u5165\u5E93
smfcore.error.pos.hasReel=\u5E93\u4F4D[{0}]\u4E2D\u5DF2\u6709\u7269\u6599,\u65E0\u6CD5\u5165\u5E93
smfcore.error.pos.sizeNotMatch=\u6599\u76D8\u5C3A\u5BF8[{0}}]\u4E0E\u5E93\u4F4D{1}\u5C3A\u5BF8[{2}]\u4E0D\u7B26,\u65E0\u6CD5\u5165\u5E93
smfcore.error.storage.offline=\u6599\u4ED3[{0}]\u79BB\u7EBF
smfcore.error.barcode.invalid=\u6761\u7801\u65E0\u6548
smfcore.error.barcode.wrongSize=\u5C3A\u5BF8[{0}]\u4E0D\u7B26
smfcore.error.barcode.wrongQty=\u6761\u7801[{0}]\u5BF9\u5E94\u7684\u6570\u91CF<=0\u4E3A: {1}
smfcore.error.barcode.taskNotEnd=\u6599\u76D8[{0}]\u7684\u64CD\u4F5C\u672A\u5B8C\u6210,\u65E0\u6CD5\u6267\u884C\u5165\u5E93\u64CD\u4F5C
smfcore.error.columnNotExist=\u5FC5\u987B\u5305\u542B[{0}\u5217
smfcore.storage.error.notExist=\u672A\u627E\u5230\u6599\u4ED3{0}
smfcode.error.barcode.inQueue=\u4E8C\u7EF4\u7801[{0}]\u5DF2\u5728\u64CD\u4F5C\u961F\u5217\u4E2D\uFF0C\u64CD\u4F5C\u5931\u8D25
smfcode.error.pos.inQueue=\u4F4D\u7F6E:[{0}}]\u5DF2\u5728\u64CD\u4F5C\u961F\u5217\u4E2D,\u64CD\u4F5C\u5931\u8D25
smfcode.columnNotExist=\u5FC5\u987B\u5305\u542B[{0}\u5217
smfcore.error.barcode.inQueue=\u4E8C\u7EF4\u7801[{0}]\u5DF2\u5728\u64CD\u4F5C\u961F\u5217\u4E2D\uFF0C\u64CD\u4F5C\u5931\u8D25
smfcore.error.pos.inQueue=\u4F4D\u7F6E:[{0}}]\u5DF2\u5728\u64CD\u4F5C\u961F\u5217\u4E2D,\u64CD\u4F5C\u5931\u8D25
smfcore.columnNotExist=\u5FC5\u987B\u5305\u542B[{0}\u5217
smfcore.conotUpdate=\u7528\u6237\u540Dadmin\u4E0D\u80FD\u4FEE\u6539
smfcore.unfinished=\u6761\u7801[{0}]\u7684\u4EFB\u52A1\u8FD8\u672A\u7ED3\u675F
smfcore.ok=ok
......@@ -77,15 +77,15 @@ smfcore.taskLog=\u7269\u6599\u65E5\u5FD7
smfcore.user=\u7528\u6237\u7BA1\u7406
smfcore.peoples=\u7528\u6237\u7BA1\u7406
smfcore.role=\u89D2\u8272\u7BA1\u7406
smfcode.menuNotExist=\u83DC\u5355{0}\u4E0D\u5B58\u5728
smfcode.noValidStorage=\u6599\u4ED3\u5217\u8868\u4E2D\u672A\u627E\u5230\u53EF\u7528\u7684\u6599\u4ED3
smfcode.error.barcode.exist=[{0}}]\u5DF2\u5728{1}}[{2}}]\u4E2D
smfcore.menuNotExist=\u83DC\u5355{0}\u4E0D\u5B58\u5728
smfcore.noValidStorage=\u6599\u4ED3\u5217\u8868\u4E2D\u672A\u627E\u5230\u53EF\u7528\u7684\u6599\u4ED3
smfcore.error.barcode.exist=[{0}}]\u5DF2\u5728{1}}[{2}}]\u4E2D
smfcore.barcodeSetting=\u6761\u7801\u8BBE\u7F6E
smfcore.posNotExist=\u4ED3\u4F4D\u4E0D\u5B58\u5728
smfcore.error=\u51FA\u9519{0}
smfcore.userManager=\u7528\u6237\u7BA1\u7406
smfcode.cannotRemove=\u5220\u9664\u5E93\u4F4D\u5931\u8D25\uFF0C\u5E93\u4F4D[{0}]\u4E2D\u6709\u6599
smfcode.nogroupaccess=\u6CA1\u6709\u7EC4[{0}]\u7684\u64CD\u4F5C\u6743\u9650
smfcore.cannotRemove=\u5220\u9664\u5E93\u4F4D\u5931\u8D25\uFF0C\u5E93\u4F4D[{0}]\u4E2D\u6709\u6599
smfcore.nogroupaccess=\u6CA1\u6709\u7EC4[{0}]\u7684\u64CD\u4F5C\u6743\u9650
smfcore.outSetting=\u51FA\u5E93\u7B56\u7565
smfcore.sysSetting=\u7CFB\u7EDF\u8BBE\u7F6E
smfcore.help=\u5E2E\u52A9
......@@ -93,53 +93,58 @@ smfcore.instruction=\u8BF4\u660E\u4E66
smfcore.about=\u5173\u4E8E
smfcore.tacticsOuput=\u7B56\u7565\u51FA\u5E93
smfcore.labelOuput=\u7269\u6599\u5206\u7EC4
smfcode.order.out.executing=\u5DE5\u5355\u6B63\u5728\u6267\u884C
smfcode.order.out.notFound=\u5DE5\u5355\u672A\u627E\u5230
smfcode.order.out.maxOrder=\u5DF2\u8FBE\u6700\u5927\u53EF\u6267\u884C\u5DE5\u5355\u6570
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.order.close.success=\u5DE5\u5355\u5173\u95ED\u6210\u529F
smfcode.order.close.taskNotEnd=\u5DE5\u5355\u8FD8\u6709\u672A\u5B8C\u6210\u7684\u4EFB\u52A1
smfcore.order.out.executing=\u5DE5\u5355\u6B63\u5728\u6267\u884C
smfcore.order.out.notFound=\u5DE5\u5355\u672A\u627E\u5230
smfcore.order.out.maxOrder=\u5DF2\u8FBE\u6700\u5927\u53EF\u6267\u884C\u5DE5\u5355\u6570
smfcore.order.out.noTask=\u5DE5\u5355\u65E0\u53EF\u6267\u884C\u7684\u4EFB\u52A1
smfcore.cannotUpdateOrderNum=\u5DE5\u5355\u5DF2\u51FA\u5E93\uFF0C\u4E0D\u80FD\u4FEE\u6539\u6570\u91CF
smfcore.order.close.success=\u5DE5\u5355\u5173\u95ED\u6210\u529F
smfcore.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
smfcode.order.lineCanotNull=\u7EBF\u522B\u4E0D\u80FD\u4E3A\u7A7A
smfcode.order.cannotUpdateLine=\u5DE5\u5355\u5DF2\u51FA\u5E93\uFF0C\u4E0D\u80FD\u4FEE\u6539\u7EBF\u522B
smfcode.order.uploadOK=\u5DE5\u5355\u4E0A\u4F20\u6210\u529F
smfcode.order.ameExists=\u5DE5\u5355\u540D\u79F0[{0}]\u5DF2\u5B58\u5728
smfcode.order.hasClose=\u5DE5\u5355\u5DF2\u5173\u95ED
smfcode.order.supplementOutFail=\u672A\u627E\u5230\u53EF\u4EE5\u51FA\u5E93\u7684\u8865\u6599
smfcode.materialBox.quantityshort=\u7269\u6599\u6570\u91CF\u4E0D\u8DB3
smfcode.materialBox.invalid=\u672A\u627E\u5230\u6599\u76D2\u4FE1\u606F{0}
smfcode.materialBox.noReel=\u6599\u76D2\u4E2D\u672A\u627E\u5230\u5BF9\u5E94\u7269\u6599
smfcode.materialBox.boxNoReel=\u6599\u76D2\u4E2D\u65E0\u7269\u6599
smfcode.materialBox.inPos=\u7269\u6599\u5DF2\u5728\u5E93\u4F4D{0}\u4E2D
smfcode.materialBox.inOtherBox=\u7269\u6599\u5DF2\u5728\u6599\u76D2{0}\u4E2D
smfcore.error.barcode.noRules=\u89E3\u6790\u89C4\u5219\u672A\u5B9A\u4E49
smfcore.error.barcode.wrongLength=\u6761\u7801[{0}]\u957F\u5EA6\u9519\u8BEF
smfcore.error.barcode.noField=\u6761\u7801\u89E3\u6790\u5931\u8D25,\u672A\u627E\u5230{0}\u5B57\u6BB5
smfcore.error.barcode.pnNotExist=x\u6863\u6848 {0} \u4E0D\u5B58\u5728
smfcore.error.barcode.invalid={0}\u4E0D\u662F\u6709\u6548\u7684\u6761\u7801
smfcore.error.barcode.locked=\u5E93\u4F4D[{0}]\u5DF2\u88AB\u9501\u5B9A
smfcore.manualOut.ok=\u624B\u52A8\u51FA\u5E93\u6210\u529F
smfcore.manualOut.notFound=\u4ED3\u5E93\u4E2D\u672A\u627E\u5230\u6599\u76D8\u4FE1\u606F
smfcore.order.lineCanotNull=\u7EBF\u522B\u4E0D\u80FD\u4E3A\u7A7A
smfcore.order.cannotUpdateLine=\u5DE5\u5355\u5DF2\u51FA\u5E93\uFF0C\u4E0D\u80FD\u4FEE\u6539\u7EBF\u522B
smfcore.order.uploadOK=\u5DE5\u5355\u4E0A\u4F20\u6210\u529F
smfcore.order.ameExists=\u5DE5\u5355\u540D\u79F0[{0}]\u5DF2\u5B58\u5728
smfcore.order.hasClose=\u5DE5\u5355\u5DF2\u5173\u95ED
smfcore.order.supplementOutFail=\u672A\u627E\u5230\u53EF\u4EE5\u51FA\u5E93\u7684\u8865\u6599
smfcore.materialBox.quantityshort=\u7269\u6599\u6570\u91CF\u4E0D\u8DB3
smfcore.materialBox.invalid=\u672A\u627E\u5230\u6599\u76D2\u4FE1\u606F{0}
smfcore.materialBox.noReel=\u6599\u76D2\u4E2D\u672A\u627E\u5230\u5BF9\u5E94\u7269\u6599
smfcore.materialBox.boxNoReel=\u6599\u76D2\u4E2D\u65E0\u7269\u6599
smfcore.materialBox.inPos=\u7269\u6599\u5DF2\u5728\u5E93\u4F4D{0}\u4E2D
smfcore.materialBox.inOtherBox=\u7269\u6599\u5DF2\u5728\u6599\u76D2{0}\u4E2D
smfcore.materialBox=\u6599\u76D2\u64CD\u4F5C
smfcode.shelf.nextPos.hasReel=\u5E93\u4F4D[{0}]\u5DF2\u6709\u7269\u6599,\u8BF7\u91CD\u65B0\u626B\u63CF\u5E93\u4F4D\u7801
smfcode.shelf.nextPos.hasTask=\u5E93\u4F4D[{0}]\u5DF2\u6709\u4EFB\u52A1,\u8BF7\u91CD\u65B0\u626B\u63CF\u5E93\u4F4D\u7801
smfcode.shelf.notFound=\u672A\u627E\u5230\u6599\u67B6
smfcode.shelf.pos.notInStorage=\u6599\u67B6[{0}]\u4E2D\u672A\u627E\u5230\u5E93\u4F4D[{1}]
smfcode.shelf.pos.notInGroup=\u7EC4\u4E2D\u672A\u627E\u5230\u5E93\u4F4D[{0}]
smfcode.shelf.msg.hasReel=\u5E93\u4F4D\u4E2D[{0}]\u5DF2\u6709\u7269\u6599
smfcode.shelf.msg.tipScanReel=\u5E93\u4F4D[{0}]\u64CD\u4F5C\u6210\u529F,\u8BF7\u626B\u63CF\u8981\u653E\u5165\u7684\u7269\u6599
smfcode.shelf.msg.fastop=\u6761\u7801\u64CD\u4F5C\u9891\u7E41,\u8BF7\u7A0D\u540E\u518D\u8BD5
smfcode.shelf.msg.outConfirm=\u51FA\u5E93\u5B8C\u6210, \u5E93\u4F4D[{0}]\u706D\u706F
smfcode.shelf.msg.noTask=\u64CD\u4F5C\u5931\u8D25,\u5DF2\u5728\u5E93\u4F4D[{0}]\u4E2D,\u672A\u627E\u5230\u5BF9\u5E94\u7684\u51FA\u5E93\u4EFB\u52A1
smfcode.shelf.msg.scanPos=\u8BF7\u5148\u626B\u63CF\u5E93\u4F4D\u7801
smfcode.shelf.msg.inOk=\u64CD\u4F5C\u6210\u529F,\u8BF7\u653E\u5165\u5E93\u4F4D[{0}]
smfcode.label.noReel=\u672A\u627E\u5230\u53EF\u51FA\u5E93\u7684\u7269\u6599
smfcore.shelf.nextPos.hasReel=\u5E93\u4F4D[{0}]\u5DF2\u6709\u7269\u6599,\u8BF7\u91CD\u65B0\u626B\u63CF\u5E93\u4F4D\u7801
smfcore.shelf.nextPos.hasTask=\u5E93\u4F4D[{0}]\u5DF2\u6709\u4EFB\u52A1,\u8BF7\u91CD\u65B0\u626B\u63CF\u5E93\u4F4D\u7801
smfcore.shelf.notFound=\u672A\u627E\u5230\u6599\u67B6
smfcore.shelf.pos.notInStorage=\u6599\u67B6[{0}]\u4E2D\u672A\u627E\u5230\u5E93\u4F4D[{1}]
smfcore.shelf.pos.notInGroup=\u7EC4\u4E2D\u672A\u627E\u5230\u5E93\u4F4D[{0}]
smfcore.shelf.msg.hasReel=\u5E93\u4F4D\u4E2D[{0}]\u5DF2\u6709\u7269\u6599
smfcore.shelf.msg.tipScanReel=\u5E93\u4F4D[{0}]\u64CD\u4F5C\u6210\u529F,\u8BF7\u626B\u63CF\u8981\u653E\u5165\u7684\u7269\u6599
smfcore.shelf.msg.fastop=\u6761\u7801\u64CD\u4F5C\u9891\u7E41,\u8BF7\u7A0D\u540E\u518D\u8BD5
smfcore.shelf.msg.outConfirm=\u51FA\u5E93\u5B8C\u6210, \u5E93\u4F4D[{0}]\u706D\u706F
smfcore.shelf.msg.noTask=\u64CD\u4F5C\u5931\u8D25,\u5DF2\u5728\u5E93\u4F4D[{0}]\u4E2D,\u672A\u627E\u5230\u5BF9\u5E94\u7684\u51FA\u5E93\u4EFB\u52A1
smfcore.shelf.msg.scanPos=\u8BF7\u5148\u626B\u63CF\u5E93\u4F4D\u7801
smfcore.shelf.msg.inOk=\u64CD\u4F5C\u6210\u529F,\u8BF7\u653E\u5165\u5E93\u4F4D[{0}]
smfcore.label.noReel=\u672A\u627E\u5230\u53EF\u51FA\u5E93\u7684\u7269\u6599
smfcore.msd=MSD\u7BA1\u7406
smfcore.msdManage=MSD\u5E93\u5B58
smfcore.msdData=MSD\u8FFD\u6EAF\u6027
smfcore.msdSetting=MSD\u8BBE\u7F6E
smfcore.translation=\u8D44\u6E90\u7FFB\u8BD1
smfcode.languageCanotNull=\u8BED\u8A00\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
smfcode.noLanguageSetAccess=\u6CA1\u6709\u7F16\u8F91\u8BED\u8A00\u7684\u6743\u9650
smfcode.languageCanotRemoveAll=\u4E0D\u80FD\u5220\u9664\u6240\u6709\u8BED\u8A00
\ No newline at end of file
smfcore.languageCanotNull=\u8BED\u8A00\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
smfcore.noLanguageSetAccess=\u6CA1\u6709\u7F16\u8F91\u8BED\u8A00\u7684\u6743\u9650
smfcore.languageCanotRemoveAll=\u4E0D\u80FD\u5220\u9664\u6240\u6709\u8BED\u8A00
smfcore.solderPaste=\u9521\u818F\u7BA1\u7406
smfcore.solderPasteKanban=\u8BBE\u5907\u6982\u89C8
smfcore.solderPasteManage=\u5E93\u5B58
smfcore.solderPasteData=\u8FFD\u6EAF\u6027
smfcore.solderPasteSetting=\u8BBE\u7F6E
\ No newline at end of file
smfcode.valueCanotNull={0}\u4E0D\u80FD\u7232\u7A7A
smfcode.feleFormatError=\u6587\u4EF6\u683C\u5F0F\u932F\u8AA4\uFF01, \u50C5\u652F\u6301{0}\u683C\u5F0F
smfcode.valueAlreadyExist={0}[{1}]\u5DF2\u5B58\u5728
smfcode.valueNotExist={0}[{1}]\u4E0D\u5B58\u5728
smfcode.fileToLong=\u6587\u4EF6\u8D85\u51FA\u898F\u5B9A\u5927\u5C0F
smfcode.fileError=\u6587\u4EF6\u89E3\u6790\u5931\u6557
smfcode.valueNotFind=\u672A\u627E\u5230{0}[{1}]
smfcode.humidityValueError=\u6EAB\u5EA6\u7BC4\u570D\u6578\u64DA\u932F\u8AA4
smfcode.humidityShowValueError=\u6EAB\u5EA6\u986F\u793A\u7BC4\u570D\u6578\u64DA\u932F\u8AA4
smfcode.temperatureValueError=\u6FD5\u5EA6\u7BC4\u570D\u6578\u64DA\u932F\u8AA4
smfcode.temperatureShowValueError=\u6FD5\u5EA6\u986F\u793A\u7BC4\u570D\u6578\u64DA\u932F\u8AA4
smfcode.notActivated=\u8CEC\u865F\u672A\u6FC0\u6D3B
smfcode.userInfoError=\u7528\u6236\u4FE1\u606F\u4E0D\u5B8C\u6574
smfcode.noaccess=\u7121\u6B0A\u9650\u4FEE\u6539\u6B64\u89D2\u8272\u7684\u83DC\u55AE
smfcode.notSelRole=\u8ACB\u8981\u4FEE\u6539\u7684\u9078\u64C7\u89D2\u8272
smfcode.posIsused=\u6599\u5009[{0}]\u7684\u5EAB\u4F4D[{1}}]\u6709\u6599[{2}],\u522A\u9664\u5931\u6557
smfcode.thePosIsused= \u5EAB\u4F4D[{0}]\u6709\u6599[{1}],\u4E0D\u80FD\u522A\u9664
smfcode.groupWithStorage=\u7D44[{0}]\u5DF2\u548C\u8A2D\u5099\u95DC\u806F
smfcode.groupWithUser=\u7D44[{0}]\u5DF2\u548C\u7528\u6236\u95DC\u806F
smfcode.canotDelSelf=\u522A\u9664\u7528\u6236\uFF1A\u4E0D\u80FD\u522A\u9664\u81EA\u5DF1
smfcode.canotDelUser=\u522A\u9664\u7528\u6236\uFF1A\u6B64\u7528\u6236\u4E0D\u80FD\u522A\u9664
smfcode.oldPwdError=\u4FEE\u6539\u5931\u6557\uFF0C\u820A\u5BC6\u78BC\u932F\u8AA4
smfcode.newPwdError=\u65B0\u5BC6\u78BC\u4E0D\u80FD\u8207\u820A\u5BC6\u78BC\u76F8\u540C
smfcode.pwdError=\u4FEE\u6539\u90F5\u7BB1\u5931\u6557\uFF0C\u5BC6\u78BC\u932F\u8AA4
smfcode.hasNoAccess=\u7121\u6B0A\u9650\u4FEE\u6539\u6B64\u7528\u6236\u4FE1\u606F
smfcode.noAccessUpdate=\u6C92\u6709\u522A\u9664\u83DC\u55AE\u7684\u6B0A\u9650
smfcode.roleCannotDel=\u89D2\u8272[{0}]\u6709[{1}]\u500B\u7528\u6236\u95DC\u806F\u6539\u89D2\u8272,\u4E0D\u80FD\u522A\u9664
smfcore.valueCanotNull={0}\u4E0D\u80FD\u7232\u7A7A
smfcore.feleFormatError=\u6587\u4EF6\u683C\u5F0F\u932F\u8AA4\uFF01, \u50C5\u652F\u6301{0}\u683C\u5F0F
smfcore.valueAlreadyExist={0}[{1}]\u5DF2\u5B58\u5728
smfcore.valueNotExist={0}[{1}]\u4E0D\u5B58\u5728
smfcore.fileToLong=\u6587\u4EF6\u8D85\u51FA\u898F\u5B9A\u5927\u5C0F
smfcore.fileError=\u6587\u4EF6\u89E3\u6790\u5931\u6557
smfcore.valueNotFind=\u672A\u627E\u5230{0}[{1}]
smfcore.humidityValueError=\u6EAB\u5EA6\u7BC4\u570D\u6578\u64DA\u932F\u8AA4
smfcore.humidityShowValueError=\u6EAB\u5EA6\u986F\u793A\u7BC4\u570D\u6578\u64DA\u932F\u8AA4
smfcore.temperatureValueError=\u6FD5\u5EA6\u7BC4\u570D\u6578\u64DA\u932F\u8AA4
smfcore.temperatureShowValueError=\u6FD5\u5EA6\u986F\u793A\u7BC4\u570D\u6578\u64DA\u932F\u8AA4
smfcore.notActivated=\u8CEC\u865F\u672A\u6FC0\u6D3B
smfcore.userInfoError=\u7528\u6236\u4FE1\u606F\u4E0D\u5B8C\u6574
smfcore.noaccess=\u7121\u6B0A\u9650\u4FEE\u6539\u6B64\u89D2\u8272\u7684\u83DC\u55AE
smfcore.notSelRole=\u8ACB\u8981\u4FEE\u6539\u7684\u9078\u64C7\u89D2\u8272
smfcore.posIsused=\u6599\u5009[{0}]\u7684\u5EAB\u4F4D[{1}}]\u6709\u6599[{2}],\u522A\u9664\u5931\u6557
smfcore.thePosIsused= \u5EAB\u4F4D[{0}]\u6709\u6599[{1}],\u4E0D\u80FD\u522A\u9664
smfcore.groupWithStorage=\u7D44[{0}]\u5DF2\u548C\u8A2D\u5099\u95DC\u806F
smfcore.groupWithUser=\u7D44[{0}]\u5DF2\u548C\u7528\u6236\u95DC\u806F
smfcore.canotDelSelf=\u522A\u9664\u7528\u6236\uFF1A\u4E0D\u80FD\u522A\u9664\u81EA\u5DF1
smfcore.canotDelUser=\u522A\u9664\u7528\u6236\uFF1A\u6B64\u7528\u6236\u4E0D\u80FD\u522A\u9664
smfcore.oldPwdError=\u4FEE\u6539\u5931\u6557\uFF0C\u820A\u5BC6\u78BC\u932F\u8AA4
smfcore.newPwdError=\u65B0\u5BC6\u78BC\u4E0D\u80FD\u8207\u820A\u5BC6\u78BC\u76F8\u540C
smfcore.pwdError=\u4FEE\u6539\u90F5\u7BB1\u5931\u6557\uFF0C\u5BC6\u78BC\u932F\u8AA4
smfcore.hasNoAccess=\u7121\u6B0A\u9650\u4FEE\u6539\u6B64\u7528\u6236\u4FE1\u606F
smfcore.noAccessUpdate=\u6C92\u6709\u522A\u9664\u83DC\u55AE\u7684\u6B0A\u9650
smfcore.roleCannotDel=\u89D2\u8272[{0}]\u6709[{1}]\u500B\u7528\u6236\u95DC\u806F\u6539\u89D2\u8272,\u4E0D\u80FD\u522A\u9664
smfcore.notFindPos=\u672A\u627E\u5230\u9396\u5B9A\u5EAB\u4F4D
smfcore.error.barcode.empty=\u672A\u6383\u5230\u689D\u78BC
smfcore.error.barcode.many=\u627E\u5230\u591A\u500B\u6709\u6548\u689D\u78BC,\u7121\u6CD5\u5165\u5EAB
smfcore.error.barcode.expired=\u7269\u6599\u5DF2\u904E\u671F,\u7121\u6CD5\u5165\u5EAB.
smfcore.allBoxView.noReel=\u5EAB\u4F4D{0}\u4E2D\u7121\u7269\u6599
smfcode.error.barcode.many=\u627E\u5230\u591A\u500B\u6709\u6548\u7684\u689D\u78BC
smfcode.error.barcode.noValidCode=\u7121\u6548\u7684\u689D\u78BC
smfcore.error.barcode.many=\u627E\u5230\u591A\u500B\u6709\u6548\u7684\u689D\u78BC
smfcore.error.barcode.noValidCode=\u7121\u6548\u7684\u689D\u78BC
smfcore.error.barcode.noValidCode={0}\u4E0D\u662F\u6709\u6548\u7684\u689D\u78BC
smfcode.error.barcode.executing=\u689D\u78BC[{0}}]\u4EFB\u52D9\u6B63\u5728\u57F7\u884C
smfcode.error.pos.notExist=\u5EAB\u4F4D[{0}]\u4E0D\u5B58\u5728,\u7121\u6CD5\u5165\u5EAB
smfcode.error.pos.wrong=\u5EAB\u4F4D[{0}]\u8207\u6599\u5009[{1}}]\u4E0D\u5339\u914D,\u7121\u6CD5\u5165\u5EAB
smfcode.error.pos.hasReel=\u5EAB\u4F4D[{0}]\u4E2D\u5DF2\u6709\u7269\u6599,\u7121\u6CD5\u5165\u5EAB
smfcode.error.pos.sizeNotMatch=\u6599\u76E4\u5C3A\u5BF8[{0}}]\u8207\u5EAB\u4F4D{1}\u5C3A\u5BF8[{2}]\u4E0D\u7B26,\u7121\u6CD5\u5165\u5EAB
smfcode.error.storage.offline=\u6599\u5009[{0}]\u96E2\u7DDA
smfcode.error.barcode.invalid=\u689D\u78BC\u7121\u6548
smfcode.error.barcode.wrongSize=\u5C3A\u5BF8[{0}]\u4E0D\u7B26
smfcode.error.barcode.wrongQty=\u689D\u78BC[{0}]\u5C0D\u61C9\u7684\u6578\u91CF<=0\u7232: {1}
smfcode.error.barcode.taskNotEnd=\u6599\u76E4[{0}]\u7684\u64CD\u4F5C\u672A\u5B8C\u6210,\u7121\u6CD5\u57F7\u884C\u5165\u5EAB\u64CD\u4F5C
smfcode.error.columnNotExist=\u5FC5\u9808\u5305\u542B[{0}\u5217
smfcore.error.barcode.executing=\u689D\u78BC[{0}}]\u4EFB\u52D9\u6B63\u5728\u57F7\u884C
smfcore.error.pos.notExist=\u5EAB\u4F4D[{0}]\u4E0D\u5B58\u5728,\u7121\u6CD5\u5165\u5EAB
smfcore.error.pos.wrong=\u5EAB\u4F4D[{0}]\u8207\u6599\u5009[{1}}]\u4E0D\u5339\u914D,\u7121\u6CD5\u5165\u5EAB
smfcore.error.pos.hasReel=\u5EAB\u4F4D[{0}]\u4E2D\u5DF2\u6709\u7269\u6599,\u7121\u6CD5\u5165\u5EAB
smfcore.error.pos.sizeNotMatch=\u6599\u76E4\u5C3A\u5BF8[{0}}]\u8207\u5EAB\u4F4D{1}\u5C3A\u5BF8[{2}]\u4E0D\u7B26,\u7121\u6CD5\u5165\u5EAB
smfcore.error.storage.offline=\u6599\u5009[{0}]\u96E2\u7DDA
smfcore.error.barcode.invalid=\u689D\u78BC\u7121\u6548
smfcore.error.barcode.wrongSize=\u5C3A\u5BF8[{0}]\u4E0D\u7B26
smfcore.error.barcode.wrongQty=\u689D\u78BC[{0}]\u5C0D\u61C9\u7684\u6578\u91CF<=0\u7232: {1}
smfcore.error.barcode.taskNotEnd=\u6599\u76E4[{0}]\u7684\u64CD\u4F5C\u672A\u5B8C\u6210,\u7121\u6CD5\u57F7\u884C\u5165\u5EAB\u64CD\u4F5C
smfcore.error.columnNotExist=\u5FC5\u9808\u5305\u542B[{0}\u5217
smfcore.storage.error.notExist=\u672A\u627E\u5230\u6599\u5009{0}
smfcode.error.barcode.inQueue=\u4E8C\u7DAD\u78BC[{0}]\u5DF2\u5728\u64CD\u4F5C\u968A\u5217\u4E2D\uFF0C\u64CD\u4F5C\u5931\u6557
smfcode.error.pos.inQueue=\u4F4D\u7F6E:[{0}}]\u5DF2\u5728\u64CD\u4F5C\u968A\u5217\u4E2D,\u64CD\u4F5C\u5931\u6557
smfcode.columnNotExist=\u5FC5\u9808\u5305\u542B[{0}\u5217
smfcore.error.barcode.inQueue=\u4E8C\u7DAD\u78BC[{0}]\u5DF2\u5728\u64CD\u4F5C\u968A\u5217\u4E2D\uFF0C\u64CD\u4F5C\u5931\u6557
smfcore.error.pos.inQueue=\u4F4D\u7F6E:[{0}}]\u5DF2\u5728\u64CD\u4F5C\u968A\u5217\u4E2D,\u64CD\u4F5C\u5931\u6557
smfcore.columnNotExist=\u5FC5\u9808\u5305\u542B[{0}\u5217
smfcore.conotUpdate=\u7528\u6236\u540Dadmin\u4E0D\u80FD\u4FEE\u6539
smfcore.unfinished=\u689D\u78BC[{0}]\u7684\u4EFB\u52D9\u9084\u672A\u7D50\u675F
smfcore.ok=ok
......@@ -77,15 +77,15 @@ smfcore.taskLog=\u7269\u6599\u65E5\u5FD7
smfcore.user=\u7528\u6236\u7BA1\u7406
smfcore.peoples=\u7528\u6236\u7BA1\u7406
smfcore.role=\u89D2\u8272\u7BA1\u7406
smfcode.menuNotExist=\u83DC\u55AE{0}\u4E0D\u5B58\u5728
smfcode.noValidStorage=\u6599\u5009\u5217\u8868\u4E2D\u672A\u627E\u5230\u53EF\u7528\u7684\u6599\u5009
smfcode.error.barcode.exist=[{0}}]\u5DF2\u5728{1}}[{2}}]\u4E2D
smfcore.menuNotExist=\u83DC\u55AE{0}\u4E0D\u5B58\u5728
smfcore.noValidStorage=\u6599\u5009\u5217\u8868\u4E2D\u672A\u627E\u5230\u53EF\u7528\u7684\u6599\u5009
smfcore.error.barcode.exist=[{0}}]\u5DF2\u5728{1}}[{2}}]\u4E2D
smfcore.barcodeSetting=\u689D\u78BC\u8A2D\u7F6E
smfcore.posNotExist=\u5EAB\u4F4D\u4E0D\u5B58\u5728
smfcore.error=\u51FA\u932F{0}
smfcore.userManager=\u7528\u6236\u7BA1\u7406
smfcode.cannotRemove=\u522A\u9664\u5EAB\u4F4D\u5931\u6557\uFF0C\u5EAB\u4F4D[{0}]\u4E2D\u6709\u6599
smfcode.nogroupaccess=\u6C92\u6709\u7D44[{0}]\u7684\u64CD\u4F5C\u6B0A
smfcore.cannotRemove=\u522A\u9664\u5EAB\u4F4D\u5931\u6557\uFF0C\u5EAB\u4F4D[{0}]\u4E2D\u6709\u6599
smfcore.nogroupaccess=\u6C92\u6709\u7D44[{0}]\u7684\u64CD\u4F5C\u6B0A
smfcore.outSetting=\u51FA\u5EAB\u7B56\u7565
smfcore.sysSetting=\u7CFB\u7D71\u8A2D\u7F6E
smfcore.help=\u5E6B\u52A9
......@@ -93,53 +93,58 @@ smfcore.instruction=\u8AAA\u660E\u66F8
smfcore.about=\u95DC\u65BC
smfcore.tacticsOuput=\u7B56\u7565\u51FA\u5EAB
smfcore.labelOuput=\u7269\u6599\u5206\u7D44
smfcode.order.out.executing=\u5DE5\u55AE\u6B63\u5728\u57F7\u884C
smfcode.order.out.notFound=\u5DE5\u55AE\u672A\u627E\u5230
smfcode.order.out.maxOrder=\u5DF2\u9054\u5230\u6700\u5927\u53EF\u57F7\u884C\u5DE5\u55AE\u6578
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.order.close.success=\u5DE5\u55AE\u95DC\u9589\u6210\u529F
smfcode.order.close.taskNotEnd=\u5DE5\u55AE\u9084\u6709\u672A\u5B8C\u6210\u7684\u4EFB\u52D9
smfcore.order.out.executing=\u5DE5\u55AE\u6B63\u5728\u57F7\u884C
smfcore.order.out.notFound=\u5DE5\u55AE\u672A\u627E\u5230
smfcore.order.out.maxOrder=\u5DF2\u9054\u5230\u6700\u5927\u53EF\u57F7\u884C\u5DE5\u55AE\u6578
smfcore.order.out.noTask=\u5DE5\u55AE\u7121\u53EF\u57F7\u884C\u7684\u4EFB\u52D9
smfcore.cannotUpdateOrderNum=\u5DE5\u55AE\u5DF2\u51FA\u5EAB\uFF0C\u4E0D\u80FD\u4FEE\u6539\u6578\u91CF
smfcore.order.close.success=\u5DE5\u55AE\u95DC\u9589\u6210\u529F
smfcore.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
smfcode.order.lineCanotNull=\u7DDA\u5225\u4E0D\u80FD\u70BA\u7A7A
smfcode.order.cannotUpdateLine=\u5DE5\u55AE\u5DF2\u51FA\u5EAB\uFF0C\u4E0D\u80FD\u4FEE\u6539\u7DDA\u5225
smfcode.order.uploadOK=\u5DE5\u55AE\u4E0A\u50B3\u6210\u529F
smfcode.order.ameExists=\u5DE5\u55AE\u540D\u7A31[{0}]\u5DF2\u5B58\u5728
smfcode.order.hasClose=\u5DE5\u55AE\u5DF2\u95DC\u9589
smfcode.order.supplementOutFail=\u672A\u627E\u5230\u53EF\u4EE5\u51FA\u5EAB\u7684\u88DC\u6599
smfcode.materialBox.quantityshort=\u7269\u6599\u6570\u91CF\u4E0D\u8DB3
smfcode.materialBox.invalid=\u672A\u627E\u5230\u6599\u76D2\u4FE1\u606F{0}
smfcode.materialBox.noReel=\u6599\u76D2\u4E2D\u672A\u627E\u5230\u5C0D\u61C9\u7269\u6599
smfcode.materialBox.boxNoReel=\u6599\u76D2\u4E2D\u7121\u7269\u6599
smfcode.materialBox.inPos=\u7269\u6599\u5DF2\u5728\u5EAB\u4F4D{0}\u4E2D
smfcode.materialBox.inOtherBox=\u7269\u6599\u5DF2\u5728\u6599\u76D2{0}\u4E2D
smfcore.error.barcode.noRules=\u89E3\u6790\u898F\u5247\u672A\u5B9A\u7FA9
smfcore.error.barcode.wrongLength=\u689D\u78BC[{0}]\u9577\u5EA6\u932F\u8AA4
smfcore.error.barcode.noField=\u689D\u78BC\u89E3\u6790\u5931\u6557\uFF0C\u672A\u627E\u5230{0}\u5B57\u6BB5
smfcore.error.barcode.pnNotExist=\u6A94\u6848 {0} \u4E0D\u5B58\u5728
smfcore.error.barcode.invalid={0}\u4E0D\u662F\u6709\u6548\u7684\u689D\u78BC
smfcore.error.barcode.locked=\u5EAB\u4F4D[{0}]\u5DF2\u88AB\u9396\u5B9A
smfcore.manualOut.ok=\u624B\u52D5\u51FA\u5EAB\u6210\u529F
smfcore.manualOut.notFound=\u5009\u5EAB\u4E2D\u672A\u627E\u5230\u6599\u76E4\u4FE1\u606F
smfcore.order.lineCanotNull=\u7DDA\u5225\u4E0D\u80FD\u70BA\u7A7A
smfcore.order.cannotUpdateLine=\u5DE5\u55AE\u5DF2\u51FA\u5EAB\uFF0C\u4E0D\u80FD\u4FEE\u6539\u7DDA\u5225
smfcore.order.uploadOK=\u5DE5\u55AE\u4E0A\u50B3\u6210\u529F
smfcore.order.ameExists=\u5DE5\u55AE\u540D\u7A31[{0}]\u5DF2\u5B58\u5728
smfcore.order.hasClose=\u5DE5\u55AE\u5DF2\u95DC\u9589
smfcore.order.supplementOutFail=\u672A\u627E\u5230\u53EF\u4EE5\u51FA\u5EAB\u7684\u88DC\u6599
smfcore.materialBox.quantityshort=\u7269\u6599\u6570\u91CF\u4E0D\u8DB3
smfcore.materialBox.invalid=\u672A\u627E\u5230\u6599\u76D2\u4FE1\u606F{0}
smfcore.materialBox.noReel=\u6599\u76D2\u4E2D\u672A\u627E\u5230\u5C0D\u61C9\u7269\u6599
smfcore.materialBox.boxNoReel=\u6599\u76D2\u4E2D\u7121\u7269\u6599
smfcore.materialBox.inPos=\u7269\u6599\u5DF2\u5728\u5EAB\u4F4D{0}\u4E2D
smfcore.materialBox.inOtherBox=\u7269\u6599\u5DF2\u5728\u6599\u76D2{0}\u4E2D
smfcore.materialBox=\u6599\u76D2\u64CD\u4F5C
smfcode.shelf.nextPos.hasReel=\u5EAB\u4F4D[{0}]\u5DF2\u6709\u7269\u6599\uFF0C\u8ACB\u91CD\u65B0\u6383\u63CF\u5EAB\u4F4D\u78BC
smfcode.shelf.nextPos.hasTask=\u5EAB\u4F4D[{0}]\u5DF2\u6709\u4EFB\u52D9\uFF0C\u8ACB\u91CD\u65B0\u6383\u63CF\u5EAB\u4F4D\u78BC
smfcode.shelf.notFound=\u672A\u627E\u5230\u6599\u67B6
smfcode.shelf.pos.notInStorage=\u6599\u67B6[{0}]\u4E2D\u672A\u627E\u5230\u5EAB\u4F4D[{1}]
smfcode.shelf.pos.notInGroup=\u7D44\u4E2D\u672A\u627E\u5230\u5EAB\u4F4D[{0}]
smfcode.shelf.msg.hasReel=\u5EAB\u4F4D[{0}]\u4E2D\u5DF2\u6709\u7269\u6599
smfcode.shelf.msg.tipScanReel=\u5EAB\u4F4D[{0}]\u64CD\u4F5C\u6210\u529F\uFF0C\u8ACB\u6383\u63CF\u8981\u653E\u5165\u7684\u7269\u6599
smfcode.shelf.msg.fastop=\u689D\u78BC\u64CD\u4F5C\u983B\u7E41\uFF0C\u8ACB\u7A0D\u5F8C\u518D\u8A66
smfcode.shelf.msg.outConfirm=\u51FA\u5EAB\u5B8C\u6210\uFF0C\u5EAB\u4F4D[{0}]\u6EC5\u71C8
smfcode.shelf.msg.noTask=\u64CD\u4F5C\u5931\u6557\uFF0C\u5DF2\u5728\u5EAB\u4F4D[{0}]\u4E2D\uFF0C\u672A\u627E\u5230\u5C0D\u61C9\u7684\u51FA\u5EAB\u4EFB\u52D9
smfcode.shelf.msg.scanPos=\u6E05\u9592\u6383\u63CF\u5EAB\u4F4D\u78BC
smfcode.shelf.msg.inOk=\u64CD\u4F5C\u6210\u529F\uFF0C\u8ACB\u653E\u5165\u5EAB\u4F4D[{0}]
smfcode.label.noReel=\u672A\u627E\u5230\u53EF\u51FA\u5EAB\u7684\u7269\u6599
smfcore.shelf.nextPos.hasReel=\u5EAB\u4F4D[{0}]\u5DF2\u6709\u7269\u6599\uFF0C\u8ACB\u91CD\u65B0\u6383\u63CF\u5EAB\u4F4D\u78BC
smfcore.shelf.nextPos.hasTask=\u5EAB\u4F4D[{0}]\u5DF2\u6709\u4EFB\u52D9\uFF0C\u8ACB\u91CD\u65B0\u6383\u63CF\u5EAB\u4F4D\u78BC
smfcore.shelf.notFound=\u672A\u627E\u5230\u6599\u67B6
smfcore.shelf.pos.notInStorage=\u6599\u67B6[{0}]\u4E2D\u672A\u627E\u5230\u5EAB\u4F4D[{1}]
smfcore.shelf.pos.notInGroup=\u7D44\u4E2D\u672A\u627E\u5230\u5EAB\u4F4D[{0}]
smfcore.shelf.msg.hasReel=\u5EAB\u4F4D[{0}]\u4E2D\u5DF2\u6709\u7269\u6599
smfcore.shelf.msg.tipScanReel=\u5EAB\u4F4D[{0}]\u64CD\u4F5C\u6210\u529F\uFF0C\u8ACB\u6383\u63CF\u8981\u653E\u5165\u7684\u7269\u6599
smfcore.shelf.msg.fastop=\u689D\u78BC\u64CD\u4F5C\u983B\u7E41\uFF0C\u8ACB\u7A0D\u5F8C\u518D\u8A66
smfcore.shelf.msg.outConfirm=\u51FA\u5EAB\u5B8C\u6210\uFF0C\u5EAB\u4F4D[{0}]\u6EC5\u71C8
smfcore.shelf.msg.noTask=\u64CD\u4F5C\u5931\u6557\uFF0C\u5DF2\u5728\u5EAB\u4F4D[{0}]\u4E2D\uFF0C\u672A\u627E\u5230\u5C0D\u61C9\u7684\u51FA\u5EAB\u4EFB\u52D9
smfcore.shelf.msg.scanPos=\u6E05\u9592\u6383\u63CF\u5EAB\u4F4D\u78BC
smfcore.shelf.msg.inOk=\u64CD\u4F5C\u6210\u529F\uFF0C\u8ACB\u653E\u5165\u5EAB\u4F4D[{0}]
smfcore.label.noReel=\u672A\u627E\u5230\u53EF\u51FA\u5EAB\u7684\u7269\u6599
smfcore.msd=MSD\u7BA1\u7406
smfcore.msdManage=MSD\u5E93\u5B58
smfcore.msdData=MSD\u8FFD\u6EAF\u6027
smfcore.msdSetting=MSD\u8A2D\u7F6E
smfcore.translation=\u8CC7\u6E90\u7FFB\u8B6F
smfcode.languageCanotNull=\u8A9E\u8A00\u985E\u578B\u4E0D\u80FD\u70BA\u7A7A
smfcode.noLanguageSetAccess=\u6C92\u6709\u7DE8\u8F2F\u8A9E\u8A00\u7684\u6B0A\u9650
smfcode.languageCanotRemoveAll=\u4E0D\u80FD\u522A\u9664\u6240\u6709\u8A9E\u8A00
\ No newline at end of file
smfcore.languageCanotNull=\u8A9E\u8A00\u985E\u578B\u4E0D\u80FD\u70BA\u7A7A
smfcore.noLanguageSetAccess=\u6C92\u6709\u7DE8\u8F2F\u8A9E\u8A00\u7684\u6B0A\u9650
smfcore.languageCanotRemoveAll=\u4E0D\u80FD\u522A\u9664\u6240\u6709\u8A9E\u8A00
smfcore.solderPaste=\u932B\u818F\u7BA1\u7406
smfcore.solderPasteKanban=\u8A2D\u5099\u6982\u89BD
smfcore.solderPasteManage=\u5EAB\u5B58
smfcore.solderPasteData=\u8FFD\u6EAF\u6027
smfcore.solderPasteSetting=\u8A2D\u7F6E
\ No newline at end of file
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!