Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit cd08bb20
由
LN
编写于
2021-08-06 10:08:06 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
接口调试修改。
1 个父辈
05193f0c
隐藏空白字符变更
内嵌
并排
正在显示
18 个修改的文件
包含
177 行增加
和
196 行删除
src/main/java/com/neotel/smfcore/common/csv/CsvReader.java
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
src/main/java/com/neotel/smfcore/core/kanban/rest/BoxKanbanController.java
src/main/java/com/neotel/smfcore/core/kanban/rest/bean/dto/BoxTaskDto.java
src/main/java/com/neotel/smfcore/core/kanban/rest/bean/query/BoxTaskQueryCriter.java
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
src/main/java/com/neotel/smfcore/core/storage/rest/StorageController.java
src/main/java/com/neotel/smfcore/core/system/rest/TaskController.java
src/main/java/com/neotel/smfcore/core/system/rest/bean/dto/TaskDto.java
src/main/java/com/neotel/smfcore/core/system/service/manager/IDataLogManager.java
src/main/java/com/neotel/smfcore/core/system/service/manager/impl/DataLogManagerImpl.java
src/main/java/com/neotel/smfcore/hella/rest/HellaSensorShelfController.java
src/main/java/com/neotel/smfcore/security/rest/UserController.java
src/main/java/com/neotel/smfcore/security/rest/bean/dto/MenuDto.java
src/main/java/com/neotel/smfcore/security/service/manager/impl/UserManagerImpl.java
src/main/java/com/neotel/smfcore/security/service/po/Menu.java
src/main/resources/messages.properties
src/main/resources/messages_zh_CN.properties
src/main/java/com/neotel/smfcore/common/csv/CsvReader.java
查看文件 @
cd08bb2
...
...
@@ -20,6 +20,9 @@
*/
package
com
.
neotel
.
smfcore
.
common
.
csv
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
lombok.extern.slf4j.Slf4j
;
import
java.io.*
;
import
java.nio.charset.Charset
;
import
java.text.NumberFormat
;
...
...
@@ -29,6 +32,7 @@ import java.util.HashMap;
* A stream based parser for parsing delimited text data from a file or a
* stream.
*/
@Slf4j
public
class
CsvReader
{
private
Reader
inputStream
=
null
;
...
...
@@ -233,6 +237,21 @@ public class CsvReader {
}
/**
* 获取指定列所在的索引
* @param titleName
* @param titleNameEn
* @return
*/
public
int
getCsvIndex
(
String
titleName
,
String
titleNameEn
){
int
index
=
getIndex
(
titleName
,
titleNameEn
);
if
(
index
==
-
1
){
log
.
info
(
"未包含【"
+
titleName
+
"】或【"
+
titleNameEn
+
"】列"
);
// throw new ValidateException("必须包含["+titleNameEn+"]列");
throw
new
ValidateException
(
"smfcode.columnNotExist"
,
"必须包含[{0}列"
,
new
String
[]{
titleNameEn
});
}
return
index
;
}
/**
* Gets whether leading and trailing whitespace characters are being trimmed
* from non-textqualified column data. Default is true.
*
...
...
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
查看文件 @
cd08bb2
...
...
@@ -2,6 +2,9 @@ package com.neotel.smfcore.common.init;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.UserCodeUtil
;
import
com.neotel.smfcore.core.system.service.manager.IDataLogManager
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.security.service.manager.IGroupManager
;
import
com.neotel.smfcore.security.service.manager.IMenuManager
;
import
com.neotel.smfcore.security.service.manager.IRoleManager
;
...
...
@@ -21,6 +24,7 @@ import org.springframework.stereotype.Component;
import
javax.annotation.PostConstruct
;
import
javax.jws.soap.SOAPBinding
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
@Slf4j
@Component
...
...
@@ -34,6 +38,11 @@ public class DataInitManager {
IMenuManager
menuManager
;
@Autowired
IGroupManager
groupManager
;
@Autowired
TaskService
taskService
;
@Autowired
IDataLogManager
dataLogManager
;
@PostConstruct
public
void
DataInit
()
{
...
...
@@ -44,6 +53,7 @@ public class DataInitManager {
User
admin
=
userManager
.
findByUserName
(
userName
);
if
(
admin
==
null
)
{
log
.
info
(
"开始创建默认菜单..."
);
Set
<
String
>
menuIdSet
=
MenuInitNew
()
;
Group
group
=
new
Group
(
"未分组"
);
...
...
@@ -60,81 +70,35 @@ public class DataInitManager {
userManager
.
save
(
admin
);
log
.
info
(
"创建默认用户:"
+
admin
.
toString
());
log
.
info
(
"创建默认菜单完成..."
);
}
else
{
log
.
info
(
"初始化环境完成..."
);
}
initTask
();
}
catch
(
Exception
exception
)
{
log
.
error
(
"初始化环境出错..."
+
exception
.
toString
());
}
}
private
Set
<
String
>
MenuInitOld
(){
Set
<
String
>
menuIdSet
=
new
HashSet
<
String
>()
;
List
<
Menu
>
menus
=
new
ArrayList
<
Menu
>();
Menu
menu1
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"menu:list"
,
"料架分组"
,
1
,
"lightGroup"
,
"neolight/lightGroup/index"
,
""
,
0
,
"menu"
);
Menu
menu2
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"menu:list"
,
"工单"
,
2
,
"workOrder"
,
"neolight/workOrder/index"
,
""
,
0
,
"menu"
);
Menu
menu3
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"menu:list"
,
"查找出库"
,
3
,
"singleOuput"
,
"neolight/singleOuput/index"
,
""
,
0
,
"menu"
);
Menu
menu4
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"menu:list"
,
"分组管理"
,
4
,
"groupManager"
,
"neolight/groupManager/index"
,
""
,
0
,
"menu"
);
// Menu menu4 = new Menu(new ArrayList<Menu>(), 0, "menu:list", "角色管理", 4, "menu", "user/roleSearch", "", 0, false, false, false, "角色管理", "menu");
menus
.
add
(
menuManager
.
save
(
menu1
));
menus
.
add
(
menuManager
.
save
(
menu2
));
menus
.
add
(
menuManager
.
save
(
menu3
));
menus
.
add
(
menuManager
.
save
(
menu4
));
Menu
menuUser
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"user:list"
,
"用户管理"
,
11
,
"peoples"
,
"system/user/index"
,
""
,
0
,
"peoples"
);
menuUser
=
menuManager
.
save
(
menuUser
);
Menu
menuUser1
=
menuManager
.
save
(
new
Menu
(
"user:edit"
,
"用户编辑"
,
12
,
menuUser
.
getId
()))
;
Menu
menuUser2
=
menuManager
.
save
(
new
Menu
(
"user:del"
,
"用户删除"
,
13
,
menuUser
.
getId
()));
Menu
menuUser3
=
menuManager
.
save
(
new
Menu
(
"user:add"
,
"用户新增"
,
13
,
menuUser
.
getId
()));
menus
.
add
(
menuUser
);
menus
.
add
(
menuUser1
);
menus
.
add
(
menuUser2
);
menus
.
add
(
menuUser3
);
Menu
menuRole
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"role:list"
,
"角色管理"
,
21
,
"role"
,
"system/role/index"
,
""
,
0
,
"role"
);
menuUser
=
menuManager
.
save
(
menuRole
);
Menu
menuRole1
=
menuManager
.
save
(
new
Menu
(
"role:edit"
,
"角色编辑"
,
22
,
menuRole
.
getId
()))
;
Menu
menuRole2
=
menuManager
.
save
(
new
Menu
(
"role:del"
,
"角色删除"
,
23
,
menuRole
.
getId
()));
Menu
menuRole3
=
menuManager
.
save
(
new
Menu
(
"role:add"
,
"角色新增"
,
23
,
menuRole
.
getId
()));
menus
.
add
(
menuRole
);
menus
.
add
(
menuRole1
);
menus
.
add
(
menuRole2
);
menus
.
add
(
menuRole3
);
Menu
menuMenu
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"menu:list"
,
"菜单管理"
,
31
,
"menu"
,
"system/menu/index"
,
""
,
0
,
"menu"
);
menuMenu
=
menuManager
.
save
(
menuMenu
);
Menu
menuMenu1
=
menuManager
.
save
(
new
Menu
(
"menu:edit"
,
"菜单编辑"
,
32
,
menuMenu
.
getId
()))
;
Menu
menuMenu2
=
menuManager
.
save
(
new
Menu
(
"menu:del"
,
"菜单删除"
,
33
,
menuMenu
.
getId
()));
Menu
menuMenu3
=
menuManager
.
save
(
new
Menu
(
"menu:add"
,
"菜单新增"
,
33
,
menuMenu
.
getId
()));
menus
.
add
(
menuMenu
);
menus
.
add
(
menuMenu1
);
menus
.
add
(
menuMenu2
);
menus
.
add
(
menuMenu3
);
Menu
menuLog
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"taskLog:list"
,
"出库日志"
,
41
,
"taskLog"
,
"neolight/taskLog/index"
,
""
,
0
,
"database"
);
Menu
menuStorage
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"storagePos:list"
,
"库位管理"
,
51
,
"storagePos"
,
"storagePos/storagePos/index"
,
""
,
0
,
"tree-table"
);
Menu
menuStoragePos
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"storage:list"
,
"料仓管理"
,
61
,
"bunker"
,
"storage/storage/index"
,
""
,
0
,
"database"
);
Menu
menucom
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"component:list"
,
"元器件管理"
,
71
,
"componentParts"
,
"parts/component/index"
,
""
,
0
,
"server"
);
Menu
menubarcode
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"barcode:list"
,
"条码管理"
,
81
,
"barcode"
,
"barcode/barcode/index"
,
""
,
0
,
"menu"
);
menus
.
add
(
menuManager
.
save
(
menuLog
));
menus
.
add
(
menuManager
.
save
(
menuStorage
));
menus
.
add
(
menuManager
.
save
(
menuStoragePos
));
menus
.
add
(
menuManager
.
save
(
menucom
));
menus
.
add
(
menuManager
.
save
(
menubarcode
));
for
(
Menu
menu:
menus
)
{
log
.
info
(
"创建默认菜单:"
+
menu
.
toString
());
menuIdSet
.
add
(
menu
.
getId
());
private
void
initTask
()
{
log
.
info
(
"开始加载未完成的任务..."
);
List
<
DataLog
>
unExecuteTasks
=
dataLogManager
.
findUnFinishedTasks
();
for
(
DataLog
unExecuteTask
:
unExecuteTasks
)
{
if
(
unExecuteTask
.
isExecuting
()
||
unExecuteTask
.
isWait
())
{
try
{
taskService
.
addTaskToExecute
(
unExecuteTask
);
}
catch
(
Exception
e
){
log
.
error
(
"初始化任务["
+
unExecuteTask
+
"]出错:"
+
e
);
}
}
}
return
menuIdSet
;
log
.
info
(
"加载未完成的任务完成,共["
+
unExecuteTasks
.
size
()
+
"]条数据..."
)
;
}
private
int
sortValue
=
0
;
private
List
<
Menu
>
createMenus
(
Menu
pMenu
,
Menu
...
subMenus
)
{
...
...
src/main/java/com/neotel/smfcore/core/kanban/rest/BoxKanbanController.java
查看文件 @
cd08bb2
...
...
@@ -43,10 +43,7 @@ import org.springframework.web.bind.annotation.GetMapping;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.*
;
@Slf4j
...
...
@@ -111,24 +108,25 @@ public class BoxKanbanController {
String
groupId
=
criteria
.
getGroupId
();
List
<
String
>
cidList
=
getCidsByGroupId
(
groupId
,
true
);
query
.
addCriteria
(
Criteria
.
where
(
"cid"
).
in
(
cidList
));
PageData
<
DataLog
>
dataLogPageData
=
dataLogManager
.
findByPage
(
query
,
pageable
);
List
<
BoxTaskDto
>
boxTaskDtos
=
boxTaskMapper
.
toDto
(
dataLogPageData
.
getContent
());
//正常
if
(
criteria
.
getStatus
()==
1
){
if
(
criteria
.
get
Task
Status
()==
1
){
Date
lastUpdateTime
=
new
Date
((
new
Date
().
getTime
())-
10
*
60
*
1000
);
query
.
addCriteria
(
Criteria
.
where
(
"updateDate"
).
gt
(
lastUpdateTime
).
and
(
"status"
).
is
(
OP_STATUS
.
EXECUTING
));
query
.
addCriteria
(
Criteria
.
where
(
"updateDate"
).
gt
(
lastUpdateTime
).
and
(
"status"
).
is
(
OP_STATUS
.
EXECUTING
.
name
()
));
}
//异常
else
if
(
criteria
.
getStatus
()==
2
){
else
if
(
criteria
.
get
Task
Status
()==
2
){
Date
lastUpdateTime
=
new
Date
((
new
Date
().
getTime
())-
10
*
60
*
1000
);
query
.
addCriteria
(
Criteria
.
where
(
"updateDate"
).
lte
(
lastUpdateTime
).
and
(
"status"
).
is
(
OP_STATUS
.
EXECUTING
));
}
else
{
List
<
String
>
sList
=
new
ArrayList
<>();
sList
.
add
(
OP_STATUS
.
WAIT
.
toString
());
sList
.
add
(
OP_STATUS
.
EXECUTING
.
toString
());
query
.
addCriteria
(
Criteria
.
where
(
"status"
).
in
(
sList
));
query
.
addCriteria
(
Criteria
.
where
(
"updateDate"
).
lte
(
lastUpdateTime
).
and
(
"status"
).
in
(
OP_STATUS
.
EXECUTING
.
name
(),
OP_STATUS
.
WAIT
.
name
()));
}
else
{
//只查找近12个小时未完成的任务
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
()));
}
PageData
<
DataLog
>
dataLogPageData
=
dataLogManager
.
findByPage
(
query
,
pageable
);
List
<
BoxTaskDto
>
boxTaskDtos
=
boxTaskMapper
.
toDto
(
dataLogPageData
.
getContent
());
return
new
PageData
(
boxTaskDtos
,
boxTaskDtos
.
size
());
}
...
...
@@ -157,13 +155,18 @@ public class BoxKanbanController {
int
allCount
=
allTasks
.
size
();
int
abnormal
=
0
;
int
normal
=
0
;
int
allcount
=
0
;
for
(
DataLog
data
:
allTasks
)
{
if
(
data
.
isFinished
()
||
data
.
isCancel
())
{
continue
;
}
//超过10分钟未更新为异常
if
(
data
.
isAbnormal
())
{
abnormal
++;
}
else
if
(
data
.
getStatus
().
equals
(
OP_STATUS
.
EXECUTING
))
{
if
((!
data
.
isAbnormal
())
&&
data
.
getStatus
().
equals
(
OP_STATUS
.
EXECUTING
))
{
normal
++;
}
else
if
(
data
.
isAbnormal
())
{
abnormal
++;
}
allcount
++;
}
BoxKanbanDto
kanbanDto
=
new
BoxKanbanDto
(
allCount
,
normal
,
abnormal
,
new
ArrayList
<>());
return
kanbanDto
;
...
...
src/main/java/com/neotel/smfcore/core/kanban/rest/bean/dto/BoxTaskDto.java
查看文件 @
cd08bb2
...
...
@@ -8,10 +8,13 @@ import java.util.List;
@Data
public
class
BoxTaskDto
{
@ApiModelProperty
(
"ID"
)
private
String
id
;
@ApiModelProperty
(
"是否是单盘出库(联电指出库项目,默认为false即默认批量出库)"
)
private
boolean
singleOut
=
false
;
@ApiModelProperty
(
"
所属料仓
"
)
@ApiModelProperty
(
"
料仓名称
"
)
private
String
storageName
;
@ApiModelProperty
(
value
=
"料仓 cid"
)
...
...
@@ -20,10 +23,10 @@ public class BoxTaskDto {
@ApiModelProperty
(
"料仓 ID"
)
private
String
storageId
;
@ApiModelProperty
(
"
料仓
ID"
)
@ApiModelProperty
(
"
库位号
ID"
)
private
String
posId
;
@ApiModelProperty
(
"
仓位名称
"
)
@ApiModelProperty
(
"
库位号
"
)
private
String
posName
;
@ApiModelProperty
(
"二维码(Reel ID)"
)
...
...
@@ -32,79 +35,60 @@ public class BoxTaskDto {
@ApiModelProperty
(
"物料编号"
)
private
String
partNumber
;
/**
*数量(从 barCode 中读取)
*/
@ApiModelProperty
(
"物料编号"
)
@ApiModelProperty
(
"数量"
)
private
int
num
;
/**
* 类型:入库OP.PUT_IN,出库OP.CHECKOUT
*/
@ApiModelProperty
(
"出入库类型"
)
private
int
type
;
/**
* 状态:OP_STATUS
*/
private
String
status
;
@ApiModelProperty
(
"状态:OP_STATUS"
)
private
String
taskStatus
;
/**
* 指定批次Id
*/
public
String
getTaskStatus
(){
return
status
;}
@ApiModelProperty
(
"指定批次Id"
)
private
String
batchId
;
/**
* 批次显示内容
*/
@ApiModelProperty
(
"批次显示内容"
)
private
String
batchInfo
;
/**
* 指令来源:站位列表 指定订单工单 MES
*/
@ApiModelProperty
(
"指令来源:站位列表 指定订单工单 MES"
)
private
String
sourceType
;
/**
* 来源 id,
*/
@ApiModelProperty
(
"来源 id"
)
private
String
sourceId
;
/**
* 来源名称
*/
@ApiModelProperty
(
"来源名称"
)
private
String
sourceName
;
/**
* 子来源 ID(单个站位)
*/
@ApiModelProperty
(
"子来源 ID(单个站位)"
)
private
String
subSourceId
;
/**
* 子来源名称
*/
@ApiModelProperty
(
"子来源名称"
)
private
String
subSourceInfo
;
/**
* 创建人
*/
@ApiModelProperty
(
"创建人"
)
private
String
creator
;
/**
* 操作人
*/
@ApiModelProperty
(
"操作人"
)
private
String
operator
;
/**
* 关联条码,夹具时关联相关的物料,用于入库完成时插入相关物料
*/
@ApiModelProperty
(
"关联条码,夹具时关联相关的物料,用于入库完成时插入相关物料"
)
private
List
<
String
>
relationCodes
;
private
String
memo
;
/**
* 搅拌时间(锡膏搅拌任务使用)
*/
@ApiModelProperty
(
"搅拌时间(锡膏搅拌任务使用)"
)
private
int
mixTime
;
/**
* 亮灯料架颜色
*/
@ApiModelProperty
(
"亮灯料架颜色"
)
private
String
lightColor
=
""
;
}
src/main/java/com/neotel/smfcore/core/kanban/rest/bean/query/BoxTaskQueryCriter.java
查看文件 @
cd08bb2
...
...
@@ -45,7 +45,7 @@ public class BoxTaskQueryCriter {
private
String
sourceName
;
@ApiModelProperty
(
"任务状态:0=所有,1=正常,2=异常"
)
private
int
s
tatus
=
0
;
private
int
taskS
tatus
=
0
;
@ApiModelProperty
(
"任务类型:0=所有,1=入库,2=出库"
)
@QueryCondition
...
...
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
查看文件 @
cd08bb2
...
...
@@ -178,15 +178,6 @@ public class OrderController {
return
orderMapper
.
toDto
(
orderList
);
}
private
int
getCsvIndex
(
CsvReader
csvReader
,
String
titleName
,
String
titleNameEn
)
{
int
index
=
csvReader
.
getIndex
(
titleName
,
titleNameEn
);
if
(
index
==
-
1
)
{
log
.
info
(
"未包含【"
+
titleName
+
"】或【"
+
titleNameEn
+
"】列"
);
// throw new ValidateException("必须包含[" + titleNameEn + "]列");
throw
new
ValidateException
(
"smfcode.error.columnNotExist"
,
"必须包含[{0}列"
,
new
String
[]{
titleNameEn
});
}
return
index
;
}
protected
List
<
LiteOrderItem
>
handleOrderCsv
(
String
fileURL
)
{
try
{
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/StorageController.java
查看文件 @
cd08bb2
...
...
@@ -210,17 +210,7 @@ public class StorageController {
return
ResultBean
.
newOkResult
(
resultMsg
);
}
private
int
getCsvIndex
(
CsvReader
csvReader
,
String
titleName
,
String
titleNameEn
)
{
int
index
=
csvReader
.
getIndex
(
titleName
,
titleNameEn
);
if
(
index
==
-
1
)
{
log
.
info
(
"未包含【"
+
titleName
+
"】或【"
+
titleNameEn
+
"】列"
);
// throw new ValidateException("必须包含[" + titleNameEn + "]列");
throw
new
ValidateException
(
"smfcode.columnNotExist"
,
"必须包含[{0}列"
,
new
String
[]{
titleNameEn
});
}
return
index
;
}
protected
String
handleStoragePos
(
String
fileURL
,
String
storageId
)
throws
Exception
{
log
.
info
(
"开始更新料仓【"
+
storageId
+
"】的位置信息"
);
...
...
@@ -239,10 +229,10 @@ public class StorageController {
csvRead
.
setSkipEmptyRecords
(
true
);
//忽略空行
csvRead
.
setTrimWhitespace
(
true
);
//去除空格
csvRead
.
readHeaders
();
int
posIndex
=
getCsvIndex
(
csvRead
,
"位置"
,
"pos"
);
int
priIndex
=
getCsvIndex
(
csvRead
,
"优先级"
,
"pri"
);
int
hIndex
=
getCsvIndex
(
csvRead
,
"高度"
,
"h"
);
int
wIndex
=
getCsvIndex
(
csvRead
,
"宽度"
,
"w"
);
int
posIndex
=
csvRead
.
getCsvIndex
(
"位置"
,
"pos"
);
int
priIndex
=
csvRead
.
getCsvIndex
(
"优先级"
,
"pri"
);
int
hIndex
=
csvRead
.
getCsvIndex
(
"高度"
,
"h"
);
int
wIndex
=
csvRead
.
getCsvIndex
(
"宽度"
,
"w"
);
int
row
=
1
;
int
newRowCount
=
0
;
...
...
src/main/java/com/neotel/smfcore/core/system/rest/TaskController.java
查看文件 @
cd08bb2
package
com
.
neotel
.
smfcore
.
core
.
system
.
rest
;
import
cn.hutool.core.util.PageUtil
;
import
com.google.common.collect.Lists
;
import
com.neotel.smfcore.common.bean.PageData
;
import
com.neotel.smfcore.common.bean.ResultBean
;
...
...
@@ -73,8 +74,9 @@ public class TaskController {
@ApiOperation
(
"获取队列中的任务"
)
@GetMapping
@PreAuthorize
(
"@el.check('task:inQueue','task:list')"
)
public
List
<
TaskDto
>
filterTask
(
String
groupId
,
String
[]
cids
){
return
getTaskList
(
groupId
,
cids
);
public
PageData
<
TaskDto
>
filterTask
(
String
groupId
,
String
[]
cids
){
List
<
TaskDto
>
taskDtos
=
getTaskList
(
groupId
,
cids
);
return
new
PageData
<
TaskDto
>(
taskDtos
,
taskDtos
.
size
());
}
private
List
<
TaskDto
>
getTaskList
(
String
groupId
,
String
[]
cids
){
...
...
src/main/java/com/neotel/smfcore/core/system/rest/bean/dto/TaskDto.java
查看文件 @
cd08bb2
...
...
@@ -11,6 +11,8 @@ import java.util.List;
@Setter
public
class
TaskDto
implements
Serializable
{
@ApiModelProperty
(
"ID"
)
private
String
id
;
/**
* 是否是单盘出库(联电指出库项目,默认为false即默认批量出库)
*/
...
...
src/main/java/com/neotel/smfcore/core/system/service/manager/IDataLogManager.java
查看文件 @
cd08bb2
...
...
@@ -3,5 +3,8 @@ package com.neotel.smfcore.core.system.service.manager;
import
com.neotel.smfcore.common.base.IBaseManager
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
java.util.List
;
public
interface
IDataLogManager
extends
IBaseManager
<
DataLog
>
{
List
<
DataLog
>
findUnFinishedTasks
();
}
src/main/java/com/neotel/smfcore/core/system/service/manager/impl/DataLogManagerImpl.java
查看文件 @
cd08bb2
...
...
@@ -2,14 +2,18 @@ package com.neotel.smfcore.core.system.service.manager.impl;
import
com.neotel.smfcore.common.bean.PageData
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.system.service.dao.IDataLogDao
;
import
com.neotel.smfcore.core.system.service.manager.IDataLogManager
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.Calendar
;
import
java.util.List
;
@Service
...
...
@@ -44,4 +48,19 @@ public class DataLogManagerImpl implements IDataLogManager {
public
List
<
DataLog
>
findByQuery
(
Query
query
)
{
return
dataLogDao
.
findByQuery
(
query
);
}
@Override
public
List
<
DataLog
>
findUnFinishedTasks
()
{
Criteria
c
=
Criteria
.
where
(
"status"
).
nin
(
OP_STATUS
.
FINISHED
.
name
(),
OP_STATUS
.
CANCEL
.
name
());
//只查找近12个小时未完成的任务
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
add
(
Calendar
.
HOUR_OF_DAY
,-
24
);
c
.
and
(
"createDate"
).
gte
(
calendar
.
getTime
());
Query
query
=
Query
.
query
(
c
);
List
<
DataLog
>
unFinishedTasks
=
findByQuery
(
query
);
if
(
unFinishedTasks
==
null
){
unFinishedTasks
=
new
ArrayList
<>();
}
return
unFinishedTasks
;
}
}
src/main/java/com/neotel/smfcore/hella/rest/HellaSensorShelfController.java
查看文件 @
cd08bb2
package
com
.
neotel
.
smfcore
.
hella
.
rest
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
...
...
@@ -19,6 +20,7 @@ import org.springframework.http.HttpStatus;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
...
...
@@ -56,18 +58,28 @@ public class HellaSensorShelfController {
@ApiOperation
(
"扫码入库"
)
@PostMapping
(
"/codeIn"
)
@PreAuthorize
(
"@el.check('sensorShelf:putIn')"
)
public
ResponseEntity
<
ResultBean
>
codeIn
(
String
code
,
String
group
){
public
ResponseEntity
<
ResultBean
>
codeIn
(
@RequestBody
Map
<
String
,
String
>
mapValues
)
{
String
code
=
mapValues
.
get
(
"code"
);
String
group
=
mapValues
.
get
(
"group"
);
if
(
ObjectUtils
.
isEmpty
(
code
)){
throw
new
ValidateException
(
"smfcode.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"code"
});
}
if
(
ObjectUtils
.
isEmpty
(
group
)){
throw
new
ValidateException
(
"smfcode.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"group"
});
}
String
loginUser
=
SecurityUtils
.
getLoginUsername
();
Collection
<
DataLog
>
queueTasks
=
taskService
.
getQueueTasks
();
ResultBean
resultBean
=
null
;
for
(
DataLog
queueTask
:
queueTasks
)
{
if
(
queueTask
.
isPutInTask
()
&&
queueTask
.
getSourceName
().
equals
(
group
)){
resultBean
=
ResultBean
.
newErrorResult
(-
1
,
"the task of ["
+
queueTask
.
getBarcode
()+
"] is unfinished."
);
return
new
ResponseEntity
<
ResultBean
>(
resultBean
,
HttpStatus
.
OK
);
if
(
queueTask
.
isPutInTask
()
&&
queueTask
.
getSourceName
().
equals
(
group
))
{
log
.
info
(
"codeIn ["
+
code
+
"]["
+
group
+
"]入库失败:条码["
+
queueTask
.
getBarcode
()+
"]的任务还未结束 "
);
throw
new
ValidateException
(
"smfcore.unfinished"
,
"the task of [{0}] is unfinished"
,
new
String
[]{
queueTask
.
getBarcode
()});
// resultBean = ResultBean.newErrorResult(-1, "the task of [" + queueTask.getBarcode() + "] is unfinished.");
// return new ResponseEntity<ResultBean>(resultBean, HttpStatus.OK);
}
}
resultBean
=
hellaServiceHandler
.
checkMaterial
(
loginUser
,
group
,
code
);
return
new
ResponseEntity
<
ResultBean
>(
resultBean
,
HttpStatus
.
OK
);
return
new
ResponseEntity
<
ResultBean
>(
resultBean
,
HttpStatus
.
OK
);
}
...
...
src/main/java/com/neotel/smfcore/security/rest/UserController.java
查看文件 @
cd08bb2
...
...
@@ -152,12 +152,7 @@ public class UserController {
throw
new
ValidateException
(
"smfcode.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"roleId"
}
);
// throw new ValidateException("修改用户:角色ID不能为空");
}
if
(
resources
.
getUsername
().
equals
(
Constants
.
SUPER_USERNAME
))
{
if
(!
resources
.
getId
().
equals
(
SecurityUtils
.
getCurrentUserId
()))
{
throw
new
ValidateException
(
"smfcode.hasNoAccess"
,
"无权限修改此用户信息"
);
// throw new ValidateException("无权限修改此用户信息");
}
}
userManager
.
update
(
resources
);
return
new
ResponseEntity
<>(
HttpStatus
.
NO_CONTENT
);
...
...
@@ -255,15 +250,7 @@ public class UserController {
String
resultMsg
=
handleUserUpload
(
file
.
getAbsolutePath
());
return
ResultBean
.
newOkResult
(
resultMsg
);
}
private
int
getCsvIndex
(
CsvReader
csvReader
,
String
titleName
,
String
titleNameEn
){
int
index
=
csvReader
.
getIndex
(
titleName
,
titleNameEn
);
if
(
index
==
-
1
){
log
.
info
(
"未包含【"
+
titleName
+
"】或【"
+
titleNameEn
+
"】列"
);
// throw new ValidateException("必须包含["+titleNameEn+"]列");
throw
new
ValidateException
(
"smfcode.columnNotExist"
,
"必须包含[{0}列"
,
new
String
[]{
titleNameEn
});
}
return
index
;
}
protected
String
handleUserUpload
(
String
fileURL
)
throws
Exception
{
...
...
@@ -274,9 +261,9 @@ public class UserController {
csvRead
.
setTrimWhitespace
(
true
);
//去除空格
csvRead
.
readHeaders
();
int
idIndex
=
getCsvIndex
(
csvRead
,
"用户ID"
,
"ID"
);
int
usernameIndex
=
getCsvIndex
(
csvRead
,
"用户名"
,
"UserName"
);
int
codeIndex
=
getCsvIndex
(
csvRead
,
"启用码"
,
"CheckCode"
);
int
idIndex
=
csvRead
.
getCsvIndex
(
"用户ID"
,
"ID"
);
int
usernameIndex
=
csvRead
.
getCsvIndex
(
"用户名"
,
"UserName"
);
int
codeIndex
=
csvRead
.
getCsvIndex
(
"启用码"
,
"CheckCode"
);
int
row
=
1
;
...
...
src/main/java/com/neotel/smfcore/security/rest/bean/dto/MenuDto.java
查看文件 @
cd08bb2
...
...
@@ -54,6 +54,8 @@ public class MenuDto implements Serializable {
@ApiModelProperty
(
value
=
"图标"
)
private
String
icon
;
@ApiModelProperty
(
value
=
"国际化资源的key"
)
private
String
titleKey
;
public
Boolean
getHasChildren
()
{
if
(
subCount
==
null
){
...
...
src/main/java/com/neotel/smfcore/security/service/manager/impl/UserManagerImpl.java
查看文件 @
cd08bb2
...
...
@@ -3,10 +3,7 @@ package com.neotel.smfcore.security.service.manager.impl;
import
com.google.common.base.Strings
;
import
com.neotel.smfcore.common.bean.PageData
;
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.FileUtil
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.common.utils.*
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.security.rest.bean.dto.RoleSmallDto
;
import
com.neotel.smfcore.security.rest.bean.dto.UserDto
;
...
...
@@ -85,6 +82,12 @@ public class UserManagerImpl implements IUserManager {
if
(
user
.
getCheckCode
()==
null
){
user
.
setCheckCode
(
""
);
}
if
(
user
.
getUsername
().
equals
(
Constants
.
SUPER_USERNAME
))
{
if
(!
user
.
getId
().
equals
(
SecurityUtils
.
getCurrentUserId
()))
{
throw
new
ValidateException
(
"smfcode.hasNoAccess"
,
"无权限修改此用户信息"
);
// throw new ValidateException("无权限修改此用户信息");
}
}
//用户名admin不能修改
if
(
dataUser
.
getUsername
().
equals
(
Constants
.
SUPER_USERNAME
))
{
if
(!
user
.
getUsername
().
equals
(
dataUser
.
getUsername
())){
...
...
src/main/java/com/neotel/smfcore/security/service/po/Menu.java
查看文件 @
cd08bb2
...
...
@@ -90,6 +90,11 @@ public class Menu extends BasePo implements Serializable {
*/
private
String
icon
;
/**
* 国际化文本key
*/
private
String
titleKey
;
public
Boolean
getHasChildren
()
{
if
(
subCount
==
0
){
return
false
;
...
...
@@ -111,16 +116,6 @@ public class Menu extends BasePo implements Serializable {
/**
* 此方法用于构建一级菜单,type=1
* @param children
* @param type
* @param permission
* @param title
* @param menuSort
* @param path
* @param component
* @param pid
* @param subCount
* @param icon
*/
public
Menu
(
final
List
<
Menu
>
children
,
final
Integer
type
,
final
String
permission
,
final
String
title
,
final
Integer
menuSort
,
final
String
path
,
final
String
component
,
final
String
pid
,
final
Integer
subCount
,
final
String
icon
)
{
this
.
children
=
children
;
...
...
@@ -137,6 +132,7 @@ public class Menu extends BasePo implements Serializable {
this
.
hidden
=
false
;
this
.
componentName
=
""
;
this
.
icon
=
icon
;
this
.
titleKey
=
path
;
}
public
Menu
(
final
String
permission
,
final
String
title
,
final
Integer
menuSort
,
final
String
pid
)
{
...
...
@@ -154,20 +150,22 @@ public class Menu extends BasePo implements Serializable {
this
.
hidden
=
false
;
this
.
componentName
=
title
;
this
.
icon
=
""
;
this
.
titleKey
=
path
;
}
/**
* 此方法用于构建权限菜单,type=2
*/
public
static
Menu
CreatePerMenu
(
final
String
permission
,
final
String
title
,
final
String
pid
)
{
Menu
menu
=
new
Menu
(
new
ArrayList
<
Menu
>(),
2
,
permission
,
title
,
999
,
""
,
""
,
pid
,
0
,
false
,
false
,
false
,
""
,
""
);
Menu
menu
=
new
Menu
(
new
ArrayList
<
Menu
>(),
2
,
permission
,
title
,
999
,
""
,
""
,
pid
,
0
,
false
,
false
,
false
,
""
,
""
,
""
);
return
menu
;
}
/**
* 此方法用户创建只用于显示的一级菜单,type=0
*/
public
static
Menu
CreatePMenu
(
final
String
title
,
final
Integer
menuSort
,
final
String
path
,
final
Integer
subCount
,
final
String
icon
)
{
Menu
menu
=
new
Menu
(
new
ArrayList
<
Menu
>(),
0
,
""
,
title
,
menuSort
,
path
,
""
,
""
,
subCount
,
false
,
false
,
false
,
title
,
icon
);
public
static
Menu
CreatePMenu
(
final
String
title
,
final
Integer
menuSort
,
final
String
path
,
final
Integer
subCount
,
final
String
icon
)
{
String
titleKey
=
path
;
Menu
menu
=
new
Menu
(
new
ArrayList
<
Menu
>(),
0
,
""
,
title
,
menuSort
,
path
,
""
,
""
,
subCount
,
false
,
false
,
false
,
title
,
icon
,
titleKey
);
return
menu
;
}
}
src/main/resources/messages.properties
查看文件 @
cd08bb2
...
...
@@ -49,3 +49,4 @@ smfcode.error.barcode.inQueue=\u4E8C\u7EF4\u7801[{0}]\u5DF2\u5728\u64CD\u4F5C\u9
smfcode.error.pos.inQueue
=
\u
4F4D
\u
7F6E:[{0}}]
\u
5DF2
\u5728\u
64CD
\u
4F5C
\u
961F
\u5217\u
4E2D,
\u
64CD
\u
4F5C
\u5931\u
8D25
smfcode.columnNotExist
=
\u
5FC5
\u
987B
\u5305\u
542B[{0}
\u5217
smfcore.conotUpdate
=
\u7528\u6237\u
540Dadmin
\u
4E0D
\u
80FD
\u
4FEE
\u6539
smfcore.unfinished
=
\u6761\u7801
[{0}]
\u7684\u
4EFB
\u
52A1
\u
8FD8
\u
672A
\u
7ED3
\u
675F
src/main/resources/messages_zh_CN.properties
查看文件 @
cd08bb2
...
...
@@ -49,3 +49,4 @@ smfcode.error.barcode.inQueue=\u4E8C\u7EF4\u7801[{0}]\u5DF2\u5728\u64CD\u4F5C\u9
smfcode.error.pos.inQueue
=
\u
4F4D
\u
7F6E:[{0}}]
\u
5DF2
\u5728\u
64CD
\u
4F5C
\u
961F
\u5217\u
4E2D,
\u
64CD
\u
4F5C
\u5931\u
8D25
smfcode.columnNotExist
=
\u
5FC5
\u
987B
\u5305\u
542B[{0}
\u5217
smfcore.conotUpdate
=
\u7528\u6237\u
540Dadmin
\u
4E0D
\u
80FD
\u
4FEE
\u6539
smfcore.unfinished
=
\u6761\u7801
[{0}]
\u7684\u
4EFB
\u
52A1
\u
8FD8
\u
672A
\u
7ED3
\u
675F
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论