Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 9e7940a2
由
zshaohui
编写于
2024-10-30 15:39:13 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.uid出库增加线体选择
2.物料日志,增加线体显示
1 个父辈
115b0ffa
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
77 行增加
和
8 行删除
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/storage/rest/StoragePosController.java
src/main/java/com/neotel/smfcore/core/storage/rest/dto/CheckOutDto.java
src/main/java/com/neotel/smfcore/core/system/rest/TaskController.java
src/main/java/com/neotel/smfcore/core/system/rest/bean/dto/TaskDto.java
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
src/main/java/com/neotel/smfcore/custom/lizhen/innerBox/rest/VirtualRestController.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
9e7940a
...
@@ -537,6 +537,9 @@ public class LiteOrderCache {
...
@@ -537,6 +537,9 @@ public class LiteOrderCache {
Collection
<
String
>
excludePosIds
=
excludeOutPosIds
();
Collection
<
String
>
excludePosIds
=
excludeOutPosIds
();
String
partNumber
=
orderItem
.
getPn
();
String
partNumber
=
orderItem
.
getPn
();
String
[]
partNumberSpl
=
partNumber
.
split
(
","
);
StoragePos
pos
=
null
;
StoragePos
pos
=
null
;
if
(
cacheOrder
.
getType
()
==
2
)
{
if
(
cacheOrder
.
getType
()
==
2
)
{
//RI
//RI
...
@@ -551,12 +554,16 @@ public class LiteOrderCache {
...
@@ -551,12 +554,16 @@ public class LiteOrderCache {
//PN
//PN
do
{
do
{
//首先按空闲料仓进行出库
//首先按空闲料仓进行出库
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findPartNumberListInStorages
(
freeStorageIds
,
partNumber
,
excludePosIds
,
checkoutType
,
orderItem
.
getBrand
());
List
<
StoragePos
>
storagePosList
=
new
ArrayList
<>();
//如果为空的话,则出全部的
for
(
String
pn
:
partNumberSpl
)
{
if
(
storagePosList
==
null
||
storagePosList
.
isEmpty
())
{
storagePosList
=
storagePosManager
.
findPartNumberListInStorages
(
freeStorageIds
,
pn
,
excludePosIds
,
checkoutType
,
orderItem
.
getBrand
());
storagePosList
=
storagePosManager
.
findPartNumberListInStorages
(
availableStorageIds
,
partNumber
,
excludePosIds
,
checkoutType
,
orderItem
.
getBrand
());
if
(
storagePosList
==
null
||
storagePosList
.
isEmpty
()){
storagePosList
=
storagePosManager
.
findPartNumberListInStorages
(
availableStorageIds
,
pn
,
excludePosIds
,
checkoutType
,
orderItem
.
getBrand
());
}
if
(
storagePosList
!=
null
&&
!
storagePosList
.
isEmpty
()){
break
;
}
}
}
//排序找到最早的
//排序找到最早的
if
(
storagePosList
!=
null
&&
!
storagePosList
.
isEmpty
())
{
if
(
storagePosList
!=
null
&&
!
storagePosList
.
isEmpty
())
{
List
<
Barcode
>
barcodeList
=
new
ArrayList
<>();
List
<
Barcode
>
barcodeList
=
new
ArrayList
<>();
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/StoragePosController.java
查看文件 @
9e7940a
...
@@ -679,6 +679,12 @@ public class StoragePosController {
...
@@ -679,6 +679,12 @@ public class StoragePosController {
if
(
checkOutDto
.
getSingleOut
()
==
null
)
{
if
(
checkOutDto
.
getSingleOut
()
==
null
)
{
checkOutDto
.
setSingleOut
(
true
+
""
);
checkOutDto
.
setSingleOut
(
true
+
""
);
}
}
String
line
=
checkOutDto
.
getLine
();
if
(
StringUtils
.
isEmpty
(
line
)){
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"线体"
});
}
String
isSingleOutStr
=
checkOutDto
.
getSingleOut
();
String
isSingleOutStr
=
checkOutDto
.
getSingleOut
();
boolean
isSingleOut
=
Boolean
.
valueOf
(
isSingleOutStr
);
boolean
isSingleOut
=
Boolean
.
valueOf
(
isSingleOutStr
);
...
@@ -701,7 +707,7 @@ public class StoragePosController {
...
@@ -701,7 +707,7 @@ public class StoragePosController {
// }
// }
log
.
info
(
"出库料仓【"
+
storage
.
getName
()
+
"_"
+
storage
.
getCid
()
+
"】位置仓位【"
+
pos
.
getPosName
()
+
"】"
);
log
.
info
(
"出库料仓【"
+
storage
.
getName
()
+
"_"
+
storage
.
getCid
()
+
"】位置仓位【"
+
pos
.
getPosName
()
+
"】"
);
String
outResult
=
taskService
.
checkout
(
storage
,
pos
,
isSingleOut
,
SecurityUtils
.
getCurrentUsername
(),
null
);
String
outResult
=
taskService
.
checkout
(
storage
,
pos
,
isSingleOut
,
SecurityUtils
.
getCurrentUsername
(),
null
,
line
);
if
(!
Strings
.
isNullOrEmpty
(
outResult
))
{
if
(!
Strings
.
isNullOrEmpty
(
outResult
))
{
throw
new
ValidateException
(
"smfcore.error"
,
outResult
);
throw
new
ValidateException
(
"smfcore.error"
,
outResult
);
}
}
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/dto/CheckOutDto.java
查看文件 @
9e7940a
...
@@ -9,4 +9,6 @@ public class CheckOutDto {
...
@@ -9,4 +9,6 @@ public class CheckOutDto {
private
String
[]
pids
;
private
String
[]
pids
;
@ApiModelProperty
(
"是否是单盘出库"
)
@ApiModelProperty
(
"是否是单盘出库"
)
private
String
singleOut
;
private
String
singleOut
;
@ApiModelProperty
(
"线体"
)
private
String
line
;
}
}
src/main/java/com/neotel/smfcore/core/system/rest/TaskController.java
查看文件 @
9e7940a
...
@@ -111,6 +111,7 @@ public class TaskController {
...
@@ -111,6 +111,7 @@ public class TaskController {
headerList
.
add
(
Lists
.
newArrayList
(
"料件编号"
));
headerList
.
add
(
Lists
.
newArrayList
(
"料件编号"
));
headerList
.
add
(
Lists
.
newArrayList
(
"条码编号"
));
headerList
.
add
(
Lists
.
newArrayList
(
"条码编号"
));
headerList
.
add
(
Lists
.
newArrayList
(
"料仓名称"
));
headerList
.
add
(
Lists
.
newArrayList
(
"料仓名称"
));
headerList
.
add
(
Lists
.
newArrayList
(
"线体"
));
headerList
.
add
(
Lists
.
newArrayList
(
"数量"
));
headerList
.
add
(
Lists
.
newArrayList
(
"数量"
));
headerList
.
add
(
Lists
.
newArrayList
(
"类型"
));
headerList
.
add
(
Lists
.
newArrayList
(
"类型"
));
headerList
.
add
(
Lists
.
newArrayList
(
"来源"
));
headerList
.
add
(
Lists
.
newArrayList
(
"来源"
));
...
@@ -130,6 +131,7 @@ public class TaskController {
...
@@ -130,6 +131,7 @@ public class TaskController {
result
.
add
(
dataLog
.
getPartNumber
());
result
.
add
(
dataLog
.
getPartNumber
());
result
.
add
(
dataLog
.
getBarcode
());
result
.
add
(
dataLog
.
getBarcode
());
result
.
add
(
dataLog
.
getPosName
()+
" "
+
dataLog
.
getStorageName
());
result
.
add
(
dataLog
.
getPosName
()+
" "
+
dataLog
.
getStorageName
());
result
.
add
(
dataLog
.
getLine
());
result
.
add
(
dataLog
.
getNum
());
result
.
add
(
dataLog
.
getNum
());
result
.
add
(
dataLog
.
getType
()
==
1
?
"入库"
:
"出库"
);
result
.
add
(
dataLog
.
getType
()
==
1
?
"入库"
:
"出库"
);
result
.
add
(
dataLog
.
getSourceName
());
result
.
add
(
dataLog
.
getSourceName
());
...
...
src/main/java/com/neotel/smfcore/core/system/rest/bean/dto/TaskDto.java
查看文件 @
9e7940a
...
@@ -143,6 +143,9 @@ public class TaskDto implements Serializable {
...
@@ -143,6 +143,9 @@ public class TaskDto implements Serializable {
@ApiModelProperty
(
"如果是出库任务,需要记录入库时间"
)
@ApiModelProperty
(
"如果是出库任务,需要记录入库时间"
)
private
Date
putInDate
;
private
Date
putInDate
;
@ApiModelProperty
(
"线体"
)
private
String
line
;
public
String
getTaskColor
()
{
public
String
getTaskColor
()
{
if
(
ObjectUtil
.
isNotEmpty
(
lightColor
))
{
if
(
ObjectUtil
.
isNotEmpty
(
lightColor
))
{
return
"#"
+
lightColor
;
return
"#"
+
lightColor
;
...
...
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
查看文件 @
9e7940a
...
@@ -119,6 +119,10 @@ public class TaskService {
...
@@ -119,6 +119,10 @@ public class TaskService {
return
task
;
return
task
;
}
}
public
synchronized
String
checkout
(
Storage
storage
,
StoragePos
pos
,
boolean
isSingleOut
,
String
opUserName
,
String
stationName
)
throws
ValidateException
{
return
checkout
(
storage
,
pos
,
isSingleOut
,
opUserName
,
stationName
,
""
);
}
/**
/**
* 库位出库
* 库位出库
*
*
...
@@ -128,7 +132,7 @@ public class TaskService {
...
@@ -128,7 +132,7 @@ public class TaskService {
* @return
* @return
* @throws ValidateException
* @throws ValidateException
*/
*/
public
synchronized
String
checkout
(
Storage
storage
,
StoragePos
pos
,
boolean
isSingleOut
,
String
opUserName
,
String
stationName
)
throws
ValidateException
{
public
synchronized
String
checkout
(
Storage
storage
,
StoragePos
pos
,
boolean
isSingleOut
,
String
opUserName
,
String
stationName
,
String
line
)
throws
ValidateException
{
if
(
pos
.
getBarcode
()
==
null
)
{
if
(
pos
.
getBarcode
()
==
null
)
{
String
msg
=
"库位["
+
pos
.
getPosName
()
+
"]中已无物料,忽略"
;
String
msg
=
"库位["
+
pos
.
getPosName
()
+
"]中已无物料,忽略"
;
log
.
info
(
msg
);
log
.
info
(
msg
);
...
@@ -164,6 +168,7 @@ public class TaskService {
...
@@ -164,6 +168,7 @@ public class TaskService {
task
.
setLoc
(
stationName
);
task
.
setLoc
(
stationName
);
}
}
task
.
setBoxPosName
(
pos
.
getPosName
());
task
.
setBoxPosName
(
pos
.
getPosName
());
task
.
setLine
(
line
);
/*if (barcode.getBarcode().startsWith("CS") || barcode.getBarcode().startsWith("CM") || barcode.getBarcode().startsWith("CB")){
/*if (barcode.getBarcode().startsWith("CS") || barcode.getBarcode().startsWith("CM") || barcode.getBarcode().startsWith("CB")){
task.setStatus(OP_STATUS.FINISHED.name());
task.setStatus(OP_STATUS.FINISHED.name());
addTaskToFinished(pos,barcode,SecurityUtils.getCurrentUsername());
addTaskToFinished(pos,barcode,SecurityUtils.getCurrentUsername());
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/innerBox/rest/VirtualRestController.java
查看文件 @
9e7940a
...
@@ -179,7 +179,7 @@ public class VirtualRestController {
...
@@ -179,7 +179,7 @@ public class VirtualRestController {
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.storagePos.existBarcode"
,
"{}已存在库位{}中"
,
new
String
[]{
barcode
.
getBarcode
(),
pos
.
getPosName
()});
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.storagePos.existBarcode"
,
"{}已存在库位{}中"
,
new
String
[]{
barcode
.
getBarcode
(),
pos
.
getPosName
()});
}
}
//放入虚拟仓
//放入虚拟仓
intoVirtualPos
(
posName
,
barcode
,
""
);
intoVirtualPos
New
(
posName
,
barcode
,
""
);
return
ResultBean
.
newOkResult
(
barcode
.
getBarcode
()+
"已经放入库位中:"
+
posName
);
return
ResultBean
.
newOkResult
(
barcode
.
getBarcode
()+
"已经放入库位中:"
+
posName
);
}
}
...
@@ -432,6 +432,50 @@ public class VirtualRestController {
...
@@ -432,6 +432,50 @@ public class VirtualRestController {
}
}
private
void
intoVirtualPosNew
(
String
posName
,
Barcode
barcode
,
String
orderNo
)
{
//判断有没有空库位
Storage
storage
=
null
;
Collection
<
Storage
>
storages
=
dataCache
.
getAllStorage
().
values
();
for
(
Storage
stor
:
storages
)
{
if
(
stor
.
isVirtual
())
{
storage
=
stor
;
break
;
}
}
StoragePos
pos
=
storagePosManager
.
findOneEmptyPosNameByStorageId
(
storage
.
getId
(),
posName
);
if
(
pos
!=
null
)
{
posName
=
posName
+
"-"
+
pos
.
getId
();
}
else
{
pos
=
new
StoragePos
();
pos
=
storagePosManager
.
save
(
pos
);
posName
=
posName
+
"-"
+
pos
.
getId
();
}
barcode
.
setPosName
(
posName
);
barcode
.
setPutInTime
(
new
Date
().
getTime
());
barcode
=
barcodeManager
.
save
(
barcode
);
pos
.
setPosName
(
posName
);
pos
.
setBarcode
(
barcode
);
pos
.
setEnabled
(
true
);
pos
.
setUsed
(
true
);
pos
.
setUpdateDate
(
new
Date
());
pos
.
setStorageId
(
storage
.
getId
());
pos
=
storagePosManager
.
save
(
pos
);
DataLog
dataLog
=
generateTask
(
storage
,
barcode
,
pos
,
OP
.
PUT_IN
,
OP_STATUS
.
FINISHED
.
name
(),
null
);
dataLog
.
setExtendType
(
ExtendType
.
VIRTUAL_PUTIN
);
//虚拟入库
if
(
StringUtils
.
isNotBlank
(
orderNo
)){
dataLog
.
setSourceName
(
orderNo
);
}
//taskService.addTaskToExecute(dataLog);
//taskService.moveTaskToFinished(dataLog);
taskService
.
updateFinishedTask
(
dataLog
);
taskService
.
removeFinishedTask
(
dataLog
);
//更改缓存信息
dataCache
.
updateInventory
(
pos
,
barcode
);
}
private
DataLog
generateTask
(
Storage
storage
,
Barcode
barcode
,
StoragePos
pos
,
int
type
,
String
status
,
String
loc
)
{
private
DataLog
generateTask
(
Storage
storage
,
Barcode
barcode
,
StoragePos
pos
,
int
type
,
String
status
,
String
loc
)
{
//开始入库任务
//开始入库任务
DataLog
task
=
new
DataLog
(
storage
,
barcode
,
pos
);
DataLog
task
=
new
DataLog
(
storage
,
barcode
,
pos
);
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论