Commit 99d84092 LN

看板增加等待任务数。admin自动添加所有组的权限。

1 个父辈 2e65e140
...@@ -109,19 +109,24 @@ public class BoxKanbanController { ...@@ -109,19 +109,24 @@ public class BoxKanbanController {
List<String> cidList = getCidsByGroupId(groupId,true); List<String> cidList = getCidsByGroupId(groupId,true);
query.addCriteria(Criteria.where("cid").in(cidList)); query.addCriteria(Criteria.where("cid").in(cidList));
//只查找近12个小时未完成的任务
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, -12);
query.addCriteria(Criteria.where("createDate").gte(calendar.getTime()));
Calendar ca2 = Calendar.getInstance();
ca2.add(Calendar.MINUTE, -10);
//正常 //正常
if(criteria.getTaskStatus()==1){ if(criteria.getTaskStatus()==1){
Date lastUpdateTime=new Date((new Date().getTime())-10 * 60 * 1000); Date lastUpdateTime=new Date((new Date().getTime())-10 * 60 * 1000);
query.addCriteria(Criteria.where("updateDate").gt(lastUpdateTime).and("status").is(OP_STATUS.EXECUTING.name())); query.addCriteria(Criteria.where("updateDate").gte(lastUpdateTime).and("status").is(OP_STATUS.EXECUTING.name()));
}//异常 }//异常
else if(criteria.getTaskStatus()==2){ else if(criteria.getTaskStatus()==2){
Date lastUpdateTime=new Date((new Date().getTime())-10 * 60 * 1000); query.addCriteria(Criteria.where("updateDate").lte(ca2).and("status").in(OP_STATUS.EXECUTING.name()));
query.addCriteria(Criteria.where("updateDate").lte(lastUpdateTime).and("status").in(OP_STATUS.EXECUTING.name(),OP_STATUS.WAIT.name())); }else if(criteria.getTaskStatus()==3){
}else { query.addCriteria(Criteria.where("status").nin(OP_STATUS.WAIT.name()));
//只查找近12个小时未完成的任务 }else{
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, -12);
query.addCriteria(Criteria.where("createDate").gte(calendar.getTime()));
query.addCriteria(Criteria.where("status").nin(OP_STATUS.CANCEL.name(), OP_STATUS.FINISHED.name())); query.addCriteria(Criteria.where("status").nin(OP_STATUS.CANCEL.name(), OP_STATUS.FINISHED.name()));
} }
...@@ -156,20 +161,24 @@ public class BoxKanbanController { ...@@ -156,20 +161,24 @@ public class BoxKanbanController {
int abnormal = 0; int abnormal = 0;
int normal = 0; int normal = 0;
int allcount=0; int allcount=0;
int waitCount=0;
for (DataLog data : allTasks) { for (DataLog data : allTasks) {
if (data.isFinished() || data.isCancel()) { if (data.isFinished() || data.isCancel()) {
continue; continue;
} }
if(data.isWait()){
waitCount++;
}
//超过10分钟未更新为异常 //超过10分钟未更新为异常
// if ((!data.isAbnormal()) && data.getStatus().equals(OP_STATUS.EXECUTING)) { else if (data.isAbnormal() ) {
if (data.isAbnormal() ) {
abnormal++; abnormal++;
} else { } else {
normal++; normal++;
} }
allcount++; allcount++;
} }
BoxKanbanDto kanbanDto = new BoxKanbanDto(allCount, normal, abnormal, new ArrayList<>()); BoxKanbanDto kanbanDto = new BoxKanbanDto(allCount, normal, abnormal,waitCount, new ArrayList<>());
return kanbanDto; return kanbanDto;
} }
......
...@@ -15,6 +15,8 @@ public class BoxKanbanDto { ...@@ -15,6 +15,8 @@ public class BoxKanbanDto {
private int normalTaskCount; private int normalTaskCount;
@ApiModelProperty("异常任务数") @ApiModelProperty("异常任务数")
private int abnormalTtaskCount; private int abnormalTtaskCount;
@ApiModelProperty("等待任务数")
private int waitTtaskCount;
@ApiModelProperty("组列表") @ApiModelProperty("组列表")
private List<GroupStatusDto> groupList; private List<GroupStatusDto> groupList;
......
...@@ -44,7 +44,7 @@ public class BoxTaskQueryCriter { ...@@ -44,7 +44,7 @@ public class BoxTaskQueryCriter {
@QueryCondition @QueryCondition
private String sourceName; private String sourceName;
@ApiModelProperty("任务状态:0=所有,1=正常,2=异常") @ApiModelProperty("任务状态:0=所有,1=正常,2=异常,3=等待")
private int taskStatus=0 ; private int taskStatus=0 ;
@ApiModelProperty("任务类型:0=所有,1=入库,2=出库") @ApiModelProperty("任务类型:0=所有,1=入库,2=出库")
......
...@@ -328,11 +328,11 @@ public class DataLog extends BasePo implements Serializable { ...@@ -328,11 +328,11 @@ public class DataLog extends BasePo implements Serializable {
* 判断任务是否异常,执行中,且10分钟未更新的认为异常 * 判断任务是否异常,执行中,且10分钟未更新的认为异常
*/ */
public boolean isAbnormal(){ public boolean isAbnormal(){
// if(isExecuting() ){ if(isExecuting() ){
if(System.currentTimeMillis() - super.getUpdateDate().getTime() > 10 * 60 * 1000){ if(System.currentTimeMillis() - super.getUpdateDate().getTime() > 10 * 60 * 1000){
return true; return true;
} }
// } }
return false; return false;
} }
} }
...@@ -36,7 +36,7 @@ public class CorsFilter extends HttpFilter { ...@@ -36,7 +36,7 @@ public class CorsFilter extends HttpFilter {
String origin = req.getHeader(HttpHeaders.ORIGIN); String origin = req.getHeader(HttpHeaders.ORIGIN);
String repOrigin = res.getHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN); String repOrigin = res.getHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN);
if (Strings.isNotBlank(origin) && Strings.isNotBlank(repOrigin)) { if (Strings.isNotBlank(origin) && Strings.isBlank(repOrigin)) {
// 允许客户端的域 // 允许客户端的域
res.addHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, origin); res.addHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, origin);
......
...@@ -2,13 +2,17 @@ package com.neotel.smfcore.security.service.manager.impl; ...@@ -2,13 +2,17 @@ package com.neotel.smfcore.security.service.manager.impl;
import com.neotel.smfcore.common.bean.PageData; import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.DateUtil; import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.common.utils.FileUtil; import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.security.service.dao.IGroupDao; import com.neotel.smfcore.security.service.dao.IGroupDao;
import com.neotel.smfcore.security.service.manager.IGroupManager; import com.neotel.smfcore.security.service.manager.IGroupManager;
import com.neotel.smfcore.security.service.manager.IUserManager;
import com.neotel.smfcore.security.service.po.Group; import com.neotel.smfcore.security.service.po.Group;
import com.neotel.smfcore.security.service.po.Menu; import com.neotel.smfcore.security.service.po.Menu;
import com.neotel.smfcore.security.service.po.Role; import com.neotel.smfcore.security.service.po.Role;
import com.neotel.smfcore.security.service.po.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
...@@ -23,9 +27,12 @@ import java.util.List; ...@@ -23,9 +27,12 @@ import java.util.List;
import java.util.Map; import java.util.Map;
@Service @Service
@Slf4j
public class GroupManagerImpl implements IGroupManager { public class GroupManagerImpl implements IGroupManager {
@Autowired @Autowired
IGroupDao groupDao; IGroupDao groupDao;
@Autowired
IUserManager userManager;
@Override @Override
public Group getByGroupName(String groupName){ public Group getByGroupName(String groupName){
...@@ -35,23 +42,33 @@ public class GroupManagerImpl implements IGroupManager { ...@@ -35,23 +42,33 @@ public class GroupManagerImpl implements IGroupManager {
@Override @Override
public Group saveGroup(Group resources) throws ValidateException { public Group saveGroup(Group resources) throws ValidateException {
String logName="新增分组:"; String logName = "新增分组:";
Criteria c = Criteria.where("groupName").is(resources.getGroupName()); Criteria c = Criteria.where("groupName").is(resources.getGroupName());
if (resources.getId() != null) { if (resources.getId() != null) {
c.and("id").ne(resources.getId()); c.and("id").ne(resources.getId());
logName="修改分组:"; logName = "修改分组:";
} }
if (resources.getGroupName() == null) { if (resources.getGroupName() == null) {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"groupName"} ); throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"groupName"});
// throw new BadRequestException(logName+"组名称不能为空"); // throw new BadRequestException(logName+"组名称不能为空");
} }
Query que = new Query(c); Query que = new Query(c);
List<Group> groups = findByQuery(que); List<Group> groups = findByQuery(que);
if (groups != null && groups.size() > 0) { if (groups != null && groups.size() > 0) {
// throw new ValidateException(logName+"组名称[" + resources.getGroupName() + "]已存在"); // throw new ValidateException(logName+"组名称[" + resources.getGroupName() + "]已存在");
throw new ValidateException("smfcode.valueAlreadyExist","{0}[{1}]已存在",new String[]{"groupname",resources.getGroupName()}); throw new ValidateException("smfcode.valueAlreadyExist", "{0}[{1}]已存在", new String[]{"groupname", resources.getGroupName()});
}
Group group = groupDao.save(resources);
//同时将组添加到超级管理员用户的权限中
User user = userManager.findByUserName(Constants.SUPER_USERNAME);
if (user != null) {
if (!user.getGroups().contains(group.getId())) {
user.getGroups().add(group.getId());
userManager.save(user);
log.info("默认为用户[" + user.getUsername() + "]增加组[" + group.getGroupName() + "]的权限");
}
} }
return groupDao.save(resources); return group;
} }
@Override @Override
......
...@@ -218,20 +218,5 @@ public class UserManagerImpl implements IUserManager { ...@@ -218,20 +218,5 @@ public class UserManagerImpl implements IUserManager {
} }
public String GetUserCheckCode(User user){
if(user.getId()==null||user.getCreateDate()==null){
throw new ValidateException("smfcode.userInfoError","用户信息不完整");
// throw new BadRequestException("用户信息不完整");
}
return "";
}
public boolean CheckUserCode(User user,String code){
return false;
}
} }
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.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\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.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.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.conotUpdate=\u7528\u6237\u540Dadmin\u4E0D\u80FD\u4FEE\u6539
smfcore.unfinished=\u6761\u7801[{0}]\u7684\u4EFB\u52A1\u8FD8\u672A\u7ED3\u675F
smfcore.ok=ok
smfcore.shelfNotExist={0}\u5BF9\u5E94\u7684\u6599\u67B6\u4E0D\u5B58\u5728
smfcore.inputError=\u5165\u5E93\u51FA\u9519:{0}
smfcore.checkoutError=\u51FA\u5E93\u51FA\u9519:{0}
smfcore.notask=No task in this order
smfcore.taskCount=total task is :{0}
smfcore.noconnecttion=no connecttion
smfcore.loadMaterialFailed=loading material failed:{0}
smfcore.checkNg=checking material is ng:{0}
smfcore.loadMaterialFinished=loading material is finished: {0}
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.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\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.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.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.conotUpdate=\u7528\u6237\u540Dadmin\u4E0D\u80FD\u4FEE\u6539
smfcore.unfinished=\u6761\u7801[{0}]\u7684\u4EFB\u52A1\u8FD8\u672A\u7ED3\u675F
smfcore.ok=ok
smfcore.shelfNotExist={0}\u5BF9\u5E94\u7684\u6599\u67B6\u4E0D\u5B58\u5728
smfcore.inputError=\u5165\u5E93\u51FA\u9519:{0}
smfcore.checkoutError=\u51FA\u5E93\u51FA\u9519:{0}
smfcore.notask=No task in this order
smfcore.taskCount=total task is :{0}
smfcore.noconnecttion=no connecttion
smfcore.loadMaterialFailed=loading material failed:{0}
smfcore.checkNg=checking material is ng:{0}
smfcore.loadMaterialFinished=loading material is finished: {0}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!