Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 9f602532
由
sunke
编写于
2023-02-17 14:21:24 +0800
浏览文件
选项
浏览文件
标签
下载
差异文件
Merge remote-tracking branch 'origin/master'
2 个父辈
e0b83d4d
ab0a8019
显示空白字符变更
内嵌
并排
正在显示
17 个修改的文件
包含
245 行增加
和
16 行删除
src/main/java/com/neotel/smfcore/common/utils/Constants.java
src/main/java/com/neotel/smfcore/core/barcode/utils/CodeResolve.java
src/main/java/com/neotel/smfcore/core/device/bean/BoxStatusBean.java
src/main/java/com/neotel/smfcore/core/device/enums/OP_STATUS.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/RobotBoxHandler.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/ThirdBoxHandler.java
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
src/main/java/com/neotel/smfcore/core/storage/rest/StoragePosController.java
src/main/java/com/neotel/smfcore/core/storage/rest/dto/StoragePosEnabledDto.java
src/main/java/com/neotel/smfcore/core/storage/service/manager/IStoragePosManager.java
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
src/main/java/com/neotel/smfcore/core/system/rest/SettingsController.java
src/main/java/com/neotel/smfcore/core/system/rest/bean/dto/SysSettingsDto.java
src/main/java/com/neotel/smfcore/core/system/service/po/DataLog.java
src/main/java/com/neotel/smfcore/custom/micron1053/bean/dto/SBDHViewDto.java
src/main/java/com/neotel/smfcore/custom/micron1053/controller/MicronStatusController.java
src/main/java/com/neotel/smfcore/common/utils/Constants.java
查看文件 @
9f60253
...
...
@@ -107,6 +107,15 @@ public class Constants {
* 呆滞天数
*/
public
static
final
String
CACHE_SluggishDay
=
"sluggishDay"
;
/**
* 过期天数
*/
public
static
final
String
CACHE_ExpiresDay
=
"expiresDay"
;
/**
* 容量预警
*/
public
static
final
String
CACHE_CapacityWarn
=
"capacityWarn"
;
//
// /**
// * 停止定时器任务
...
...
src/main/java/com/neotel/smfcore/core/barcode/utils/CodeResolve.java
查看文件 @
9f60253
...
...
@@ -35,6 +35,9 @@ public class CodeResolve {
private
List
<
BarcodeRule
>
barcodeRuleList
;
private
Integer
defaultExpiresDay
=
0
;
public
void
updateBarcodeRuleList
(
List
<
String
>
ruleList
){
barcodeRuleList
=
Lists
.
newArrayList
();
for
(
String
codeRule
:
ruleList
){
...
...
@@ -43,6 +46,10 @@ public class CodeResolve {
}
}
}
public
void
updateExpiresDay
(
Integer
expiresDay
){
defaultExpiresDay
=
expiresDay
;
}
public
CodeBean
resolveSingleCode
(
String
barcodeItemStr
){
return
resolveSingleCode
(
barcodeItemStr
,
COMPONENT_TYPE
.
COMPONENT
);
...
...
@@ -88,6 +95,10 @@ public class CodeResolve {
boolean
setSize
=
false
;
Component
component
=
componentManager
.
findByPartNumberAndProvider
(
barcode
.
getPartNumber
(),
barcode
.
getProvider
());
int
validDay
=
0
;
if
(
defaultExpiresDay
!=
null
&&
defaultExpiresDay
>
0
){
validDay
=
defaultExpiresDay
;
}
if
(
component
!=
null
)
{
validDay
=
component
.
getValidDay
();
codeBeanFromRule
.
setShowImg
(
component
.
getShowImg
());
...
...
src/main/java/com/neotel/smfcore/core/device/bean/BoxStatusBean.java
查看文件 @
9f60253
...
...
@@ -160,7 +160,7 @@ public class BoxStatusBean {
if
(
ObjectUtil
.
isNotEmpty
(
ar
))
{
String
[]
ar2
=
ar
.
split
(
"="
);
if
(
ar2
.
length
==
2
)
{
caMap
.
put
(
ar2
[
0
],
Integer
.
valueOf
(
ar2
[
1
]));
caMap
.
put
(
ar2
[
0
]
.
toUpperCase
()
,
Integer
.
valueOf
(
ar2
[
1
]));
}
}
}
...
...
src/main/java/com/neotel/smfcore/core/device/enums/OP_STATUS.java
查看文件 @
9f60253
...
...
@@ -40,10 +40,10 @@ public enum OP_STATUS {
*/
END
,
/**
* 已从仓位中取出
*/
OUTBOX
,
//
/**
//
* 已从仓位中取出
//
*/
//
OUTBOX,
/**
* 在线体上
*/
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
查看文件 @
9f60253
...
...
@@ -632,7 +632,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
* @param posId
* @param exTime
*/
pr
ivate
void
updatePosExecuteTime
(
String
posId
,
double
exTime
)
{
pr
otected
void
updatePosExecuteTime
(
String
posId
,
double
exTime
)
{
if
(
posId
==
null
||
exTime
<=
0
)
{
return
;
}
...
...
@@ -653,7 +653,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
/**
* 入仓位完成
*/
pr
ivate
void
updatePutInData
(
DataLog
task
)
throws
ValidateException
{
pr
otected
void
updatePutInData
(
DataLog
task
)
throws
ValidateException
{
//从队列里面移除操作
taskService
.
removeQueueTask
(
task
);
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/RobotBoxHandler.java
查看文件 @
9f60253
...
...
@@ -7,7 +7,10 @@ import com.google.common.collect.Maps;
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.core.barcode.bean.CodeBean
;
import
com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.device.bean.BoxStatusBean
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
com.neotel.smfcore.core.device.enums.BOX_STATUS
;
...
...
@@ -26,6 +29,7 @@ import io.swagger.annotations.ApiOperation;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.RestController
;
...
...
@@ -173,7 +177,7 @@ public class RobotBoxHandler extends BaseDeviceHandler {
}
else
if
(
BOX_STATUS
.
IN_FAILED
==
status
)
{
//入库失败
//暂不处理
}
else
if
(
BOX_STATUS
.
OUT_FINISHED
==
status
)
{
//出仓完成
finishedOutPos
(
statusBean
.
getCid
(),
posName
,
barcode
,
executeTime
);
finishedOutPos
(
statusBean
.
getCid
(),
posName
,
barcode
,
executeTime
,
OP_STATUS
.
OUT_BOX
);
}
else
if
(
BOX_STATUS
.
OUT_END
==
status
)
{
//出库完成(放到仓门口
//更改出库状态为OUT_DOOR
List
<
DataLog
>
finishedTasks
=
taskService
.
getFinishedTasks
();
...
...
@@ -230,6 +234,9 @@ public class RobotBoxHandler extends BaseDeviceHandler {
String
lastPosId
=
""
;
String
lineMsg
=
""
;
log
.
info
(
"流水线["
+
cids
+
"]获取["
+
code
+
"]的入库库位"
);
if
(
ObjectUtil
.
isEmpty
(
cids
)){
cids
=
""
;
}
String
[]
cidArray
=
cids
.
split
(
","
);
Map
<
String
,
Object
>
resultMap
=
Maps
.
newHashMap
();
String
okMsg
=
""
;
...
...
@@ -262,6 +269,10 @@ public class RobotBoxHandler extends BaseDeviceHandler {
try
{
Barcode
barcode
=
codeResolve
.
resolveOneValideBarcode
(
code
);
for
(
DataLog
dataLog
:
taskService
.
getQueueTasks
())
{
//已取消或已完成的任务不返回
if
(
dataLog
.
isFinished
()||
dataLog
.
isCancel
()){
continue
;
}
if
(
dataLog
.
getBarcode
().
equals
(
barcode
.
getBarcode
()))
{
if
(
dataLog
.
isPutInTask
())
{
//已有入库任务
...
...
@@ -345,11 +356,12 @@ public class RobotBoxHandler extends BaseDeviceHandler {
Collection
<
DataLog
>
tasks
=
taskService
.
getAllTasks
();
for
(
DataLog
task
:
tasks
)
{
if
(
task
.
isCheckOutTask
()
&&
task
.
getStorageId
().
equals
(
pos
.
getStorageId
()))
{
if
(
!
task
.
isFinished
()
&&
!
task
.
isInRobot
()
)
{
if
(
(!
task
.
isFinished
())
&&
(!
task
.
isInRobot
())&&(!
task
.
isInLine
())
)
{
errorMsg
=
"库位["
+
pos
.
getPosName
()
+
"]所在料仓有出库任务,暂停入库"
;
lineMsg
=
errorMsg
;
resultMap
.
put
(
"result"
,
"99"
);
resultMap
.
put
(
"msg"
,
errorMsg
);
log
.
info
(
"["
+
barcode
.
getBarcode
()
+
"]分到库位["
+
pos
.
getPosName
()
+
"]所在料仓有出库任务,暂停入库"
);
return
resultMap
;
}
}
...
...
@@ -419,7 +431,7 @@ public class RobotBoxHandler extends BaseDeviceHandler {
String
barcode
=
request
.
getParameter
(
"barcode"
);
String
statusStr
=
request
.
getParameter
(
"status"
);
String
locInfo
=
request
.
getParameter
(
"locInfo"
);
log
.
debug
(
"收到
料盘["
+
barcode
+
"]更新位置指令["
+
statusStr
+
"]="
+
locInfo
);
log
.
info
(
"收到taskId["
+
taskId
+
"],
料盘["
+
barcode
+
"]更新位置指令["
+
statusStr
+
"]="
+
locInfo
);
if
(
ObjectUtil
.
isEmpty
(
locInfo
))
{
locInfo
=
statusStr
;
...
...
@@ -427,16 +439,37 @@ public class RobotBoxHandler extends BaseDeviceHandler {
DataLog
opTask
=
null
;
List
<
DataLog
>
allTasks
=
taskService
.
getAllTasks
();
for
(
DataLog
task
:
allTasks
)
{
if
(
task
.
getId
().
equals
(
taskId
)
&&
task
.
getBarcode
().
equals
(
barcode
))
{
if
(
task
.
isFinished
()){
continue
;
}
if
(
ObjectUtil
.
isNotEmpty
(
task
)&&
task
.
getId
().
equals
(
taskId
))
{
opTask
=
task
;
break
;
}
else
if
(
ObjectUtil
.
isNotEmpty
(
barcode
)
&&
task
.
getBarcode
().
equals
(
barcode
))
{
opTask
=
task
;
break
;
}
}
//如果任务为空,重新查找已完成的任务
if
(
opTask
==
null
)
{
for
(
DataLog
task
:
allTasks
)
{
if
(
ObjectUtil
.
isNotEmpty
(
task
)
&&
task
.
getId
().
equals
(
taskId
))
{
opTask
=
task
;
break
;
}
else
if
(
ObjectUtil
.
isNotEmpty
(
barcode
)
&&
task
.
getBarcode
().
equals
(
barcode
))
{
opTask
=
task
;
break
;
}
}
}
if
(
opTask
==
null
)
{
log
.
info
(
" taskId["
+
taskId
+
"],料盘["
+
barcode
+
"]更新位置指令["
+
statusStr
+
"]="
+
locInfo
+
",失败:任务不存在"
);
return
ResultBean
.
newErrorResult
(
301
,
"smfcore.task.notExist"
,
"任务不存在"
);
}
if
(
opTask
.
isFinished
())
{
log
.
info
(
" taskId["
+
taskId
+
"],料盘["
+
barcode
+
"]更新位置指令["
+
statusStr
+
"]="
+
locInfo
+
",失败:任务已完成"
);
return
ResultBean
.
newErrorResult
(
302
,
"smfcore.task.hasEnd"
,
"任务已完成"
);
}
...
...
@@ -444,7 +477,8 @@ public class RobotBoxHandler extends BaseDeviceHandler {
// return ResultBean.newErrorResult(303, "smfcore.task.hasCancel", "更新状态时{0}的出库任务[{1}]已被取消", new String[]{opTask.getBarcode(), opTask.getId()});
// }
statusStr
=
statusStr
.
toUpperCase
();
log
.
info
(
"更新料盘["
+
barcode
+
"]的任务状态["
+
opTask
.
getStatus
()
+
"="
+
opTask
.
getLocInfo
()
+
"]为["
+
statusStr
+
"="
+
locInfo
+
"]"
);
String
inouType
=
opTask
.
isCheckOutTask
()?
"出库"
:
"入库"
;
log
.
info
(
"更新料盘["
+
barcode
+
"]的["
+
inouType
+
"]任务状态["
+
opTask
.
getStatus
()
+
"="
+
opTask
.
getLocInfo
()
+
"]为["
+
statusStr
+
"="
+
locInfo
+
"]"
);
opTask
.
setStatus
(
statusStr
);
opTask
.
setLocInfo
(
locInfo
);
...
...
@@ -470,6 +504,9 @@ public class RobotBoxHandler extends BaseDeviceHandler {
if
(
opTask
.
isPutInTask
())
{
taskService
.
updateQueueTask
(
opTask
);
}
else
{
if
(
opTask
.
isFinished
())
{
taskService
.
removeQueueTask
(
opTask
);
}
taskService
.
updateFinishedTask
(
opTask
);
}
...
...
@@ -545,6 +582,55 @@ public class RobotBoxHandler extends BaseDeviceHandler {
}
@Autowired
private
CodeResolve
codeResolve
;
@ApiOperation
(
"获取条码尺寸"
)
@PostMapping
(
value
=
"/service/store/robotBox/getSize"
)
@ResponseBody
@AnonymousAccess
public
ResultBean
getSize
(
HttpServletRequest
request
)
{
try
{
String
barcodeStr
=
request
.
getParameter
(
"barcode"
);
log
.
info
(
" 获取["
+
barcodeStr
+
"]的尺寸信息"
);
Collection
<
CodeBean
>
codeBeans
=
codeResolve
.
resolveCodeStr
(
barcodeStr
,
COMPONENT_TYPE
.
COMPONENT
);
;
Barcode
barcode
=
null
;
for
(
CodeBean
codeBean
:
codeBeans
)
{
if
(
codeBean
.
isValid
())
{
if
(
barcode
!=
null
)
{
String
msg
=
"获取尺寸时找到多个有效条码"
;
return
ResultBean
.
newErrorResult
(
105
,
"smfcore.getSize.error"
,
"获取"
+
barcodeStr
+
"尺寸失败:有多个条码"
);
}
else
{
barcode
=
codeBean
.
getBarcode
();
}
}
}
if
(
barcode
==
null
)
{
return
ResultBean
.
newErrorResult
(
105
,
"smfcore.getSize.error"
,
"获取"
+
barcodeStr
+
"尺寸失败:未找到有效条码"
);
}
if
(
barcode
.
getPlateSize
()
>
0
&&
barcode
.
getHeight
()
>
0
)
{
Map
<
String
,
String
>
returnData
=
new
HashMap
<>();
returnData
.
put
(
"barcode"
,
barcode
.
getBarcode
());
returnData
.
put
(
"plateW"
,
barcode
.
getPlateSize
()
+
""
);
returnData
.
put
(
"plateH"
,
barcode
.
getHeight
()
+
""
);
return
ResultBean
.
newOkResult
(
returnData
);
}
else
{
return
ResultBean
.
newErrorResult
(
105
,
"smfcore.getSize.error"
,
"获取"
+
barcodeStr
+
"尺寸失败:未找到对应尺寸"
);
}
}
catch
(
ValidateException
e
)
{
log
.
warn
(
" 获取尺寸信息出错:"
+
e
.
getMessage
());
return
ResultBean
.
newErrorResult
(
105
,
"smfcore.getSize.error"
,
"获取尺寸信息出错:"
+
e
.
getMessage
());
}
catch
(
Exception
e
)
{
log
.
error
(
"获取尺寸信息出错"
,
e
);
return
ResultBean
.
newErrorResult
(
1
,
"smfcore.getSize.error"
,
"获取尺寸信息出错:"
+
e
.
getMessage
());
}
}
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/ThirdBoxHandler.java
查看文件 @
9f60253
...
...
@@ -3,6 +3,7 @@ package com.neotel.smfcore.core.device.handler.impl;
import
com.google.common.base.Strings
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.ReelLockPosUtil
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.device.bean.BoxStatusBean
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
...
...
@@ -154,15 +155,24 @@ public class ThirdBoxHandler extends BaseDeviceHandler{
int
status
=
boxStatus
.
getStatus
();
String
posName
=
boxStatus
.
getPosId
();
String
barcode
=
boxStatus
.
getBarcode
();
Map
<
String
,
Integer
>
posCapMap
=
boxStatus
.
getCapacity
();
int
executeTime
=
boxStatus
.
getExecuteTime
();
if
((!
Strings
.
isNullOrEmpty
(
posName
))||(!
Strings
.
isNullOrEmpty
(
barcode
)))
{
//客户端发一次完成之后,会发空的 posName,不需要处理
if
(
BOX_STATUS
.
IN_FINISHED
==
status
)
{
//入仓完成
finishedPutIn
(
statusBean
.
getCid
()
,
posName
,
barcode
,
executeTime
);
thirdBoxFinishedPutIn
(
statusBean
.
getCid
(),
posCapMap
,
posName
,
barcode
,
executeTime
);
}
else
if
(
BOX_STATUS
.
IN_FAILED
==
status
)
{
//入库失败
//暂不处理
}
else
if
(
BOX_STATUS
.
OUT_FINISHED
==
status
)
{
//出仓完成
finishedOutPos
(
statusBean
.
getCid
(),
posName
,
barcode
,
executeTime
);
}
else
if
(
BOX_STATUS
.
OUT_END
==
status
)
{
//出库完成(放到仓门口
try
{
//麦康尼料仓不发OUT_FINISHED,收到OutEnd的时候处理
finishedOutPos
(
statusBean
.
getCid
(),
posName
,
barcode
,
executeTime
,
OP_STATUS
.
OUT_BOX
);
}
catch
(
Exception
ex
){
}
//更改出库状态为OUT_DOOR
List
<
DataLog
>
finishedTasks
=
taskService
.
getFinishedTasks
();
for
(
DataLog
finishedTask
:
finishedTasks
)
{
...
...
@@ -207,6 +217,47 @@ public class ThirdBoxHandler extends BaseDeviceHandler{
}
return
statusBean
;
}
protected
void
thirdBoxFinishedPutIn
(
String
cid
,
Map
<
String
,
Integer
>
posCapMap
,
String
posName
,
String
barcode
,
int
executeTime
)
throws
ValidateException
{
DataLog
task
=
taskService
.
findExecutingTask
(
cid
,
posName
,
barcode
);
if
(
task
!=
null
&&
task
.
isPutInTask
())
{
//对比容量,更新库位号
if
(
executeTime
>
0
)
{
task
.
setExecuteTime
(
executeTime
);
updatePosExecuteTime
(
task
.
getPosName
(),
executeTime
);
}
log
.
info
(
task
.
getBarcode
()
+
"入仓位["
+
task
.
getPosName
()
+
"]完成,执行时间["
+
executeTime
+
"]秒"
);
ReelLockPosUtil
.
removeReelLockPosInfo
(
task
.
getBarcode
());
DataLog
cancelTask
=
taskService
.
findFinishedPutInTask
(
cid
,
task
.
getPosName
(),
task
.
getBarcode
());
if
(
cancelTask
!=
null
&&
cancelTask
.
isCancel
())
{
//将相同库位已经取消的任务从完成队列里删除
taskService
.
removeFinishedTask
(
cancelTask
);
log
.
info
(
"从已完成的任务列表中删除之前取消的任务:"
+
cancelTask
.
getPosName
()
+
" ReelId:"
+
cancelTask
.
getBarcode
());
}
updatePutInData
(
task
);
}
else
{
//从已完成列表中找,如果还找不到就忽略
task
=
taskService
.
findFinishedPutInTask
(
cid
,
posName
,
barcode
);
if
(
task
!=
null
&&
task
.
isPutInTask
())
{
if
(
task
.
isCancel
())
{
//被取消的任务,客户端发完成信号过来,修改取消状态为已完成
if
(
executeTime
>
0
)
{
task
.
setExecuteTime
(
executeTime
);
updatePosExecuteTime
(
task
.
getPosName
(),
executeTime
);
}
log
.
info
(
task
.
getBarcode
()
+
"入仓位["
+
task
.
getPosName
()
+
"]完成,但任务已被取消,修改为完成,执行时间["
+
executeTime
+
"]秒"
);
updatePutInData
(
task
);
}
}
else
{
log
.
error
(
cid
+
"入仓位["
+
posName
+
"]ReelId["
+
barcode
+
"]完成时任务不存在"
);
}
}
}
@Override
public
DeviceType
getDeviceType
()
{
return
DeviceType
.
SMDBOX_THIRD
;
...
...
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
查看文件 @
9f60253
...
...
@@ -104,6 +104,8 @@ public class DataCache {
@PostConstruct
public
void
initialize
()
{
settings
=
getSettings
();
Integer
caWarn
=
getCache
(
Constants
.
CACHE_CapacityWarn
);
codeResolve
.
updateExpiresDay
(
caWarn
);
initCacheItem
();
}
...
...
@@ -163,6 +165,9 @@ public class DataCache {
List
<
String
>
ruleList
=
(
List
<
String
>)
value
;
codeResolve
.
updateBarcodeRuleList
(
ruleList
);
}
if
(
cacheKey
.
equals
(
Constants
.
CACHE_ExpiresDay
)){
codeResolve
.
updateExpiresDay
((
Integer
)
value
);
}
log
.
info
(
"updateCache ["
+
cacheKey
+
"]=["
+
value
+
"]"
);
}
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/StoragePosController.java
查看文件 @
9f60253
...
...
@@ -31,6 +31,7 @@ import com.neotel.smfcore.core.storage.service.po.Storage;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.custom.siemens.SiemensApi
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
...
...
@@ -239,6 +240,27 @@ public class StoragePosController {
return
ResultBean
.
newOkResult
(
""
);
}
@ApiOperation
(
"批量启用或禁用库位"
)
@PutMapping
(
"/batchEnabledOrDisabledPos"
)
@PreAuthorize
(
"@el.check('storagePos:edit')"
)
public
ResultBean
batchEnabledOrDisabledPos
(
@RequestBody
StoragePosEnabledDto
enabledDto
)
{
List
<
String
>
idList
=
enabledDto
.
getIdList
();
if
(
idList
==
null
||
idList
.
isEmpty
())
{
return
ResultBean
.
newErrorResult
(
1
,
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
});
}
storagePosManager
.
batchUpdatePosEnabled
(
idList
,
enabledDto
.
isEnabled
());
//查询库位具体信息,更新缓存
List
<
StoragePos
>
posList
=
storagePosManager
.
findPosByIdList
(
idList
);
for
(
StoragePos
pos
:
posList
)
{
dataCache
.
updateDisablePos
(
pos
);
log
.
info
(
"启用或禁用库位:库位号["
+
pos
.
getId
()
+
"]["
+
pos
.
getPosName
()
+
"]="
+
enabledDto
.
isEnabled
());
DeviceMessageUtil
.
addEnabledPosMessage
(
pos
,
SecurityUtils
.
getCurrentUsername
());
}
for
(
Storage
storage
:
dataCache
.
getAllStorage
().
values
())
{
dataCache
.
reloadStorage
(
storage
,
storage
.
getCid
());
}
return
ResultBean
.
newOkResult
(
""
);
}
@ApiOperation
(
"修改库位"
)
@PutMapping
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/dto/StoragePosEnabledDto.java
查看文件 @
9f60253
...
...
@@ -5,6 +5,7 @@ import lombok.Getter;
import
lombok.Setter
;
import
java.io.Serializable
;
import
java.util.List
;
@Getter
@Setter
...
...
@@ -12,6 +13,9 @@ public class StoragePosEnabledDto implements Serializable {
@ApiModelProperty
(
"库位ID"
)
private
String
id
;
@ApiModelProperty
(
"库位ID列表"
)
private
List
<
String
>
idList
;
@ApiModelProperty
(
"启用/禁用"
)
private
boolean
enabled
=
true
;
}
src/main/java/com/neotel/smfcore/core/storage/service/manager/IStoragePosManager.java
查看文件 @
9f60253
...
...
@@ -74,4 +74,8 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
List
<
StoragePos
>
findDisabled
();
StoragePos
getEmptyWarmPos
(
Storage
storage
,
Barcode
barcode
,
Collection
<
String
>
excludePosIds
)
throws
ValidateException
;
void
batchUpdatePosEnabled
(
List
<
String
>
idList
,
boolean
enabled
);
List
<
StoragePos
>
findPosByIdList
(
List
<
String
>
idList
);
}
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
查看文件 @
9f60253
...
...
@@ -622,4 +622,18 @@ public class StoragePosManagerImpl implements IStoragePosManager {
return
getEmptyPos
(
storage
,
barcode
,
excludePosIds
,
true
);
}
@Override
public
void
batchUpdatePosEnabled
(
List
<
String
>
idList
,
boolean
enabled
)
{
Query
query
=
new
Query
(
Criteria
.
where
(
"id"
).
in
(
idList
));
Update
update
=
new
Update
();
update
.
set
(
"enabled"
,
enabled
);
storagePosDao
.
updateMulti
(
query
,
update
);
}
@Override
public
List
<
StoragePos
>
findPosByIdList
(
List
<
String
>
idList
)
{
Query
query
=
new
Query
(
Criteria
.
where
(
"id"
).
in
(
idList
));
return
storagePosDao
.
findByQuery
(
query
);
}
}
src/main/java/com/neotel/smfcore/core/system/rest/SettingsController.java
查看文件 @
9f60253
...
...
@@ -72,10 +72,14 @@ public class SettingsController {
boolean
stopOut
=
dataCache
.
getCache
(
Constants
.
CACHE_StopOut
);
boolean
startJob
=
dataCache
.
getCache
(
Constants
.
CACHE_StartJob
);
Integer
sluggishDay
=
dataCache
.
getCache
(
Constants
.
CACHE_SluggishDay
);
Integer
expiresDay
=
dataCache
.
getCache
(
Constants
.
CACHE_ExpiresDay
);
Integer
caWarn
=
dataCache
.
getCache
(
Constants
.
CACHE_CapacityWarn
);
SysSettingsDto
dto
=
new
SysSettingsDto
();
dto
.
setStartJob
(
startJob
);
dto
.
setStopOut
(
stopOut
);
dto
.
setSluggishDay
(
sluggishDay
);
dto
.
setExpiresDay
(
expiresDay
);
dto
.
setCapacityWarn
(
caWarn
);
return
dto
;
}
...
...
@@ -86,7 +90,10 @@ public class SettingsController {
dataCache
.
updateCache
(
Constants
.
CACHE_StopOut
,
sysSettingsDto
.
isStopOut
());
dataCache
.
updateCache
(
Constants
.
CACHE_StartJob
,
sysSettingsDto
.
isStartJob
());
dataCache
.
updateCache
(
Constants
.
CACHE_SluggishDay
,
sysSettingsDto
.
getSluggishDay
());
log
.
info
(
"更改系统设置:stopout="
+
sysSettingsDto
.
isStopOut
()
+
",stopjob="
+
sysSettingsDto
.
isStartJob
()+
",sluggishDay="
+
sysSettingsDto
.
getSluggishDay
());
dataCache
.
updateCache
(
Constants
.
CACHE_ExpiresDay
,
sysSettingsDto
.
getExpiresDay
());
dataCache
.
updateCache
(
Constants
.
CACHE_CapacityWarn
,
sysSettingsDto
.
getCapacityWarn
());
log
.
info
(
"更改系统设置:stopout="
+
sysSettingsDto
.
isStopOut
()
+
",stopjob="
+
sysSettingsDto
.
isStartJob
()+
",sluggishDay="
+
sysSettingsDto
.
getSluggishDay
()
+
",expiresDay="
+
sysSettingsDto
.
getExpiresDay
()+
",capacityWarn="
+
sysSettingsDto
.
getCapacityWarn
());
return
ResultBean
.
newOkResult
(
"保存成功"
);
}
...
...
src/main/java/com/neotel/smfcore/core/system/rest/bean/dto/SysSettingsDto.java
查看文件 @
9f60253
...
...
@@ -18,4 +18,10 @@ public class SysSettingsDto implements Serializable {
@ApiModelProperty
(
"呆滞天数"
)
private
Integer
sluggishDay
=
0
;
@ApiModelProperty
(
"过期天数"
)
private
Integer
expiresDay
=
0
;
@ApiModelProperty
(
"容量预警"
)
private
Integer
capacityWarn
=
0
;
}
src/main/java/com/neotel/smfcore/core/system/service/po/DataLog.java
查看文件 @
9f60253
...
...
@@ -267,12 +267,15 @@ public class DataLog extends BasePo implements Serializable {
}
public
boolean
isOutBox
(){
return
OP_STATUS
.
OUTBOX
.
name
().
equals
(
status
);
return
OP_STATUS
.
OUT
_
BOX
.
name
().
equals
(
status
);
}
public
boolean
isInRobot
(){
return
OP_STATUS
.
INROBOT
.
name
().
equals
(
status
);
}
public
boolean
isInLine
(){
return
OP_STATUS
.
INLINE
.
name
().
equals
(
status
);
}
public
boolean
isBoxdoor
(){
return
OP_STATUS
.
BOXDOOR
.
name
().
equals
(
status
)
||
OP_STATUS
.
BOXDOOR_NOREEL
.
equals
(
status
);
}
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/bean/dto/SBDHViewDto.java
查看文件 @
9f60253
...
...
@@ -38,4 +38,8 @@ public class SBDHViewDto implements Serializable {
@ApiModelProperty
(
"出入库报表"
)
private
List
<
ChartItem
>
chartItems
;
@ApiModelProperty
(
"容量预警"
)
private
Integer
capacityWarn
=
0
;
}
src/main/java/com/neotel/smfcore/custom/micron1053/controller/MicronStatusController.java
查看文件 @
9f60253
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
controller
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.DateUtil
;
import
com.neotel.smfcore.core.device.bean.BoxStatusBean
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
...
...
@@ -196,6 +197,8 @@ public class MicronStatusController {
dto
.
setChartItems
(
chartItemMap
.
values
().
stream
().
collect
(
Collectors
.
toList
()));
dto
.
setTodayCounts
(
todayCounts
);
Integer
caWarn
=
dataCache
.
getCache
(
Constants
.
CACHE_CapacityWarn
);
dto
.
setCapacityWarn
(
caWarn
);
return
dto
;
}
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论