Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 00ebcdb5
由
zshaohui
编写于
2025-01-02 15:26:52 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
过期报表功能提交
1 个父辈
85cc036c
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
265 行增加
和
5 行删除
src/main/java/com/neotel/smfcore/custom/lizhen/report/InnerReportController.java
src/main/java/com/neotel/smfcore/custom/lizhen/report/bean/dto/BCExpire.java
src/main/java/com/neotel/smfcore/custom/lizhen/report/bean/query/BcQuery.java
src/main/java/com/neotel/smfcore/custom/lizhen/report/InnerReportController.java
查看文件 @
00ebcdb
...
@@ -2,12 +2,16 @@ package com.neotel.smfcore.custom.lizhen.report;
...
@@ -2,12 +2,16 @@ package com.neotel.smfcore.custom.lizhen.report;
import
cn.hutool.core.date.DateUnit
;
import
cn.hutool.core.date.DateUnit
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.date.DateUtil
;
import
com.google.common.collect.Lists
;
import
com.neotel.smfcore.common.base.IExcelDownLoad
;
import
com.neotel.smfcore.common.bean.PageData
;
import
com.neotel.smfcore.common.bean.PageData
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.FileUtil
;
import
com.neotel.smfcore.common.utils.FileUtil
;
import
com.neotel.smfcore.common.utils.QueryHelp
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.core.barcode.rest.bean.mapstruct.BarcodeMapper
;
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.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
...
@@ -22,15 +26,22 @@ import com.neotel.smfcore.core.storage.bean.InventoryItem;
...
@@ -22,15 +26,22 @@ import com.neotel.smfcore.core.storage.bean.InventoryItem;
import
com.neotel.smfcore.core.storage.rest.mapstruct.StoragePosMapper
;
import
com.neotel.smfcore.core.storage.rest.mapstruct.StoragePosMapper
;
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
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.service.manager.IDataLogManager
;
import
com.neotel.smfcore.core.system.service.manager.IDataLogManager
;
import
com.neotel.smfcore.custom.lizhen.innerBox.service.manager.IVirImportLogManager
;
import
com.neotel.smfcore.custom.lizhen.innerBox.service.manager.IVirImportLogManager
;
import
com.neotel.smfcore.custom.lizhen.report.bean.dto.BCExpire
;
import
com.neotel.smfcore.custom.lizhen.report.bean.query.BcQuery
;
import
com.neotel.smfcore.custom.lizhen.report.bean.query.ReportQueryCondition
;
import
com.neotel.smfcore.custom.lizhen.report.bean.query.ReportQueryCondition
;
import
com.neotel.smfcore.custom.lizhen.setting.util.ExpireDateUtil
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
...
@@ -40,7 +51,6 @@ import java.util.*;
...
@@ -40,7 +51,6 @@ import java.util.*;
@Slf4j
@Slf4j
@ApiOperation
(
"内仓报表"
)
@ApiOperation
(
"内仓报表"
)
@RequestMapping
(
"/inner/report"
)
@RestController
@RestController
public
class
InnerReportController
{
public
class
InnerReportController
{
...
@@ -93,8 +103,8 @@ public class InnerReportController {
...
@@ -93,8 +103,8 @@ public class InnerReportController {
private
IVirImportLogManager
virImportLogManager
;
private
IVirImportLogManager
virImportLogManager
;
@ApiOperation
(
"缺料"
)
@ApiOperation
(
"缺料"
)
@RequestMapping
(
"/lackPicking"
)
@RequestMapping
(
"/
inner/report/
lackPicking"
)
@AnonymousAccess
//
@AnonymousAccess
public
PageData
lackPicking
(
ReportQueryCondition
queryCondition
,
Pageable
pageable
)
{
public
PageData
lackPicking
(
ReportQueryCondition
queryCondition
,
Pageable
pageable
)
{
List
<
OrderItemDto
>
dtoList
=
new
ArrayList
<>();
List
<
OrderItemDto
>
dtoList
=
new
ArrayList
<>();
String
floor
=
dataCache
.
getCache
(
Constants
.
CACHE_floor
);
String
floor
=
dataCache
.
getCache
(
Constants
.
CACHE_floor
);
...
@@ -136,8 +146,8 @@ public class InnerReportController {
...
@@ -136,8 +146,8 @@ public class InnerReportController {
@ApiOperation
(
"缺料导出"
)
@ApiOperation
(
"缺料导出"
)
@RequestMapping
(
"/lackPicking/download"
)
@RequestMapping
(
"/
inner/report/
lackPicking/download"
)
@AnonymousAccess
//
@AnonymousAccess
public
void
lackPickingDownload
(
ReportQueryCondition
queryCondition
,
Pageable
pageable
,
HttpServletResponse
response
)
throws
IOException
{
public
void
lackPickingDownload
(
ReportQueryCondition
queryCondition
,
Pageable
pageable
,
HttpServletResponse
response
)
throws
IOException
{
String
floor
=
dataCache
.
getCache
(
Constants
.
CACHE_floor
);
String
floor
=
dataCache
.
getCache
(
Constants
.
CACHE_floor
);
...
@@ -207,6 +217,111 @@ public class InnerReportController {
...
@@ -207,6 +217,111 @@ public class InnerReportController {
FileUtil
.
downloadExcel
(
headers
,
datas
,
response
);
FileUtil
.
downloadExcel
(
headers
,
datas
,
response
);
}
}
/**
* 过期报表
*
* @param query
* @param pageable
* @return
*/
@RequestMapping
(
"/bcReport/getExpire"
)
@AnonymousAccess
public
PageData
getExpire
(
BcQuery
query
,
Pageable
pageable
)
{
Query
q
=
QueryHelp
.
getQuery
(
query
);
q
.
addCriteria
(
Criteria
.
where
(
"barcode"
).
exists
(
true
)
/*.and("barcode.expireDate").lt(new Date())*/
);
PageData
<
StoragePos
>
pageData
=
storagePosManager
.
findByPage
(
q
,
pageable
);
List
<
BCExpire
>
expireList
=
getBCExpire
(
pageData
.
getContent
());
return
new
PageData
(
expireList
,
pageData
.
getTotalElements
());
}
/**
* 过期报表导出
* @param query
* @param pageable
* @param response
*/
@RequestMapping
(
"/bcReport/getExpire/download"
)
@AnonymousAccess
public
void
expireDownload
(
BcQuery
query
,
Pageable
pageable
,
HttpServletResponse
response
){
Query
q
=
QueryHelp
.
getQuery
(
query
);
q
.
addCriteria
(
Criteria
.
where
(
"barcode"
).
exists
(
true
)
/*.and("barcode.expireDate").lt(new Date())*/
);
try
{
FileUtil
.
downloadExcel
(
q
,
pageable
,
response
,
new
IExcelDownLoad
()
{
@Override
public
List
<
List
<
String
>>
getHeader
()
{
List
<
List
<
String
>>
headerList
=
new
ArrayList
<>();
//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("keeper"));
headerList
.
add
(
Lists
.
newArrayList
(
"ID NO"
));
headerList
.
add
(
Lists
.
newArrayList
(
"LOT"
));
headerList
.
add
(
Lists
.
newArrayList
(
"D/C"
));
headerList
.
add
(
Lists
.
newArrayList
(
"增加物料保质期"
));
headerList
.
add
(
Lists
.
newArrayList
(
"过期天数"
));
headerList
.
add
(
Lists
.
newArrayList
(
"过期日期"
));
//headerList.add(Lists.newArrayList("备注"));
return
headerList
;
}
@Override
public
List
<
List
<
Object
>>
getPageData
(
Query
query
,
Pageable
pageable
)
{
List
<
List
<
Object
>>
dataList
=
new
ArrayList
<>();
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByQuery
(
query
,
pageable
);
List
<
BCExpire
>
bcExpireList
=
getBCExpire
(
storagePosList
);
for
(
BCExpire
expire
:
bcExpireList
)
{
List
<
Object
>
result
=
new
ArrayList
<>();
//result.add(expire.getPlant());
//result.add(expire.getFactory());
//result.add(expire.getWarehouseCode());
result
.
add
(
expire
.
getPartNumber
());
result
.
add
(
expire
.
getDescribe
());
result
.
add
(
expire
.
getAmount
());
result
.
add
(
expire
.
getPosName
());
//result.add(expire.getKeeperCode());
result
.
add
(
expire
.
getBarcode
());
result
.
add
(
expire
.
getBatch
());
result
.
add
(
expire
.
getDateCode
());
result
.
add
(
expire
.
getExpireYear
());
result
.
add
(
expire
.
getExpireDays
());
result
.
add
(
expire
.
getExpireDate
());
//result.add(expire.getRemark());
dataList
.
add
(
result
);
}
return
dataList
;
}
});
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
log
.
error
(
"过期报表导出失败"
,
e
);
}
}
private
List
<
BCExpire
>
getBCExpire
(
List
<
StoragePos
>
storagePosList
)
{
List
<
BCExpire
>
expireList
=
new
ArrayList
<>();
for
(
StoragePos
storagePos
:
storagePosList
)
{
BCExpire
expire
=
new
BCExpire
();
BeanUtils
.
copyProperties
(
storagePos
,
expire
);
Barcode
barcode
=
storagePos
.
getBarcode
();
BeanUtils
.
copyProperties
(
barcode
,
expire
);
expire
.
setPlant
(
""
);
expire
.
setFactory
(
""
);
if
(
expire
.
getExpireDate
()
!=
null
)
{
expire
.
setExpireDays
(
ExpireDateUtil
.
getExpireDays
(
expire
.
getExpireDate
()));
}
expire
.
setReelAmount
(
1
);
expire
.
setPosName
(
dataCache
.
getStorageById
(
storagePos
.
getStorageId
()).
getName
()
+
"["
+
storagePos
.
getPosName
()
+
"]"
);
expireList
.
add
(
expire
);
}
return
expireList
;
}
private
Object
getData
(
Object
data
)
{
private
Object
getData
(
Object
data
)
{
return
data
==
null
?
""
:
data
;
return
data
==
null
?
""
:
data
;
}
}
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/report/bean/dto/BCExpire.java
0 → 100644
查看文件 @
00ebcdb
package
com
.
neotel
.
smfcore
.
custom
.
lizhen
.
report
.
bean
.
dto
;
import
lombok.Data
;
import
java.util.Date
;
@Data
public
class
BCExpire
{
/**
* 厂别
*/
private
String
plant
;
/**
* 厂区
*/
private
String
factory
;
/**
* 料号
*/
private
String
partNumber
;
/**
* 描述
*/
private
String
describe
;
/**
* ID NO
*/
private
String
barcode
;
/**
* 储位
*/
private
String
posName
;
/**
* 数量
*/
private
int
amount
;
/**
* 卷数
*/
private
int
reelAmount
=
1
;
/**
* 厂商
*/
private
String
provider
;
/**
* lot
*/
private
String
batch
=
""
;
/**
* d/c
*/
private
String
dateCode
;
/**
* keeper
*/
private
String
keeperCode
;
/**
* 物料保质期(年)
*/
private
int
expireYear
=
1
;
/**
* 过期天数
*/
private
long
expireDays
;
/**
* 过期时间
*/
private
Date
expireDate
;
/**
* 备注
*/
private
String
remark
;
/**
* 库别
*/
private
String
warehouseCode
;
}
src/main/java/com/neotel/smfcore/custom/lizhen/report/bean/query/BcQuery.java
0 → 100644
查看文件 @
00ebcdb
package
com
.
neotel
.
smfcore
.
custom
.
lizhen
.
report
.
bean
.
query
;
import
com.neotel.smfcore.common.annotation.QueryCondition
;
import
com.neotel.smfcore.common.bean.BetweenData
;
import
lombok.Data
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.util.Date
;
@Data
public
class
BcQuery
{
@QueryCondition
(
blurry
=
"barcode.partNumber,partNumber"
)
private
String
pn
;
@QueryCondition
(
blurry
=
"barcode.partNumber"
)
private
String
partNumber
;
@QueryCondition
(
blurry
=
"barcode.provider"
)
private
String
provider
;
@QueryCondition
(
blurry
=
"barcode.warehouseCode,warehouseCode"
)
private
String
warehouseCode
;
@QueryCondition
(
blurry
=
"posName"
)
private
String
posName
;
@QueryCondition
(
blurry
=
"barcode.barcode,barcode"
)
private
String
barcode
;
@QueryCondition
(
blurry
=
"barcode.dateCode"
)
private
String
dateCode
;
@QueryCondition
(
blurry
=
"barcode.batch"
)
private
String
batch
;
@QueryCondition
(
blurry
=
"barcode.keeperCode"
)
private
String
keeperCode
;
@QueryCondition
(
propName
=
"extendType"
,
type
=
QueryCondition
.
Type
.
EQ
)
private
Integer
extendType
;
@QueryCondition
(
type
=
QueryCondition
.
Type
.
BETWEEN
,
propName
=
"updateDate"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
BetweenData
<
Date
>
updateDate
;
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论