Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit bcf8a25e
由
zshaohui
编写于
2023-10-23 14:14:28 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.打印机功能提交
2.取消任务,屏蔽库位
1 个父辈
42d2a1ab
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
178 行增加
和
30 行删除
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.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/core/system/util/TaskService.java
src/main/java/com/neotel/smfcore/custom/lizhen/innerBox/rest/PrinterRestController.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
bcf8a25
...
@@ -179,7 +179,7 @@ public class LiteOrderCache {
...
@@ -179,7 +179,7 @@ public class LiteOrderCache {
String
result
=
checkOutLiteOrder
(
order
.
getOrderNo
(),
false
);
String
result
=
checkOutLiteOrder
(
order
.
getOrderNo
(),
false
);
if
(!
ObjectUtil
.
isEmpty
(
result
))
{
if
(!
ObjectUtil
.
isEmpty
(
result
))
{
String
msg
=
MessageUtils
.
getText
(
result
,
MessageUtils
.
getDefaultLocal
(),
""
);
String
msg
=
MessageUtils
.
getText
(
result
,
MessageUtils
.
getDefaultLocal
(),
""
);
log
.
info
(
"自动执行工单 【"
+
order
.
getOrderNo
()
+
"】 失败:"
+
msg
);
//
log.info("自动执行工单 【" + order.getOrderNo() + "】 失败:" + msg);
}
else
{
}
else
{
//log.info("自动执行工单 【" + order.getOrderNo() + "】 成功");
//log.info("自动执行工单 【" + order.getOrderNo() + "】 成功");
break
;
break
;
...
@@ -561,10 +561,10 @@ public class LiteOrderCache {
...
@@ -561,10 +561,10 @@ public class LiteOrderCache {
//PN
//PN
do
{
do
{
//首先按空闲料仓进行出库
//首先按空闲料仓进行出库
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findPartNumberListInStorages
(
freeStorageIds
,
partNumber
,
excludePosIds
,
checkoutType
,
orderItem
.
getBrand
());
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findPartNumberListInStorages
(
freeStorageIds
,
partNumber
,
excludePosIds
,
checkoutType
,
orderItem
.
getBrand
());
//如果为空的话,则出全部的
//如果为空的话,则出全部的
if
(
storagePosList
==
null
||
storagePosList
.
isEmpty
())
{
if
(
storagePosList
==
null
||
storagePosList
.
isEmpty
())
{
storagePosList
=
storagePosManager
.
findPartNumberListInStorages
(
availableStorageIds
,
partNumber
,
excludePosIds
,
checkoutType
,
orderItem
.
getBrand
());
storagePosList
=
storagePosManager
.
findPartNumberListInStorages
(
availableStorageIds
,
partNumber
,
excludePosIds
,
checkoutType
,
orderItem
.
getBrand
());
}
}
//排序找到最早的
//排序找到最早的
...
@@ -596,9 +596,9 @@ public class LiteOrderCache {
...
@@ -596,9 +596,9 @@ public class LiteOrderCache {
smfApi
.
canPutInAfterResolve
(
pos
.
getBarcode
());
smfApi
.
canPutInAfterResolve
(
pos
.
getBarcode
());
}
catch
(
ValidateException
e
)
{
}
catch
(
ValidateException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
log
.
error
(
pos
.
getBarcode
().
getBarcode
()
+
":"
+
e
.
getMessage
());
log
.
error
(
"工单号:"
+
orderNo
+
"唯一码:"
+
pos
.
getBarcode
().
getBarcode
()
+
":"
+
e
.
getMessage
());
excludePosIds
.
add
(
pos
.
getId
());
pos
=
null
;
pos
=
null
;
break
;
}
}
}
while
(
pos
==
null
);
}
while
(
pos
==
null
);
}
}
...
...
src/main/java/com/neotel/smfcore/core/system/service/manager/IDataLogManager.java
查看文件 @
bcf8a25
...
@@ -22,4 +22,6 @@ public interface IDataLogManager extends IBaseManager<DataLog> {
...
@@ -22,4 +22,6 @@ public interface IDataLogManager extends IBaseManager<DataLog> {
int
countByQuery
(
Query
subSourceId
);
int
countByQuery
(
Query
subSourceId
);
DataLog
getOutReelInfo
(
String
barcode
);
DataLog
getOutReelInfo
(
String
barcode
);
DataLog
findOne
(
Query
with
);
}
}
src/main/java/com/neotel/smfcore/core/system/service/manager/impl/DataLogManagerImpl.java
查看文件 @
bcf8a25
...
@@ -139,4 +139,9 @@ public class DataLogManagerImpl implements IDataLogManager {
...
@@ -139,4 +139,9 @@ public class DataLogManagerImpl implements IDataLogManager {
query
.
with
(
Sort
.
by
(
Sort
.
Direction
.
DESC
,
"createDate"
,
"updateDate"
));
query
.
with
(
Sort
.
by
(
Sort
.
Direction
.
DESC
,
"createDate"
,
"updateDate"
));
return
dataLogDao
.
findOne
(
query
);
return
dataLogDao
.
findOne
(
query
);
}
}
@Override
public
DataLog
findOne
(
Query
query
)
{
return
dataLogDao
.
findOne
(
query
);
}
}
}
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
查看文件 @
bcf8a25
...
@@ -318,40 +318,40 @@ public class TaskService {
...
@@ -318,40 +318,40 @@ public class TaskService {
updateFinishedTask
(
task
);
updateFinishedTask
(
task
);
log
.
info
(
"任务["
+
task
.
getId
()
+
"] posName["
+
task
.
getPosName
()
+
"] Reel Id["
+
task
.
getBarcode
()
+
"]取消成功"
);
log
.
info
(
"任务["
+
task
.
getId
()
+
"] posName["
+
task
.
getPosName
()
+
"] Reel Id["
+
task
.
getBarcode
()
+
"]取消成功"
);
//同时进行库位屏蔽
(不需要)
//同时进行库位屏蔽
/* if (*//*task.isPutInTask() &&*//*
!task.isFinished()) {
if
(
!
task
.
isFinished
())
{
String
posName
=
task
.
getPosName
();
String
posName
=
task
.
getPosName
();
if (StringUtils.isNotBlank(posName)) {
StoragePos
storagePos
=
storagePosManager
.
getByPosName
(
posName
);
StoragePos pos = storagePosManager.getByPosName(posName);
//如果是入库任务,直接屏蔽库位
if (pos != null) {
if
(
task
.
isPutInTask
())
{
//排查料架
disablePos
(
task
.
getBarcode
(),
storagePos
);
Storage storage = dataCache.getStorageById(pos.getStorageId());
}
if (!storage.isNLShelf() && !storage.isNLMShelf() && !storage.isNLPShelf() && !storage.isShelf()) {
//如果是出库任务,判断当前任务的barcode和库位中的师傅一致
pos.setEnabled(false);
else
if
(
task
.
isCheckOutTask
())
{
pos.setMsg("任务取消,屏蔽库位");
Barcode
barcode
=
storagePos
.
getBarcode
();
storagePosManager.save(pos);
if
(
barcode
==
null
)
{
log.info("任务取消,屏蔽库位:库位号[" + pos.getId() + "][" + pos.getPosName() + "]barcode[" + task.getBarcode() + "]");
disablePos
(
task
.
getBarcode
(),
storagePos
);
DeviceMessageUtil.addEnabledPosMessage(pos, SecurityUtils.getCurrentUsername());
}
else
if
(
barcode
!=
null
&&
task
.
getBarcode
().
equals
(
barcode
.
getBarcode
()))
{
}
barcode
=
clearOut
(
barcode
);
//清除标记
storagePos
.
setBarcode
(
barcode
);
Barcode barcode = clearOut(pos.getBarcode());
disablePos
(
task
.
getBarcode
(),
storagePos
);
//如果是出库任务,同时更新库位信息
if (task.isCheckOutTask()) {
if (pos.getBarcode() != null) {
pos.setBarcode(barcode);
storagePosManager.save(pos);
}
}
}
}
}
}
//解除绑定
ReelLockPosUtil
.
removeReelLockPosInfo
(
task
.
getBarcode
());
ReelLockPosUtil
.
removeReelLockPosInfo
(
task
.
getBarcode
());
}
*/
}
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
private
void
disablePos
(
String
barcode
,
StoragePos
storagePos
)
{
storagePos
.
setEnabled
(
false
);
storagePos
.
setMsg
(
"任务取消,屏蔽库位"
);
storagePosManager
.
save
(
storagePos
);
log
.
info
(
"任务取消,屏蔽库位:库位号["
+
storagePos
.
getId
()
+
"]["
+
storagePos
.
getPosName
()
+
"]barcode["
+
barcode
+
"]"
);
DeviceMessageUtil
.
addEnabledPosMessage
(
storagePos
,
SecurityUtils
.
getCurrentUsername
());
}
public
boolean
cancelTask
(
String
taskId
)
{
public
boolean
cancelTask
(
String
taskId
)
{
DataLog
task
=
dataLogDao
.
findOneById
(
taskId
);
DataLog
task
=
dataLogDao
.
findOneById
(
taskId
);
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/innerBox/rest/PrinterRestController.java
0 → 100644
查看文件 @
bcf8a25
package
com
.
neotel
.
smfcore
.
custom
.
lizhen
.
innerBox
.
rest
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.core.barcode.bean.CodeBean
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.device.enums.OP
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderManager
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
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.annotation.AnonymousAccess
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Slf4j
@Api
(
"打印机"
)
@RestController
@RequestMapping
(
"/printer"
)
public
class
PrinterRestController
{
@Autowired
private
CodeResolve
codeResolve
;
@Autowired
private
TaskService
taskService
;
@Autowired
private
ILiteOrderManager
liteOrderManager
;
@Autowired
private
ILiteOrderItemManager
liteOrderItemManager
;
@Autowired
private
IDataLogManager
dataLogManager
;
@ApiOperation
(
"补打印标签"
)
@RequestMapping
(
"/labelPrinting"
)
@AnonymousAccess
public
ResultBean
labelPrinting
(
@RequestBody
Map
<
String
,
String
>
paramMap
)
{
Map
<
String
,
String
>
resultMap
=
new
HashMap
<>();
String
code
=
paramMap
.
get
(
"code"
);
CodeBean
codeBean
=
codeResolve
.
resolveSingleCode
(
code
);
Barcode
barcode
=
codeBean
.
getBarcode
();
if
(
barcode
!=
null
)
{
String
barcodeStr
=
barcode
.
getBarcode
();
//找到有没有正在执行的出库任务
DataLog
dataLog
=
findTask
(
barcodeStr
);
//如果有正在执行的任务,直接完成,另外获取贴标信息
if
(
dataLog
!=
null
)
{
finishTask
(
dataLog
);
resultMap
=
getLabelInfo
(
dataLog
);
}
//如果没有,直接从数据库中查 最早一条的任务
else
{
DataLog
task
=
findEarliestTask
(
barcodeStr
);
if
(
task
!=
null
)
{
resultMap
=
getLabelInfo
(
task
);
}
}
}
if
(
resultMap
==
null
||
resultMap
.
isEmpty
())
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"未找到补打印标签信息"
);
}
return
ResultBean
.
newOkResult
(
resultMap
);
}
private
DataLog
findEarliestTask
(
String
barcodeStr
)
{
Query
query
=
new
Query
();
Criteria
criteria
=
Criteria
.
where
(
"barcode"
).
is
(
barcodeStr
).
and
(
"type"
).
is
(
OP
.
CHECKOUT
).
and
(
"status"
).
is
(
"FINISHED"
);
Sort
sort
=
Sort
.
by
(
Sort
.
Direction
.
DESC
,
"createDate"
);
return
dataLogManager
.
findOne
(
query
.
addCriteria
(
criteria
).
with
(
sort
));
}
private
DataLog
findTask
(
String
barcodeStr
)
{
List
<
DataLog
>
allTaskList
=
taskService
.
getAllTasks
();
for
(
DataLog
task
:
allTaskList
)
{
if
(
barcodeStr
.
equals
(
task
.
getBarcode
())
&&
task
.
isCheckOutTask
()
&&
!
task
.
isFinished
()
&&
!
task
.
isCancel
())
{
return
task
;
}
}
return
null
;
}
private
void
finishTask
(
DataLog
task
)
{
task
.
setStatus
(
OP_STATUS
.
FINISHED
.
name
());
taskService
.
updateFinishedTask
(
task
);
taskService
.
removeFinishedTask
(
task
);
}
private
Map
<
String
,
String
>
getLabelInfo
(
DataLog
dataLog
)
{
Map
<
String
,
String
>
resultMap
=
new
HashMap
<>();
String
sourceId
=
dataLog
.
getSourceId
();
String
subSourceId
=
dataLog
.
getSubSourceId
();
if
(
StringUtils
.
isNotBlank
(
sourceId
)
&&
StringUtils
.
isNotBlank
(
subSourceId
))
{
LiteOrder
liteOrder
=
liteOrderManager
.
get
(
dataLog
.
getSourceId
());
if
(
liteOrder
!=
null
)
{
LiteOrderItem
liteOrderItem
=
liteOrderItemManager
.
get
(
dataLog
.
getSubSourceId
());
if
(
liteOrderItem
!=
null
)
{
resultMap
.
put
(
"barcode"
,
dataLog
.
getBarcode
());
resultMap
.
put
(
"pn"
,
dataLog
.
getPartNumber
());
resultMap
.
put
(
"station"
,
liteOrderItem
.
getTableNo
());
resultMap
.
put
(
"side"
,
liteOrderItem
.
getSide
());
resultMap
.
put
(
"hSerial"
,
liteOrder
.
getOrderNo
());
resultMap
.
put
(
"line"
,
liteOrder
.
getLine
());
resultMap
.
put
(
"slot"
,
liteOrderItem
.
getSlot
());
resultMap
.
put
(
"subSlot"
,
liteOrderItem
.
getSubSlot
());
}
}
}
return
resultMap
;
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论