Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 46475c29
由
张少辉
编写于
2026-01-08 15:07:26 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.库存缺料信息优化
2.过期报表增加查询
1 个父辈
03af62cc
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
68 行增加
和
8 行删除
src/main/java/com/neotel/smfcore/custom/lizhen/innerBox/rest/ReelConsumptionController.java
src/main/java/com/neotel/smfcore/custom/lizhen/report/InnerReportController.java
src/main/java/com/neotel/smfcore/custom/lizhen/report/TowerInventoryController.java
src/main/java/com/neotel/smfcore/custom/lizhen/report/bean/query/BcQuery.java
src/main/java/com/neotel/smfcore/custom/lizhen/innerBox/rest/ReelConsumptionController.java
查看文件 @
46475c2
...
@@ -158,7 +158,7 @@ public class ReelConsumptionController {
...
@@ -158,7 +158,7 @@ public class ReelConsumptionController {
if
(
cell
==
null
){
if
(
cell
==
null
){
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"替代料分组"
});
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"替代料分组"
});
}
}
String
value
=
cell
.
getStringCellValue
(
);
String
value
=
getCellValueAsString
(
cell
);
if
(
StringUtils
.
isEmpty
(
value
))
{
if
(
StringUtils
.
isEmpty
(
value
))
{
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"替代料分组"
});
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"替代料分组"
});
}
}
...
@@ -296,7 +296,7 @@ public class ReelConsumptionController {
...
@@ -296,7 +296,7 @@ public class ReelConsumptionController {
}
else
{
}
else
{
ReelConsumption
reelConsumption
=
reelConsumptionManager
.
get
(
id
);
ReelConsumption
reelConsumption
=
reelConsumptionManager
.
get
(
id
);
if
(
reelConsumption
!=
null
)
{
if
(
reelConsumption
!=
null
)
{
dto
.
setPartNumber
(
reelConsumption
.
get
Id
());
dto
.
setPartNumber
(
reelConsumption
.
get
PartNumber
());
dto
.
setId
(
reelConsumption
.
getId
());
dto
.
setId
(
reelConsumption
.
getId
());
dto
.
setReplaceGroup
(
reelConsumption
.
getReplaceGroup
());
dto
.
setReplaceGroup
(
reelConsumption
.
getReplaceGroup
());
Map
<
String
,
ReelConsumptionInventory
>
oldInventoryMap
=
reelConsumption
.
getInventoryMap
();
Map
<
String
,
ReelConsumptionInventory
>
oldInventoryMap
=
reelConsumption
.
getInventoryMap
();
...
@@ -508,4 +508,34 @@ public class ReelConsumptionController {
...
@@ -508,4 +508,34 @@ public class ReelConsumptionController {
}
}
FileUtil
.
downloadExcel
(
headerList
,
datas
,
response
);
FileUtil
.
downloadExcel
(
headerList
,
datas
,
response
);
}
}
/**
* 通用方法:将单元格值转换为字符串,适配所有单元格类型
* @param cell Excel单元格
* @return 字符串值,空单元格返回空字符串
*/
private
String
getCellValueAsString
(
Cell
cell
)
{
if
(
cell
==
null
)
{
return
""
;
}
switch
(
cell
.
getCellType
())
{
case
STRING:
return
cell
.
getStringCellValue
().
trim
();
// 去首尾空格
case
NUMERIC:
// 处理数值型:纯数字转字符串(避免科学计数法)
double
numericValue
=
cell
.
getNumericCellValue
();
// 整数直接转成整数字符串,小数保留原始值
if
(
numericValue
==
Math
.
floor
(
numericValue
))
{
return
String
.
valueOf
((
long
)
numericValue
);
}
else
{
return
String
.
valueOf
(
numericValue
);
}
case
BOOLEAN:
return
String
.
valueOf
(
cell
.
getBooleanCellValue
());
case
BLANK:
return
""
;
default
:
return
""
;
}
}
}
}
src/main/java/com/neotel/smfcore/custom/lizhen/report/InnerReportController.java
查看文件 @
46475c2
...
@@ -229,7 +229,27 @@ public class InnerReportController {
...
@@ -229,7 +229,27 @@ public class InnerReportController {
@AnonymousAccess
@AnonymousAccess
public
PageData
getExpire
(
BcQuery
query
,
Pageable
pageable
)
{
public
PageData
getExpire
(
BcQuery
query
,
Pageable
pageable
)
{
Query
q
=
QueryHelp
.
getQuery
(
query
);
Query
q
=
QueryHelp
.
getQuery
(
query
);
q
.
addCriteria
(
Criteria
.
where
(
"barcode"
).
exists
(
true
)
/*.and("barcode.expireDate").lt(new Date())*/
);
Criteria
c
=
Criteria
.
where
(
"barcode"
).
exists
(
true
);
String
expireStatus
=
query
.
getExpireStatus
();
Date
startDate
,
endDate
;
if
(
"0"
.
equals
(
expireStatus
))
{
startDate
=
new
Date
();
endDate
=
DateUtil
.
offsetDay
(
startDate
,
7
);
c
.
and
(
"barcode.expireDate"
).
gte
(
startDate
).
lt
(
endDate
);
}
else
if
(
"1"
.
equals
(
expireStatus
))
{
startDate
=
DateUtil
.
offsetDay
(
new
Date
(),
7
);
endDate
=
DateUtil
.
offsetDay
(
new
Date
(),
30
);
c
.
and
(
"barcode.expireDate"
).
gte
(
startDate
).
lt
(
endDate
);
}
else
if
(
"2"
.
equals
(
expireStatus
))
{
List
<
Criteria
>
orCriList
=
new
ArrayList
<>();
orCriList
.
add
(
Criteria
.
where
(
"barcode"
).
exists
(
true
).
and
(
"barcode.expireDate"
).
gt
(
new
Date
()));
orCriList
.
add
(
Criteria
.
where
(
"barcode"
).
exists
(
true
).
and
(
"barcode.expireDate"
).
exists
(
false
));
c
.
orOperator
(
orCriList
);
}
else
if
(
"3"
.
equals
(
expireStatus
))
{
endDate
=
new
Date
();
c
.
and
(
"barcode.expireDate"
).
lt
(
endDate
);
}
q
.
addCriteria
(
c
);
PageData
<
StoragePos
>
pageData
=
storagePosManager
.
findByPage
(
q
,
pageable
);
PageData
<
StoragePos
>
pageData
=
storagePosManager
.
findByPage
(
q
,
pageable
);
List
<
BCExpire
>
expireList
=
getBCExpire
(
pageData
.
getContent
());
List
<
BCExpire
>
expireList
=
getBCExpire
(
pageData
.
getContent
());
return
new
PageData
(
expireList
,
pageData
.
getTotalElements
());
return
new
PageData
(
expireList
,
pageData
.
getTotalElements
());
...
@@ -366,11 +386,19 @@ public class InnerReportController {
...
@@ -366,11 +386,19 @@ public class InnerReportController {
BeanUtils
.
copyProperties
(
barcode
,
expire
);
BeanUtils
.
copyProperties
(
barcode
,
expire
);
expire
.
setPlant
(
""
);
expire
.
setPlant
(
""
);
expire
.
setFactory
(
""
);
expire
.
setFactory
(
""
);
if
(
expire
.
getExpireDate
()
!=
null
)
{
expire
.
setExpireDays
(
ExpireDateUtil
.
getExpireDays
(
expire
.
getExpireDate
()));
}
expire
.
setReelAmount
(
1
);
expire
.
setReelAmount
(
1
);
expire
.
setPosName
(
dataCache
.
getStorageById
(
storagePos
.
getStorageId
()).
getName
()
+
"["
+
storagePos
.
getPosName
()
+
"]"
);
expire
.
setPosName
(
dataCache
.
getStorageById
(
storagePos
.
getStorageId
()).
getName
()
+
"["
+
storagePos
.
getPosName
()
+
"]"
);
if
(
barcode
.
getExpireDate
()
!=
null
){
long
days
=
ExpireDateUtil
.
getExpireDays
(
barcode
.
getExpireDate
());
expire
.
setExpireDays
(
days
);
String
reelStatus
=
ExpireDateUtil
.
getReelStatus
(
days
);
expire
.
setRemark
(
reelStatus
);
}
else
{
expire
.
setExpireDays
(
0
);
expire
.
setRemark
(
""
);
}
expireList
.
add
(
expire
);
expireList
.
add
(
expire
);
}
}
return
expireList
;
return
expireList
;
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/report/TowerInventoryController.java
查看文件 @
46475c2
...
@@ -230,14 +230,14 @@ public class TowerInventoryController {
...
@@ -230,14 +230,14 @@ public class TowerInventoryController {
count
=
count
+
allPartNumberInventory
.
getOrDefault
(
replacePartNumber
,
0
);
count
=
count
+
allPartNumberInventory
.
getOrDefault
(
replacePartNumber
,
0
);
}
}
towerInventory
.
setCurrentInventory
(
count
);
towerInventory
.
setCurrentInventory
(
allPartNumberInventory
.
getOrDefault
(
towerInventory
.
getPartNumber
(),
0
)
);
// 缺料计算
// 缺料计算
if
(
minNeedInventory
==
0
)
{
if
(
minNeedInventory
==
0
)
{
towerInventory
.
setShortageDisks
(
0
);
towerInventory
.
setShortageDisks
(
0
);
towerInventory
.
setShortagePercentage
(
"0%"
);
towerInventory
.
setShortagePercentage
(
"0%"
);
}
else
{
}
else
{
int
shortageDisks
=
Math
.
max
(
0
,
minNeedInventory
-
count
)
;
int
shortageDisks
=
minNeedInventory
-
count
;
towerInventory
.
setShortageDisks
(
shortageDisks
);
towerInventory
.
setShortageDisks
(
shortageDisks
);
double
percentage
=
(
double
)
shortageDisks
/
minNeedInventory
*
100
;
double
percentage
=
(
double
)
shortageDisks
/
minNeedInventory
*
100
;
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/report/bean/query/BcQuery.java
查看文件 @
46475c2
...
@@ -43,4 +43,6 @@ public class BcQuery {
...
@@ -43,4 +43,6 @@ public class BcQuery {
@QueryCondition
(
type
=
QueryCondition
.
Type
.
BETWEEN
,
propName
=
"updateDate"
)
@QueryCondition
(
type
=
QueryCondition
.
Type
.
BETWEEN
,
propName
=
"updateDate"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
BetweenData
<
Date
>
updateDate
;
private
BetweenData
<
Date
>
updateDate
;
private
String
expireStatus
;
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论