Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit e72e0052
由
sunke
编写于
2022-07-21 19:56:55 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
工单出库挑料逻辑修改
1 个父辈
c80451cc
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
264 行增加
和
78 行删除
src/main/java/com/neotel/smfcore/common/base/IExcelDownLoad.java
src/main/java/com/neotel/smfcore/common/utils/FileUtil.java
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/service/manager/IStoragePosManager.java
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
src/main/java/com/neotel/smfcore/core/system/rest/SettingsController.java
src/main/java/com/neotel/smfcore/core/system/rest/TaskController.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/core/system/service/po/DataLog.java
src/main/java/com/neotel/smfcore/security/rest/MenuController.java
src/main/java/com/neotel/smfcore/security/rest/UserController.java
src/main/java/com/neotel/smfcore/security/service/UserDetailsServiceImpl.java
src/main/java/com/neotel/smfcore/common/base/IExcelDownLoad.java
0 → 100644
查看文件 @
e72e005
package
com
.
neotel
.
smfcore
.
common
.
base
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.query.Query
;
import
java.util.List
;
public
interface
IExcelDownLoad
{
List
<
List
<
String
>>
getHeader
();
List
<
List
<
Object
>>
getPageData
(
Query
query
,
Pageable
pageable
);
}
src/main/java/com/neotel/smfcore/common/utils/FileUtil.java
查看文件 @
e72e005
...
...
@@ -19,6 +19,10 @@ import cn.hutool.core.io.IoUtil;
import
cn.hutool.core.util.IdUtil
;
import
cn.hutool.poi.excel.BigExcelWriter
;
import
cn.hutool.poi.excel.ExcelUtil
;
import
com.alibaba.excel.EasyExcel
;
import
com.alibaba.excel.ExcelWriter
;
import
com.alibaba.excel.write.metadata.WriteSheet
;
import
com.neotel.smfcore.common.base.IExcelDownLoad
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
...
...
@@ -26,6 +30,9 @@ import org.apache.poi.util.IOUtils;
import
org.apache.poi.xssf.streaming.SXSSFSheet
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.servlet.ServletOutputStream
;
...
...
@@ -36,6 +43,7 @@ import java.net.URLEncoder;
import
java.security.MessageDigest
;
import
java.text.DecimalFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -209,6 +217,35 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
return
null
;
}
public
static
void
downloadExcel
(
Query
query
,
Pageable
pageable
,
HttpServletResponse
response
,
IExcelDownLoad
excelDownLoad
)
throws
IOException
{
// 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
response
.
setContentType
(
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
);
response
.
setCharacterEncoding
(
"utf-8"
);
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
//String fileName = URLEncoder.encode("测试", "UTF-8").replaceAll("\\+", "%20");
String
fileName
=
SYS_TEM_DIR
+
IdUtil
.
fastSimpleUUID
()
+
".xlsx"
;
response
.
setHeader
(
"Content-disposition"
,
"attachment;filename*=utf-8''"
+
fileName
+
".xlsx"
);
// 这里 需要指定写用哪个class去写
try
(
ExcelWriter
excelWriter
=
EasyExcel
.
write
(
response
.
getOutputStream
()).
head
(
excelDownLoad
.
getHeader
()).
build
())
{
// 这里注意 如果同一个sheet只要创建一次
WriteSheet
writeSheet
=
EasyExcel
.
writerSheet
(
"模板"
).
build
();
// 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来
PageRequest
page
=
PageRequest
.
ofSize
(
10000
);
if
(
pageable
!=
null
){
page
.
withSort
(
pageable
.
getSort
());
}
while
(
true
){
List
<
List
<
Object
>>
data
=
excelDownLoad
.
getPageData
(
query
,
page
);
if
(
data
==
null
||
data
.
isEmpty
()){
break
;
}
excelWriter
.
write
(
data
,
writeSheet
);
page
=
page
.
next
();
}
}
}
/**
* 导出excel
*/
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
e72e005
此文件的差异被折叠,
点击展开。
src/main/java/com/neotel/smfcore/core/storage/rest/StoragePosController.java
查看文件 @
e72e005
...
...
@@ -316,10 +316,9 @@ public class StoragePosController {
@ApiOperation
(
"导出查找出库列表"
)
@GetMapping
(
value
=
"/find/download"
)
@PreAuthorize
(
"@el.check('checkOut')"
)
public
void
download
(
HttpServletResponse
response
,
StoragePosFindCriteria
criteria
,
HttpServletRequest
request
)
throws
IOException
{
public
void
download
(
HttpServletResponse
response
,
StoragePosFindCriteria
criteria
,
Pageable
pageable
,
HttpServletRequest
request
)
throws
IOException
{
Query
query
=
getPosFindCriteria
(
criteria
);
List
<
StoragePos
>
storagePos
=
storagePosManager
.
findByQuery
(
query
);
storagePosManager
.
download
(
storagePos
,
response
,
request
.
getLocale
());
storagePosManager
.
download
(
query
,
pageable
,
response
,
request
.
getLocale
());
}
//UID出库
@ApiOperation
(
"查找出库列表"
)
...
...
src/main/java/com/neotel/smfcore/core/storage/service/manager/IStoragePosManager.java
查看文件 @
e72e005
...
...
@@ -8,6 +8,8 @@ import com.neotel.smfcore.core.storage.bean.InventoryItem;
import
com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.query.Query
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
...
...
@@ -59,7 +61,7 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
public
void
updateBarcodeMsd
(
String
pn
,
String
msl
,
String
thickness
);
void
download
(
List
<
StoragePos
>
storagePos
,
HttpServletResponse
response
,
Locale
locale
)
throws
IOException
;
void
download
(
Query
query
,
Pageable
pageable
,
HttpServletResponse
response
,
Locale
locale
)
throws
IOException
;
List
<
StoragePos
>
findPosList
(
String
storageId
,
List
<
String
>
posNames
);
...
...
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
查看文件 @
e72e005
...
...
@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
import
com.google.common.base.Strings
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
com.neotel.smfcore.common.base.IExcelDownLoad
;
import
com.neotel.smfcore.common.bean.PageData
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.DateUtil
;
...
...
@@ -495,41 +496,63 @@ public class StoragePosManagerImpl implements IStoragePosManager {
}
@Override
public
void
download
(
List
<
StoragePos
>
storagePos
,
HttpServletResponse
response
,
Locale
locale
)
throws
IOException
{
String
barcodeStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.barcode"
,
locale
,
"条码编号"
);
String
partNumberStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.partNumber"
,
locale
,
"物料编号"
);
String
proDateStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.proDate"
,
locale
,
"生产日期"
);
String
expireDateStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.expireDate"
,
locale
,
"过期时间"
);
String
posNameStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.posName"
,
locale
,
"库位号"
);
String
lockNameStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.lockName"
,
locale
,
"工单号"
);
String
amountStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.amount"
,
locale
,
"数量"
);
String
putInTimeStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.putInTime"
,
locale
,
"首次入库时间"
);
String
putInDateStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.putInDate"
,
locale
,
"入库时间"
);
DateFormat
dateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:SS"
);
List
<
Map
<
String
,
Object
>>
list
=
new
ArrayList
<>();
for
(
StoragePos
pos
:
storagePos
)
{
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
map
.
put
(
barcodeStr
,
pos
.
getBarcode
().
getBarcode
());
map
.
put
(
partNumberStr
,
pos
.
getBarcode
().
getPartNumber
());
String
proDate
=
pos
.
getBarcode
().
getProduceDate
()
==
null
?
""
:
dateFormat
.
format
(
pos
.
getBarcode
().
getProduceDate
());
map
.
put
(
proDateStr
,
proDate
);
map
.
put
(
expireDateStr
,
pos
.
getBarcode
().
getExpireDate
());
map
.
put
(
posNameStr
,
pos
.
getPosName
());
map
.
put
(
lockNameStr
,
pos
.
getBarcode
().
getLockName
());
map
.
put
(
amountStr
,
pos
.
getBarcode
().
getAmount
());
String
putInTime
=
(
pos
.
getBarcode
().
getPutInTime
()
==
-
1
)
?
""
:
dateFormat
.
format
(
new
Date
(
pos
.
getBarcode
().
getPutInTime
()));
if
(
ObjectUtil
.
isNotEmpty
(
putInTime
)){
putInTime
=
dateFormat
.
format
(
pos
.
getBarcode
().
getPutInDate
());
public
void
download
(
Query
query
,
Pageable
pageable
,
HttpServletResponse
response
,
Locale
locale
)
throws
IOException
{
FileUtil
.
downloadExcel
(
query
,
pageable
,
response
,
new
IExcelDownLoad
()
{
@Override
public
List
<
List
<
String
>>
getHeader
()
{
String
barcodeStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.barcode"
,
locale
,
"条码编号"
);
String
partNumberStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.partNumber"
,
locale
,
"物料编号"
);
String
providerStr
=
MessageUtils
.
getText
(
"smfcore.barcode.provider"
,
locale
,
"供应商"
);
String
batchStr
=
MessageUtils
.
getText
(
"smfcore.barcode.batch"
,
locale
,
"批次"
);
String
proDateStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.proDate"
,
locale
,
"生产日期"
);
String
expireDateStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.expireDate"
,
locale
,
"过期时间"
);
String
posNameStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.posName"
,
locale
,
"库位号"
);
String
lockNameStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.lockName"
,
locale
,
"工单号"
);
String
amountStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.amount"
,
locale
,
"数量"
);
String
distanceStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.distance"
,
locale
,
"间距"
);
String
putInTimeStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.putInTime"
,
locale
,
"首次入库时间"
);
String
putInDateStr
=
MessageUtils
.
getText
(
"smfcore.storagePos.putInDate"
,
locale
,
"入库时间"
);
List
<
List
<
String
>>
header
=
new
ArrayList
<>();
header
.
add
(
Lists
.
newArrayList
(
barcodeStr
));
header
.
add
(
Lists
.
newArrayList
(
partNumberStr
));
header
.
add
(
Lists
.
newArrayList
(
providerStr
));
header
.
add
(
Lists
.
newArrayList
(
batchStr
));
header
.
add
(
Lists
.
newArrayList
(
posNameStr
));
header
.
add
(
Lists
.
newArrayList
(
amountStr
));
header
.
add
(
Lists
.
newArrayList
(
distanceStr
));
header
.
add
(
Lists
.
newArrayList
(
putInTimeStr
));
header
.
add
(
Lists
.
newArrayList
(
putInDateStr
));
return
header
;
}
map
.
put
(
putInTimeStr
,
putInTime
);
map
.
put
(
putInDateStr
,
dateFormat
.
format
(
pos
.
getBarcode
().
getPutInDate
()));
list
.
add
(
map
);
}
FileUtil
.
downloadExcel
(
list
,
response
);
@Override
public
List
<
List
<
Object
>>
getPageData
(
Query
query
,
Pageable
pageable
)
{
List
<
List
<
Object
>>
dataList
=
new
ArrayList
<>();
List
<
StoragePos
>
storagePos
=
storagePosDao
.
findByQuery
(
query
,
pageable
);
DateFormat
dateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:SS"
);
for
(
StoragePos
pos
:
storagePos
)
{
List
<
Object
>
data
=
new
ArrayList
<>();
data
.
add
(
pos
.
getBarcode
().
getBarcode
());
data
.
add
(
pos
.
getBarcode
().
getPartNumber
());
data
.
add
(
pos
.
getBarcode
().
getProvider
());
data
.
add
(
pos
.
getBarcode
().
getBatch
());
data
.
add
(
pos
.
getPosName
());
data
.
add
(
pos
.
getBarcode
().
getAmount
());
data
.
add
(
pos
.
getBarcode
().
getDistance
());
String
putInTime
=
(
pos
.
getBarcode
().
getPutInTime
()
==
-
1
)
?
""
:
dateFormat
.
format
(
new
Date
(
pos
.
getBarcode
().
getPutInTime
()));
if
(
ObjectUtil
.
isNotEmpty
(
putInTime
)){
putInTime
=
dateFormat
.
format
(
pos
.
getBarcode
().
getPutInDate
());
}
data
.
add
(
putInTime
);
data
.
add
(
dateFormat
.
format
(
pos
.
getBarcode
().
getPutInDate
()));
dataList
.
add
(
data
);
}
return
dataList
;
}
});
}
/**
* 查找同尺寸连续的库位,合并库位放置料盘,仅用于智能料架
...
...
@@ -600,10 +623,10 @@ public class StoragePosManagerImpl implements IStoragePosManager {
}
Query
q
=
new
Query
(
c
);
//数量从大到小,出库先进先出
Sort
s
ort
=
Sort
.
by
(
Sort
.
Direction
.
DESC
,
"barcode.amount"
);
sort
.
and
(
Sort
.
by
(
Sort
.
Direction
.
ASC
,
"barcode.batch"
)
);
Sort
amountS
ort
=
Sort
.
by
(
Sort
.
Direction
.
DESC
,
"barcode.amount"
);
Sort
batchSort
=
Sort
.
by
(
Sort
.
Direction
.
ASC
,
"barcode.batch"
);
//sort.and(Sort.by(Sort.Direction.ASC, "canCheckOutTime"));
q
.
with
(
s
ort
);
q
.
with
(
amountSort
).
with
(
batchS
ort
);
List
<
StoragePos
>
posList
=
storagePosDao
.
findByQuery
(
q
);
if
(
posList
==
null
||
posList
.
size
()
<=
0
)
{
log
.
info
(
"findOrderItemInStorage 挑料 partNumber="
+
pn
+
",未找到可以出库的物料 "
);
...
...
src/main/java/com/neotel/smfcore/core/system/rest/SettingsController.java
查看文件 @
e72e005
...
...
@@ -17,6 +17,7 @@ import com.neotel.smfcore.core.system.rest.bean.dto.SettingsDto;
import
com.neotel.smfcore.core.system.rest.bean.dto.SysSettingsDto
;
import
com.neotel.smfcore.core.system.rest.bean.mapstruct.SettingsMapper
;
import
com.neotel.smfcore.core.system.service.po.Settings
;
import
com.neotel.smfcore.security.annotation.AnonymousGetMapping
;
import
com.neotel.smfcore.security.rest.bean.dto.MenuDto
;
import
com.neotel.smfcore.security.rest.bean.query.UserQueryCriteria
;
import
com.neotel.smfcore.security.service.po.Menu
;
...
...
@@ -57,8 +58,7 @@ public class SettingsController {
private
String
version
;
@ApiOperation
(
"获取系统设置信息"
)
@GetMapping
(
"/sysSettings"
)
@PreAuthorize
(
"@el.check('sysSetting')"
)
@AnonymousGetMapping
(
"/sysSettings"
)
public
SysSettingsDto
getSysSettings
()
{
Settings
settings
=
dataCache
.
getSettings
();
...
...
@@ -82,8 +82,7 @@ public class SettingsController {
}
@ApiOperation
(
"获取出库策略信息"
)
@GetMapping
(
"/checkoutSettings"
)
@PreAuthorize
(
"@el.check('outSetting')"
)
@AnonymousGetMapping
(
"/checkoutSettings"
)
public
Map
<
String
,
String
>
getCheckOutSettings
()
{
String
outSet
=
dataCache
.
getCheckOutType
().
name
();
Map
<
String
,
String
>
map
=
new
HashMap
<>();
...
...
@@ -105,8 +104,7 @@ public class SettingsController {
@ApiOperation
(
"获取工单设置"
)
@GetMapping
(
"/order"
)
@PreAuthorize
(
"@el.check('orderSetting')"
)
@AnonymousGetMapping
(
"/order"
)
public
OrderSetting
getOrderSetting
()
{
OrderSetting
orderSetting
=
dataCache
.
getOrderSetting
();
orderSetting
.
setShowLightType
(
false
);
...
...
src/main/java/com/neotel/smfcore/core/system/rest/TaskController.java
查看文件 @
e72e005
...
...
@@ -11,6 +11,7 @@ import com.neotel.smfcore.core.barcode.bean.CodeBean;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.storage.rest.query.StoragePosFindCriteria
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.system.rest.bean.dto.TaskDto
;
import
com.neotel.smfcore.core.system.rest.bean.mapstruct.TaskMapper
;
...
...
@@ -36,6 +37,8 @@ import org.springframework.util.ObjectUtils;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.util.List
;
import
java.util.Set
;
...
...
@@ -64,17 +67,8 @@ public class TaskController {
@Autowired
protected
CodeResolve
codeResolve
;
// @ApiOperation("导出用户数据")
// @GetMapping(value = "/download")
// @PreAuthorize("@el.check('user:list')")
// public void download(HttpServletResponse response, UserQueryCriteria criteria) throws IOException {
// userService.download(userService.queryAll(criteria), response);
// }
@ApiOperation
(
"查询出入库日志"
)
@GetMapping
(
"/history"
)
@PreAuthorize
(
"@el.check('taskLog')"
)
public
PageData
<
TaskDto
>
query
(
TaskQueryCondition
criteria
,
Pageable
pageable
)
{
private
Query
getQuery
(
TaskQueryCondition
criteria
){
String
barcode
=
criteria
.
getBarcode
();
if
(
Strings
.
isNotBlank
(
barcode
)){
CodeBean
codebean
=
codeResolve
.
resolveSingleCode
(
criteria
.
getBarcode
());
...
...
@@ -111,12 +105,28 @@ public class TaskController {
}
else
if
(
finished
){
query
.
addCriteria
(
Criteria
.
where
(
"status"
).
in
(
OP_STATUS
.
END
.
name
(),
OP_STATUS
.
FINISHED
.
name
()));
}
return
query
;
}
@ApiOperation
(
"查询出入库日志"
)
@GetMapping
(
"/history"
)
@PreAuthorize
(
"@el.check('taskLog')"
)
public
PageData
<
TaskDto
>
query
(
TaskQueryCondition
criteria
,
Pageable
pageable
)
{
Query
query
=
getQuery
(
criteria
);
// query.with(Sort.by(Sort.Direction.DESC,"updateDate","createDate"));
PageData
<
DataLog
>
taskList
=
dataLogManager
.
findByPage
(
query
,
pageable
);
PageData
<
TaskDto
>
result
=
taskMapper
.
toDto
(
taskList
);
return
result
;
}
@ApiOperation
(
"导出查找出入库日志"
)
@GetMapping
(
value
=
"/history/download"
)
@PreAuthorize
(
"@el.check('taskLog')"
)
public
void
download
(
HttpServletResponse
response
,
TaskQueryCondition
criteria
,
Pageable
pageable
,
HttpServletRequest
request
)
throws
IOException
{
Query
query
=
getQuery
(
criteria
);
dataLogManager
.
download
(
query
,
pageable
,
response
,
request
.
getLocale
());
}
@ApiOperation
(
"获取某个分组队列中的任务"
)
@GetMapping
(
"/{groupId}"
)
@PreAuthorize
(
"@el.check('taskLog')"
)
...
...
src/main/java/com/neotel/smfcore/core/system/service/manager/IDataLogManager.java
查看文件 @
e72e005
...
...
@@ -2,11 +2,18 @@ package com.neotel.smfcore.core.system.service.manager;
import
com.neotel.smfcore.common.base.IBaseManager
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.query.Query
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.util.List
;
import
java.util.Locale
;
public
interface
IDataLogManager
extends
IBaseManager
<
DataLog
>
{
List
<
DataLog
>
findUnFinishedTasks
();
DataLog
findLastOutTask
(
String
barcode
,
boolean
addOutbound
);
void
download
(
Query
query
,
Pageable
pageable
,
HttpServletResponse
response
,
Locale
locale
)
throws
IOException
;
}
src/main/java/com/neotel/smfcore/core/system/service/manager/impl/DataLogManagerImpl.java
查看文件 @
e72e005
package
com
.
neotel
.
smfcore
.
core
.
system
.
service
.
manager
.
impl
;
import
cn.hutool.core.util.ObjectUtil
;
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.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.FileUtil
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.service.dao.IDataLogDao
;
import
com.neotel.smfcore.core.system.service.manager.IDataLogManager
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
...
...
@@ -13,9 +19,11 @@ import org.springframework.data.mongodb.core.query.Criteria;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.Calendar
;
import
java.util.List
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.text.DateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
@Service
public
class
DataLogManagerImpl
implements
IDataLogManager
{
...
...
@@ -82,4 +90,54 @@ public class DataLogManagerImpl implements IDataLogManager {
DataLog
dataLog
=
dataLogDao
.
findOne
(
query
);
return
dataLog
;
}
@Override
public
void
download
(
Query
query
,
Pageable
pageable
,
HttpServletResponse
response
,
Locale
locale
)
throws
IOException
{
FileUtil
.
downloadExcel
(
query
,
pageable
,
response
,
new
IExcelDownLoad
()
{
@Override
public
List
<
List
<
String
>>
getHeader
()
{
List
<
List
<
String
>>
header
=
new
ArrayList
<>();
header
.
add
(
Lists
.
newArrayList
(
"类型"
));
header
.
add
(
Lists
.
newArrayList
(
"单号"
));
header
.
add
(
Lists
.
newArrayList
(
"料仓名称"
));
header
.
add
(
Lists
.
newArrayList
(
"条码编号"
));
header
.
add
(
Lists
.
newArrayList
(
"料件编号"
));
header
.
add
(
Lists
.
newArrayList
(
"批次"
));
header
.
add
(
Lists
.
newArrayList
(
"数量"
));
header
.
add
(
Lists
.
newArrayList
(
"用户"
));
header
.
add
(
Lists
.
newArrayList
(
"供应商"
));
header
.
add
(
Lists
.
newArrayList
(
"来源二"
));
header
.
add
(
Lists
.
newArrayList
(
"状态"
));
header
.
add
(
Lists
.
newArrayList
(
"更新时间"
));
return
header
;
}
@Override
public
List
<
List
<
Object
>>
getPageData
(
Query
query
,
Pageable
pageable
)
{
List
<
List
<
Object
>>
dataList
=
new
ArrayList
<>();
List
<
DataLog
>
dataLogList
=
dataLogDao
.
findByQuery
(
query
,
pageable
);
DateFormat
dateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:SS"
);
for
(
DataLog
dataLog
:
dataLogList
)
{
List
<
Object
>
data
=
new
ArrayList
<>();
data
.
add
(
dataLog
.
getDetailTypeStr
());
//"类型"
data
.
add
(
dataLog
.
getSourceName
());
//"单号"
data
.
add
(
dataLog
.
getPosName
());
//"料仓名称"
data
.
add
(
dataLog
.
getBarcode
());
//"条码编号"
data
.
add
(
dataLog
.
getPartNumber
());
//"料件编号"
data
.
add
(
dataLog
.
getBatchInfo
());
//"批次"
data
.
add
(
dataLog
.
getReelQty
());
//"数量"
data
.
add
(
dataLog
.
getOperator
());
//"用户"
data
.
add
(
dataLog
.
getProvider
());
//"供应商"
data
.
add
(
dataLog
.
getSubSourceInfo
());
//"来源二"
data
.
add
(
dataLog
.
getStatusStr
());
//"状态"
data
.
add
(
"更新时间"
);
dataList
.
add
(
data
);
}
return
dataList
;
}
});
}
}
src/main/java/com/neotel/smfcore/core/system/service/po/DataLog.java
查看文件 @
e72e005
...
...
@@ -467,6 +467,36 @@ public class DataLog extends BasePo implements Serializable {
}
}
public
String
getDetailTypeStr
(){
int
detailType
=
getDetailType
();
String
detailTypeStr
=
""
;
//1=普通入库,2=并盘入库,3=截料入库,4=退料入库
if
(
detailType
==
1
){
detailTypeStr
=
"普通入库"
;
}
else
if
(
detailType
==
2
){
detailTypeStr
=
"并盘入库"
;
}
else
if
(
detailType
==
3
){
detailTypeStr
=
"截料入库"
;
}
else
if
(
detailType
==
4
){
detailTypeStr
=
"退料入库"
;
}
else
if
(
detailType
==
100
){
//0普通出库,1并盘出库 ,2湿敏出库 3线边仓间转储出库 ,10=工单出库
// * 4=转外协出库,发运单出库,成本中心领料:对应4,预留单出库;
detailTypeStr
=
"普通出库"
;
}
else
if
(
detailType
==
101
){
detailTypeStr
=
"并盘出库"
;
}
else
if
(
detailType
==
102
){
detailTypeStr
=
"湿敏出库"
;
}
else
if
(
detailType
==
103
){
detailTypeStr
=
"线边仓间转储出库"
;
}
else
if
(
detailType
==
104
){
detailTypeStr
=
"预留单出库"
;
}
else
if
(
detailType
==
110
){
detailTypeStr
=
"工单出库"
;
}
return
detailTypeStr
;
}
public
int
getReelQty
(){
if
(
type
==
OP
.
PUT_IN
){
return
num
;
...
...
@@ -474,4 +504,13 @@ public class DataLog extends BasePo implements Serializable {
return
0
-
num
;
}
}
public
String
getStatusStr
()
{
String
statusStr
=
""
;
String
statusValue
=
getStatus
();
if
(
statusValue
.
equals
(
OP_STATUS
.
WAIT
)){
statusStr
=
"等待中"
;
}
return
statusStr
;
}
}
src/main/java/com/neotel/smfcore/security/rest/MenuController.java
查看文件 @
e72e005
...
...
@@ -92,6 +92,7 @@ public class MenuController {
Query
query
=
QueryHelp
.
getQuery
(
criteria
);
query
.
addCriteria
(
Criteria
.
where
(
"type"
).
ne
(
2
));
//Query query=new Query(Criteria.where("type").ne(2));
menuManager
.
download
(
menuManager
.
findByQuery
(
query
),
response
,
request
.
getLocale
());
}
...
...
@@ -102,8 +103,7 @@ public class MenuController {
public
ResponseEntity
<
Object
>
query
(
@RequestParam
String
pid
,
HttpServletRequest
servletRequest
)
{
List
<
Menu
>
menus
=
menuManager
.
getMenusByPid
(
pid
);
Locale
locale
=
servletRequest
.
getLocale
();
for
(
Menu
menu
:
menus
)
{
for
(
Menu
menu
:
menus
)
{
menu
.
UpdateTitle
(
locale
);
}
List
<
MenuDto
>
dtos
=
menuMapper
.
toDto
(
menus
);
...
...
src/main/java/com/neotel/smfcore/security/rest/UserController.java
查看文件 @
e72e005
...
...
@@ -129,7 +129,7 @@ public class UserController {
if
(
resources
.
getGroups
()==
null
){
resources
.
setGroups
(
new
HashSet
<
String
>());
}
resources
.
setEnabled
(
fals
e
);
resources
.
setEnabled
(
tru
e
);
if
(
resources
.
getCheckCode
()==
null
){
resources
.
setCheckCode
(
""
);
}
...
...
src/main/java/com/neotel/smfcore/security/service/UserDetailsServiceImpl.java
查看文件 @
e72e005
...
...
@@ -81,21 +81,21 @@ public class UserDetailsServiceImpl implements UserDetailsService {
if
(
user
==
null
)
{
throw
new
ValidateException
(
"smfcore.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"username"
,
username
});
}
else
{
if
(
user
.
getEnabled
()==
null
){
throw
new
ValidateException
(
"smfcore.notActivated"
,
"账号未激活"
);
}
if
(!
user
.
getEnabled
())
{
throw
new
ValidateException
(
"smfcore.notActivated"
,
"账号未激活"
);
}
if
(
user
.
getUsername
().
equals
(
Constants
.
SUPER_USERNAME
)){
}
else
{
//判断激活码是否正确
String
code
=
Md5Utls
.
getMd5
(
user
.
getId
(),
user
.
getCreateDate
());
if
(!
code
.
equals
(
user
.
getCheckCode
()))
{
throw
new
ValidateException
(
"smfcore.notActivated"
,
"账号未激活"
);
}
}
//
if(user.getEnabled()==null){
//
throw new ValidateException("smfcore.notActivated","账号未激活");
//
}
//
if (!user.getEnabled()) {
//
throw new ValidateException("smfcore.notActivated","账号未激活");
//
}
//
if(user.getUsername().equals(Constants.SUPER_USERNAME)){
//
//
}else {
//
//判断激活码是否正确
//
String code = Md5Utls.getMd5(user.getId(), user.getCreateDate());
//
if (!code.equals(user.getCheckCode())) {
//
throw new ValidateException("smfcore.notActivated","账号未激活");
//
}
//
}
List
<
Long
>
dataScopes
=
new
ArrayList
<>();
jwtUserDto
=
new
JwtUserDto
(
user
,
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论