Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 4389a1a8
由
LN
编写于
2023-02-23 09:53:32 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
20031:库存报表:增加I2,I3,I5接口
1 个父辈
c50d1c20
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
237 行增加
和
2 行删除
src/main/java/com/neotel/smfcore/core/system/service/dao/IDataLogDao.java
src/main/java/com/neotel/smfcore/core/system/service/dao/impl/DataLogDaoImpl.java
src/main/java/com/neotel/smfcore/core/system/service/manager/IDataLogManager.java
src/main/java/com/neotel/smfcore/core/system/service/manager/impl/DataLogManagerImpl.java
src/main/java/com/neotel/smfcore/custom/micron20031/MicronInventoryReportsController.java
src/main/java/com/neotel/smfcore/custom/micron20031/MicronReportController.java
src/main/java/com/neotel/smfcore/custom/micron20031/bean/SpDailyLog.java
src/main/java/com/neotel/smfcore/custom/micron20031/bean/dto/SpDailyLogDto.java
src/main/java/com/neotel/smfcore/core/system/service/dao/IDataLogDao.java
查看文件 @
4389a1a
...
@@ -16,4 +16,6 @@ public interface IDataLogDao extends IBaseDao {
...
@@ -16,4 +16,6 @@ public interface IDataLogDao extends IBaseDao {
List
<
DataLog
>
findHistory
(
String
bid
,
int
num
);
List
<
DataLog
>
findHistory
(
String
bid
,
int
num
);
List
<
SpDailyLog
>
getSpDailyLogs
(
Date
start
,
Date
end
,
String
inoutType
);
List
<
SpDailyLog
>
getSpDailyLogs
(
Date
start
,
Date
end
,
String
inoutType
);
List
<
SpDailyLog
>
getSpPnSummaryLists
(
String
inoutType
);
}
}
src/main/java/com/neotel/smfcore/core/system/service/dao/impl/DataLogDaoImpl.java
查看文件 @
4389a1a
...
@@ -85,5 +85,20 @@ public class DataLogDaoImpl extends AbstractBaseDao implements IDataLogDao {
...
@@ -85,5 +85,20 @@ public class DataLogDaoImpl extends AbstractBaseDao implements IDataLogDao {
return
results
.
getMappedResults
();
return
results
.
getMappedResults
();
}
}
@Override
public
List
<
SpDailyLog
>
getSpPnSummaryLists
(
String
inoutType
)
{
Criteria
criteria
=
Criteria
.
where
(
"partNumber"
).
exists
(
true
);
if
(
ObjectUtil
.
isNotEmpty
(
inoutType
))
{
criteria
=
criteria
.
and
(
"inOutType"
).
is
(
inoutType
);
}
//过去一月
Aggregation
agg
=
Aggregation
.
newAggregation
(
Aggregation
.
match
(
criteria
),
Aggregation
.
group
(
"partNumber"
).
count
().
as
(
"value"
),
Aggregation
.
project
(
"value"
).
and
(
"partNumber"
).
previousOperation
()
);
AggregationResults
<
SpDailyLog
>
results
=
getMongoTemplate
().
aggregate
(
agg
,
getEntityClass
(),
SpDailyLog
.
class
);
return
results
.
getMappedResults
();
}
}
}
src/main/java/com/neotel/smfcore/core/system/service/manager/IDataLogManager.java
查看文件 @
4389a1a
...
@@ -15,4 +15,6 @@ public interface IDataLogManager extends IBaseManager<DataLog> {
...
@@ -15,4 +15,6 @@ public interface IDataLogManager extends IBaseManager<DataLog> {
List
<
DataLog
>
findUnFinishedTasks
();
List
<
DataLog
>
findUnFinishedTasks
();
List
<
SpDailyLog
>
getSpDailyLogs
(
Date
start
,
Date
end
,
String
inoutType
);
List
<
SpDailyLog
>
getSpDailyLogs
(
Date
start
,
Date
end
,
String
inoutType
);
List
<
SpDailyLog
>
getSpPnSummaryLists
(
String
inoutType
);
}
}
src/main/java/com/neotel/smfcore/core/system/service/manager/impl/DataLogManagerImpl.java
查看文件 @
4389a1a
...
@@ -76,4 +76,10 @@ public class DataLogManagerImpl implements IDataLogManager {
...
@@ -76,4 +76,10 @@ public class DataLogManagerImpl implements IDataLogManager {
return
dataLogDao
.
getSpDailyLogs
(
start
,
end
,
inoutType
);
return
dataLogDao
.
getSpDailyLogs
(
start
,
end
,
inoutType
);
}
}
@Override
public
List
<
SpDailyLog
>
getSpPnSummaryLists
(
String
inoutType
)
{
return
dataLogDao
.
getSpPnSummaryLists
(
inoutType
);
}
}
}
src/main/java/com/neotel/smfcore/custom/micron20031/MicronInventoryReportsController.java
0 → 100644
查看文件 @
4389a1a
package
com
.
neotel
.
smfcore
.
custom
.
micron20031
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.google.common.base.Strings
;
import
com.google.common.collect.Lists
;
import
com.neotel.smfcore.common.bean.PageData
;
import
com.neotel.smfcore.common.utils.QueryHelp
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.storage.bean.InventoryItem
;
import
com.neotel.smfcore.core.storage.rest.dto.InventoryItemDto
;
import
com.neotel.smfcore.core.storage.rest.dto.StoragePosDto
;
import
com.neotel.smfcore.core.storage.rest.mapstruct.InventoryItemMapper
;
import
com.neotel.smfcore.core.storage.rest.mapstruct.StoragePosMapper
;
import
com.neotel.smfcore.core.storage.rest.query.InventoryQueryCriteria
;
import
com.neotel.smfcore.core.storage.rest.query.StoragePosFindCriteria
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.service.manager.IDataLogManager
;
import
com.neotel.smfcore.custom.micron20031.bean.MInOutType
;
import
com.neotel.smfcore.custom.micron20031.bean.SpDailyLog
;
import
com.neotel.smfcore.custom.micron20031.bean.dto.SpDailyLogDto
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@Slf4j
@Api
(
tags
=
"20031:Inventory reports 库存报表"
)
@RestController
@RequestMapping
(
"/rest/micron/sp/IReport"
)
@RequiredArgsConstructor
public
class
MicronInventoryReportsController
{
@Autowired
private
DataCache
dataCache
;
@Autowired
private
InventoryItemMapper
inventoryItemMapper
;
@Autowired
private
IStoragePosManager
storagePosManager
;
@Autowired
private
StoragePosMapper
storagePosMapper
;
@Autowired
private
IDataLogManager
dataLogManager
;
@ApiOperation
(
"Inventory Chart(All) I2 :库存列表饼图报表"
)
@GetMapping
(
value
=
"/inventory"
)
@AnonymousAccess
public
List
<
InventoryItemDto
>
inventory
(
InventoryQueryCriteria
criteria
,
Pageable
pageable
)
{
List
<
InventoryItemDto
>
results
=
getInventory
(
criteria
,
pageable
);
return
results
;
}
private
List
<
InventoryItemDto
>
getInventory
(
InventoryQueryCriteria
criteria
,
Pageable
pageable
){
Map
<
String
,
InventoryItem
>
inventoryItemMap
=
dataCache
.
getAllInventory
(
criteria
.
getStorageIdList
(),
criteria
.
getBlurry
());
List
<
InventoryItem
>
list
=
Lists
.
newArrayList
(
inventoryItemMap
.
values
());
List
<
InventoryItemDto
>
dtoList
=
inventoryItemMapper
.
toDto
(
list
);
List
<
InventoryItemDto
>
resultList
=
new
ArrayList
<>();
//过滤掉没有库存的
for
(
InventoryItemDto
inventoryItemDto
:
dtoList
)
{
if
(
inventoryItemDto
.
getStockReel
()
>
0
){
resultList
.
add
(
inventoryItemDto
);
}
}
Comparator
<
InventoryItemDto
>
comparator
=
Comparator
.
comparing
(
InventoryItemDto:
:
getPartNumber
);
Sort
.
Order
lockReelOrder
=
pageable
.
getSort
().
getOrderFor
(
"lockReel"
);
if
(
lockReelOrder
!=
null
){
comparator
=
Comparator
.
comparing
(
InventoryItemDto:
:
getStockReel
,
Comparator
.
nullsFirst
(
Integer:
:
compareTo
));
if
(
lockReelOrder
.
isDescending
()){
comparator
=
comparator
.
reversed
();
}
}
Sort
.
Order
stockCountOrder
=
pageable
.
getSort
().
getOrderFor
(
"stockCount"
);
if
(
stockCountOrder
!=
null
){
comparator
=
Comparator
.
comparing
(
InventoryItemDto:
:
getStockCount
,
Comparator
.
nullsFirst
(
Integer:
:
compareTo
));
if
(
stockCountOrder
.
isDescending
()){
comparator
=
comparator
.
reversed
();
}
}
Sort
.
Order
partNumberOrder
=
pageable
.
getSort
().
getOrderFor
(
"partNumber"
);
if
(
partNumberOrder
!=
null
){
comparator
=
Comparator
.
comparing
(
InventoryItemDto:
:
getPartNumber
,
Comparator
.
nullsFirst
(
String:
:
compareTo
));
if
(
partNumberOrder
.
isDescending
()){
comparator
=
comparator
.
reversed
();
}
}
resultList
=
resultList
.
stream
().
sorted
(
comparator
).
collect
(
Collectors
.
toList
());
// System.out.println("================");
// for (InventoryItemDto dto : resultList) {
// System.out.println(dto.getPartNumber() + "---" + dto.getStockCount() + " --- " + dto.getStockReel());
// }
return
resultList
;
}
@ApiOperation
(
"Inventory Detial Report- Detailed full inventory history I3:库存表格"
)
@GetMapping
(
"/detialReport"
)
@AnonymousAccess
public
PageData
<
StoragePosDto
>
storagePosFind
(
StoragePosFindCriteria
criteria
,
Pageable
pageable
,
HttpServletRequest
request
)
{
Query
query
=
getPosFindCriteria
(
criteria
);
PageData
<
StoragePos
>
pages
=
storagePosManager
.
findByPage
(
query
,
pageable
);
List
<
StoragePosDto
>
StoragePosDtos
=
storagePosMapper
.
toDto
(
pages
.
getContent
());
return
new
PageData
(
StoragePosDtos
,
pages
.
getTotalElements
());
}
private
Query
getPosFindCriteria
(
StoragePosFindCriteria
criteria
){
if
(
ObjectUtil
.
isNotEmpty
(
criteria
.
getStorageId
())
&&
criteria
.
getStorageId
().
equals
(
"0"
))
{
criteria
.
setStorageId
(
null
);
}
Query
query
=
QueryHelp
.
getQuery
(
criteria
);
Criteria
baseCriteria
=
Criteria
.
where
(
"used"
).
is
(
true
);
int
componentType
=
criteria
.
getComponentType
();
if
(
componentType
!=
-
1
)
{
baseCriteria
.
and
(
"barcode.type"
).
is
(
componentType
);
}
String
expire
=
criteria
.
getExpire
();
if
(!
Strings
.
isNullOrEmpty
(
expire
))
{
if
(
"solder"
.
equalsIgnoreCase
(
expire
))
{
baseCriteria
.
and
(
"barcode.expTime"
).
lte
(
new
Date
());
}
else
if
(
"pcb"
.
equalsIgnoreCase
(
expire
))
{
baseCriteria
.
and
(
"barcode.expireDate"
).
lte
(
new
Date
());
}
}
query
.
addCriteria
(
baseCriteria
);
return
query
;
}
@ApiOperation
(
"Empty Bin Report- Empty storage bins I5: 空库位展示"
)
@GetMapping
(
"/emptyPosReport"
)
@AnonymousAccess
public
PageData
<
StoragePosDto
>
emptyPosReport
(
StoragePosFindCriteria
criteria
,
Pageable
pageable
,
HttpServletRequest
request
)
{
//TODO 空库位展示
Query
query
=
QueryHelp
.
getQuery
(
criteria
);
Criteria
baseCriteria
=
Criteria
.
where
(
"used"
).
is
(
false
);
query
.
addCriteria
(
baseCriteria
);
PageData
<
StoragePos
>
pages
=
storagePosManager
.
findByPage
(
query
,
pageable
);
List
<
StoragePosDto
>
StoragePosDtos
=
storagePosMapper
.
toDto
(
pages
.
getContent
());
return
new
PageData
(
StoragePosDtos
,
pages
.
getTotalElements
());
}
@ApiOperation
(
"Inventory Summary Report- Fresh & Partial material inventory I4:新料,退料,过期料"
)
@GetMapping
(
"/summaryReport"
)
@AnonymousAccess
public
List
<
SpDailyLogDto
>
materialList
(
)
{
//TODO 根据partNo排序,每种物料的 新料,退料,过期料数量
Criteria
c
=
null
;
List
<
SpDailyLog
>
results
=
dataLogManager
.
getSpPnSummaryLists
(
""
);
HashMap
<
String
,
SpDailyLogDto
>
dailyLogDtos
=
new
HashMap
<
String
,
SpDailyLogDto
>();
List
<
String
>
types
=
new
ArrayList
<>();
types
.
add
(
MInOutType
.
OFFLINE
);
types
.
add
(
MInOutType
.
DESPOSIT
);
types
.
add
(
MInOutType
.
REMOVED
);
types
.
add
(
MInOutType
.
RETURNED
);
types
.
add
(
MInOutType
.
WITHDRAWN
);
types
.
add
(
""
);
for
(
String
type
:
types
)
{
List
<
SpDailyLog
>
logs
=
dataLogManager
.
getSpPnSummaryLists
(
type
);
for
(
SpDailyLog
log
:
logs
)
{
SpDailyLogDto
dto
=
dailyLogDtos
.
getOrDefault
(
log
.
getPartNumber
(),
new
SpDailyLogDto
());
dto
.
setPartNumber
(
log
.
getPartNumber
());
if
(
dto
.
getTypeCounts
()
==
null
)
{
dto
.
setTypeCounts
(
new
HashMap
<>());
}
if
(
ObjectUtil
.
isEmpty
(
type
)){
type
=
"all"
;
}
dto
.
getTypeCounts
().
put
(
type
,
log
.
getValue
());
dailyLogDtos
.
put
(
log
.
getPartNumber
(),
dto
);
}
}
return
new
ArrayList
<>(
dailyLogDtos
.
values
());
}
@ApiOperation
(
"Self-Audit Report - Audit report(monthly-finance , when door is opened,etc) I7"
)
@GetMapping
(
"/selfAuditReport"
)
public
PageData
<
StoragePosDto
>
selfAuditReport
(
StoragePosFindCriteria
criteria
,
Pageable
pageable
,
HttpServletRequest
request
)
{
//TODO 自检报告:包含库位号,part number,RFID信息,以及以上信息是否匹配
Query
query
=
getPosFindCriteria
(
criteria
);
PageData
<
StoragePos
>
pages
=
storagePosManager
.
findByPage
(
query
,
pageable
);
List
<
StoragePosDto
>
StoragePosDtos
=
storagePosMapper
.
toDto
(
pages
.
getContent
());
return
new
PageData
(
StoragePosDtos
,
pages
.
getTotalElements
());
}
}
src/main/java/com/neotel/smfcore/custom/micron20031/MicronReportController.java
查看文件 @
4389a1a
...
@@ -32,7 +32,7 @@ import java.text.SimpleDateFormat;
...
@@ -32,7 +32,7 @@ import java.text.SimpleDateFormat;
import
java.util.*
;
import
java.util.*
;
@Slf4j
@Slf4j
@Api
(
tags
=
"20031:
R
eport 报表"
)
@Api
(
tags
=
"20031:
Material movement r
eport 报表"
)
@RestController
@RestController
@RequestMapping
(
"/rest/micron/sp"
)
@RequestMapping
(
"/rest/micron/sp"
)
@RequiredArgsConstructor
@RequiredArgsConstructor
...
@@ -102,7 +102,7 @@ public class MicronReportController {
...
@@ -102,7 +102,7 @@ public class MicronReportController {
start
=
time
.
getTime
();
start
=
time
.
getTime
();
c
=
Criteria
.
where
(
"createDate"
).
gte
(
time
.
getTime
()).
lte
(
new
Date
());
c
=
Criteria
.
where
(
"createDate"
).
gte
(
time
.
getTime
()).
lte
(
new
Date
());
}
}
List
<
SpDailyLog
>
results
=
dataLogManager
.
getSpDailyLogs
(
start
,
end
,
""
);
//
List<SpDailyLog> results = dataLogManager.getSpDailyLogs(start, end, "");
HashMap
<
String
,
SpDailyLogDto
>
dailyLogDtos
=
new
HashMap
<
String
,
SpDailyLogDto
>();
HashMap
<
String
,
SpDailyLogDto
>
dailyLogDtos
=
new
HashMap
<
String
,
SpDailyLogDto
>();
List
<
String
>
types
=
new
ArrayList
<>();
List
<
String
>
types
=
new
ArrayList
<>();
types
.
add
(
MInOutType
.
OFFLINE
);
types
.
add
(
MInOutType
.
OFFLINE
);
...
...
src/main/java/com/neotel/smfcore/custom/micron20031/bean/SpDailyLog.java
查看文件 @
4389a1a
...
@@ -21,5 +21,6 @@ public class SpDailyLog implements Serializable {
...
@@ -21,5 +21,6 @@ public class SpDailyLog implements Serializable {
private
int
value
;
private
int
value
;
private
String
partNumber
;
}
}
src/main/java/com/neotel/smfcore/custom/micron20031/bean/dto/SpDailyLogDto.java
查看文件 @
4389a1a
...
@@ -14,6 +14,8 @@ public class SpDailyLogDto implements Serializable {
...
@@ -14,6 +14,8 @@ public class SpDailyLogDto implements Serializable {
private
String
dayOfYear
;
private
String
dayOfYear
;
private
String
partNumber
;
private
HashMap
<
String
,
Integer
>
typeCounts
;
private
HashMap
<
String
,
Integer
>
typeCounts
;
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论