Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit a1d9ad19
由
zshaohui
编写于
2022-09-23 13:20:43 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
功能优化 修改
1 个父辈
1789a1ea
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
42 行增加
和
17 行删除
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.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/util/TaskService.java
src/main/java/com/neotel/smfcore/custom/neotelApi/rest/NeotelController.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
查看文件 @
a1d9ad1
...
...
@@ -192,11 +192,11 @@ public class BaseDeviceHandler implements IDeviceHandler {
}
if
(!
storage
.
canPutInPos
(
barcodeSave
.
getPlateSize
(),
barcodeSave
.
getHeight
(),
storagePos
.
getW
(),
storagePos
.
getH
()))
{
//
String reelSize = barcodeSave.getPlateSize() + "x" + barcodeSave.getHeight();
//
String posSize = storagePos.getW() + "x" + storagePos.getH();
//
throw new ValidateException("smfcore.error.pos.sizeNotMatch", "料盘尺寸[{0}}]与库位{1}尺寸[{2}]不符,无法入库", new String[]{reelSize,posName,posSize});
String
reelSize
=
barcodeSave
.
getPlateSize
()
+
"x"
+
barcodeSave
.
getHeight
();
String
posSize
=
storagePos
.
getW
()
+
"x"
+
storagePos
.
getH
();
throw
new
ValidateException
(
"smfcore.error.pos.sizeNotMatch"
,
"料盘尺寸[{0}}]与库位{1}尺寸[{2}]不符,无法入库"
,
new
String
[]{
reelSize
,
posName
,
posSize
});
//如果尺寸不符合,则重新查找空库位
storagePos
=
findLineEmptyPosForPutIn
(
storage
,
barcodeSave
);
//
storagePos = findLineEmptyPosForPutIn(storage, barcodeSave);
}
}
else
{
...
...
@@ -240,7 +240,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
Barcode
barcodeSave
=
smfApi
.
canPutInBeforeResolve
(
params
);
if
(
barcodeSave
==
null
){
barcodeSave
=
codeResolve
.
resolveOneValideBarcode
(
codeStr
,
type
);
}
}
//本地难条码是否可以入库
verifyBarcodePutIn
(
Lists
.<
Storage
>
newArrayList
(
storage
),
barcodeSave
);
//从API验证
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
a1d9ad1
...
...
@@ -8,6 +8,7 @@ import com.neotel.smfcore.common.exception.ValidateException;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.core.api.SmfApi
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.device.enums.OP
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
...
...
@@ -27,6 +28,8 @@ import com.neotel.smfcore.core.system.service.po.DataLog;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
...
...
@@ -53,9 +56,13 @@ public class LiteOrderCache {
@Autowired
private
IStoragePosManager
storagePosManager
;
@Autowired
private
SmfApi
smfApi
;
@Autowired
private
IBarcodeManager
barcodeManager
;
/**
* 正在执行的liteOrderMap, key 为orderNo,value 为order
*/
...
...
@@ -396,23 +403,29 @@ public class LiteOrderCache {
if
(
cacheOrder
.
getType
()==
2
){
//RI
pos
=
storagePosManager
.
getByBarcode
(
orderItem
.
getRi
());
if
(
excludePosIds
.
contains
(
pos
.
getId
()))
{
log
.
info
(
"工单["
+
orderNo
+
"]RI出库,任务数["
+
taskReelCount
+
"]出库位置仓位【"
+
pos
.
getPosName
()
+
"】RI=["
+
pos
.
getBarcode
().
getBarcode
()
+
"]已在操作队列中,跳过不处理"
);
break
;
if
(
excludePosIds
!=
null
&&
!
excludePosIds
.
isEmpty
())
{
if
(
excludePosIds
.
contains
(
pos
.
getId
()))
{
log
.
info
(
"工单["
+
orderNo
+
"]RI出库,任务数["
+
taskReelCount
+
"]出库位置仓位【"
+
pos
.
getPosName
()
+
"】RI=["
+
pos
.
getBarcode
().
getBarcode
()
+
"]已在操作队列中,跳过不处理"
);
break
;
}
}
}
else
{
//PN
pos
=
storagePosManager
.
findPartNumberInStorages
(
availableStorageIds
,
partNumber
,
excludePosIds
,
checkoutType
);
}
//如果找不到的话,则查询料箱
if
(
pos
==
null
)
{
List
<
Criteria
>
orCriterialList
=
Lists
.
newArrayList
();
orCriterialList
.
add
(
Criteria
.
where
(
"barcode.barcode"
).
is
(
orderItem
.
getRi
()));
orCriterialList
.
add
(
Criteria
.
where
(
"barcode.subCodeList.barcode"
).
is
(
orderItem
.
getRi
()));
Criteria
c
=
new
Criteria
().
orOperator
(
orCriterialList
);
pos
=
storagePosManager
.
findByQueryOne
(
new
Query
(
c
));
}
if
(
pos
==
null
)
{
// log.error("未找到可以出库的物料[" + partNumber + "]");
DataLog
task
=
new
DataLog
();
task
.
setBarcode
(
orderItem
.
getRi
());
task
.
setPosName
(
null
);
task
.
setPosId
(
null
);
task
.
setStatus
(
OP_STATUS
.
FINISHED
.
name
());
task
.
setType
(
OP
.
CHECKOUT
);
taskService
.
addTaskToExecute
(
task
);
break
;
}
else
{
assignNum
=
assignNum
+
pos
.
getBarcode
().
getAmount
();
...
...
src/main/java/com/neotel/smfcore/core/storage/service/manager/IStoragePosManager.java
查看文件 @
a1d9ad1
...
...
@@ -70,4 +70,6 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
List
<
StoragePos
>
getNotEmptyByStorageIdList
(
List
<
String
>
storageId
);
List
<
StoragePos
>
findByBarcodesAndPartNums
(
List
<
String
>
partNums
,
List
<
String
>
reelIds
);
StoragePos
findByQueryOne
(
Query
query
);
}
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
查看文件 @
a1d9ad1
...
...
@@ -584,6 +584,11 @@ public class StoragePosManagerImpl implements IStoragePosManager {
return
storagePosDao
.
findByQuery
(
query
);
}
@Override
public
StoragePos
findByQueryOne
(
Query
query
)
{
return
storagePosDao
.
findOne
(
query
);
}
/**
* 获取下一库位的库位名(后缀数字+1)
*/
...
...
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
查看文件 @
a1d9ad1
...
...
@@ -6,6 +6,7 @@ import com.google.common.collect.Lists;
import
com.google.common.collect.Maps
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.JsonUtil
;
import
com.neotel.smfcore.common.utils.ReelLockPosUtil
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.core.api.SmfApi
;
...
...
@@ -155,6 +156,7 @@ public class TaskService {
*/
public
DataLog
updateQueueTask
(
DataLog
task
)
{
tiggerTaskChangeListener
(
task
);
log
.
info
(
"开始保存----"
+
JsonUtil
.
toJsonStr
(
task
));
task
=
dataLogDao
.
save
(
task
);
taskMap
.
put
(
task
.
getId
(),
task
);
//tiggerTaskChangeListener(task);
...
...
@@ -608,9 +610,9 @@ public class TaskService {
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
()
+
"],重新查找库位"
);
else
if
(
pos
.
getW
()
!=
barcode
.
getPlateSize
()
||
pos
.
getH
()
!=
barcode
.
getHeight
())
{
pos
=
null
;
log
.
info
(
"条码["
+
barcode
.
getBarcode
()
+
"]尺寸已改变,无法放入已锁定库位["
+
pos
.
getPosName
()
+
"],重新查找库位"
);
}
else
{
Barcode
posBarcode
=
pos
.
getBarcode
();
if
(
posBarcode
==
null
)
{
...
...
src/main/java/com/neotel/smfcore/custom/neotelApi/rest/NeotelController.java
查看文件 @
a1d9ad1
...
...
@@ -6,6 +6,7 @@ import com.neotel.smfcore.common.bean.ResultBean;
import
com.neotel.smfcore.common.utils.DateUtil
;
import
com.neotel.smfcore.common.utils.JsonUtil
;
import
com.neotel.smfcore.common.utils.StorageConstants
;
import
com.neotel.smfcore.core.barcode.rest.bean.mapstruct.BarcodeMapper
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.device.bean.BoxStatusBean
;
...
...
@@ -90,6 +91,7 @@ public class NeotelController {
}
if
(
outItem
.
get
(
"reelId"
)
!=
null
)
{
orderItem
.
setRi
(
outItem
.
get
(
"reelId"
).
toString
());
//料盘唯一码
orderItem
.
setNeedNum
(
1
);
}
orderItemList
.
add
(
orderItem
);
}
...
...
@@ -99,6 +101,7 @@ public class NeotelController {
liteOrder
.
setOrderNo
(
orderNo
);
liteOrder
.
setLine
(
line
);
liteOrder
.
setSo
(
so
);
liteOrder
.
setType
(
2
);
liteOrder
.
setOrderItems
(
orderItemList
);
liteOrder
=
liteOrderManager
.
createWithItems
(
liteOrder
);
liteOrderCache
.
addOrderToMap
(
liteOrder
);
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论