Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gdtel-gztel-school-center
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
吴学德
gdtel-gztel-school-center
Commits
8d531142
Commit
8d531142
authored
Mar 11, 2020
by
黄森林
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
PC端订单管理受理单,快递单导入功能
parent
3f095ebb
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
678 additions
and
19 deletions
+678
-19
common/src/main/java/com/winsun/mapper/OrderMapper.java
+28
-0
common/src/main/java/com/winsun/utils/ImportExcel.java
+257
-0
service-manager/src/main/java/com/winsun/controller/OrderController.java
+393
-19
No files found.
common/src/main/java/com/winsun/mapper/OrderMapper.java
View file @
8d531142
package
com
.
winsun
.
mapper
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Select
;
import
org.apache.ibatis.annotations.Update
;
import
org.springframework.stereotype.Component
;
import
com.baomidou.mybatisplus.mapper.BaseMapper
;
...
...
@@ -22,4 +24,30 @@ public interface OrderMapper extends BaseMapper<Order> {
@Select
(
"select * from `hhr_order_history` where order_id = #{oredrId}"
)
List
<
Map
<
String
,
Object
>>
selectOrderHis
(
String
oredrId
);
@Update
(
"update `hhr_order` set order_status = #{orderStatus}, accept_name = #{acceptName},"
+
" accept_result = #{acceptResult}, accept_comment = #{acceptComment}, accept_date = #{acceptDate} "
+
" where order_number = #{orderNumber}"
)
Integer
updateOrderSUByOrderNumberIsNotNull
(
@Param
(
"orderNumber"
)
String
orderNumber
,
@Param
(
"orderStatus"
)
String
orderStatus
,
@Param
(
"acceptName"
)
String
acceptName
,
@Param
(
"acceptResult"
)
String
acceptResult
,
@Param
(
"acceptComment"
)
String
acceptComment
,
@Param
(
"acceptDate"
)
Date
acceptDate
);
@Update
(
"update `hhr_order` set order_status = #{orderStatus}, accept_name = #{acceptName},"
+
" accept_result = #{acceptResult}, accept_date = #{acceptDate} "
+
" where order_number = #{orderNumber}"
)
Integer
updateOrderSUByOrderNumberIsNull
(
@Param
(
"orderNumber"
)
String
orderNumber
,
@Param
(
"orderStatus"
)
String
orderStatus
,
@Param
(
"acceptName"
)
String
acceptName
,
@Param
(
"acceptResult"
)
String
acceptResult
,
@Param
(
"acceptDate"
)
Date
acceptDate
);
@Update
(
"update `hhr_order` set order_status = #{orderStatus},company = #{company},kuaidi_order = #{kuaidiOrder},send_type = #{sendType} where order_number = #{orderNumber}"
)
Integer
updateOrderKDIsNotNull
(
@Param
(
"orderNumber"
)
String
orderNumber
,
@Param
(
"company"
)
String
company
,
@Param
(
"kuaidiOrder"
)
String
kuaidiOrder
,
@Param
(
"sendType"
)
String
sendType
,
@Param
(
"orderStatus"
)
String
orderStatus
);
@Update
(
"update `hhr_order` set order_status = #{orderStatus},send_type = #{sendType} where order_number = #{orderNumber}"
)
Integer
updateOrderKDIsNull
(
@Param
(
"orderNumber"
)
String
orderNumber
,
@Param
(
"sendType"
)
String
sendType
,
@Param
(
"orderStatus"
)
String
orderStatus
);
@Select
(
"select id from `hhr_order` where order_number = #{orderNumber}"
)
String
selectIdByOrderNumber
(
String
orderNumber
);
@Select
(
"select xb_order_id xbOrderId from `hhr_order` where order_number = #{orderNumber}"
)
String
selectxbOrderIdByOrderNumber
(
String
orderNumber
);
}
common/src/main/java/com/winsun/utils/ImportExcel.java
0 → 100644
View file @
8d531142
package
com
.
winsun
.
utils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.poi.hssf.usermodel.HSSFWorkbook
;
import
org.apache.poi.openxml4j.exceptions.InvalidFormatException
;
import
org.apache.poi.ss.usermodel.*
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.util.ArrayList
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* 导入Excel文件(支持“XLS”和“XLSX”格式)
* @author
* @version
*/
public
class
ImportExcel
{
private
static
Logger
log
=
LoggerFactory
.
getLogger
(
ImportExcel
.
class
);
/**
* 工作薄对象
*/
private
Workbook
wb
;
/**
* 工作表对象
*/
private
Sheet
sheet
;
/**
* 标题行号
*/
private
int
headerNum
;
/**
* 构造函数
* @param headerNum 标题行号,数据行号=标题行号+1
* @throws InvalidFormatException
* @throws IOException
*/
public
ImportExcel
(
String
fileName
,
int
headerNum
)
throws
InvalidFormatException
,
IOException
{
this
(
new
File
(
fileName
),
headerNum
);
}
/**
* 构造函数
* @param headerNum 标题行号,数据行号=标题行号+1
* @throws InvalidFormatException
* @throws IOException
*/
public
ImportExcel
(
File
file
,
int
headerNum
)
throws
InvalidFormatException
,
IOException
{
this
(
file
,
headerNum
,
0
);
}
/**
* 构造函数
* @param headerNum 标题行号,数据行号=标题行号+1
* @param sheetIndex 工作表编号
* @throws InvalidFormatException
* @throws IOException
*/
public
ImportExcel
(
String
fileName
,
int
headerNum
,
int
sheetIndex
)
throws
InvalidFormatException
,
IOException
{
this
(
new
File
(
fileName
),
headerNum
,
sheetIndex
);
}
/**
* 构造函数
* @param headerNum 标题行号,数据行号=标题行号+1
* @param sheetIndex 工作表编号
* @throws InvalidFormatException
* @throws IOException
*/
public
ImportExcel
(
File
file
,
int
headerNum
,
int
sheetIndex
)
throws
InvalidFormatException
,
IOException
{
this
(
file
.
getName
(),
new
FileInputStream
(
file
),
headerNum
,
sheetIndex
);
}
/**
* 构造函数
* @param headerNum 标题行号,数据行号=标题行号+1
* @param sheetIndex 工作表编号
* @throws InvalidFormatException
* @throws IOException
*/
public
ImportExcel
(
MultipartFile
multipartFile
,
int
headerNum
,
int
sheetIndex
)
throws
InvalidFormatException
,
IOException
{
this
(
multipartFile
.
getOriginalFilename
(),
multipartFile
.
getInputStream
(),
headerNum
,
sheetIndex
);
}
/**
* 构造函数
* @param headerNum 标题行号,数据行号=标题行号+1
* @param sheetIndex 工作表编号
* @throws InvalidFormatException
* @throws IOException
*/
public
ImportExcel
(
String
fileName
,
InputStream
is
,
int
headerNum
,
int
sheetIndex
)
throws
InvalidFormatException
,
IOException
{
if
(
StringUtils
.
isBlank
(
fileName
)){
throw
new
RuntimeException
(
"导入文档为空!"
);
}
else
if
(
fileName
.
toLowerCase
().
endsWith
(
"xls"
)){
this
.
wb
=
new
HSSFWorkbook
(
is
);
}
else
if
(
fileName
.
toLowerCase
().
endsWith
(
"xlsx"
)){
this
.
wb
=
new
XSSFWorkbook
(
is
);
}
else
{
throw
new
RuntimeException
(
"文档格式不正确!"
);
}
if
(
this
.
wb
.
getNumberOfSheets
()<
sheetIndex
){
throw
new
RuntimeException
(
"文档中没有工作表!"
);
}
this
.
sheet
=
this
.
wb
.
getSheetAt
(
sheetIndex
);
this
.
headerNum
=
headerNum
;
log
.
debug
(
"Initialize success."
);
}
/**
* 获取行对象
* @param rownum
* @return
*/
public
Row
getRow
(
int
rownum
){
return
this
.
sheet
.
getRow
(
rownum
);
}
/**
* 获取数据行号
* @return
*/
public
int
getDataRowNum
(){
return
headerNum
+
1
;
}
/**
* 获取最后一个数据行号
* @return
*/
public
int
getLastDataRowNum
(){
return
this
.
sheet
.
getLastRowNum
()+
headerNum
;
}
/**
* 获取最后一个列号
* @return
*/
public
int
getLastCellNum
(){
return
this
.
getRow
(
headerNum
).
getLastCellNum
();
}
/**
* 获取单元格值
* @param row 获取的行
* @param column 获取单元格列号
* @return 单元格值
*/
public
Object
getCellValue
(
Row
row
,
int
column
){
Object
val
=
""
;
try
{
Cell
cell
=
row
.
getCell
(
column
);
if
(
cell
!=
null
){
if
(
cell
.
getCellType
()
==
CellType
.
NUMERIC
){
val
=
cell
.
getNumericCellValue
();
// DecimalFormat df = new DecimalFormat("0");
// val = df.format(cell.getNumericCellValue());
}
else
if
(
cell
.
getCellType
()
==
CellType
.
STRING
){
val
=
cell
.
getStringCellValue
();
}
else
if
(
cell
.
getCellType
()
==
CellType
.
FORMULA
){
val
=
cell
.
getCellFormula
();
}
else
if
(
cell
.
getCellType
()
==
CellType
.
BOOLEAN
){
val
=
cell
.
getBooleanCellValue
();
}
else
if
(
cell
.
getCellType
()
==
CellType
.
ERROR
){
val
=
cell
.
getErrorCellValue
();
}
}
}
catch
(
Exception
e
)
{
return
val
;
}
return
val
;
}
public
List
<
List
<
String
>>
getDataList
(){
List
<
List
<
String
>>
data
=
new
ArrayList
<>();
int
sum
=
sheet
.
getLastRowNum
();
Row
fristCount
=
sheet
.
getRow
(
0
);
int
cellCount
=
fristCount
.
getLastCellNum
();
for
(
int
i
=
headerNum
;
i
<=
sum
;
i
++){
Row
row
=
sheet
.
getRow
(
i
);
List
<
String
>
list
=
new
ArrayList
<>();
for
(
int
j
=
0
;
j
<
cellCount
;
j
++){
String
result
=
""
;
result
=
getCellValue
(
row
,
j
).
toString
();
list
.
add
(
result
.
trim
());
}
data
.
add
(
list
);
}
return
data
;
}
public
List
<
Map
<
String
,
Object
>>
getDataListMap
(){
List
<
Map
<
String
,
Object
>>
data
=
new
ArrayList
<>();
int
sum
=
sheet
.
getLastRowNum
();
for
(
int
i
=
headerNum
;
i
<=
sum
;
i
++){
Row
row
=
sheet
.
getRow
(
i
);
if
(
row
!=
null
&&
row
.
getCell
(
0
)!=
null
&&
!
""
.
equals
(
row
.
getCell
(
0
))){
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<
String
,
Object
>();
int
cellCount
=
row
.
getLastCellNum
();
for
(
int
j
=
0
;
j
<
cellCount
;
j
++){
String
result
=
""
;
result
=
getCellValue
(
row
,
j
).
toString
();
map
.
put
(
index
[
j
],
result
);
}
data
.
add
(
map
);
}
}
return
data
;
}
static
String
[]
index
=
{
"a"
,
"b"
,
"c"
,
"d"
,
"e"
,
"f"
,
"g"
,
"h"
,
"i"
,
"j"
,
"k"
,
"l"
,
"m"
,
"n"
,
"o"
,
"p"
,
"q"
,
"r"
,
"s"
,
"t"
,
"u"
,
"v"
,
"w"
,
"x"
,
"y"
,
"z"
,
"aa"
,
"ab"
,
"ac"
,
"ad"
,
"ae"
,
"af"
,
"ag"
,
"ah"
,
"ai"
,
"aj"
,
"ak"
,
"al"
,
"am"
,
"an"
,
"ao"
,
"ap"
,
"aq"
,
"ar"
,
"as"
,
"at"
,
"au"
,
"av"
,
"aw"
,
"ax"
,
"ay"
,
"az"
,
"ba"
,
"bb"
,
"bc"
,
"bd"
,
"be"
,
"bf"
,
"bg"
,
"bh"
,
"bi"
,
"bj"
,
"bk"
,
"bl"
,
"bm"
,
"bn"
,
"bo"
,
"bp"
,
"bq"
,
"br"
,
"bs"
,
"bt"
,
"bu"
,
"bv"
,
"bw"
,
"bx"
,
"by"
,
"bz"
,
"ca"
,
"cb"
,
"cc"
,
"cd"
,
"ce"
,
"cf"
,
"cg"
,
"ch"
,
"ci"
,
"cj"
,
"ck"
,
"cl"
,
"cm"
,
"cn"
,
"co"
,
"cp"
,
"cq"
,
"cr"
,
"cs"
,
"ct"
,
"cu"
,
"cv"
,
"cw"
,
"cx"
,
"cy"
,
"cz"
};
// /**
// * 导入测试
// */
// public static void main(String[] args) throws Throwable {
//
// ImportExcel ei = new ImportExcel("target/export.xlsx", 1);
//
// for (int i = ei.getDataRowNum(); i < ei.getLastDataRowNum(); i++) {
// Row row = ei.getRow(i);
// for (int j = 0; j < ei.getLastCellNum(); j++) {
// Object val = ei.getCellValue(row, j);
// System.out.print(val+", ");
// }
// System.out.print("\n");
// }
//
// }
}
service-manager/src/main/java/com/winsun/controller/OrderController.java
View file @
8d531142
package
com
.
winsun
.
controller
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.*
;
import
java.net.URLEncoder
;
import
java.time.LocalDate
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.http.HttpServletResponse
;
...
...
@@ -17,15 +13,17 @@ import com.alibaba.excel.ExcelWriter;
import
com.alibaba.excel.support.ExcelTypeEnum
;
import
com.alibaba.excel.write.metadata.WriteSheet
;
import
com.alibaba.fastjson.JSON
;
import
com.winsun.auth.core.util.DateUtil
;
import
com.winsun.bean.*
;
import
com.winsun.mapper.AppMapper
;
import
com.winsun.mapper.SchoolMapper
;
import
com.winsun.mapper.SysUserMapper
;
import
com.winsun.utils.ImportExcel
;
import
com.winsun.utils.YrymReportUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.poi.xssf.usermodel.XSSFCell
;
import
org.apache.poi.xssf.usermodel.XSSFRow
;
import
org.apache.poi.xssf.usermodel.XSSFSheet
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.apache.poi.ss.usermodel.HorizontalAlignment
;
import
org.apache.poi.ss.util.CellRangeAddressList
;
import
org.apache.poi.xssf.usermodel.*
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -42,6 +40,7 @@ import com.winsun.constant.OrderStatus;
import
com.winsun.mapper.OrderMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.multipart.MultipartFile
;
/**
* @Author: dongyp
...
...
@@ -52,18 +51,25 @@ import lombok.extern.slf4j.Slf4j;
@RequestMapping
(
"/order"
)
public
class
OrderController
extends
BaseController
{
private
static
final
int
HEADER_NUM
=
-
1
;
private
static
final
int
SHEET_INDEX
=
0
;
private
static
OrderMapper
orderMapper
;
private
static
SchoolMapper
schoolMapper
;
private
static
SysUserMapper
sysUserMapper
;
private
static
AppMapper
appMapper
;
@Autowired
public
OrderController
(
OrderMapper
orderMapper
)
{
public
OrderController
(
OrderMapper
orderMapper
,
SchoolMapper
schoolMapper
,
SysUserMapper
sysUserMapper
,
AppMapper
appMapper
)
{
OrderController
.
orderMapper
=
orderMapper
;
OrderController
.
schoolMapper
=
schoolMapper
;
OrderController
.
sysUserMapper
=
sysUserMapper
;
OrderController
.
appMapper
=
appMapper
;
}
@Autowired
private
SchoolMapper
schoolMapper
;
@Autowired
private
SysUserMapper
sysUserMapper
;
/**
* @param createTimeStart 订单创建时间开始
...
...
@@ -79,7 +85,6 @@ public class OrderController extends BaseController {
* @param hehuorenName 合伙人姓名
* @param orderStatus 订单状态
* @param customerName 客户姓名
* @param pageIndex
* @param pageSize
* @return
*/
...
...
@@ -341,7 +346,7 @@ public class OrderController extends BaseController {
//周
Wrapper
<
Order
>
weekWrapper
=
commonWrapper
.
clone
();
if
(
StringUtils
.
isNotBlank
(
endTime
))
{
weekWrapper
.
addFilter
(
"DATE(success_time) >= DATE_SUB(DATE('"
+
endTime
+
"'), INTERVAL 7 DAY)"
);
weekWrapper
.
addFilter
(
"DATE(success_time) >= DATE_SUB(DATE('"
+
endTime
+
"'), INTERVAL 7 DAY)"
);
}
else
{
weekWrapper
.
addFilter
(
"DATE(success_time) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)"
);
}
...
...
@@ -349,7 +354,7 @@ public class OrderController extends BaseController {
//月
Wrapper
<
Order
>
monthWrapper
=
commonWrapper
.
clone
();
if
(
StringUtils
.
isNotBlank
(
endTime
))
{
monthWrapper
.
addFilter
(
"DATE(success_time) >= DATE_SUB(DATE('"
+
endTime
+
"'), INTERVAL 30 DAY)"
);
monthWrapper
.
addFilter
(
"DATE(success_time) >= DATE_SUB(DATE('"
+
endTime
+
"'), INTERVAL 30 DAY)"
);
}
else
{
monthWrapper
.
addFilter
(
"DATE(success_time) >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)"
);
}
...
...
@@ -369,4 +374,373 @@ public class OrderController extends BaseController {
YrymReportUtils
.
setAllSum
(
resultList
);
return
resultList
;
}
/**
* 受理订单
*
* @param file 上传的数据文件
* @return
*/
@Permission
(
menuname
=
"上传数据"
,
value
=
"importDate"
,
method
=
RequestMethod
.
POST
)
public
ResponseData
<
String
>
updateDatas
(
@RequestParam
(
name
=
"file"
)
MultipartFile
file
)
{
StringBuffer
error
=
new
StringBuffer
();
if
(!
StringUtils
.
endsWithAny
(
file
.
getOriginalFilename
(),
"xlsx"
,
"xls"
))
{
return
ResponseData
.
error
(
"手工上传数据仅支持Excel文件,其他格式不支持!"
);
}
ShiroUser
user
=
getShiroUser
();
// 当前是否有数据权限
boolean
hasDataPermission
=
user
.
getRoleNames
().
stream
().
anyMatch
(
data
->
StringUtils
.
equalsAny
(
data
,
"活动上单员"
,
"数据管理员"
,
"超级管理员"
));
if
(!
hasDataPermission
)
{
return
ResponseData
.
error
(
"无数据权限!"
);
}
ImportExcel
importExcel
=
null
;
try
{
importExcel
=
new
ImportExcel
(
file
,
HEADER_NUM
,
SHEET_INDEX
);
}
catch
(
Exception
e
)
{
log
.
info
(
"受理单导入异常"
,
e
.
getMessage
());
return
ResponseData
.
error
(
"导入异常!"
);
}
List
<
Map
<
String
,
Object
>>
listMap
=
importExcel
.
getDataListMap
();
if
(
listMap
.
size
()
==
1
)
{
return
ResponseData
.
error
(
"文件不能为空"
);
}
if
(!
listMap
.
get
(
0
).
get
(
"a"
).
toString
().
equals
(
"订单编号(必填)"
))
{
return
ResponseData
.
error
(
"模板不对,请选择正确的模板!"
);
}
if
(!
listMap
.
get
(
0
).
get
(
"b"
).
toString
().
equals
(
"受理结果(必填)"
))
{
return
ResponseData
.
error
(
"模板不对,请选择正确的模板!"
);
}
if
(!
listMap
.
get
(
0
).
get
(
"c"
).
toString
().
equals
(
"受理人(必填)"
))
{
return
ResponseData
.
error
(
"模板不对,请选择正确的模板!"
);
}
if
(!
listMap
.
get
(
0
).
get
(
"d"
).
toString
().
equals
(
"备注(受理不成功需填写不成功原因)"
))
{
return
ResponseData
.
error
(
"模板不对,请选择正确的模板!"
);
}
if
(
listMap
.
get
(
0
).
size
()
!=
4
)
{
return
ResponseData
.
error
(
"模板不对,请选择正确的模板!"
);
}
//校验数据
try
{
//校验数据
for
(
int
i
=
1
;
i
<
listMap
.
size
();
i
++)
{
Map
<
String
,
Object
>
temp
=
listMap
.
get
(
i
);
if
(!
temp
.
containsKey
(
"a"
))
{
return
ResponseData
.
error
(
"第"
+
(
i
+
1
)
+
"行的订单编号不能为空"
);
}
if
(
StringUtils
.
isBlank
(
temp
.
get
(
"a"
).
toString
()))
{
return
ResponseData
.
error
(
"第"
+
(
i
+
1
)
+
"行的订单编号不能为空"
);
}
if
(!
temp
.
containsKey
(
"b"
))
{
return
ResponseData
.
error
(
"第"
+
(
i
+
1
)
+
"行的受理结果不能为空"
);
}
if
(
StringUtils
.
isBlank
(
temp
.
get
(
"b"
).
toString
()))
{
return
ResponseData
.
error
(
"第"
+
(
i
+
1
)
+
"行的受理结果不能为空"
);
}
if
(!
temp
.
containsKey
(
"c"
))
{
return
ResponseData
.
error
(
"第"
+
(
i
+
1
)
+
"行的受理人不能为空"
);
}
if
(
StringUtils
.
isBlank
(
temp
.
get
(
"c"
).
toString
()))
{
return
ResponseData
.
error
(
"第"
+
(
i
+
1
)
+
"行的受理人不能为空"
);
}
if
(
"受理不成功"
.
equals
(
temp
.
get
(
"b"
).
toString
()))
{
if
(!
temp
.
containsKey
(
"d"
))
{
return
ResponseData
.
error
(
"第"
+
(
i
+
1
)
+
"行的备注不能为空"
);
}
if
(
StringUtils
.
isBlank
(
temp
.
get
(
"d"
).
toString
()))
{
return
ResponseData
.
error
(
"第"
+
(
i
+
1
)
+
"行的备注不能为空"
);
}
}
}
//检查excel表中是否有重复人员编号
int
size
=
listMap
.
size
();
Set
<
String
>
accountSet
=
new
HashSet
<>(
size
);
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
Map
<
String
,
Object
>
temp
=
listMap
.
get
(
i
);
accountSet
.
add
((
String
)
temp
.
get
(
"a"
));
}
if
(
accountSet
.
size
()
!=
size
)
{
return
ResponseData
.
error
(
"文件中有重复的订单编号,请确认订单编号不能重复!"
);
}
}
catch
(
Exception
e
)
{
log
.
info
(
"受理单导入异常"
,
e
.
getMessage
());
return
ResponseData
.
error
(
"导入异常!"
);
}
int
number
=
0
;
Date
acceptDate
=
new
Date
();
for
(
int
i
=
1
;
i
<
listMap
.
size
();
i
++)
{
Map
<
String
,
Object
>
map
=
listMap
.
get
(
i
);
String
orderNumber
=
map
.
get
(
"a"
).
toString
();
String
acceptResult
=
map
.
get
(
"b"
).
toString
();
String
acceptName
=
map
.
get
(
"c"
).
toString
();
String
acceptComment
=
null
;
String
orderStatus
=
null
;
String
status
=
null
;
if
(
StringUtils
.
isNotBlank
(
map
.
get
(
"d"
).
toString
()))
{
acceptComment
=
map
.
get
(
"d"
).
toString
();
}
if
(
"受理成功"
.
equals
(
map
.
get
(
"b"
).
toString
()))
{
orderStatus
=
"已完成"
;
status
=
"受理成功"
;
}
else
{
orderStatus
=
"异常单"
;
status
=
"受理失败,"
+
acceptComment
;
}
Integer
integer
=
null
;
if
(
StringUtils
.
isNotBlank
(
acceptComment
))
{
integer
=
orderMapper
.
updateOrderSUByOrderNumberIsNotNull
(
orderNumber
,
orderStatus
,
acceptName
,
acceptResult
,
acceptComment
,
acceptDate
);
}
else
{
integer
=
orderMapper
.
updateOrderSUByOrderNumberIsNull
(
orderNumber
,
orderStatus
,
acceptName
,
acceptResult
,
acceptDate
);
}
if
(
integer
==
1
)
{
number
++;
String
id
=
orderMapper
.
selectIdByOrderNumber
(
orderNumber
);
appMapper
.
inserOrderHis
(
id
,
status
,
acceptDate
,
user
.
getName
());
}
else
{
error
.
append
(
"第"
+
(
i
+
1
)
+
"行的更新失败,"
);
}
}
error
.
append
(
"成功更新"
+
number
+
"条数据!"
);
return
ResponseData
.
success
(
error
.
toString
(),
"导入完成"
);
}
/**
* 上传快递清单
*
* @param file 上传的数据文件
* @return
*/
@Permission
(
menuname
=
"上传快递清单"
,
value
=
"importExpressDelivery"
,
method
=
RequestMethod
.
POST
)
public
ResponseData
<
String
>
importExpressDelivery
(
@RequestParam
(
name
=
"file"
)
MultipartFile
file
)
{
StringBuffer
error
=
new
StringBuffer
();
if
(!
StringUtils
.
endsWithAny
(
file
.
getOriginalFilename
(),
"xlsx"
,
"xls"
))
{
return
ResponseData
.
error
(
"手工上传数据仅支持Excel文件,其他格式不支持!"
);
}
ShiroUser
user
=
getShiroUser
();
// 当前是否有数据权限
boolean
hasDataPermission
=
user
.
getRoleNames
().
stream
().
anyMatch
(
data
->
StringUtils
.
equalsAny
(
data
,
"活动上单员"
,
"数据管理员"
,
"超级管理员"
));
if
(!
hasDataPermission
)
{
return
ResponseData
.
error
(
"无数据权限!"
);
}
ImportExcel
importExcel
=
null
;
try
{
importExcel
=
new
ImportExcel
(
file
,
HEADER_NUM
,
SHEET_INDEX
);
}
catch
(
Exception
e
)
{
log
.
info
(
"快递单导入异常"
,
e
.
getMessage
());
return
ResponseData
.
error
(
"导入异常!"
);
}
List
<
Map
<
String
,
Object
>>
listMap
=
importExcel
.
getDataListMap
();
if
(
listMap
.
size
()
==
0
)
{
return
ResponseData
.
error
(
"文件不能为空"
);
}
if
(
listMap
.
get
(
0
).
size
()
!=
4
)
{
return
ResponseData
.
error
(
"模板不对,请选择正确的模板!"
);
}
if
(!
listMap
.
get
(
0
).
get
(
"a"
).
toString
().
equals
(
"订单编号(必填)"
))
{
return
ResponseData
.
error
(
"模板不对,请选择正确的模板!"
);
}
if
(!
listMap
.
get
(
0
).
get
(
"b"
).
toString
().
equals
(
"快递方式(必填)"
))
{
return
ResponseData
.
error
(
"模板不对,请选择正确的模板!"
);
}
if
(!
listMap
.
get
(
0
).
get
(
"c"
).
toString
().
equals
(
"快递公司(快递方式为快递必须填写)"
))
{
return
ResponseData
.
error
(
"模板不对,请选择正确的模板!"
);
}
if
(!
listMap
.
get
(
0
).
get
(
"d"
).
toString
().
equals
(
"快递单号(快递方式为快递必须填写)"
))
{
return
ResponseData
.
error
(
"模板不对,请选择正确的模板!"
);
}
//校验数据
try
{
//校验数据
for
(
int
i
=
1
;
i
<
listMap
.
size
();
i
++)
{
Map
<
String
,
Object
>
temp
=
listMap
.
get
(
i
);
if
(!
temp
.
containsKey
(
"a"
))
{
return
ResponseData
.
error
(
"第"
+
(
i
+
1
)
+
"行的订单编号不能为空"
);
}
if
(
StringUtils
.
isBlank
(
temp
.
get
(
"a"
).
toString
()))
{
return
ResponseData
.
error
(
"第"
+
(
i
+
1
)
+
"行的订单编号不能为空"
);
}
if
(!
temp
.
containsKey
(
"b"
))
{
return
ResponseData
.
error
(
"第"
+
(
i
+
1
)
+
"行的快递方式不能为空"
);
}
if
(
StringUtils
.
isBlank
(
temp
.
get
(
"b"
).
toString
()))
{
return
ResponseData
.
error
(
"第"
+
(
i
+
1
)
+
"行的快递方式不能为空"
);
}
if
(
"快递"
.
equals
(
temp
.
get
(
"b"
).
toString
()))
{
if
(!
temp
.
containsKey
(
"c"
))
{
return
ResponseData
.
error
(
"第"
+
(
i
+
1
)
+
"行的快递公司不能为空"
);
}
if
(!
temp
.
containsKey
(
"d"
))
{
return
ResponseData
.
error
(
"第"
+
(
i
+
1
)
+
"行的快递单号不能为空"
);
}
if
(
StringUtils
.
isBlank
(
temp
.
get
(
"c"
).
toString
()))
{
return
ResponseData
.
error
(
"第"
+
(
i
+
1
)
+
"行的快递公司不能为空"
);
}
if
(
StringUtils
.
isBlank
(
temp
.
get
(
"d"
).
toString
()))
{
return
ResponseData
.
error
(
"第"
+
(
i
+
1
)
+
"行的快递单号不能为空"
);
}
}
}
//检查excel表中是否有重复人员编号
int
size
=
listMap
.
size
();
Set
<
String
>
accountSet
=
new
HashSet
<>(
size
);
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
Map
<
String
,
Object
>
temp
=
listMap
.
get
(
i
);
accountSet
.
add
((
String
)
temp
.
get
(
"a"
));
}
if
(
accountSet
.
size
()
!=
size
)
{
return
ResponseData
.
error
(
"文件中有重复的订单编号,请确认订单编号不能重复!"
);
}
}
catch
(
Exception
e
)
{
log
.
info
(
"快递单导入异常"
,
e
.
getMessage
());
return
ResponseData
.
error
(
"导入异常!"
);
}
int
number
=
0
;
for
(
int
i
=
1
;
i
<
listMap
.
size
();
i
++)
{
Map
<
String
,
Object
>
map
=
listMap
.
get
(
i
);
String
orderNumber
=
map
.
get
(
"a"
).
toString
();
String
sendType
=
map
.
get
(
"b"
).
toString
();
String
company
=
null
;
String
kuaidiOrder
=
null
;
String
orderStatus
=
null
;
String
xbOrderId
=
orderMapper
.
selectxbOrderIdByOrderNumber
(
orderNumber
);
if
(
StringUtils
.
isNotBlank
(
xbOrderId
))
{
orderStatus
=
"待活体"
;
}
else
{
orderStatus
=
"已完成"
;
}
if
(
"快递"
.
equals
(
map
.
get
(
"b"
).
toString
()))
{
company
=
map
.
get
(
"c"
).
toString
();
kuaidiOrder
=
map
.
get
(
"d"
).
toString
();
}
Integer
integer
=
null
;
if
(
StringUtils
.
isBlank
(
company
)
||
StringUtils
.
isBlank
(
kuaidiOrder
))
{
integer
=
orderMapper
.
updateOrderKDIsNull
(
orderNumber
,
sendType
,
orderStatus
);
}
else
{
integer
=
orderMapper
.
updateOrderKDIsNotNull
(
orderNumber
,
company
,
kuaidiOrder
,
sendType
,
orderStatus
);
}
if
(
integer
==
1
)
{
number
++;
String
id
=
orderMapper
.
selectIdByOrderNumber
(
orderNumber
);
appMapper
.
inserOrderHis
(
id
,
"发货中,快递方式:"
+
sendType
,
new
Date
(),
user
.
getName
());
}
else
{
error
.
append
(
"第"
+
(
i
+
1
)
+
"行的更新失败,"
);
}
}
error
.
append
(
"成功更新"
+
number
+
"条数据!"
);
return
ResponseData
.
success
(
error
.
toString
(),
"导入完成"
);
}
/**
* 受理订单模板下载
*
* @return
*/
@Permission
(
menuname
=
"受理单导入模板"
,
method
=
RequestMethod
.
POST
,
value
=
"downloadMoBan"
)
public
ResponseData
downloadMoBan
()
{
ArrayList
<
String
>
columns
=
new
ArrayList
<>();
columns
.
add
(
"订单编号(必填)"
);
columns
.
add
(
"受理结果(必填)"
);
columns
.
add
(
"受理人(必填)"
);
columns
.
add
(
"备注(受理不成功需填写不成功原因)"
);
ServletOutputStream
os
=
null
;
XSSFWorkbook
workbook
=
new
XSSFWorkbook
();
try
{
//创建工作表
XSSFSheet
sheet
=
workbook
.
createSheet
(
"一人一码受理单"
);
sheet
.
setColumnWidth
(
0
,
5000
);
sheet
.
setColumnWidth
(
2
,
4000
);
sheet
.
setColumnWidth
(
1
,
4000
);
sheet
.
setColumnWidth
(
3
,
9000
);
//下拉选项
List
<
String
>
fengju
=
new
ArrayList
<>();
fengju
.
add
(
"受理不成功"
);
fengju
.
add
(
"受理成功"
);
sheet
=
this
.
getXSSFSheet
(
sheet
,
fengju
,
1
,
1
);
//添加表头
final
XSSFRow
row
=
sheet
.
createRow
(
0
);
XSSFCellStyle
cellStyle
=
workbook
.
createCellStyle
();
cellStyle
.
setAlignment
(
HorizontalAlignment
.
CENTER
);
columns
.
forEach
(
val
->
{
XSSFCell
cell
=
row
.
createCell
(
Math
.
max
(
row
.
getLastCellNum
(),
0
));
cell
.
setCellValue
(
val
);
});
HttpServletResponse
response
=
getHttpServletResponse
();
response
.
reset
();
response
.
setCharacterEncoding
(
"UTF-8"
);
response
.
setContentType
(
"application/vnd.ms-excel"
);
response
.
setHeader
(
"Content-Disposition"
,
"attachment;fileName=data.xlsx"
);
os
=
response
.
getOutputStream
();
workbook
.
write
(
os
);
os
.
flush
();
}
catch
(
IOException
e
)
{
log
.
error
(
"受理单模板文件出错!"
+
e
.
getMessage
(),
e
);
}
finally
{
IOUtils
.
closeQuite
(
workbook
,
os
);
}
return
ResponseData
.
error
(
"受理单模板出错"
);
}
@Permission
(
menuname
=
"快递导入模板"
,
method
=
RequestMethod
.
POST
,
value
=
"downloadMoBanKD"
)
public
ResponseData
downloadMoBanKD
()
{
ArrayList
<
String
>
columns
=
new
ArrayList
<>();
columns
.
add
(
"订单编号(必填)"
);
columns
.
add
(
"快递方式(必填)"
);
columns
.
add
(
"快递公司(快递方式为快递必须填写)"
);
columns
.
add
(
"快递单号(快递方式为快递必须填写)"
);
ServletOutputStream
os
=
null
;
XSSFWorkbook
workbook
=
new
XSSFWorkbook
();
try
{
//创建工作表
XSSFSheet
sheet
=
workbook
.
createSheet
(
"快递清单"
);
sheet
.
setColumnWidth
(
0
,
5000
);
sheet
.
setColumnWidth
(
2
,
9000
);
sheet
.
setColumnWidth
(
1
,
4000
);
sheet
.
setColumnWidth
(
3
,
9000
);
//下拉选项
List
<
String
>
fengju
=
new
ArrayList
<>();
fengju
.
add
(
"快递"
);
fengju
.
add
(
"送货上门"
);
sheet
=
this
.
getXSSFSheet
(
sheet
,
fengju
,
1
,
1
);
//添加表头
final
XSSFRow
row
=
sheet
.
createRow
(
0
);
XSSFCellStyle
cellStyle
=
workbook
.
createCellStyle
();
cellStyle
.
setAlignment
(
HorizontalAlignment
.
CENTER
);
columns
.
forEach
(
val
->
{
XSSFCell
cell
=
row
.
createCell
(
Math
.
max
(
row
.
getLastCellNum
(),
0
));
cell
.
setCellValue
(
val
);
});
HttpServletResponse
response
=
getHttpServletResponse
();
response
.
reset
();
response
.
setCharacterEncoding
(
"UTF-8"
);
response
.
setContentType
(
"application/vnd.ms-excel"
);
response
.
setHeader
(
"Content-Disposition"
,
"attachment;fileName=data.xlsx"
);
os
=
response
.
getOutputStream
();
workbook
.
write
(
os
);
os
.
flush
();
}
catch
(
IOException
e
)
{
log
.
error
(
"快递模板文件出错!"
+
e
.
getMessage
(),
e
);
}
finally
{
IOUtils
.
closeQuite
(
workbook
,
os
);
}
return
ResponseData
.
error
(
"快递模板出错"
);
}
XSSFSheet
getXSSFSheet
(
XSSFSheet
sheet
,
List
<
String
>
datas
,
int
firstcol
,
int
lastcol
)
{
if
(
datas
.
size
()
==
0
)
{
return
sheet
;
}
String
[]
strdata
=
new
String
[
datas
.
size
()];
for
(
int
i
=
0
;
i
<
datas
.
size
();
i
++)
{
strdata
[
i
]
=
datas
.
get
(
i
);
}
XSSFDataValidationHelper
dvHelper
=
new
XSSFDataValidationHelper
(
sheet
);
XSSFDataValidationConstraint
dvConstraint1
=
(
XSSFDataValidationConstraint
)
dvHelper
.
createExplicitListConstraint
(
strdata
);
CellRangeAddressList
addressList
=
new
CellRangeAddressList
(
1
,
20000
,
firstcol
,
lastcol
);
XSSFDataValidation
validation
=
(
XSSFDataValidation
)
dvHelper
.
createValidation
(
dvConstraint1
,
addressList
);
sheet
.
addValidationData
(
validation
);
return
sheet
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment