Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 635017c4
由
LN
编写于
2021-07-30 17:32:10 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
工单上传功能。
1 个父辈
1e55b1ef
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
109 行增加
和
8 行删除
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
查看文件 @
635017c
...
@@ -5,9 +5,11 @@ import com.google.common.collect.Lists;
...
@@ -5,9 +5,11 @@ import com.google.common.collect.Lists;
import
com.neotel.smfcore.common.annotation.QueryCondition
;
import
com.neotel.smfcore.common.annotation.QueryCondition
;
import
com.neotel.smfcore.common.bean.PageData
;
import
com.neotel.smfcore.common.bean.PageData
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.csv.CsvReader
;
import
com.neotel.smfcore.common.exception.BadRequestException
;
import
com.neotel.smfcore.common.exception.BadRequestException
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.exception.ValidateException
;
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.QueryHelp
;
import
com.neotel.smfcore.common.utils.QueryHelp
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
...
@@ -17,7 +19,12 @@ import com.neotel.smfcore.core.order.rest.bean.query.OrderQueryCondition;
...
@@ -17,7 +19,12 @@ import com.neotel.smfcore.core.order.rest.bean.query.OrderQueryCondition;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderManager
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderManager
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.rest.bean.mapstruct.TaskMapper
;
import
com.neotel.smfcore.core.system.rest.bean.mapstruct.TaskMapper
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
com.neotel.smfcore.security.bean.FileProperties
;
import
com.neotel.smfcore.security.rest.bean.vo.UserPassVo
;
import
com.neotel.smfcore.security.rest.bean.vo.UserPassVo
;
import
com.neotel.smfcore.security.service.manager.IGroupManager
;
import
com.neotel.smfcore.security.service.manager.IGroupManager
;
import
com.neotel.smfcore.security.service.manager.IRoleManager
;
import
com.neotel.smfcore.security.service.manager.IRoleManager
;
...
@@ -29,6 +36,7 @@ import io.swagger.annotations.Api;
...
@@ -29,6 +36,7 @@ import io.swagger.annotations.Api;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.logging.log4j.util.Strings
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.HttpStatus
;
...
@@ -41,6 +49,8 @@ import org.springframework.validation.annotation.Validated;
...
@@ -41,6 +49,8 @@ import org.springframework.validation.annotation.Validated;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.File
;
import
java.io.IOException
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.Set
;
...
@@ -69,6 +79,8 @@ public class OrderController {
...
@@ -69,6 +79,8 @@ public class OrderController {
@Autowired
@Autowired
private
LiteOrderCache
liteOrderCache
;
private
LiteOrderCache
liteOrderCache
;
@Autowired
private
final
FileProperties
properties
;
// @ApiOperation("导出用户数据")
// @ApiOperation("导出用户数据")
// @GetMapping(value = "/download")
// @GetMapping(value = "/download")
// @PreAuthorize("@el.check('user:list')")
// @PreAuthorize("@el.check('user:list')")
...
@@ -78,9 +90,36 @@ public class OrderController {
...
@@ -78,9 +90,36 @@ public class OrderController {
@ApiOperation
(
"上传工单"
)
@ApiOperation
(
"上传工单"
)
@PostMapping
(
value
=
"/upload"
)
@PostMapping
(
value
=
"/upload"
)
public
ResultBean
updateAvatar
(
@RequestParam
MultipartFile
orderFile
){
@AnonymousAccess
public
ResultBean
updateAvatar
(
@RequestParam
MultipartFile
orderFile
)
{
return
null
;
String
image
=
"csv"
;
String
fileType
=
FileUtil
.
getExtensionName
(
orderFile
.
getOriginalFilename
());
if
(
fileType
!=
null
&&
!
image
.
contains
(
fileType
))
{
throw
new
BadRequestException
(
"文件格式错误!, 仅支持 "
+
image
+
" 格式"
);
}
File
folder
=
new
File
(
properties
.
getPath
(),
"pos"
);
File
localFile
=
FileUtil
.
upload
(
orderFile
,
folder
.
getAbsolutePath
());
List
<
LiteOrderItem
>
liteOrderItems
=
handleOrderCsv
(
localFile
.
getAbsolutePath
());
if
(
liteOrderItems
==
null
||
liteOrderItems
.
size
()
<=
0
)
{
throw
new
BadRequestException
(
"文件解析失败"
);
}
LiteOrder
liteOrder
=
new
LiteOrder
(
localFile
.
getName
(),
liteOrderItems
);
liteOrder
.
setSource
(
localFile
.
getAbsolutePath
());
LiteOrder
dbOrder
=
liteOrderManager
.
findByOrderNo
(
liteOrder
.
getOrderNo
());
if
(
dbOrder
==
null
)
{
log
.
info
(
"新增加订单:"
+
liteOrder
.
getOrderNo
());
liteOrder
=
liteOrderManager
.
createWithItems
(
liteOrder
);
// TaskService.liteOrderMap.put(liteOrder.getOrderNo(), liteOrder);
}
else
{
log
.
info
(
"数据库中已存在工单号为["
+
liteOrder
.
getOrderNo
()
+
"],忽略文件:"
+
localFile
.
getAbsolutePath
());
throw
new
BadRequestException
(
"工单号["
+
liteOrder
.
getOrderNo
()
+
"]已存在"
);
}
return
ResultBean
.
newOkResult
(
"工单上传成功"
);
}
}
@ApiOperation
(
"工单出库"
)
@ApiOperation
(
"工单出库"
)
...
@@ -95,22 +134,22 @@ public class OrderController {
...
@@ -95,22 +134,22 @@ public class OrderController {
@ApiOperation
(
"查询工单"
)
@ApiOperation
(
"查询工单"
)
@GetMapping
@GetMapping
@PreAuthorize
(
"@el.check('order:list')"
)
@PreAuthorize
(
"@el.check('order:list')"
)
public
PageData
<
OrderDto
>
query
(
OrderQueryCondition
criteria
,
Pageable
pageable
){
public
PageData
<
OrderDto
>
query
(
OrderQueryCondition
criteria
,
Pageable
pageable
)
{
User
user
=
userManager
.
findByUserName
(
SecurityUtils
.
getCurrentUsername
());
User
user
=
userManager
.
findByUserName
(
SecurityUtils
.
getCurrentUsername
());
if
(
user
!=
null
)
{
if
(
user
!=
null
)
{
//数据权限
//数据权限
if
(!
user
.
getIsAdmin
())
{
if
(!
user
.
getIsAdmin
())
{
Set
<
String
>
groupIds
=
user
.
getGroups
();
Set
<
String
>
groupIds
=
user
.
getGroups
();
List
<
String
>
groupNames
=
Lists
.
newArrayList
();
List
<
String
>
groupNames
=
Lists
.
newArrayList
();
if
(!
ObjectUtils
.
isEmpty
(
groupIds
))
{
if
(!
ObjectUtils
.
isEmpty
(
groupIds
))
{
for
(
String
groupId
:
groupIds
)
{
for
(
String
groupId
:
groupIds
)
{
Group
group
=
groupManager
.
get
(
groupId
);
Group
group
=
groupManager
.
get
(
groupId
);
groupNames
.
add
(
group
.
getGroupName
());
groupNames
.
add
(
group
.
getGroupName
());
}
}
}
}
//都没有权限,返回空
//都没有权限,返回空
if
(
ObjectUtils
.
isEmpty
(
groupNames
))
{
if
(
ObjectUtils
.
isEmpty
(
groupNames
))
{
return
new
PageData
<>(
Lists
.
newArrayList
(),
0
);
return
new
PageData
<>(
Lists
.
newArrayList
(),
0
);
}
}
criteria
.
setSourceList
(
groupNames
);
criteria
.
setSourceList
(
groupNames
);
}
}
...
@@ -118,4 +157,66 @@ public class OrderController {
...
@@ -118,4 +157,66 @@ public class OrderController {
PageData
<
LiteOrder
>
orderList
=
liteOrderManager
.
findByPage
(
QueryHelp
.
getQuery
(
criteria
),
pageable
);
PageData
<
LiteOrder
>
orderList
=
liteOrderManager
.
findByPage
(
QueryHelp
.
getQuery
(
criteria
),
pageable
);
return
orderMapper
.
toDto
(
orderList
);
return
orderMapper
.
toDto
(
orderList
);
}
}
private
int
getCsvIndex
(
CsvReader
csvReader
,
String
titleName
,
String
titleNameEn
)
{
int
index
=
csvReader
.
getIndex
(
titleName
,
titleNameEn
);
if
(
index
==
-
1
)
{
log
.
info
(
"未包含【"
+
titleName
+
"】或【"
+
titleNameEn
+
"】列"
);
throw
new
ValidateException
(
"必须包含["
+
titleNameEn
+
"]列"
);
}
return
index
;
}
protected
List
<
LiteOrderItem
>
handleOrderCsv
(
String
fileURL
)
{
try
{
log
.
info
(
"开始更解析上传的工单"
);
List
<
LiteOrderItem
>
items
=
Lists
.
newArrayList
();
CsvReader
csvRead
=
new
CsvReader
(
fileURL
);
csvRead
.
setSkipEmptyRecords
(
true
);
//忽略空行
csvRead
.
setTrimWhitespace
(
true
);
//去除空格
csvRead
.
readHeaders
();
int
partNumberIndex
=
csvRead
.
getIndex
(
"PN"
,
"PN"
);
int
qtyIndex
=
csvRead
.
getIndex
(
"NUM"
,
"QTY"
);
int
feederIndex
=
csvRead
.
getIndex
(
"FEEDER"
,
"FEEDER"
);
int
row
=
1
;
int
newRowCount
=
0
;
int
updateRowCount
=
0
;
while
(
csvRead
.
readRecord
())
{
row
++;
String
[]
lineValues
=
csvRead
.
getValues
();
String
partNumber
=
lineValues
[
partNumberIndex
];
if
(
partNumber
.
isEmpty
())
{
log
.
warn
(
"行[partNumber="
+
partNumber
+
"]中PN 为空,此行忽略"
);
}
else
{
int
num
=
1
;
if
(
qtyIndex
!=
-
1
)
{
String
numStr
=
lineValues
[
qtyIndex
];
if
(
Strings
.
isNotBlank
(
numStr
))
{
try
{
num
=
Integer
.
valueOf
(
numStr
);
}
catch
(
Exception
e
)
{
log
.
error
(
partNumber
+
"的数量:"
+
numStr
+
" 不是数字,使用1"
);
}
}
}
String
feeder
=
""
;
if
(
feederIndex
!=
-
1
)
{
feeder
=
lineValues
[
feederIndex
];
}
LiteOrderItem
item
=
new
LiteOrderItem
();
item
.
setPn
(
partNumber
);
item
.
setNeedNum
(
num
);
item
.
setFeederInfo
(
feeder
);
items
.
add
(
item
);
}
}
return
items
;
}
catch
(
Exception
ex
)
{
log
.
error
(
"解析上传的工单出错:"
+
ex
.
toString
());
}
return
null
;
}
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论