Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit e6e4df6f
由
zshaohui
编写于
2025-07-08 13:50:38 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.工单批量出库,批量执行
2.工单出库逻辑修改
1 个父辈
8926170a
显示空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
212 行增加
和
44 行删除
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
src/main/java/com/neotel/smfcore/core/order/rest/bean/query/OrderQueryCondition.java
src/main/java/com/neotel/smfcore/core/system/bean/OrderSetting.java
src/main/java/com/neotel/smfcore/core/system/rest/SettingsController.java
src/main/java/com/neotel/smfcore/core/system/rest/bean/query/TaskQueryCondition.java
src/main/resources/messages.properties
src/main/resources/messages_en_US.properties
src/main/resources/messages_ja_JP.properties
src/main/resources/messages_zh_CN.properties
src/main/resources/messages_zh_TW.properties
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
查看文件 @
e6e4df6
...
...
@@ -45,7 +45,7 @@ public class DataInitManager {
MainTimer
mainTimer
;
//@Value("${menu.show}")
private
String
[]
menuShowList
=
new
String
[]{
"commonIn"
,
"returnIn"
,
"cutIn"
,
"elecKanban"
};
private
String
[]
menuShowList
=
new
String
[]{
"commonIn"
,
"returnIn"
,
"cutIn"
,
"elecKanban"
,
"orderSetting"
};
//@Value("${menu.hide}")
private
String
[]
menuHideList
=
new
String
[]{
"singleDiskWarehousing"
};
...
...
@@ -167,6 +167,9 @@ public class DataInitManager {
addNewFunctionMenu
(
orderM
,
new
ArrayList
<
Menu
>(),
1
,
"productionLineReple"
,
"产线补料"
,
1
,
"productionLineReple"
,
"system/productionLineReple/index"
,
""
,
0
,
"orderShortageSheet"
,
functionMenuMap
);
addNewFunctionMenu
(
orderM
,
new
ArrayList
<
Menu
>(),
1
,
"productionLineOut"
,
"补料料盘出库"
,
1
,
"productionLineOut"
,
"system/productionLineOut/index"
,
""
,
0
,
"orderShortageSheet"
,
functionMenuMap
);
//new Menu(new ArrayList<Menu>(), 1, "orderSetting", "工单设置", 1, "orderSetting", "system/orderSetting/index", "", 0, "sysSet");
addNewFunctionMenu
(
orderM
,
new
ArrayList
<
Menu
>(),
1
,
"orderSetting"
,
"工单设置"
,
2
,
"orderSetting"
,
"system/orderSetting/index"
,
""
,
0
,
"orderSetting"
,
functionMenuMap
);
//MSD管理:MSD库存.MSD追溯性.MSD设置
Menu
msd
=
Menu
.
CreatePMenu
(
"MSD管理"
,
20
,
"msd"
,
2
,
"MSD"
,
null
);
addNewFunctionMenu
(
msd
,
new
ArrayList
<
Menu
>(),
1
,
"msdManage"
,
"MSD库存"
,
1
,
"msdManage"
,
"neolight/msdManage/index"
,
""
,
0
,
"MSDManager"
,
functionMenuMap
);
...
...
@@ -215,7 +218,7 @@ public class DataInitManager {
// //物联网:共享文件夹
// Menu pMenuWulian = Menu.CreatePMenu("物联网", 30, "internet", 2, "interMenu");
// Menu orderSet = new Menu(new ArrayList<Menu>(), 1, "orderSetting", "
共享文件夹
", 1, "orderSetting", "system/orderSetting/index", "", 0, "sysSet");
// Menu orderSet = new Menu(new ArrayList<Menu>(), 1, "orderSetting", "
工单设置
", 1, "orderSetting", "system/orderSetting/index", "", 0, "sysSet");
// orderSet.setHidden(true);
// menus.addAll(createMenus(pMenuWulian, orderSet));
...
...
@@ -255,7 +258,7 @@ public class DataInitManager {
"reelOut"
,
"orderSheet"
,
"orderShortageOut"
,
"orderShortageSheet"
,
"productionLineReple"
,
"productionLineOut"
,
"componentParts"
,
"barcode"
,
"barcodeSetting"
,
"taskLog"
,
"message"
,
"interfaceException"
,
"bunker"
,
"storagePos"
,
"peoples"
,
"role"
,
"about"
"peoples"
,
"role"
,
"about"
,
"orderSetting"
};
}
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
e6e4df6
...
...
@@ -26,8 +26,10 @@ import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import
com.neotel.smfcore.core.storage.rest.mapstruct.SafetyInventoryMapper
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.bean.OrderSetting
;
import
com.neotel.smfcore.core.system.listener.ITaskListener
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.service.po.Settings
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.hikvision.HikApi
;
import
com.neotel.smfcore.hikvision.bean.HikOrderInfo
;
...
...
@@ -441,6 +443,8 @@ public class LiteOrderCache implements ITaskListener {
return
"smfcore.order.out.maxOrder"
;
}
OrderSetting
orderSetting
=
dataCache
.
getOrderSetting
();
// 出库策略(系统判断逻辑由上到下依次满足):
//①湿敏超期物料所在仓位锁定,不允许备料;
//②贵重物料,不允许超发,按实际需求发料;
...
...
@@ -522,13 +526,13 @@ public class LiteOrderCache implements ITaskListener {
//产线补料出库,补料逻辑:单盘最大5000 需求补料1000,按照满足需求最少料盘补料,补料需求6000时首发最大盘第二盘发满足需求最小盘
outPosList
=
pickRepleReels
(
outPosNameList
,
posList
,
targetNum
);
}
else
{
if
(
orderItem
.
getWemng
()
>
200
)
{
if
(
orderItem
.
getWemng
()
>
orderSetting
.
getOrderNum
()
||
posList
.
size
()
>
orderSetting
.
getInventoryNum
()
)
{
// 2.1、订单数量>200;
// 2.1.1 散盘:整盘=3:7(比例可调,物料数量)
// 2.1.2 整盘数量=需求数量*整盘占比/最小包装(四舍五入)
// 2.1.3 剩余发散盘,优先取散盘(由多到少发送),
// 散盘不满足情况下补充整盘
outPosList
=
pickBigOrderReels
(
pn
,
outPosNameList
,
posList
,
targetNum
);
outPosList
=
pickBigOrderReels
(
pn
,
outPosNameList
,
posList
,
targetNum
,
orderSetting
.
getNotFullNum
()
);
}
else
{
//2.2、订单数量≤200;(料盘最少原则)
...
...
@@ -790,7 +794,7 @@ public class LiteOrderCache implements ITaskListener {
* @param targetNum
* @return
*/
private
List
<
StoragePos
>
pickBigOrderReels
(
String
pn
,
Set
<
String
>
outPosNameList
,
List
<
StoragePos
>
posList
,
int
targetNum
)
{
private
List
<
StoragePos
>
pickBigOrderReels
(
String
pn
,
Set
<
String
>
outPosNameList
,
List
<
StoragePos
>
posList
,
int
targetNum
,
int
notFullNum
)
{
List
<
String
>
excludePosNameList
=
new
ArrayList
<>(
outPosNameList
);
List
<
StoragePos
>
outPosList
=
new
ArrayList
<>();
...
...
@@ -827,25 +831,31 @@ public class LiteOrderCache implements ITaskListener {
//挑选散盘
log
.
info
(
"开始挑选散盘料,剩余需求"
+
targetNum
);
//已挑选的散盘数量
int
notWholeReelCount
=
0
;
while
(
true
)
{
//取散盘
StoragePos
outPos
=
pickNotWholeReel
(
excludePosNameList
,
posList
,
targetNum
,
oneReelNum
);
List
<
StoragePos
>
notWholePosList
=
findNotWholePosList
(
excludePosNameList
,
posList
,
targetNum
,
oneReelNum
,
pn
,
notFullNum
);
if
(
notWholePosList
==
null
||
notWholePosList
.
size
()
<=
0
)
{
break
;
}
if
(
notWholePosList
.
size
()
>=
notFullNum
)
{
StoragePos
outPos
=
pickWholeReel
(
excludePosNameList
,
posList
,
targetNum
,
oneReelNum
);
if
(
outPos
==
null
)
{
break
;
}
else
{
log
.
info
(
"挑选批次["
+
outPos
.
getBarcode
().
getBatch
()
+
"]的整盘物料:"
+
outPos
.
getBarcode
().
getBarcode
()
+
" 数量:"
+
outPos
.
getBarcode
().
getAmount
());
outPosList
.
add
(
outPos
);
excludePosNameList
.
add
(
outPos
.
getPosName
());
targetNum
=
targetNum
-
outPos
.
getBarcode
().
getAmount
();
}
}
else
{
for
(
StoragePos
outPos
:
notWholePosList
)
{
log
.
info
(
"挑选到批次["
+
outPos
.
getBarcode
().
getBatch
()
+
"]的散盘物料:"
+
outPos
.
getBarcode
().
getBarcode
()
+
" 数量:"
+
outPos
.
getBarcode
().
getAmount
());
outPosList
.
add
(
outPos
);
excludePosNameList
.
add
(
outPos
.
getPosName
());
targetNum
=
targetNum
-
outPos
.
getBarcode
().
getAmount
();
if
(
targetNum
<=
0
)
{
break
;
}
notWholeReelCount
=
notWholeReelCount
+
1
;
if
(
notWholeReelCount
>=
5
)
{
log
.
info
(
pn
+
"的散盘已挑选5盘,跳出"
);
break
;
}
if
(
targetNum
<=
0
)
{
break
;
}
}
if
(
targetNum
>
0
)
{
...
...
@@ -970,4 +980,33 @@ public class LiteOrderCache implements ITaskListener {
}
return
outPos
;
}
private
List
<
StoragePos
>
findNotWholePosList
(
List
<
String
>
excludePosNameList
,
List
<
StoragePos
>
posList
,
int
targetNum
,
int
oneReelNum
,
String
pn
,
int
notFullNum
)
{
List
<
StoragePos
>
storagePosList
=
new
ArrayList
<>();
while
(
true
)
{
if
(
storagePosList
!=
null
&&
!
storagePosList
.
isEmpty
())
{
for
(
StoragePos
pos
:
storagePosList
)
{
excludePosNameList
.
add
(
pos
.
getPosName
());
}
}
//取散盘
StoragePos
outPos
=
pickNotWholeReel
(
excludePosNameList
,
posList
,
targetNum
,
oneReelNum
);
if
(
outPos
==
null
)
{
break
;
}
else
{
log
.
info
(
"挑选到批次["
+
outPos
.
getBarcode
().
getBatch
()
+
"]的散盘物料:"
+
outPos
.
getBarcode
().
getBarcode
()
+
" 数量:"
+
outPos
.
getBarcode
().
getAmount
());
storagePosList
.
add
(
outPos
);
targetNum
=
targetNum
-
outPos
.
getBarcode
().
getAmount
();
if
(
targetNum
<=
0
)
{
break
;
}
if
(
storagePosList
!=
null
&&
storagePosList
.
size
()
>=
notFullNum
)
{
log
.
info
(
pn
+
"的散盘已挑选5盘,跳出"
);
break
;
}
}
}
return
storagePosList
;
}
}
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
查看文件 @
e6e4df6
...
...
@@ -2,6 +2,7 @@
package
com
.
neotel
.
smfcore
.
core
.
order
.
rest
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.google.common.collect.Lists
;
import
com.neotel.smfcore.common.bean.PageData
;
import
com.neotel.smfcore.common.bean.ResultBean
;
...
...
@@ -30,7 +31,9 @@ import com.neotel.smfcore.core.system.rest.bean.dto.TaskDto;
import
com.neotel.smfcore.core.system.rest.bean.mapstruct.TaskMapper
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.hikvision.HikApi
;
import
com.neotel.smfcore.hikvision.bean.HikOrderInfo
;
import
com.neotel.smfcore.hikvision.bean.result.ApiResult
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
com.neotel.smfcore.security.bean.FileProperties
;
import
com.neotel.smfcore.security.service.manager.IGroupManager
;
...
...
@@ -376,13 +379,26 @@ public class OrderController {
//查询正在执行的工单列表
User
user
=
userManager
.
findByUserName
(
SecurityUtils
.
getCurrentUsername
());
String
orderNo
=
user
.
getCurrOrderNo
();
if
(
ObjectUtil
.
isEmpty
(
orderNo
))
{
List
<
LiteOrder
>
orderList
=
getExecuteOrders
(
user
);
if
(
orderList
==
null
||
orderList
.
isEmpty
()){
return
new
ArrayList
<>();
}
List
<
DataLog
>
taskList
=
new
ArrayList
<>();
for
(
LiteOrder
liteOrder
:
orderList
)
{
if
(
liteOrder
.
isNew
()
||
liteOrder
.
isClosed
()){
continue
;
}
List
<
DataLog
>
orderTaskList
=
getOrderTaskByUser
(
user
,
liteOrder
,
false
);
if
(
orderTaskList
!=
null
&&
!
orderTaskList
.
isEmpty
()){
taskList
.
addAll
(
orderTaskList
);
}
}
LiteOrder
liteOrder
=
liteOrderCache
.
findOrderByNo
(
orderNo
);
/*if (ObjectUtil.isEmpty(orderNo)) {
return new ArrayList<>();
}*/
/*LiteOrder liteOrder = liteOrderCache.findOrderByNo(orderNo);
if (liteOrder == null) {
return new ArrayList<>();
//throw new ValidateException("smfcore.valueNotFind", "未找到{0}[{1}]", new String[]{"orderNo", orderNo});
...
...
@@ -391,7 +407,7 @@ public class OrderController {
return new ArrayList<>();
//throw new ValidateException("smfcore.order.notExecute", "工单[{0}]不在出库中", new String[]{liteOrder.getOrderNo()});
}
List
<
DataLog
>
taskList
=
getOrderTaskByUser
(
user
,
liteOrder
,
false
);
List<DataLog> taskList = getOrderTaskByUser(user, liteOrder, false);
*/
return
taskMapper
.
toDto
(
taskList
);
}
...
...
@@ -399,9 +415,19 @@ public class OrderController {
@ApiOperation
(
"料盘出库界面,切换到下一个工单"
)
@PostMapping
(
"/nextOrder"
)
@PreAuthorize
(
"@el.check('reelOut')"
)
public
ResultBean
nextOrder
(
@RequestParam
Map
<
String
,
String
>
paramsMap
)
{
public
ResultBean
nextOrder
(
@RequestBody
Map
<
String
,
String
>
paramsMap
)
{
String
idStr
=
paramsMap
.
get
(
"id"
);
if
(
StringUtils
.
isEmpty
(
idStr
))
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.order.choose"
,
"请选择工单"
);
}
List
<
String
>
idList
=
JSONObject
.
parseArray
(
idStr
,
String
.
class
);
if
(
idList
==
null
||
idList
.
isEmpty
())
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.order.choose"
,
"请选择工单"
);
}
User
user
=
userManager
.
findByUserName
(
SecurityUtils
.
getCurrentUsername
());
if
(
ObjectUtil
.
isNotEmpty
(
user
.
getCurrOrderNo
()))
{
/*
if (ObjectUtil.isNotEmpty(user.getCurrOrderNo())) {
//判断上个工单是否已完成
LiteOrder preOrder = liteOrderCache.findOrderByNo(user.getCurrOrderNo());
List<DataLog> preTasks = getOrderTaskByUser(user, preOrder, true);
...
...
@@ -409,31 +435,56 @@ public class OrderController {
return ResultBean.newErrorResult(-1, "smfcore.order.preNotEnd", "工单[" + preOrder.getOrderNo() + "]还有[" + preTasks.size() + "]个出库任务未结束",
new String[]{user.getCurrOrderNo(), preTasks.size() + ""});
}
}
}
*/
List
<
LiteOrder
>
orderList
=
getExecuteOrders
(
user
);
if
(
orderList
.
size
()
<=
0
)
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.order.noOrder"
,
"暂无可操作的工单"
);
}
LiteOrder
liteOrder
=
orderList
.
get
(
0
);
//判断是否在列表中
List
<
LiteOrder
>
newOrderList
=
new
ArrayList
<>();
for
(
LiteOrder
liteOrder
:
orderList
)
{
/*List<DataLog> preTasks = getOrderTaskByUser(user, liteOrder, true);
if (preTasks.size() > 0) {
continue;
}*/
for
(
String
orderId
:
idList
)
{
if
(
liteOrder
.
getId
().
equals
(
orderId
))
{
newOrderList
.
add
(
liteOrder
);
break
;
}
}
}
if
(
newOrderList
==
null
||
newOrderList
.
isEmpty
())
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.order.noOrder"
,
"暂无可操作的工单"
);
}
//判断工单有没有进行绑定
for
(
LiteOrder
liteOrder
:
newOrderList
)
{
//判断是否绑定过箱子
boolean
isbind
=
false
;
if
(
liteOrder
.
getBoxInfos
()!=
null
)
{
for
(
OrderBoxInfo
boxInfo
:
boolean
isbind
=
false
;
if
(
liteOrder
.
getBoxInfos
()
!=
null
)
{
for
(
OrderBoxInfo
boxInfo
:
liteOrder
.
getBoxInfos
())
{
if
(
boxInfo
.
getOperater
().
equals
(
user
.
getUsername
())){
isbind
=
true
;
if
(
boxInfo
.
getOperater
().
equals
(
user
.
getUsername
()))
{
isbind
=
true
;
}
}
}
if
(!
isbind
)
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.order.noBind"
,
"操作失败,请先为工单{0}绑定箱子"
,
new
String
[]{
liteOrder
.
getOrderNo
()});
}
if
(!
isbind
){
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.order.noBind"
,
"操作失败,请先为工单{0}绑定箱子"
,
new
String
[]{
liteOrder
.
getOrderNo
()});
}
//开始生成任务
for
(
LiteOrder
liteOrder
:
newOrderList
)
{
//设置此工单的任务可以发送给料架
List
<
DataLog
>
taskList
=
getOrderTaskByUser
(
user
,
liteOrder
,
true
);
for
(
DataLog
datalog
:
taskList
)
{
if
(
datalog
.
isInOperate
())
{
continue
;
}
datalog
.
setInOperate
(
true
);
datalog
.
setOperator
(
user
.
getUsername
());
taskService
.
updateQueueTask
(
datalog
);
...
...
@@ -441,10 +492,11 @@ public class OrderController {
user
.
setCurrOrderNo
(
liteOrder
.
getOrderNo
());
userManager
.
save
(
user
);
log
.
info
(
"用户["
+
user
.
getUsername
()
+
"]切换到工单["
+
liteOrder
.
getOrderNo
()
+
"],共更新["
+
taskList
.
size
()+
"]个任务状态为操作中"
);
return
ResultBean
.
newOkResult
(
"
smfcore.order.nextOk"
,
"成功切换到下一个工单"
,
"
"
);
log
.
info
(
"用户["
+
user
.
getUsername
()
+
"]切换到工单["
+
liteOrder
.
getOrderNo
()
+
"],共更新["
+
taskList
.
size
()
+
"]个任务状态为操作中"
);
}
return
ResultBean
.
newOkResult
(
""
);
}
@ApiOperation
(
"齐套页面,获取齐套数据"
)
@GetMapping
(
"/orderSet"
)
@PreAuthorize
(
"@el.check('workOrder')"
)
...
...
@@ -467,6 +519,68 @@ public class OrderController {
return
ResultBean
.
newOkResult
(
dtos
);
}
@ApiOperation
(
"更新开工时间"
)
@RequestMapping
(
"/updateStartDate"
)
@AnonymousAccess
public
ResultBean
updateStartDate
(
OrderQueryCondition
criteria
)
{
User
user
=
userManager
.
findByUserName
(
SecurityUtils
.
getCurrentUsername
());
if
(
user
!=
null
)
{
//数据权限 查找没有权限的组列表
if
(!
user
.
getIsAdmin
())
{
Set
<
String
>
groupIds
=
user
.
getGroups
();
List
<
String
>
excludeSources
=
Lists
.
newArrayList
();
List
<
Group
>
groups
=
groupManager
.
findAll
();
for
(
Group
group
:
groups
)
{
if
(
groupIds
.
contains
(
group
.
getId
()))
{
continue
;
}
excludeSources
.
add
(
group
.
getGroupName
());
}
criteria
.
setExcludeSourceList
(
excludeSources
);
}
}
Query
query
=
QueryHelp
.
getQuery
(
criteria
);
if
(
criteria
.
getStatus
()
!=
null
)
{
if
(
criteria
.
getStatus
()
==
1
)
{
query
.
addCriteria
(
Criteria
.
where
(
"status"
).
is
(
LITEORDER_STATUS
.
CLOSED
));
}
else
if
(
criteria
.
getStatus
()
==
2
)
{
query
.
addCriteria
(
Criteria
.
where
(
"status"
).
ne
(
LITEORDER_STATUS
.
CLOSED
));
}
else
if
(
criteria
.
getStatus
()
==
3
)
{
query
.
addCriteria
(
Criteria
.
where
(
"status"
).
is
(
LITEORDER_STATUS
.
EXECUTING
));
}
}
query
.
addCriteria
(
Criteria
.
where
(
"replenishmentNo"
).
isNull
());
List
<
LiteOrder
>
orderList
=
liteOrderManager
.
findByQuery
(
query
);
if
(
orderList
!=
null
&&
!
orderList
.
isEmpty
())
{
for
(
LiteOrder
order
:
orderList
)
{
if
(
order
.
isClosed
())
{
continue
;
}
ApiResult
apiResult
=
HikApi
.
updateOrderApi
(
"system"
,
order
.
getOrderNo
());
if
(
apiResult
==
null
)
{
continue
;
}
if
(
apiResult
.
getCode
()
==
33
)
{
continue
;
}
List
<
HikOrderInfo
>
newItems
=
(
ArrayList
<
HikOrderInfo
>)
apiResult
.
getData
();
if
(
newItems
==
null
||
newItems
.
isEmpty
())
{
continue
;
}
HikOrderInfo
hikOrderInfo
=
newItems
.
get
(
0
);
Date
startD
=
hikOrderInfo
.
getStartD
();
order
.
setStartDate
(
startD
);
order
=
liteOrderManager
.
save
(
order
);
liteOrderCache
.
addOrderToMap
(
order
);
}
}
else
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.order.out.notFound"
,
"工单未找到"
);
}
return
ResultBean
.
newOkResult
(
""
);
}
@ApiOperation
(
"导出齐套列表"
)
@GetMapping
(
value
=
"/orderSet/download"
)
@PreAuthorize
(
"@el.check('workOrder')"
)
...
...
src/main/java/com/neotel/smfcore/core/order/rest/bean/query/OrderQueryCondition.java
查看文件 @
e6e4df6
...
...
@@ -32,6 +32,9 @@ public class OrderQueryCondition {
//状态,0=所有,1=已关闭,2=未关闭,3=出库中
private
Integer
status
;
@QueryCondition
(
type
=
QueryCondition
.
Type
.
IN
,
propName
=
"orderNo"
)
private
List
<
String
>
idList
;
//
// @QueryCondition(type=QueryCondition.Type.IN,propName = "status")
// private List<Integer> statusList ;
...
...
src/main/java/com/neotel/smfcore/core/system/bean/OrderSetting.java
查看文件 @
e6e4df6
...
...
@@ -34,4 +34,10 @@ public class OrderSetting implements Serializable {
*/
@ApiModelProperty
(
"料架亮灯方式,0=全部亮灯,1=亮灯指引,默认0"
)
public
Integer
shelfLightType
=
0
;
private
Integer
inventoryNum
=
3
;
private
Integer
orderNum
=
200
;
private
Integer
notFullNum
=
5
;
}
src/main/java/com/neotel/smfcore/core/system/rest/SettingsController.java
查看文件 @
e6e4df6
...
...
@@ -126,7 +126,7 @@ public class SettingsController {
public
ResultBean
updateOrderSetting
(
@RequestBody
OrderSetting
orderSetting
)
{
// String type=map.get("checkOutType");
if
(
orderSetting
.
getPn
()==
null
){
/*
if(orderSetting.getPn()==null){
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"PN"});
}
if(orderSetting.getFeeder()==null){
...
...
@@ -157,7 +157,7 @@ public class SettingsController {
throw new ValidateException("smfcore.enterCorrectFolder", "请输入正确的文件夹" );
}
}
}
}
*/
dataCache
.
updateCache
(
Constants
.
CACHE_OrderSetting
,
orderSetting
);
log
.
info
(
"更改工单设置:"
+
Constants
.
CACHE_OrderSetting
+
"="
+
orderSetting
.
toString
());
...
...
src/main/java/com/neotel/smfcore/core/system/rest/bean/query/TaskQueryCondition.java
查看文件 @
e6e4df6
...
...
@@ -39,7 +39,7 @@ public class TaskQueryCondition {
private
String
operator
;
@QueryCondition
(
type
=
QueryCondition
.
Type
.
BETWEEN
,
propName
=
"updateDate"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd
HH:mm:ss
"
)
private
BetweenData
<
Date
>
updateDate
;
@QueryCondition
...
...
src/main/resources/messages.properties
查看文件 @
e6e4df6
...
...
@@ -146,7 +146,7 @@ smfcore.solderPasteKanban=\u8BBE\u5907\u6982\u89C8
smfcore.solderPasteManage
=
\u
5E93
\u
5B58
smfcore.solderPasteData
=
\u
8FFD
\u
6EAF
\u6027
smfcore.solderPasteSetting
=
\u
8BBE
\u
7F6E
smfcore.orderSetting
=
\u5
171\u
4EAB
\u6587\u
4EF6
\u5939
smfcore.orderSetting
=
\u
5
DE5
\u5355\u
8BBE
\u
7F6E
smfcore.enterCorrectFolder
=
\u
8BF7
\u
8F93
\u5165\u
6B63
\u
786E
\u7684\u6587\u
4EF6
\u5939
smfcore.taskHasEnd
=
\u
4EFB
\u
52A1{0}
\u
5DF2
\u
53D6
\u
6D88
\u6216\u
5DF2
\u
7ED3
\u
675F
smfcore.virtual.notFound
=
\u
672A
\u
627E
\u5230\u
865A
\u
62DF
\u
4ED3
...
...
@@ -262,6 +262,7 @@ smfcore.orderShortage.statusError=\u64CD\u4F5C\u5931\u8D25\uFF0C{0}\u975E\u5DE5\
smfcore.orderSheet.taskNotEnd
=
\u
64CD
\u
4F5C
\u5931\u
8D25
\u
FF0C
\u
5DE5
\u5355\u
51FA
\u
5E93
\u
4EFB
\u
52A1[{0}][{1}}]
\u
8FD8
\u
672A
\u
7ED3
\u
675F
smfcore.orderSheet.end.error
=
\u
64CD
\u
4F5C
\u5931\u
8D25
\u
FF0C
\u
5DE5
\u5355
{0}
\u
8FD8
\u
672A
\u
51FA
\u
5E93
\u
5B8C
\u6210
smfcore.order.noBind
=
\u
64CD
\u
4F5C
\u5931\u
8D25
\u
FF0C
\u
8BF7
\u5148\u
4E3A
\u
5DE5
\u5355
{0}
\u
7ED1
\u
5B9A
\u
7BB1
\u
5B50
smfcore.order.choose
=
\u
8BF7
\u9009\u
62E9
\u
5DE5
\u5355
#smfcore.order.out.short=\u5DE5\u5355\u51FA\u5E93\u5931\u8D25\uFF0C\u5DE5\u5355\u7F3A\u6599
...
...
src/main/resources/messages_en_US.properties
查看文件 @
e6e4df6
...
...
@@ -149,7 +149,7 @@ smfcore.solderPasteKanban=Equipment Overview
smfcore.solderPasteManage
=
Inventory
smfcore.solderPasteData
=
Traceability
smfcore.solderPasteSetting
=
Setting
smfcore.orderSetting
=
Shared Folder
smfcore.orderSetting
=
Work Order Settings
smfcore.enterCorrectFolder
=
Please enter the correct folder
smfcore.taskHasEnd
=
Task {0} has been cancelled or has ended
smfcore.virtual.notFound
=
No virtual warehouse found
...
...
@@ -253,4 +253,4 @@ smfcore.safetyInventory.supplementReel=Number of additional plates
smfcore.safetyInventory.amount
=
Amount
smfcore.component.storeError
=
Please enter the correct stock, minimum stock <= safety stock <= maximum stock
smfcore.user.group.error
=
Group [{0}] has been assigned to operator [{1}]
smfcore.order.choose
=
Please select a ticket
src/main/resources/messages_ja_JP.properties
查看文件 @
e6e4df6
...
...
@@ -148,7 +148,7 @@ smfcore.solderPasteKanban=\u6A5F\u5668\u6982\u8981
smfcore.solderPasteManage
=
\u
30A4
\u
30F3
\u
30D9
\u
30F3
\u
30C8
\u
30EA
\u
30FC
smfcore.solderPasteData
=
\u9061\u
53CA
smfcore.solderPasteSetting
=
\u
8A2D
\u
5B9A
smfcore.orderSetting
=
\u
5171\u6709\u
30D5
\u
30A9
\u
30EB
\u
30C0
\u
30FC
smfcore.orderSetting
=
\u
4F5C
\u
696D
\u6307\u
793A
\u
66F8
\u
8A2D
\u
5B9A
smfcore.enterCorrectFolder
=
\u
6B63
\u3057\u3044\u
30D5
\u
30A9
\u
30EB
\u
30C0
\u3092\u5165\u
529B
\u3057\u3066\u
304F
\u3060\u3055\u3044
smfcore.taskHasEnd=
\u
30BF
\u
30B9
\u
30AF{0}
\u
304C
\u
30AD
\u
30E3
\u
30F3
\u
30BB
\u
30EB
\u3055\u
308C
\u
305F
\u
304B
\u
7D42
\u
4E86
\u3057\u
305F
smfcore.virtual.notFound
=
\u
30D0
\u
30FC
\u
30C1
\u
30E3
\u
30EB
\u
30A6
\u
30A8
\u
30A2
\u
30CF
\u
30A6
\u
30B9
\u
304C
\u
898B
\u3064\u
304B
\u
308A
\u
307E
\u
305B
\u3093
...
...
@@ -252,4 +252,4 @@ smfcore.safetyInventory.supplementReel=\u8FFD\u52A0\u30D7\u30EC\u30FC\u30C8\u679
smfcore.safetyInventory.amount
=
\u6578\u
91CF
smfcore.component.storeError
=
\u
6B63
\u3057\u3044\u5728\u
5EAB
\u3092\u5165\u
529B
\u3057\u3066\u
304F
\u3060\u3055\u3044\u3001\u6700\u
5C0F
\u5728\u
5EAB
\u2266\u
5B89
\u5168\u5728\u
5EAB
\u2266\u6700\u5927\u5728\u
5EAB
smfcore.user.group.error
=
\u
30B0
\u
30EB
\u
30FC
\u
30D7[{0}]
\u
304C
\u
30AA
\u
30DA
\u
30EC
\u
30FC
\u
30BF[{1}]
\u
306B
\u5272\u
308A
\u
5F53
\u3066\u3089\u
308C
\u
307E
\u3057\u
305F
\u3002
smfcore.order.choose
=
\u
30C1
\u
30B1
\u
30C3
\u
30C8
\u3092\u9078\u
629E
\u3057\u3066\u
304F
\u3060\u3055\u3044
src/main/resources/messages_zh_CN.properties
查看文件 @
e6e4df6
...
...
@@ -148,7 +148,7 @@ smfcore.solderPasteKanban=\u8BBE\u5907\u6982\u89C8
smfcore.solderPasteManage
=
\u
5E93
\u
5B58
smfcore.solderPasteData
=
\u
8FFD
\u
6EAF
\u6027
smfcore.solderPasteSetting
=
\u
8BBE
\u
7F6E
smfcore.orderSetting
=
\u5
171\u
4EAB
\u6587\u
4EF6
\u5939
smfcore.orderSetting
=
\u
5
DE5
\u5355\u
8BBE
\u
7F6E
smfcore.enterCorrectFolder
=
\u
8BF7
\u
8F93
\u5165\u
6B63
\u
786E
\u7684\u6587\u
4EF6
\u5939
smfcore.taskHasEnd
=
\u
4EFB
\u
52A1{0}
\u
5DF2
\u
53D6
\u
6D88
\u6216\u
5DF2
\u
7ED3
\u
675F
smfcore.virtual.notFound
=
\u
672A
\u
627E
\u5230\u
865A
\u
62DF
\u
4ED3
...
...
@@ -252,3 +252,4 @@ smfcore.safetyInventory.supplementReel=\u8865\u5145\u76D8\u6570
smfcore.safetyInventory.amount
=
\u6700\u
5C0F
\u5305\u
88C5
smfcore.component.storeError
=
\u
8BF7
\u
8F93
\u5165\u
6B63
\u
786E
\u7684\u
5E93
\u
5B58
\u
FF0C
\u6700\u
5C0F
\u
5E93
\u
5B58<=
\u
5B89
\u5168\u
5E93
\u
5B58<=
\u6700\u5927\u
5E93
\u
5B58
smfcore.user.group.error
=
\u
7EC4[{0}]
\u
5DF2
\u
7ECF
\u5206\u
914D
\u
7ED9
\u
64CD
\u
4F5C
\u5458
[{1}]
smfcore.order.choose
=
\u
8BF7
\u9009\u
62E9
\u
5DE5
\u5355
\ No newline at end of file
src/main/resources/messages_zh_TW.properties
查看文件 @
e6e4df6
...
...
@@ -148,7 +148,7 @@ smfcore.solderPasteKanban=\u8A2D\u5099\u6982\u89BD
smfcore.solderPasteManage
=
\u
5EAB
\u
5B58
smfcore.solderPasteData
=
\u
8FFD
\u
6EAF
\u6027
smfcore.solderPasteSetting
=
\u
8A2D
\u
7F6E
smfcore.orderSetting
=
\u5
171\u
4EAB
\u6587\u
4EF6
\u
593
E
smfcore.orderSetting
=
\u
5
DE5
\u
55AE
\u
8A2D
\u
7F6
E
smfcore.enterCorrectFolder
=
\u
8ACB
\u
8F38
\u5165\u
6B63
\u
78BA
\u7684\u6587\u
4EF6
\u
593E
smfcore.taskHasEnd
=
\u
4EFB
\u
52D9{0}
\u
5DF2
\u
53D6
\u
6D88
\u6216\u
5DF2
\u
7D50
\u
675F
smfcore.virtual.notFound
=
\u
672A
\u
627E
\u5230\u
865B
\u
64EC
\u5009
...
...
@@ -252,3 +252,4 @@ smfcore.safetyInventory.supplementReel=\u88DC\u5145\u76E4\u6578
smfcore.safetyInventory.amount
=
\u6700\u
5C0F
\u5305\u
88DD
smfcore.component.storeError
=
\u
8ACB
\u
8F38
\u5165\u
6B63
\u
78BA
\u7684\u
5EAB
\u
5B58
\u
FF0C
\u6700\u
5C0F
\u
5EAB
\u
5B58<=
\u
5B89
\u5168\u
5EAB
\u
5B58<=
\u6700\u5927\u
5EAB
\u
5B58
smfcore.user.group.error
=
\u
7D44[{0}]
\u
5DF2
\u
7D93
\u5206\u
914D
\u
7D66
\u
64CD
\u
4F5C
\u
54E1[{1}]
smfcore.order.choose
=
\u
8ACB
\u9078\u
64C7
\u
5DE5
\u
55AE
\ No newline at end of file
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论