Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 782479ec
由
zshaohui
编写于
2023-10-11 16:34:25 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.盘料仓和散料仓工单任务拆分
2.处理客户端发过来的msg 增加type类型
1 个父辈
8341952f
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
202 行增加
和
34 行删除
src/main/java/com/neotel/smfcore/core/device/handler/impl/XLRBoxHandler.java
src/main/java/com/neotel/smfcore/core/message/rest/bean/query/MessageCriteria.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/dto/OrderDto.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrderItem.java
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialBoxController.java
src/main/java/com/neotel/smfcore/core/system/util/DevicesStatusUtil.java
src/main/java/com/neotel/smfcore/security/config/ElPermissionConfig.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/XLRBoxHandler.java
查看文件 @
782479e
...
...
@@ -80,9 +80,13 @@ public class XLRBoxHandler extends BaseDeviceHandler {
return
statusBean
;
}
protected
void
reelOnShelf
(
String
cid
,
String
posName
){
DataLog
task
=
taskService
.
findFinishedOutTask
(
cid
,
posName
);
if
(
task
!=
null
){
protected
void
reelOnShelf
(
String
cid
,
String
posName
)
{
DataLog
task
=
taskService
.
findFinishedOutTask
(
cid
,
posName
);
if
(
task
!=
null
)
{
if
(
task
.
isFinished
())
{
log
.
info
(
task
.
getBarcode
()
+
"库位:"
+
task
.
getPosName
()
+
"状态已经完成,跳过"
);
return
;
}
task
.
setStatus
(
OP_STATUS
.
FINISHED
.
name
());
taskService
.
updateFinishedTask
(
task
);
}
...
...
src/main/java/com/neotel/smfcore/core/message/rest/bean/query/MessageCriteria.java
查看文件 @
782479e
...
...
@@ -15,7 +15,7 @@ public class MessageCriteria {
@QueryCondition
(
type
=
QueryCondition
.
Type
.
BETWEEN
,
propName
=
"updateDate"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
BetweenData
<
Date
>
cre
ateDate
;
private
BetweenData
<
Date
>
upd
ateDate
;
@QueryCondition
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
782479e
...
...
@@ -275,7 +275,15 @@ public class LiteOrderCache {
liteOrderItem
.
setOutReelCount
(
liteOrderItem
.
getOutReelCount
()
+
1
);
liteOrderItem
.
setTotalOutNum
(
liteOrderItem
.
getTotalOutNum
()+
task
.
getNum
());
liteOrderItem
.
setTotalOutReelCount
(
liteOrderItem
.
getTotalOutReelCount
()+
1
);
liteOrderItem
.
setTaskFinished
(
true
);
liteOrderItem
.
setPn
(
task
.
getPartNumber
());
liteOrderItem
=
liteOrderItemManager
.
save
(
liteOrderItem
);
if
(
liteOrderItem
.
isMultipleTask
())
{
order
.
setMultipleFinishedTaskReelCount
(
order
.
getMultipleFinishedTaskReelCount
()
+
1
);
}
else
{
order
.
setSingleFinishedTaskReelCount
(
order
.
getSingleFinishedTaskReelCount
()
+
1
);
}
// Barcode barcode = barcodeManager.findByBarcode(task.getBarcode());
// if (barcode != null) {
// Float totalNeedNum = liteOrderItem.getNeedNum() * order.getOrderTimes();
...
...
@@ -380,6 +388,9 @@ public class LiteOrderCache {
}
//liteOrderMap.put(cacheOrder.getOrderNo(), cacheOrder);
int
taskReelCount
=
0
;
int
singleTaskReelCount
=
0
;
//盘料仓任务
int
multipleTaskReelCount
=
0
;
//散料仓任务
CHECKOUT_TYPE
checkoutType
=
dataCache
.
getCheckOutType
();
List
<
String
>
availableStorageIds
=
dataCache
.
getAvailableStorageIds
();
...
...
@@ -444,21 +455,54 @@ public class LiteOrderCache {
assignNum
=
assignNum
+
pos
.
getBarcode
().
getAmount
();
taskReelCount
=
taskReelCount
+
1
;
log
.
info
(
"工单["
+
orderNo
+
"],任务数["
+
taskReelCount
+
"]出库位置仓位【"
+
pos
.
getPosName
()
+
"】RI=["
+
pos
.
getBarcode
().
getBarcode
()
+
"] PN=["
+
partNumber
+
"] num:"
+
pos
.
getBarcode
().
getAmount
());
DataLog
task
=
newTask
(
pos
)
;
task
.
setSourceId
(
cacheOrder
.
getId
());
task
.
setSourceName
(
cacheOrder
.
getOrderNo
());
task
.
setSubSourceId
(
orderItem
.
getId
());
task
.
setSubSourceInfo
(
orderItem
.
getFeederInfo
());
task
.
setType
(
OP
.
CHECKOUT
);
task
.
setLightColor
(
nextColor
.
getRgb
());
task
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
task
.
setSlotnum
(
orderItem
.
getSlotNum
());
//设置库位
orderItem
.
setPosName
(
pos
.
getPosName
());
//判断是否为料箱
boolean
isMultipleTask
=
false
;
Barcode
barcode
=
pos
.
getBarcode
();
if
(
barcode
.
getSubCodeList
()
!=
null
&&
!
barcode
.
getSubCodeList
().
isEmpty
())
{
multipleTaskReelCount
=
multipleTaskReelCount
+
1
;
isMultipleTask
=
true
;
}
else
{
singleTaskReelCount
=
singleTaskReelCount
+
1
;
}
boolean
hasTask
=
false
;
if
(
isMultipleTask
)
{
orderItem
.
setMultipleTask
(
true
);
orderItem
.
setBox
(
barcode
.
getBarcode
());
List
<
DataLog
>
allTasks
=
taskService
.
getAllTasks
();
for
(
DataLog
dataLog
:
allTasks
)
{
if
(
dataLog
.
getBarcode
().
equals
(
barcode
.
getBarcode
())
&&
dataLog
.
isCheckOutTask
())
{
orderItem
.
setTaskCreateDate
(
dataLog
.
getCreateDate
());
orderItem
.
setHasReel
(
true
);
hasTask
=
true
;
break
;
}
}
}
else
{
orderItem
.
setMultipleTask
(
false
);
}
if
(!
hasTask
)
{
DataLog
task
=
newTask
(
pos
);
task
.
setSourceId
(
cacheOrder
.
getId
());
task
.
setSourceName
(
cacheOrder
.
getOrderNo
());
task
.
setSubSourceId
(
orderItem
.
getId
());
task
.
setSubSourceInfo
(
orderItem
.
getFeederInfo
());
task
.
setType
(
OP
.
CHECKOUT
);
task
.
setLightColor
(
nextColor
.
getRgb
());
task
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
task
.
setSlotnum
(
orderItem
.
getSlotNum
());
// task = dataLogDao.save(task);
try
{
taskService
.
addTaskToExecute
(
task
);
}
catch
(
Exception
e
)
{
log
.
info
(
task
.
getBarcode
()+
"--添加任务到队列中,执行失败:"
+
e
.
getMessage
());
try
{
taskService
.
addTaskToExecute
(
task
);
orderItem
.
setTaskCreateDate
(
task
.
getCreateDate
());
orderItem
.
setHasReel
(
true
);
}
catch
(
Exception
e
)
{
log
.
info
(
task
.
getBarcode
()
+
"--添加任务到队列中,执行失败:"
+
e
.
getMessage
());
}
}
}
...
...
@@ -469,16 +513,13 @@ public class LiteOrderCache {
if
(
barcode
!=
null
)
{
barcode
.
setOrderItemId
(
orderItemId
);
barcode
.
setOut
(
true
);
log
.
info
(
"barcode:"
+
barcode
.
getBarcode
()+
"工单出库:"
+
orderNo
);
log
.
info
(
"barcode:"
+
barcode
.
getBarcode
()
+
"工单出库:"
+
orderNo
);
barcodeManager
.
save
(
barcode
);
//同时更新
Criteria
c
=
Criteria
.
where
(
"subCodeList.barcode"
).
is
(
orderItem
.
getRi
());
Barcode
parBarcode
=
barcodeManager
.
findByQueryOne
(
new
Query
(
c
));
if
(
parBarcode
!=
null
)
{
List
<
Barcode
>
subCodeList
=
parBarcode
.
getSubCodeList
();
subCodeList
.
removeIf
(
subCode
->
subCode
.
getBarcode
().
equals
(
barcode
.
getBarcode
()));
subCodeList
.
add
(
barcode
);
parBarcode
.
setSubCodeList
(
subCodeList
);
parBarcode
.
UpdateSubCode
(
barcode
);
barcodeManager
.
saveBarcode
(
parBarcode
);
}
}
...
...
@@ -488,8 +529,11 @@ public class LiteOrderCache {
}
}
}
liteOrderItemManager
.
save
(
orderItem
);
}
//cacheOrder.setOrderItems(orderItems);
cacheOrder
.
setMultipleTaskReelCount
(
multipleTaskReelCount
);
cacheOrder
.
setSingleTaskReelCount
(
singleTaskReelCount
);
cacheOrder
.
setTaskReelCount
(
taskReelCount
);
cacheOrder
.
setTotalTaskReelCount
(
cacheOrder
.
getTotalTaskReelCount
()+
taskReelCount
);
log
.
info
(
"工单["
+
orderNo
+
"]任务分配结束,任务数["
+
taskReelCount
+
"]"
);
...
...
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
查看文件 @
782479e
...
...
@@ -59,6 +59,7 @@ import java.io.File;
import
java.io.IOException
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@Slf4j
...
...
@@ -464,6 +465,34 @@ public class OrderController {
return
ResultBean
.
newOkResult
(
""
);
}
@ApiOperation
(
"获取盘料仓或者散料仓工单出库详情"
)
@RequestMapping
(
"/getSingleOrMultipleDetail"
)
@AnonymousAccess
public
ResultBean
getSingleOrMultipleDetail
(
@RequestParam
(
"orderId"
)
String
orderId
,
@RequestParam
(
"isMultipleTask"
)
boolean
isMultipleTask
)
{
List
<
LiteOrderItem
>
resultItems
=
new
ArrayList
<>();
List
<
LiteOrderItem
>
orderItems
=
liteOrderItemManager
.
findOrderItems
(
orderId
);
for
(
LiteOrderItem
orderItem
:
orderItems
)
{
if
(
isMultipleTask
)
{
if
(!
orderItem
.
isMultipleTask
())
{
continue
;
}
}
else
{
if
(
orderItem
.
isMultipleTask
())
{
continue
;
}
}
if
(
orderItem
.
isHasReel
())
{
resultItems
.
add
(
orderItem
);
}
}
if
(
resultItems
!=
null
&&
!
resultItems
.
isEmpty
())
{
resultItems
=
resultItems
.
stream
().
sorted
(
Comparator
.
comparing
(
LiteOrderItem:
:
getTaskCreateDate
)).
collect
(
Collectors
.
toList
());
}
return
ResultBean
.
newOkResult
(
resultItems
);
}
public
void
addVirtualOutToFinished
(
LiteOrder
liteOrder
,
Barcode
barcode
,
Integer
num
,
String
opUser
)
{
try
{
DataLog
dataLog
=
new
DataLog
();
...
...
src/main/java/com/neotel/smfcore/core/order/rest/bean/dto/OrderDto.java
查看文件 @
782479e
...
...
@@ -89,4 +89,20 @@ public class OrderDto implements Serializable {
@ApiModelProperty
(
"工单线别"
)
private
String
line
=
""
;
@ApiModelProperty
(
"盘料仓任务盘数"
)
private
int
singleTaskReelCount
=
0
;
@ApiModelProperty
(
"盘料仓已完成任务盘数"
)
private
int
singleFinishedTaskReelCount
=
0
;
@ApiModelProperty
(
"散料仓任务盘数"
)
private
int
multipleTaskReelCount
=
0
;
@ApiModelProperty
(
"散料仓任务盘数"
)
private
int
multipleFinishedTaskReelCount
=
0
;
}
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
查看文件 @
782479e
...
...
@@ -62,6 +62,30 @@ public class LiteOrder extends BasePo implements Serializable {
*/
private
int
totalFinishedReelCount
=
0
;
/**
* 盘料仓任务盘数
*/
private
int
singleTaskReelCount
=
0
;
/**
* 盘料仓已完成任务盘数
*/
private
int
singleFinishedTaskReelCount
=
0
;
/**
* 散料仓任务盘数
*/
private
int
multipleTaskReelCount
=
0
;
/**
* 散料仓任务盘数
*/
private
int
multipleFinishedTaskReelCount
=
0
;
/**
* 订单状态
*/
...
...
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrderItem.java
查看文件 @
782479e
...
...
@@ -6,6 +6,8 @@ import org.springframework.data.annotation.Transient;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.io.Serializable
;
import
java.util.Date
;
@Data
@Document
public
class
LiteOrderItem
extends
BasePo
implements
Serializable
,
Comparable
<
LiteOrderItem
>
{
...
...
@@ -81,6 +83,37 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
private
String
side
=
""
;
/**
* 箱子号
*/
private
String
box
=
""
;
/**
* 库位名称
*/
private
String
posName
=
""
;
/**
* 任务创建时间
*/
private
Date
taskCreateDate
;
/**
* 是否任务完成
*/
private
boolean
isTaskFinished
=
false
;
/**
* 是否散料仓任务
*/
private
boolean
isMultipleTask
=
false
;
/**
* 是否有料
*/
private
boolean
hasReel
=
false
;
/**
* 出库是否满足要求,已出库数量大于需求数量
*/
public
boolean
isOutFinished
(){
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialBoxController.java
查看文件 @
782479e
...
...
@@ -596,10 +596,12 @@ public class MaterialBoxController {
if
(
liteOrder
!=
null
){
task
.
setSo
(
liteOrder
.
getSo
());
task
.
setSourceName
(
liteOrder
.
getOrderNo
());
List
<
LiteOrderItem
>
orderItems
=
liteOrder
.
getOrderItems
();
for
(
LiteOrderItem
orderItem
:
orderItems
)
{
if
(
orderItem
.
getRi
().
equals
(
subBarcode
.
getBarcode
())){
task
.
setSlotnum
(
orderItem
.
getSlotNum
());
task
.
setSubSourceId
(
orderItem
.
getId
());
break
;
}
}
...
...
src/main/java/com/neotel/smfcore/core/system/util/DevicesStatusUtil.java
查看文件 @
782479e
...
...
@@ -75,14 +75,37 @@ public class DevicesStatusUtil {
//和上个消息是否一样
StatusBean
msgBean
=
clientMsgs
.
get
(
cid
);
if
(
msgBean
!=
null
)
{
if
(
msgBean
.
msgTimeOut
())
{
newMsg
=
true
;
}
else
if
(
msgBean
.
getMsgCode
().
equals
(
msgCode
)
&&
msgBean
.
getMsg
().
equals
(
clientMsg
))
{
// if (msgBean.msgTimeOut()) {
// newMsg = true;
// } else
if
(
msgBean
.
getMsgCode
().
equals
(
msgCode
)
&&
msgBean
.
getMsg
().
equals
(
clientMsg
))
{
newMsg
=
false
;
}
}
if
(
newMsg
){
DeviceMessageUtil
.
addDeviceMessage
(
cid
,
MessageType
.
ERROR
.
name
(),
""
,
msgCode
,
clientMsg
,
msgParam
);
//判断是否有换行
String
[]
msgArray
=
clientMsg
.
split
(
"\r\n"
);
if
(
msgArray
!=
null
&&
msgArray
.
length
>
0
)
{
for
(
String
msg
:
msgArray
)
{
String
msgType
=
MessageType
.
ERROR
.
name
();
if
(
msg
.
startsWith
(
"A="
))
{
msgType
=
MessageType
.
ERROR
.
name
();
msg
=
msg
.
substring
(
2
);
}
else
if
(
msg
.
startsWith
(
"I="
))
{
msgType
=
MessageType
.
INFO
.
name
();
msg
=
msg
.
substring
(
2
);
}
else
if
(
msg
.
startsWith
(
"W="
))
{
msgType
=
MessageType
.
WARNING
.
name
();
msg
=
msg
.
substring
(
2
);
}
DeviceMessageUtil
.
addDeviceMessage
(
cid
,
msgType
,
""
,
msgCode
,
msg
,
msgParam
);
}
}
else
{
DeviceMessageUtil
.
addDeviceMessage
(
cid
,
MessageType
.
ERROR
.
name
(),
""
,
msgCode
,
clientMsg
,
msgParam
);
}
}
}
...
...
src/main/java/com/neotel/smfcore/security/config/ElPermissionConfig.java
查看文件 @
782479e
package
com
.
neotel
.
smfcore
.
security
.
config
;
import
com.neotel.smfcore.common.init.DataInitManager
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.security.core.GrantedAuthority
;
import
org.springframework.stereotype.Service
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Slf4j
@Service
(
value
=
"el"
)
public
class
ElPermissionConfig
{
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论