Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 1493aa20
由
zshaohui
编写于
2025-06-16 16:35:01 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.水位预警逻辑修改
1 个父辈
eb1f2ab9
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
72 行增加
和
10 行删除
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrderItem.java
src/main/java/com/neotel/smfcore/custom/luxsan/api/LuxsanApi.java
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/rawstor/bean/StorageLevelWarning.java
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/rawstor/controller/PkCheckOutController.java
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/rawstor/controller/StorageLevelWarningController.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
1493aa2
...
@@ -41,8 +41,10 @@ import com.neotel.smfcore.custom.luxsan.api.bean.request.FetchHoldInfoRequest;
...
@@ -41,8 +41,10 @@ import com.neotel.smfcore.custom.luxsan.api.bean.request.FetchHoldInfoRequest;
import
com.neotel.smfcore.custom.luxsan.api.bean.request.TicketPickRequest
;
import
com.neotel.smfcore.custom.luxsan.api.bean.request.TicketPickRequest
;
import
com.neotel.smfcore.custom.luxsan.api.bean.result.FetchHoldInfoResult
;
import
com.neotel.smfcore.custom.luxsan.api.bean.result.FetchHoldInfoResult
;
import
com.neotel.smfcore.custom.luxsan.factory_c.common.util.CommonUtil
;
import
com.neotel.smfcore.custom.luxsan.factory_c.common.util.CommonUtil
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.bean.StorageLevelWarning
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.enums.LiteorderCheckType
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.enums.LiteorderCheckType
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.enums.TaskCurrentLoc
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.enums.TaskCurrentLoc
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.manager.IStorageLevelWarningManager
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.util.BinCacheUtil
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.util.BinCacheUtil
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.util.CheckOutUtil
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.util.CheckOutUtil
;
import
com.neotel.smfcore.custom.luxsan.factory_c.wipstor.util.TaskLocUtil
;
import
com.neotel.smfcore.custom.luxsan.factory_c.wipstor.util.TaskLocUtil
;
...
@@ -91,6 +93,9 @@ public class LiteOrderCache {
...
@@ -91,6 +93,9 @@ public class LiteOrderCache {
@Autowired
@Autowired
private
MaiZhengApi
maiZhengApi
;
private
MaiZhengApi
maiZhengApi
;
@Autowired
private
IStorageLevelWarningManager
storageLevelWarningManager
;
/**
/**
* 正在执行的liteOrderMap, key 为orderNo,value 为order
* 正在执行的liteOrderMap, key 为orderNo,value 为order
*/
*/
...
@@ -1041,6 +1046,20 @@ public class LiteOrderCache {
...
@@ -1041,6 +1046,20 @@ public class LiteOrderCache {
String
pn
=
orderItem
.
getPn
();
//料号
String
pn
=
orderItem
.
getPn
();
//料号
StoragePos
pos
=
getStoragePosByPartNumberAndBrand
(
allStoragePosList
,
pn
,
excludeIdList
);
StoragePos
pos
=
getStoragePosByPartNumberAndBrand
(
allStoragePosList
,
pn
,
excludeIdList
);
if
(
pos
==
null
)
{
if
(
pos
==
null
)
{
log
.
info
(
orderItem
.
getOrderId
()
+
"厂商:"
+
warehouseCode
+
",供应商:"
+
brand
+
",料号:"
+
pn
+
"开始找替代料"
);
List
<
StorageLevelWarning
>
warningList
=
storageLevelWarningManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"req"
).
is
(
orderItem
.
getReplaceNum
())));
if
(
warningList
!=
null
&&
!
warningList
.
isEmpty
()){
for
(
StorageLevelWarning
levelWarning
:
warningList
)
{
List
<
StoragePos
>
replaceStoragePosList
=
storagePosManager
.
findStoragePosByPartNumber
(
Arrays
.
asList
(
levelWarning
.
getPartNumber
()));
pos
=
getStoragePosByPartNumberAndBrand
(
replaceStoragePosList
,
levelWarning
.
getPartNumber
(),
excludeIdList
);
if
(
pos
!=
null
){
pn
=
levelWarning
.
getPartNumber
();
break
;
}
}
}
}
if
(
pos
==
null
){
log
.
info
(
orderItem
.
getOrderId
()
+
"厂商:"
+
warehouseCode
+
",供应商:"
+
brand
+
",料号:"
+
pn
+
"未找到存在库位,跳过"
);
log
.
info
(
orderItem
.
getOrderId
()
+
"厂商:"
+
warehouseCode
+
",供应商:"
+
brand
+
",料号:"
+
pn
+
"未找到存在库位,跳过"
);
break
;
break
;
}
}
...
...
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrderItem.java
查看文件 @
1493aa2
...
@@ -21,11 +21,6 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
...
@@ -21,11 +21,6 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
private
String
pn
;
private
String
pn
;
/**
/**
* 替代料
*/
private
String
replacePn
;
/**
* 唯一码
* 唯一码
*/
*/
private
String
ri
;
private
String
ri
;
...
@@ -406,6 +401,8 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
...
@@ -406,6 +401,8 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
private
String
moveType
;
private
String
moveType
;
private
String
replaceNum
;
public
void
setOutReelList
(
String
reel
)
{
public
void
setOutReelList
(
String
reel
)
{
if
(
outReelList
==
null
){
if
(
outReelList
==
null
){
outReelList
=
new
ArrayList
<>();
outReelList
=
new
ArrayList
<>();
...
...
src/main/java/com/neotel/smfcore/custom/luxsan/api/LuxsanApi.java
查看文件 @
1493aa2
...
@@ -1385,7 +1385,7 @@ public class LuxsanApi extends DefaultSmfApiListener {
...
@@ -1385,7 +1385,7 @@ public class LuxsanApi extends DefaultSmfApiListener {
for
(
LiteOrderItem
orderItem
:
order
.
getOrderItems
())
{
for
(
LiteOrderItem
orderItem
:
order
.
getOrderItems
())
{
Map
<
String
,
Object
>
itemMap
=
new
HashMap
<>();
Map
<
String
,
Object
>
itemMap
=
new
HashMap
<>();
itemMap
.
put
(
"face"
,
"T"
);
itemMap
.
put
(
"face"
,
"T"
);
itemMap
.
put
(
"mo"
,
System
.
currentTimeMillis
()
+
""
);
itemMap
.
put
(
"mo"
,
orderItem
.
getMo
()
);
itemMap
.
put
(
"material_code"
,
orderItem
.
getPn
());
itemMap
.
put
(
"material_code"
,
orderItem
.
getPn
());
itemMap
.
put
(
"brand"
,
""
);
itemMap
.
put
(
"brand"
,
""
);
itemMap
.
put
(
"batch_code"
,
""
);
itemMap
.
put
(
"batch_code"
,
""
);
...
...
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/rawstor/bean/StorageLevelWarning.java
查看文件 @
1493aa2
...
@@ -6,6 +6,8 @@ import lombok.Data;
...
@@ -6,6 +6,8 @@ import lombok.Data;
@Data
@Data
public
class
StorageLevelWarning
extends
BasePo
{
public
class
StorageLevelWarning
extends
BasePo
{
private
String
req
;
private
String
partNumber
;
private
String
partNumber
;
private
String
replacePartNumber
;
private
String
replacePartNumber
;
...
...
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/rawstor/controller/PkCheckOutController.java
查看文件 @
1493aa2
...
@@ -98,7 +98,7 @@ public class PkCheckOutController {
...
@@ -98,7 +98,7 @@ public class PkCheckOutController {
queryPickingResult
.
setStartDate
(
liteOrder
.
getStartDate
());
queryPickingResult
.
setStartDate
(
liteOrder
.
getStartDate
());
queryPickingResult
.
setEndDate
(
liteOrder
.
getEndDate
());
queryPickingResult
.
setEndDate
(
liteOrder
.
getEndDate
());
queryPickingResult
.
setFinishDate
(
liteOrder
.
getFinishDate
());
queryPickingResult
.
setFinishDate
(
liteOrder
.
getFinishDate
());
if
(!
liteOrder
.
is
TaskFinished
()
||
liteOrder
.
isClosed
(
)){
if
(!
liteOrder
.
is
New
()
&&
(!
liteOrder
.
isTaskFinished
()
||
liteOrder
.
isClosed
()
)){
queryPickingResult
.
setCheckOut
(
false
);
queryPickingResult
.
setCheckOut
(
false
);
}
}
queryPickingResult
.
setTargetLoc
(
liteOrder
.
getLoc
());
queryPickingResult
.
setTargetLoc
(
liteOrder
.
getLoc
());
...
@@ -171,6 +171,50 @@ public class PkCheckOutController {
...
@@ -171,6 +171,50 @@ public class PkCheckOutController {
if
(!
liteOrder
.
isTaskFinished
()
&&
!
liteOrder
.
isNew
())
{
if
(!
liteOrder
.
isTaskFinished
()
&&
!
liteOrder
.
isNew
())
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
pickingId
+
"正在执行中,不允许出库"
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
pickingId
+
"正在执行中,不允许出库"
);
}
}
//3.获取pk详情
GetPickingItemsRequest
request
=
new
GetPickingItemsRequest
(
CommonUtil
.
plantCode
,
pickingId
);
List
<
GetPickingItemsResult
>
pickingItemList
=
LuxsanApi
.
getPickingItems
(
request
);
List
<
LiteOrderItem
>
newOrderItemList
=
new
ArrayList
<>();
List
<
LiteOrderItem
>
orderItems
=
liteOrder
.
getOrderItems
();
for
(
LiteOrderItem
item
:
orderItems
)
{
for
(
GetPickingItemsResult
pkItem
:
pickingItemList
)
{
String
mo
=
pkItem
.
getMO
();
if
(
mo
.
equals
(
item
.
getMo
()))
{
item
.
setPlantCode
(
pkItem
.
getPLANT_CODE
());
item
.
setItemId
(
pkItem
.
getITEM_ID
());
item
.
setPickingId
(
pkItem
.
getPICKING_ID
());
item
.
setMaterialCode
(
pkItem
.
getMATERIAL_CODE
());
item
.
setPn
(
pkItem
.
getMATERIAL_CODE
());
item
.
setWarehouse
(
pkItem
.
getWAREHOUSE
());
item
.
setWarehouseCode
(
pkItem
.
getWAREHOUSE
());
item
.
setReqQty
(
pkItem
.
getREQ_QTY
());
item
.
setReqReel
(
pkItem
.
getREQ_REEL
());
item
.
setCpQty
(
pkItem
.
getCP_QTY
());
item
.
setCpReel
(
pkItem
.
getCP_REEL
());
item
.
setIssuedQty
(
pkItem
.
getISSUED_QTY
());
item
.
setIssuedReel
(
pkItem
.
getISSUED_REEL
());
item
.
setRetQty
(
pkItem
.
getRET_QTY
());
item
.
setFace
(
pkItem
.
getFACE
());
item
.
setBatchCode
(
pkItem
.
getBATCH_CODE
());
item
.
setBrand
(
pkItem
.
getBRAND
());
item
.
setCreateAt
(
pkItem
.
getCREATE_AT
());
item
.
setUpdateAt
(
pkItem
.
getUPDATE_AT
());
item
.
setMo
(
pkItem
.
getMO
());
item
.
setBinCode
(
pkItem
.
getBIN_CODE
());
//需要发料的数量
int
needNum
=
pkItem
.
getREQ_QTY
()
-
pkItem
.
getCP_QTY
()
-
pkItem
.
getISSUED_QTY
()
+
pkItem
.
getRET_QTY
();
item
.
setNeedNum
(
needNum
);
//需要发料的卷数
int
needReelCount
=
pkItem
.
getREQ_REEL
()
-
pkItem
.
getISSUED_REEL
()
-
pkItem
.
getCP_REEL
()
+
(
pkItem
.
getRET_QTY
()
>
0
?
1
:
0
);
item
.
setNeedReelCount
(
needReelCount
);
break
;
}
}
newOrderItemList
.
add
(
item
);
}
liteOrder
.
setOrderItems
(
newOrderItemList
);
liteOrder
=
liteOrderManager
.
createWithItems
(
liteOrder
);
liteOrderCache
.
addOrderToMap
(
liteOrder
);
//2.如果存在,改个名字
//2.如果存在,改个名字
/*liteOrder.setOrderNo(liteOrder.getOrderNo() + DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
/*liteOrder.setOrderNo(liteOrder.getOrderNo() + DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
liteOrderManager.createWithItems(liteOrder);*/
liteOrderManager.createWithItems(liteOrder);*/
...
...
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/rawstor/controller/StorageLevelWarningController.java
查看文件 @
1493aa2
...
@@ -87,7 +87,6 @@ public class StorageLevelWarningController {
...
@@ -87,7 +87,6 @@ public class StorageLevelWarningController {
List
<
LiteOrderItem
>
itemList
=
new
ArrayList
<>();
List
<
LiteOrderItem
>
itemList
=
new
ArrayList
<>();
for
(
StorageLevelWarning
levelWarning
:
warningList
)
{
for
(
StorageLevelWarning
levelWarning
:
warningList
)
{
String
partNumber
=
levelWarning
.
getPartNumber
();
String
partNumber
=
levelWarning
.
getPartNumber
();
String
replacePartNumber
=
levelWarning
.
getReplacePartNumber
();
int
minInventory
=
levelWarning
.
getMinInventory
();
int
minInventory
=
levelWarning
.
getMinInventory
();
int
maxInventory
=
levelWarning
.
getMaxInventory
();
int
maxInventory
=
levelWarning
.
getMaxInventory
();
int
currentInventory
=
levelWarning
.
getCurrentInventory
();
int
currentInventory
=
levelWarning
.
getCurrentInventory
();
...
@@ -101,9 +100,10 @@ public class StorageLevelWarningController {
...
@@ -101,9 +100,10 @@ public class StorageLevelWarningController {
LiteOrderItem
item
=
new
LiteOrderItem
();
LiteOrderItem
item
=
new
LiteOrderItem
();
item
.
setWarningItemId
(
levelWarning
.
getId
());
item
.
setWarningItemId
(
levelWarning
.
getId
());
item
.
setPn
(
partNumber
);
item
.
setPn
(
partNumber
);
item
.
setReplacePn
(
replacePartNumber
);
item
.
setNeedReelCount
(
needOut
);
item
.
setNeedReelCount
(
needOut
);
item
.
setMo
(
System
.
currentTimeMillis
()+
""
);
item
.
setWarehouseCode
(
levelWarning
.
getWareHouseCode
());
item
.
setWarehouseCode
(
levelWarning
.
getWareHouseCode
());
item
.
setReplaceNum
(
levelWarning
.
getReplacePartNumber
());
itemList
.
add
(
item
);
itemList
.
add
(
item
);
}
}
}
}
...
@@ -136,7 +136,6 @@ public class StorageLevelWarningController {
...
@@ -136,7 +136,6 @@ public class StorageLevelWarningController {
}
}
}
}
}
}
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
}
}
...
@@ -157,6 +156,7 @@ public class StorageLevelWarningController {
...
@@ -157,6 +156,7 @@ public class StorageLevelWarningController {
if
(
dbWarning
==
null
)
{
if
(
dbWarning
==
null
)
{
dbWarning
=
new
StorageLevelWarning
();
dbWarning
=
new
StorageLevelWarning
();
}
}
dbWarning
.
setReq
(
warning
.
getReq
());
dbWarning
.
setWareHouseCode
(
warning
.
getWareHouseCode
());
dbWarning
.
setWareHouseCode
(
warning
.
getWareHouseCode
());
dbWarning
.
setPartNumber
(
warning
.
getPartNumber
());
dbWarning
.
setPartNumber
(
warning
.
getPartNumber
());
dbWarning
.
setLoc
(
loc
);
dbWarning
.
setLoc
(
loc
);
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论