Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 935038e2
由
LN
编写于
2022-05-17 09:56:43 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.工单出库是否截料条件修改:当前盘数<最小库存。
2.安全库存逻辑修改。 3.UID出库增加供应商,批次,数量区间。 4.增加料架扫码功能。
1 个父辈
f7186bf1
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
61 行增加
和
18 行删除
src/main/java/com/neotel/smfcore/core/barcode/service/po/Component.java
src/main/java/com/neotel/smfcore/core/hik/rest/SingleInController.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialStockController.java
src/main/java/com/neotel/smfcore/core/storage/rest/StoragePosController.java
src/main/java/com/neotel/smfcore/core/storage/rest/query/StoragePosFindCriteria.java
src/main/java/com/neotel/smfcore/core/barcode/service/po/Component.java
查看文件 @
935038e
...
@@ -123,11 +123,11 @@ public class Component extends BasePo implements Serializable {
...
@@ -123,11 +123,11 @@ public class Component extends BasePo implements Serializable {
private
boolean
sizeConfirmed
=
false
;
private
boolean
sizeConfirmed
=
false
;
/**
/**
* 最大库存
* 最大库存
盘数
*/
*/
private
int
maxStoreNum
=
999999999
;
private
int
maxStoreNum
=
999999999
;
/**
/**
* 最小库存
* 最小库存
盘数
*/
*/
private
int
minStoreNum
=
0
;
private
int
minStoreNum
=
0
;
/**
/**
...
...
src/main/java/com/neotel/smfcore/core/hik/rest/SingleInController.java
查看文件 @
935038e
...
@@ -18,6 +18,8 @@ import com.neotel.smfcore.core.hik.bean.ShelfPosInfo;
...
@@ -18,6 +18,8 @@ import com.neotel.smfcore.core.hik.bean.ShelfPosInfo;
import
com.neotel.smfcore.core.inList.util.InListCache
;
import
com.neotel.smfcore.core.inList.util.InListCache
;
import
com.neotel.smfcore.core.kanban.rest.bean.dto.BoxStatusDto
;
import
com.neotel.smfcore.core.kanban.rest.bean.dto.BoxStatusDto
;
import
com.neotel.smfcore.core.storage.bean.UsageItem
;
import
com.neotel.smfcore.core.storage.bean.UsageItem
;
import
com.neotel.smfcore.core.storage.rest.dto.StorageDto
;
import
com.neotel.smfcore.core.storage.rest.mapstruct.StorageMapper
;
import
com.neotel.smfcore.core.storage.service.manager.IStorageManager
;
import
com.neotel.smfcore.core.storage.service.manager.IStorageManager
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
...
@@ -74,6 +76,9 @@ public class SingleInController {
...
@@ -74,6 +76,9 @@ public class SingleInController {
@Autowired
@Autowired
private
IStoragePosManager
storagePosManager
;
private
IStoragePosManager
storagePosManager
;
@Autowired
private
StorageMapper
storageMapper
;
@ApiOperation
(
"输入二维码后根据尺寸获取料架列表"
)
@ApiOperation
(
"输入二维码后根据尺寸获取料架列表"
)
@GetMapping
(
"/shelfPosList"
)
@GetMapping
(
"/shelfPosList"
)
...
@@ -198,6 +203,13 @@ public class SingleInController {
...
@@ -198,6 +203,13 @@ public class SingleInController {
if
(
pos
!=
null
)
{
if
(
pos
!=
null
)
{
throw
new
ValidateException
(
"smfcore.materialBox.inPos"
,
"物料已在库位{0}中"
,
new
String
[]{
pos
.
getPosName
()});
throw
new
ValidateException
(
"smfcore.materialBox.inPos"
,
"物料已在库位{0}中"
,
new
String
[]{
pos
.
getPosName
()});
}
}
for
(
DataLog
queueTask
:
queueTasks
)
{
if
(
queueTask
.
getBarcode
()!=
null
&&
queueTask
.
getBarcode
().
equals
(
barcode
.
getBarcode
()))
{
log
.
info
(
"codeIn ["
+
code
+
"]["
+
storageId
+
"]入库失败:条码["
+
queueTask
.
getBarcode
()
+
"]在料仓["
+
queueTask
.
getStorageName
()+
"]已有入库任务 "
);
throw
new
ValidateException
(
"smfcore.barcode.unfinished"
,
"条码["
+
queueTask
.
getBarcode
()+
"]在料仓["
+
queueTask
.
getStorageName
()+
"]已有入库任务"
,
new
String
[]{
queueTask
.
getBarcode
(),
queueTask
.
getStorageName
()});
}
}
//判断料架是否有空位
//判断料架是否有空位
for
(
UsageItem
item
:
for
(
UsageItem
item
:
storage
.
getUsageMap
().
values
())
{
storage
.
getUsageMap
().
values
())
{
...
@@ -297,6 +309,20 @@ public class SingleInController {
...
@@ -297,6 +309,20 @@ public class SingleInController {
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
}
}
@ApiOperation
(
"扫码料架功能"
)
@PostMapping
(
"/shelfCode"
)
public
ResultBean
shelfCode
(
@RequestBody
String
shelfCode
)
{
Storage
storage
=
dataCache
.
getStorageByName
(
shelfCode
);
if
(
storage
==
null
){
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.shelfNotExist"
,
"{0}对应的料架不存在"
,
new
String
[]{
shelfCode
});
}
StorageDto
dto
=
storageMapper
.
toDto
(
storage
);
return
ResultBean
.
newOkResult
(
dto
);
}
private
Barcode
resolveBarcode
(
String
code
)
{
private
Barcode
resolveBarcode
(
String
code
)
{
Barcode
barcode
=
codeResolve
.
resolveOneValideBarcode
(
code
);
Barcode
barcode
=
codeResolve
.
resolveOneValideBarcode
(
code
);
if
(
barcode
==
null
)
{
if
(
barcode
==
null
)
{
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
935038e
...
@@ -439,6 +439,7 @@ public class LiteOrderCache implements ITaskListener {
...
@@ -439,6 +439,7 @@ public class LiteOrderCache implements ITaskListener {
List
<
StoragePos
>
posList
=
storagePosManager
.
findOrderItemInStorage
(
availableStorageIds
,
pn
,
taskService
.
excludePosIds
());
List
<
StoragePos
>
posList
=
storagePosManager
.
findOrderItemInStorage
(
availableStorageIds
,
pn
,
taskService
.
excludePosIds
());
int
storageNum
=
0
;
int
storageNum
=
0
;
int
reelNum
=
posList
.
size
();
for
(
StoragePos
pos
:
posList
for
(
StoragePos
pos
:
posList
)
{
)
{
storageNum
+=
pos
.
getBarcode
().
getAmount
();
storageNum
+=
pos
.
getBarcode
().
getAmount
();
...
@@ -449,8 +450,8 @@ public class LiteOrderCache implements ITaskListener {
...
@@ -449,8 +450,8 @@ public class LiteOrderCache implements ITaskListener {
log
.
info
(
"工单["
+
cacheOrder
.
getOrderNo
()
+
"] 物料号["
+
pn
+
"] ,需求数量["
+
orderItem
.
getWemng
()
+
"], 未找到元器件信息, 缺料 "
);
log
.
info
(
"工单["
+
cacheOrder
.
getOrderNo
()
+
"] 物料号["
+
pn
+
"] ,需求数量["
+
orderItem
.
getWemng
()
+
"], 未找到元器件信息, 缺料 "
);
return
materialShortPro
(
userName
,
cacheOrder
);
return
materialShortPro
(
userName
,
cacheOrder
);
}
}
//判断库存
//判断库存
使用最小库存盘数:当前盘数<最小库存盘数时,需要截料
if
(
storageNum
<
component
.
getSafety
StoreNum
()){
if
(
reelNum
<
component
.
getMin
StoreNum
()){
needJieliao
=
true
;
needJieliao
=
true
;
}
}
//判断库存数量是否小于需求数量,小于直接返回缺料
//判断库存数量是否小于需求数量,小于直接返回缺料
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialStockController.java
查看文件 @
935038e
...
@@ -164,19 +164,20 @@ public class MaterialStockController {
...
@@ -164,19 +164,20 @@ public class MaterialStockController {
dto
.
setPartNumber
(
com
.
getPartNumber
());
dto
.
setPartNumber
(
com
.
getPartNumber
());
dto
.
setAmount
(
com
.
getAmount
());
dto
.
setAmount
(
com
.
getAmount
());
dto
.
setSupplementReel
(
0
);
dto
.
setSupplementReel
(
0
);
//判断是否需要补充
//判断是否需要补充 判断当前盘数是否小于最小盘数
if
(
dto
.
getStockCount
()
<
com
.
getMinStoreNum
())
{
if
(
dto
.
getStockReel
()
<
com
.
getMinStoreNum
())
{
if
(
dto
.
getStockReel
()
>
0
&&
dto
.
getStockCount
()
>
0
)
{
// if (dto.getStockReel() > 0 && dto.getStockCount() > 0) {
//
int
reelCount
=
dto
.
getStockCount
()
/
dto
.
getStockReel
();
// int reelCount = dto.getStockCount() / dto.getStockReel();
//补充盘数
// //补充盘数
int
needReel
=
(
com
.
getMinStoreNum
()
-
dto
.
getStockCount
())
/
reelCount
;
// int needReel = (com.getMinStoreNum() - dto.getStockCount()) / reelCount;
dto
.
setSupplementReel
(
needReel
);
// dto.setSupplementReel(needReel);
}
else
{
// } else {
int
needReel
=
com
.
getMinStoreNum
()
/
dto
.
getAmount
();
// int needReel = com.getMinStoreNum() / dto.getAmount();
dto
.
setSupplementReel
(
needReel
);
// dto.setSupplementReel(needReel);
}
// }
dto
.
setSupplementReel
(
com
.
getMinStoreNum
()-
dto
.
getStockReel
());
}
}
if
(
needSupplement
)
{
if
(
needSupplement
)
{
if
(
dto
.
getSupplementReel
()
>
0
){
if
(
dto
.
getSupplementReel
()
>
0
){
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/StoragePosController.java
查看文件 @
935038e
...
@@ -296,6 +296,14 @@ public class StoragePosController {
...
@@ -296,6 +296,14 @@ public class StoragePosController {
}
}
}
}
if
(
criteria
.
getMinAmount
()!=
null
){
baseCriteria
.
and
(
"barcode.amount"
).
gte
(
criteria
.
getMinAmount
());
}
if
(
criteria
.
getMaxAmount
()!=
null
){
baseCriteria
.
and
(
"barcode.amount"
).
lte
(
criteria
.
getMaxAmount
());
}
query
.
addCriteria
(
baseCriteria
);
query
.
addCriteria
(
baseCriteria
);
return
query
;
return
query
;
}
}
...
@@ -309,6 +317,7 @@ public class StoragePosController {
...
@@ -309,6 +317,7 @@ public class StoragePosController {
List
<
StoragePos
>
storagePos
=
storagePosManager
.
findByQuery
(
query
);
List
<
StoragePos
>
storagePos
=
storagePosManager
.
findByQuery
(
query
);
storagePosManager
.
download
(
storagePos
,
response
,
request
.
getLocale
());
storagePosManager
.
download
(
storagePos
,
response
,
request
.
getLocale
());
}
}
//UID出库
@ApiOperation
(
"查找出库列表"
)
@ApiOperation
(
"查找出库列表"
)
@GetMapping
(
"/find"
)
@GetMapping
(
"/find"
)
@PreAuthorize
(
"@el.check('checkOut')"
)
@PreAuthorize
(
"@el.check('checkOut')"
)
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/query/StoragePosFindCriteria.java
查看文件 @
935038e
...
@@ -14,7 +14,7 @@ import java.util.List;
...
@@ -14,7 +14,7 @@ import java.util.List;
@Data
@Data
public
class
StoragePosFindCriteria
{
public
class
StoragePosFindCriteria
{
@QueryCondition
(
blurry
=
"barcode.partNumber,barcode,posName"
)
@QueryCondition
(
blurry
=
"barcode.partNumber,barcode,posName
,barcode.provider,barcode.batch
"
)
private
String
blurry
;
private
String
blurry
;
@QueryCondition
(
type
=
QueryCondition
.
Type
.
BETWEEN
,
propName
=
"barcode.putInDate"
)
@QueryCondition
(
type
=
QueryCondition
.
Type
.
BETWEEN
,
propName
=
"barcode.putInDate"
)
...
@@ -82,6 +82,12 @@ public class StoragePosFindCriteria {
...
@@ -82,6 +82,12 @@ public class StoragePosFindCriteria {
@ApiModelProperty
(
"等级"
)
@ApiModelProperty
(
"等级"
)
private
String
msl
;
private
String
msl
;
@ApiModelProperty
(
"最小数量"
)
private
Integer
minAmount
;
@ApiModelProperty
(
"最大数量"
)
private
Integer
maxAmount
;
public
int
getComponentType
(){
public
int
getComponentType
(){
int
componentType
=
getType
();
int
componentType
=
getType
();
if
(
componentType
!=
-
1
)
{
if
(
componentType
!=
-
1
)
{
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论