Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 11a719d7
由
sunke
编写于
2022-08-09 16:33:55 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
Http请求时添加UTF-8编码
泰治状态修正
1 个父辈
bc987b9c
全部展开
显示空白字符变更
内嵌
并排
正在显示
28 个修改的文件
包含
323 行增加
和
66 行删除
src/main/java/com/neotel/smfcore/common/bean/ResultBean.java
src/main/java/com/neotel/smfcore/common/init/MainTimer.java
src/main/java/com/neotel/smfcore/common/utils/HttpHelper.java
src/main/java/com/neotel/smfcore/common/utils/JsonUtil.java
src/main/java/com/neotel/smfcore/core/device/bean/StatusBean.java
src/main/java/com/neotel/smfcore/core/device/enums/BOX_STATUS.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/NLPShelfHandler.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/RobotBoxHandler.java
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
src/main/java/com/neotel/smfcore/core/kanban/rest/BoxKanbanController.java
src/main/java/com/neotel/smfcore/core/message/util/DeviceMessageUtil.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialController.java
src/main/java/com/neotel/smfcore/core/storage/rest/query/StoragePosFindCriteria.java
src/main/java/com/neotel/smfcore/core/system/api/APIUtil.java
src/main/java/com/neotel/smfcore/core/system/api/DefaultSMFListener.java
src/main/java/com/neotel/smfcore/core/system/api/ISMFListener.java
src/main/java/com/neotel/smfcore/core/system/service/po/DataLog.java
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
src/main/java/com/neotel/smfcore/panacim/PanaApiController.java
src/main/java/com/neotel/smfcore/taizhi/TaiZhiApi.java
src/main/java/com/neotel/smfcore/taizhi/TaiZhiConfig.java
src/main/java/com/neotel/smfcore/taizhi/TaiZhiRestController.java
src/main/resources/config/application-prod.yml
src/main/resources/config/application.yml
src/main/java/com/neotel/smfcore/common/bean/ResultBean.java
查看文件 @
11a719d
...
...
@@ -8,6 +8,7 @@ import lombok.Data;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.apache.logging.log4j.util.Strings
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
java.util.Locale
;
...
...
@@ -33,8 +34,10 @@ public class ResultBean<T> {
result
.
setParams
(
params
);
result
.
setMsg
(
MessageUtils
.
getText
(
msgKey
,
params
,
new
Locale
(
SecurityUtils
.
getCurrentUserLanguage
()),
msg
));
if
(
writeLog
)
{
if
(
Strings
.
isNotBlank
(
result
.
getMsg
())){
log
.
info
(
result
.
getMsg
());
}
}
return
result
;
}
public
static
ResultBean
newOkResult
(
String
msgKey
,
String
msg
,
Object
data
)
{
...
...
src/main/java/com/neotel/smfcore/common/init/MainTimer.java
查看文件 @
11a719d
...
...
@@ -45,13 +45,21 @@ public class MainTimer {
log
.
info
(
"开始加载未完成的任务..."
);
List
<
DataLog
>
unExecuteTasks
=
dataLogManager
.
findUnFinishedTasks
();
for
(
DataLog
unExecuteTask
:
unExecuteTasks
)
{
if
(
unExecuteTask
.
isExecuting
()
||
unExecuteTask
.
isWait
())
{
try
{
if
(
unExecuteTask
.
isPutInTask
()){
//入库
taskService
.
addTaskToExecute
(
unExecuteTask
);
}
else
{
if
(
unExecuteTask
.
isWait
()
||
unExecuteTask
.
isExecuting
()){
taskService
.
addTaskToExecute
(
unExecuteTask
);
}
else
{
taskService
.
updateFinishedTask
(
unExecuteTask
);
}
}
}
catch
(
Exception
e
){
log
.
error
(
"初始化任务["
+
unExecuteTask
+
"]出错:"
+
e
);
}
}
}
log
.
info
(
"加载未完成的任务完成,共["
+
unExecuteTasks
.
size
()
+
"]条数据..."
);
}
...
...
src/main/java/com/neotel/smfcore/common/utils/HttpHelper.java
查看文件 @
11a719d
...
...
@@ -38,10 +38,10 @@ public class HttpHelper {
ObjectMapper
mapper
=
new
ObjectMapper
();
try
{
String
requestBody
=
mapper
.
writeValueAsString
(
params
);
httpPost
.
setEntity
(
new
StringEntity
(
requestBody
));
httpPost
.
setEntity
(
new
StringEntity
(
requestBody
,
"utf-8"
));
}
catch
(
JsonProcessingException
e
)
{
throw
new
ApiException
(
"Request params to ["
+
url
+
"] failed:"
+
e
.
getMessage
());
}
catch
(
UnsupportedEncoding
Exception
e
)
{
}
catch
(
Exception
e
)
{
throw
new
ApiException
(
"Request params to ["
+
url
+
"] failed:"
+
e
.
getMessage
());
}
}
...
...
src/main/java/com/neotel/smfcore/common/utils/JsonUtil.java
0 → 100644
查看文件 @
11a719d
package
com
.
neotel
.
smfcore
.
common
.
utils
;
import
com.fasterxml.jackson.databind.DeserializationFeature
;
import
com.fasterxml.jackson.databind.JavaType
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Slf4j
public
class
JsonUtil
{
// 定义jackson对象
private
static
final
ObjectMapper
MAPPER
=
new
ObjectMapper
();
static
{
MAPPER
.
configure
(
DeserializationFeature
.
FAIL_ON_UNKNOWN_PROPERTIES
,
false
);
}
/**
* 将对象转换成json字符串。
* <p>Title: pojoToJson</p>
* <p>Description: </p>
* @param data
* @return
*/
public
static
String
toJsonStr
(
Object
data
)
{
try
{
String
string
=
MAPPER
.
writeValueAsString
(
data
);
return
string
;
}
catch
(
Exception
e
)
{
log
.
info
(
"转换JSON字符串出错:"
,
e
);
}
return
null
;
}
/**
* 将json结果集转化为对象
*
* @param jsonStr json数据
* @param beanType 对象中的object类型
* @return
*/
public
static
<
T
>
T
toObj
(
String
jsonStr
,
Class
<
T
>
beanType
)
{
try
{
T
t
=
MAPPER
.
readValue
(
jsonStr
,
beanType
);
return
t
;
}
catch
(
Exception
e
)
{
log
.
info
(
jsonStr
+
"转换对象出错:"
,
e
);
}
return
null
;
}
/**
* 将json数据转换成对象list
* <p>Title: jsonToList</p>
* <p>Description: </p>
* @param jsonStr
* @param beanType
* @return
*/
public
static
<
T
>
List
<
T
>
toList
(
String
jsonStr
,
Class
<
T
>
beanType
)
{
JavaType
javaType
=
MAPPER
.
getTypeFactory
().
constructParametricType
(
List
.
class
,
beanType
);
try
{
List
<
T
>
list
=
MAPPER
.
readValue
(
jsonStr
,
javaType
);
return
list
;
}
catch
(
Exception
e
)
{
log
.
info
(
jsonStr
+
"转换List出错:"
,
e
);
}
return
new
ArrayList
<>();
}
public
static
Map
<
String
,
Object
>
toMap
(
String
jsonStr
){
//JavaType javaType = MAPPER.getTypeFactory().constructParametricType(HashMap.class, String.class, String.class);
try
{
//Map<String, String> map = MAPPER.readValue(jsonStr, javaType);
Map
<
String
,
Object
>
map
=
MAPPER
.
readValue
(
jsonStr
,
Map
.
class
);
return
map
;
}
catch
(
Exception
e
)
{
log
.
info
(
jsonStr
+
"转换Map出错:"
,
e
);
}
return
new
HashMap
<>();
}
}
src/main/java/com/neotel/smfcore/core/device/bean/StatusBean.java
查看文件 @
11a719d
...
...
@@ -414,4 +414,33 @@ public class StatusBean {
}
}
public
int
getTaiZhiStatus
(){
int
taiZhiStatus
=
0
;
if
(
boxStatus
!=
null
){
Collection
<
BoxStatusBean
>
boxList
=
boxStatus
.
values
();
for
(
BoxStatusBean
theBox
:
boxList
)
{
int
theStatus
=
theBox
.
getStatus
();
//设备状态:0:离线;1:空闲;2:急停;3:故障;4:工作中;5:调试中
if
(
theStatus
==
1
){
taiZhiStatus
=
1
;
}
else
if
(
theStatus
==
2
){
taiZhiStatus
=
2
;
}
else
if
(
theStatus
==
3
||
theStatus
==
4
){
taiZhiStatus
=
3
;
}
else
if
(
theStatus
==
5
){
taiZhiStatus
=
5
;
}
else
if
(
theStatus
>=
6
&&
theStatus
<=
11
){
taiZhiStatus
=
4
;
}
break
;
}
}
if
(!
Strings
.
isNullOrEmpty
(
getMsg
())
&&
taiZhiStatus
!=
2
){
taiZhiStatus
=
3
;
}
return
taiZhiStatus
;
}
}
src/main/java/com/neotel/smfcore/core/device/enums/BOX_STATUS.java
查看文件 @
11a719d
...
...
@@ -104,4 +104,9 @@ public class BOX_STATUS {
* 22 搅拌完成放回原来的仓中
*/
public
final
static
int
MIX_END
=
22
;
/**
* 23出库失败(放到料仓门口后,未检测到有料盘)
*/
public
final
static
int
OUT_FAILED
=
23
;
}
src/main/java/com/neotel/smfcore/core/device/enums/OP_STATUS.java
查看文件 @
11a719d
...
...
@@ -35,6 +35,10 @@ public enum OP_STATUS {
*/
END
,
/**
* 已从仓位中取出
*/
OUTBOX
,
/**
* 机器人正在移栽中
*/
INROBOT
,
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
查看文件 @
11a719d
...
...
@@ -43,6 +43,7 @@ import com.neotel.smfcore.core.system.service.po.Humiture;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.security.service.manager.IGroupManager
;
import
com.neotel.smfcore.taizhi.TaiZhiApi
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -224,7 +225,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
}
}
ReelLockPosUtil
.
removeReelLockPosInfo
(
barcodeSave
.
getBarcode
());
//
ReelLockPosUtil.removeReelLockPosInfo(barcodeSave.getBarcode());
return
taskService
.
addPutInTaskToExecute
(
storage
,
barcodeSave
,
storagePos
);
}
}
...
...
@@ -316,7 +317,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
/**
* 从API接口验证条码是否可以入库
*/
p
rotected
Barcode
verifyPutInFromApi
(
Barcode
barcode
)
throws
ValidateException
{
p
ublic
Barcode
verifyPutInFromApi
(
Barcode
barcode
)
throws
ValidateException
{
for
(
IOpAuthApi
opAuthApi
:
opAuthApiList
)
{
Barcode
responseBarcode
=
opAuthApi
.
canPutIn
(
barcode
);
if
(
responseBarcode
!=
null
){
...
...
@@ -498,7 +499,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
updatePosExecuteTime
(
posName
,
executeTime
);
}
log
.
info
(
task
.
getBarcode
()
+
"入仓位["
+
task
.
getPosName
()
+
"]完成,执行时间["
+
executeTime
+
"]秒"
);
ReelLockPosUtil
.
removeReelLockPosInfo
(
task
.
getBarcode
());
//
ReelLockPosUtil.removeReelLockPosInfo(task.getBarcode());
DataLog
cancelTask
=
taskService
.
findFinishedTask
(
cid
,
posName
);
if
(
cancelTask
!=
null
&&
cancelTask
.
isCancel
())
{
//将相同库位已经取消的任务从完成队列里删除
...
...
@@ -665,7 +666,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
log
.
warn
(
"任务:"
+
task
.
getId
()
+
" 仓位:"
+
task
.
getPosId
()
+
" 的 Barcode 为null, 之前可能处理过,结束任务后直接返回"
);
//记录日志
task
.
setStatus
(
OP_STATUS
.
FINISHED
.
name
());
task
.
setStatus
(
OP_STATUS
.
OUTBOX
.
name
());
taskService
.
updateFinishedTask
(
task
);
return
;
}
...
...
@@ -696,7 +697,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
dataCache
.
updateInventory
(
storagePos
,
barcode
);
//记录日志
task
.
setStatus
(
OP_STATUS
.
FINISHED
.
name
());
task
.
setStatus
(
OP_STATUS
.
OUTBOX
.
name
());
taskService
.
updateFinishedTask
(
task
);
}
...
...
@@ -748,6 +749,9 @@ public class BaseDeviceHandler implements IDeviceHandler {
}
else
{
needSaveToMongo
=
statusBean
.
needSaveToMongo
();
}
if
(
statusBean
.
getTaiZhiStatus
()
!=
statusBeanToSave
.
getTaiZhiStatus
()){
TaiZhiApi
.
deviceStatusChange
(
statusBeanToSave
.
getCid
(),
statusBeanToSave
.
getTaiZhiStatus
());
}
statusBean
.
setTime
(
System
.
currentTimeMillis
());
Map
<
String
,
BoxStatusBean
>
statusOfBoxes
=
statusBeanToSave
.
getBoxStatus
();
...
...
@@ -769,12 +773,14 @@ public class BaseDeviceHandler implements IDeviceHandler {
if
(
statusOfBoxes
!=
null
)
{
for
(
BoxStatusBean
boxStatus
:
statusOfBoxes
.
values
())
{
String
humidity
=
boxStatus
.
getHumidity
();
String
temperature
=
boxStatus
.
getTemperature
();
if
(
needSaveToMongo
)
{
TaiZhiApi
.
tempEnv
(
cid
,
temperature
,
humidity
);
//保存温湿度到数据库
Humiture
humiture
=
new
Humiture
();
humiture
.
setCid
(
cid
);
String
humidity
=
boxStatus
.
getHumidity
();
String
temperature
=
boxStatus
.
getTemperature
();
if
(!
Strings
.
isNullOrEmpty
(
humidity
)
&&
!
Strings
.
isNullOrEmpty
(
temperature
))
{
humiture
.
setHumidity
(
humidity
);
humiture
.
setTemperature
(
temperature
);
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLPShelfHandler.java
查看文件 @
11a719d
...
...
@@ -179,7 +179,6 @@ public class NLPShelfHandler extends BaseDeviceHandler{
return
null
;
}
@Override
public
StatusBean
handleClientRequest
(
StatusBean
statusBean
,
HttpServletRequest
request
)
{
statusBean
.
setClientIp
(
request
.
getRemoteHost
());
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/RobotBoxHandler.java
查看文件 @
11a719d
此文件的差异被折叠,
点击展开。
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
查看文件 @
11a719d
...
...
@@ -666,13 +666,12 @@ public class DataCache {
if
(
storage
.
getType
().
equals
(
deviceType
.
name
()))
{
StatusBean
bean
=
DevicesStatusUtil
.
getStatusBean
(
storage
.
getCid
());
if
(
bean
==
null
||
bean
.
timeOut
())
{
if
(
bean
==
null
||
bean
.
timeOut
()
||
bean
.
isAvailable
()
)
{
continue
;
}
if
(
bean
.
getStatus
()
==
1
)
{
//
if (bean.getStatus() == 1) {
availableStorageIds
.
add
(
storage
.
getId
());
}
//}
}
}
return
availableStorageIds
;
...
...
src/main/java/com/neotel/smfcore/core/kanban/rest/BoxKanbanController.java
查看文件 @
11a719d
...
...
@@ -128,8 +128,7 @@ public class BoxKanbanController {
}
List
<
DataLog
>
allTasks
=
taskService
.
getAllTasks
();
List
<
BoxTaskDto
>
dtos
=
new
ArrayList
<>();
for
(
DataLog
datalog
:
allTasks
)
{
for
(
DataLog
datalog
:
allTasks
)
{
//判断类型
if
(
criteria
.
getType
()
!=
null
&&
(!
criteria
.
getType
().
equals
(
datalog
.
getType
())))
{
continue
;
...
...
@@ -150,12 +149,12 @@ public class BoxKanbanController {
Date
lastUpdateTime
=
new
Date
((
new
Date
().
getTime
())
-
10
*
60
*
1000
);
//正常
if
(
criteria
.
getTaskStatus
()
==
1
)
{
if
(
lastUpdateTime
.
before
(
datalog
.
getUpdateDate
())
&&
datalog
.
getStatus
().
equals
(
OP_STATUS
.
EXECUTING
.
name
())
)
{
if
(
lastUpdateTime
.
before
(
datalog
.
getUpdateDate
()))
{
statusOk
=
true
;
}
}
//异常
else
if
(
criteria
.
getTaskStatus
()
==
2
)
{
if
(
lastUpdateTime
.
after
(
datalog
.
getUpdateDate
())
&&
datalog
.
getStatus
().
equals
(
OP_STATUS
.
EXECUTING
.
name
()))
{
if
(
lastUpdateTime
.
after
(
datalog
.
getUpdateDate
())
&&
!
datalog
.
getStatus
().
equals
(
OP_STATUS
.
WAIT
.
name
()))
{
statusOk
=
true
;
}
}
//等待
...
...
@@ -396,14 +395,14 @@ public class BoxKanbanController {
int
allcount
=
0
;
int
waitCount
=
0
;
for
(
DataLog
data
:
allTasks
)
{
if
(
data
.
isFinished
()
||
data
.
isCancel
())
{
continue
;
}
//
if (data.isFinished() || data.isCancel()) {
//
continue;
//
}
if
(
data
.
isWait
()){
waitCount
++;
}
//超过10分钟未更新为异常
else
if
(
data
.
isAbnormal
()
)
{
else
if
(
data
.
isAbnormal
())
{
abnormal
++;
}
else
{
normal
++;
...
...
@@ -463,7 +462,7 @@ public class BoxKanbanController {
String
temperature
=
boxStatus
.
getTemperature
();
boxDto
.
setHumidity
(
humidity
);
boxDto
.
setTemperature
(
temperature
);
boxDto
.
setStatus
(
b
ean
.
getStatus
());
boxDto
.
setStatus
(
b
oxStatus
.
getStatus
());
boxDto
.
setMsg
(
bean
.
getShowMsg
(
locale
));
boxDto
.
setBarcode
(
bean
.
getCode
());
boxDto
.
setPosName
(
bean
.
getPosId
());
...
...
src/main/java/com/neotel/smfcore/core/message/util/DeviceMessageUtil.java
查看文件 @
11a719d
...
...
@@ -8,10 +8,14 @@ import com.neotel.smfcore.core.message.service.manager.IMessageManager;
import
com.neotel.smfcore.core.message.service.po.Message
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.taizhi.TaiZhiApi
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.List
;
@Slf4j
@Component
public
class
DeviceMessageUtil
{
...
...
@@ -63,6 +67,8 @@ public class DeviceMessageUtil {
}
Message
message
=
Message
.
newMsg
(
MessageType
.
ERROR
,
storage
.
getName
(),
storage
.
getId
(),
moudle
,
code
,
msg
,
msgParam
);
messageManager
.
save
(
message
);
TaiZhiApi
.
onDeviceAlarm
(
cid
,
msg
);
}
}
...
...
@@ -79,7 +85,8 @@ public class DeviceMessageUtil {
Storage
storage
=
dataCache
.
getStorage
(
cid
);
if
(
storage
!=
null
)
{
Message
message
=
Message
.
newMsg
(
MessageType
.
INFO
,
storage
.
getName
(),
storage
.
getId
(),
moudle
,
"smfcore.messages.offline"
,
"离线"
,
null
);
Message
message
=
Message
.
newMsg
(
MessageType
.
ERROR
,
storage
.
getName
(),
storage
.
getId
(),
moudle
,
"smfcore.messages.offline"
,
"离线"
,
null
);
TaiZhiApi
.
deviceStatusChange
(
cid
,
0
);
messageManager
.
save
(
message
);
}
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
11a719d
...
...
@@ -27,6 +27,7 @@ import com.neotel.smfcore.core.system.bean.MSDAppendInfo;
import
com.neotel.smfcore.core.system.listener.ITaskListener
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.taizhi.TaiZhiApi
;
import
javafx.concurrent.Task
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -146,7 +147,6 @@ public class LiteOrderCache implements ITaskListener {
}
}
public
ResultBean
checkOutOrder
(
LiteOrder
liteOrder
)
throws
ValidateException
{
ORDER_COLOR
nextColor
=
getNextColor
();
...
...
@@ -280,6 +280,7 @@ public class LiteOrderCache implements ITaskListener {
}
liteOrderManager
.
save
(
order
);
liteOrderMap
.
put
(
orderNo
,
order
);
TaiZhiApi
.
orderStatusChange
(
order
);
}
else
{
log
.
error
(
"完成任务时,未找到工单["
+
orderNo
+
"]信息"
);
}
...
...
@@ -332,6 +333,7 @@ public class LiteOrderCache implements ITaskListener {
}
log
.
info
(
"开始执行工单["
+
orderNo
+
"] outBom="
+
outBom
);
TaiZhiApi
.
orderStatusChange
(
cacheOrder
);
cacheOrder
.
setTaskReelCount
(
0
);
cacheOrder
.
setTaskFinishedTime
(-
1
);
cacheOrder
.
setFinishedReelCount
(
0
);
...
...
@@ -393,6 +395,10 @@ public class LiteOrderCache implements ITaskListener {
task
.
setSubSourceId
(
orderItem
.
getId
());
task
.
setSubSourceInfo
(
orderItem
.
getFeederInfo
());
task
.
setType
(
OP
.
CHECKOUT
);
//jobType 任务种类:M 常规发料;P 改机发料(优先级最高)
if
(
cacheOrder
.
getJobType
().
equals
(
"P"
)){
task
.
setUrgentReel
(
true
);
}
task
.
setLightColor
(
nextColor
.
getRgb
());
task
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
// task = dataLogDao.save(task);
...
...
@@ -429,9 +435,9 @@ public class LiteOrderCache implements ITaskListener {
*/
public
Collection
<
String
>
excludePosIds
()
{
//排除掉正在执行的仓位
List
<
DataLog
>
allTasks
=
taskService
.
getAll
Tasks
();
Collection
<
DataLog
>
queueTasks
=
taskService
.
getQueue
Tasks
();
Collection
<
String
>
operatingPosIds
=
new
HashSet
<>();
for
(
DataLog
task
:
all
Tasks
)
{
for
(
DataLog
task
:
queue
Tasks
)
{
String
posId
=
task
.
getPosId
();
if
(!
Strings
.
isNullOrEmpty
(
posId
))
{
operatingPosIds
.
add
(
task
.
getPosId
());
...
...
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
查看文件 @
11a719d
...
...
@@ -94,6 +94,11 @@ public class LiteOrder extends BasePo implements Serializable {
private
float
orderTimes
=
1
f
;
/**
* 任务类型
*/
private
String
jobType
=
""
;
/**
* 工单类型,默认1=PN,2=RI
*/
private
int
type
=
1
;
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialController.java
查看文件 @
11a719d
...
...
@@ -139,7 +139,7 @@ public class MaterialController {
@ApiOperation
(
"物料分组界面"
)
@GetMapping
(
"/labelOuput"
)
@PreAuthorize
(
"@el.check('labelOuput')"
)
public
PageData
<
StoragePosDto
>
storagePosFind
(
StoragePosFindCriteria
criteria
,
Pageable
pageable
,
HttpServletRequest
request
)
{
public
PageData
<
StoragePosDto
>
labelOuput
(
StoragePosFindCriteria
criteria
,
Pageable
pageable
,
HttpServletRequest
request
)
{
if
(
ObjectUtil
.
isEmpty
(
criteria
.
getStorageId
())
||
criteria
.
getStorageId
().
equals
(
"0"
)
){
criteria
.
setStorageId
(
null
);
}
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/query/StoragePosFindCriteria.java
查看文件 @
11a719d
...
...
@@ -12,7 +12,7 @@ import java.util.List;
@Data
public
class
StoragePosFindCriteria
{
@QueryCondition
(
blurry
=
"barcode.partNumber,barcode,posName"
)
@QueryCondition
(
blurry
=
"barcode.partNumber,barcode
.barcode
,posName"
)
private
String
blurry
;
@QueryCondition
(
type
=
QueryCondition
.
Type
.
BETWEEN
,
propName
=
"barcode.putInDate"
)
...
...
src/main/java/com/neotel/smfcore/core/system/api/APIUtil.java
0 → 100644
查看文件 @
11a719d
package
com
.
neotel
.
smfcore
.
core
.
system
.
api
;
public
class
APIUtil
{
}
src/main/java/com/neotel/smfcore/core/system/api/DefaultSMFListener.java
0 → 100644
查看文件 @
11a719d
package
com
.
neotel
.
smfcore
.
core
.
system
.
api
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.system.listener.ITaskListener
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
org.springframework.stereotype.Service
;
/**
* Created by sunke on 2021/7/12.
*/
@Service
public
class
DefaultSMFListener
implements
ISMFListener
{
@Override
public
void
onTaskStatusChange
(
DataLog
task
)
{
}
@Override
public
void
onLiteOrderStatusChange
(
LiteOrder
liteOrder
)
{
}
@Override
public
Barcode
canPutIn
(
Barcode
barcode
)
throws
ValidateException
{
return
null
;
}
}
src/main/java/com/neotel/smfcore/core/system/api/ISMFListener.java
0 → 100644
查看文件 @
11a719d
package
com
.
neotel
.
smfcore
.
core
.
system
.
api
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.device.api.CodeValidateParam
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
/**
* Created by sunke on 2021/7/12.
*/
public
interface
ISMFListener
{
void
onTaskStatusChange
(
DataLog
task
);
void
onLiteOrderStatusChange
(
LiteOrder
liteOrder
);
/**
* 是否可入库验证
*/
Barcode
canPutIn
(
Barcode
barcode
)
throws
ValidateException
;
}
src/main/java/com/neotel/smfcore/core/system/service/po/DataLog.java
查看文件 @
11a719d
...
...
@@ -248,6 +248,10 @@ public class DataLog extends BasePo implements Serializable {
return
OP_STATUS
.
FINISHED
.
name
().
equals
(
status
);
}
public
boolean
isOutBox
(){
return
OP_STATUS
.
OUTBOX
.
name
().
equals
(
status
);
}
public
boolean
isWait
(){
return
OP_STATUS
.
WAIT
.
name
().
equals
(
status
);
}
...
...
@@ -404,7 +408,7 @@ public class DataLog extends BasePo implements Serializable {
* 判断任务是否异常,执行中,且10分钟未更新的认为异常
*/
public
boolean
isAbnormal
(){
if
(
isExecuting
()
){
if
(
isExecuting
()){
if
(
System
.
currentTimeMillis
()
-
super
.
getUpdateDate
().
getTime
()
>
10
*
60
*
1000
){
return
true
;
}
...
...
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
查看文件 @
11a719d
...
...
@@ -648,37 +648,7 @@ public class TaskService {
}
String
lockPosId
=
ReelLockPosUtil
.
getReelLockPosId
(
barcode
.
getBarcode
());
StoragePos
pos
=
null
;
if
(!
Strings
.
isNullOrEmpty
(
lockPosId
))
{
//已有锁定库位
pos
=
storagePosManager
.
get
(
lockPosId
);
if
(
pos
!=
null
)
{
if
(!
storageIds
.
contains
(
pos
.
getStorageId
())){
log
.
info
(
"条码["
+
barcode
.
getBarcode
()
+
"]已有锁定库位["
+
pos
.
getPosName
()
+
"],料仓ID["
+
pos
.
getStorageId
()+
"]不在请求列表["
+
String
.
join
(
","
,
storageIds
)+
"]中,重新查找库位"
);
pos
=
null
;
}
else
if
(
pos
.
getW
()
<
barcode
.
getPlateSize
()
||
pos
.
getH
()
<
barcode
.
getHeight
())
{
log
.
info
(
"条码["
+
barcode
.
getBarcode
()
+
"]尺寸已改变,无法放入已锁定库位["
+
pos
.
getPosName
()
+
"],重新查找库位"
);
pos
=
null
;
}
else
{
Barcode
posBarcode
=
pos
.
getBarcode
();
if
(
posBarcode
==
null
)
{
log
.
info
(
"条码["
+
barcode
.
getBarcode
()
+
"]已锁定库位["
+
pos
.
getPosName
()
+
"],返回锁定中的库位"
);
}
else
{
log
.
info
(
"条码["
+
barcode
.
getBarcode
()
+
"]已锁定库位["
+
pos
.
getPosName
()
+
"]中已有物料["
+
posBarcode
.
getBarcode
()
+
"],重新查找库位"
);
pos
=
null
;
}
}
}
}
if
(
pos
!=
null
)
{
return
pos
;
}
//可用的料仓(在线,且可以放入)
List
<
Storage
>
availbleStorageList
=
new
ArrayList
<>();
...
...
@@ -926,7 +896,7 @@ public class TaskService {
dataCache
.
updateInventory
(
storagePos
,
barcode
);
//记录日志
task
.
setStatus
(
OP_STATUS
.
FINISHED
.
name
());
task
.
setStatus
(
OP_STATUS
.
OUTBOX
.
name
());
if
(
isCancelTask
)
{
task
.
setStatus
(
OP_STATUS
.
CANCEL
.
name
());
}
...
...
src/main/java/com/neotel/smfcore/panacim/PanaApiController.java
查看文件 @
11a719d
...
...
@@ -424,7 +424,7 @@ public class PanaApiController implements IOpAuthApi, ITaskListener{
}
}
}
else
{
log
.
info
(
"没有配置PanaCIM条码检测接口,查找setConfiguration注册的IP 及端口"
);
//
log.info("没有配置PanaCIM条码检测接口,查找setConfiguration注册的IP 及端口");
return
null
;
}
}
catch
(
Exception
e
)
{
...
...
@@ -477,7 +477,7 @@ public class PanaApiController implements IOpAuthApi, ITaskListener{
String
result
=
HttpHelper
.
postJson
(
inNotifyApi
,
params
);
log
.
info
(
"Response Of checkInNotification From PanaCIM:"
+
result
);
}
else
{
log
.
info
(
"没有配置PanaCIM接口,无需通知"
);
//
log.info("没有配置PanaCIM接口,无需通知");
}
}
catch
(
Exception
e
)
{
...
...
@@ -511,7 +511,7 @@ public class PanaApiController implements IOpAuthApi, ITaskListener{
log
.
info
(
"Response Of deliverNotification From PanaCIM:"
+
result
);
}
else
{
log
.
info
(
"没有配置PanaCIM接口,无需通知"
);
//
log.info("没有配置PanaCIM接口,无需通知");
}
}
catch
(
Exception
e
)
{
log
.
error
(
"出库通知PanaCIM["
+
outNotifyApi
+
"]料盘"
+
task
.
getBarcode
()+
" 出错"
,
e
);
...
...
src/main/java/com/neotel/smfcore/taizhi/TaiZhiApi.java
0 → 100644
查看文件 @
11a719d
此文件的差异被折叠,
点击展开。
src/main/java/com/neotel/smfcore/taizhi/TaiZhiConfig.java
0 → 100644
查看文件 @
11a719d
package
com
.
neotel
.
smfcore
.
taizhi
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.PostConstruct
;
@Service
@Slf4j
public
class
TaiZhiConfig
{
//读取配置中的地址
@Value
(
"${taizhi.url.deviceAlarm:}"
)
public
String
deviceAlarmUrl
=
""
;
@Value
(
"${taizhi.url.deviceStatus:}"
)
public
String
deviceStatusUrl
=
""
;
/**
* 入库验证地址
*/
@Value
(
"${taizhi.url.inAssert:}"
)
public
String
inAssertUrl
=
""
;
/**
* 入库完成通知接口
*/
@Value
(
"${taizhi.url.inLocation:}"
)
public
String
inLocationUrl
=
""
;
@Value
(
"${taizhi.url.outStatus:}"
)
public
String
outStatusUrl
=
""
;
/**
* 出库完成通知接口
*/
@Value
(
"${taizhi.url.outDone:}"
)
public
String
outDoneUrl
=
""
;
/**
* 仓储温湿度接口
*/
@Value
(
"${taizhi.url.storageEnv:}"
)
public
String
storageEnvUrl
=
""
;
}
src/main/java/com/neotel/smfcore/taizhi/TaiZhiRestController.java
0 → 100644
查看文件 @
11a719d
此文件的差异被折叠,
点击展开。
src/main/resources/config/application-prod.yml
查看文件 @
11a719d
taizhi
:
#url:
inAssert
:
http://172.26.13.211:9030/device/alarm
deviceAlarm
:
http://172.26.13.211:9030/device/alarm
# 登录相关配置
...
...
src/main/resources/config/application.yml
查看文件 @
11a719d
taizhi
:
url
:
deviceAlarm
:
http://172.26.13.211:9030/device/alarm
deviceStatus
:
http://172.26.13.211:9030/device/status
inAssert
:
http://172.26.13.211:9030/matter/in/assert
inLocation
:
http://172.26.13.211:9030/matter/in/location
outStatus
:
http://172.26.13.211:9030/matter/out/status
outDone
:
http://172.26.13.211:9030/matter/out/done
storageEnv
:
http://172.26.13.211:9030/storage/env
server
:
port
:
8800
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论