Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
customer-service
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
QG
customer-service
Commits
946f37ec
Commit
946f37ec
authored
Aug 21, 2020
by
suntao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
查询小曼工单
parent
d6515d4e
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
3 additions
and
616 deletions
+3
-616
WorkOrderRest.java
src/main/java/cn/quantgroup/customer/rest/WorkOrderRest.java
+0
-17
IWorkOrderService.java
...ava/cn/quantgroup/customer/service/IWorkOrderService.java
+0
-3
WorkOrderServiceImpl.java
...uantgroup/customer/service/impl/WorkOrderServiceImpl.java
+1
-48
CsvReader.java
src/main/java/cn/quantgroup/customer/util/poi/CsvReader.java
+0
-72
Reader.java
src/main/java/cn/quantgroup/customer/util/poi/Reader.java
+0
-22
ReaderTest.java
...main/java/cn/quantgroup/customer/util/poi/ReaderTest.java
+0
-61
XlsxReader.java
...main/java/cn/quantgroup/customer/util/poi/XlsxReader.java
+0
-380
WorkOrderTest.java
src/test/xiaoman/WorkOrderTest.java
+2
-13
No files found.
src/main/java/cn/quantgroup/customer/rest/WorkOrderRest.java
View file @
946f37ec
...
...
@@ -3,7 +3,6 @@ package cn.quantgroup.customer.rest;
import
cn.quantgroup.customer.model.workorder.WorkOrderStatus
;
import
cn.quantgroup.customer.rest.vo.JsonResult
;
import
cn.quantgroup.customer.service.IWorkOrderService
;
import
cn.quantgroup.customer.util.poi.ReaderTest
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.exception.ExceptionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -11,7 +10,6 @@ import org.springframework.web.bind.annotation.GetMapping;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.io.IOException
;
/**
* @description: 工单查询
...
...
@@ -39,19 +37,4 @@ public class WorkOrderRest {
}
@GetMapping
(
"upload"
)
public
JsonResult
upload
()
throws
Exception
{
ReaderTest
readerTest
=
new
ReaderTest
();
readerTest
.
read
();
workOrderService
.
importData
(
readerTest
.
getList
());
return
JsonResult
.
buildSuccessResult
(
"success"
,
null
);
}
public
static
void
main
(
String
[]
args
)
throws
IOException
{
}
}
src/main/java/cn/quantgroup/customer/service/IWorkOrderService.java
View file @
946f37ec
...
...
@@ -5,7 +5,6 @@ import cn.quantgroup.customer.model.workorder.WorkOrderVO;
import
cn.quantgroup.customer.rest.vo.JsonResult
;
import
org.springframework.data.domain.Page
;
import
java.util.List
;
/**
* @description:
...
...
@@ -15,7 +14,5 @@ import java.util.List;
public
interface
IWorkOrderService
{
void
importData
(
List
<
WorkOrderVO
>
list
);
JsonResult
<
Page
<
WorkOrderVO
>>
queryWorkOrder
(
Integer
pageNumber
,
Integer
pageSize
,
String
phone
,
WorkOrderStatus
status
);
}
src/main/java/cn/quantgroup/customer/service/impl/WorkOrderServiceImpl.java
View file @
946f37ec
...
...
@@ -3,7 +3,6 @@ package cn.quantgroup.customer.service.impl;
import
cn.quantgroup.customer.entity.WorkOrder
;
import
cn.quantgroup.customer.model.workorder.WorkOrderVO
;
import
cn.quantgroup.customer.model.workorder.WorkOrderStatus
;
import
cn.quantgroup.customer.model.workorder.WorlOrderPriority
;
import
cn.quantgroup.customer.repo.WorkOrderRepo
;
import
cn.quantgroup.customer.rest.vo.JsonResult
;
import
cn.quantgroup.customer.service.IWorkOrderService
;
...
...
@@ -32,57 +31,11 @@ public class WorkOrderServiceImpl implements IWorkOrderService {
@Autowired
private
WorkOrderRepo
workOrderRepo
;
@Override
public
void
importData
(
List
<
WorkOrderVO
>
list
)
{
int
pageSize
=
10000
;
// 总页数
int
pages
=
list
.
size
()
/
pageSize
;
int
mo
=
list
.
size
()
%
pageSize
;
if
(
mo
>
0
)
{
pages
++;
}
for
(
int
currentPage
=
0
;
currentPage
<
pages
;
currentPage
++)
{
List
<
WorkOrder
>
workOrders
=
new
ArrayList
<>();
for
(
int
i
=
currentPage
*
pageSize
;
i
<
Math
.
min
(
list
.
size
(),
(
currentPage
+
1
)
*
pageSize
);
i
++)
{
// 0=> [0,10000)
// 1=> [10000,20000)
final
WorkOrderVO
woe
=
list
.
get
(
i
);
WorkOrder
workOrder
=
new
WorkOrder
();
workOrder
.
setWorkOrderId
(
Long
.
valueOf
(
woe
.
getWorkOrderId
()));
workOrder
.
setUserName
(
woe
.
getUserName
());
workOrder
.
setPhone
(
woe
.
getPhone
());
workOrder
.
setSubject
(
woe
.
getSubject
());
workOrder
.
setFrom
(
woe
.
getFrom
());
workOrder
.
setType1
(
woe
.
getType1
());
workOrder
.
setType2
(
woe
.
getType2
());
workOrder
.
setType3
(
woe
.
getType3
());
workOrder
.
setPriority
(
WorlOrderPriority
.
getWorlOrderPriority
(
woe
.
getPriority
()));
workOrder
.
setStatus
(
WorkOrderStatus
.
getWorkOrderStatus
(
woe
.
getStatus
()));
workOrder
.
setCreateUsername
(
woe
.
getCreateUsername
());
workOrder
.
setOpUsername
(
woe
.
getOpUsername
());
workOrder
.
setDurationTimes
(
Integer
.
valueOf
(
woe
.
getDurationTimes
()));
workOrder
.
setDuration
(
Integer
.
valueOf
(
woe
.
getDuration
()));
workOrder
.
setCreatedAt
(
DateUtil
.
stringToTimestamp
(
woe
.
getCreatedAt
()));
workOrder
.
setOpAt
(
DateUtil
.
stringToTimestamp
(
woe
.
getOpAt
()));
workOrder
.
setUpdatedAt
(
DateUtil
.
getCurrentTimestamp
());
workOrder
.
setRemark
(
woe
.
getRemark
());
workOrders
.
add
(
workOrder
);
}
workOrderRepo
.
save
(
workOrders
);
}
log
.
info
(
"导入完成"
);
}
@Override
public
JsonResult
<
Page
<
WorkOrderVO
>>
queryWorkOrder
(
Integer
pageNumber
,
Integer
pageSize
,
String
phone
,
WorkOrderStatus
status
)
{
Page
<
WorkOrder
>
page
=
workOrderRepo
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
{
List
<
Predicate
>
predicates
=
new
ArrayList
<>();
//
指定渠道号
//
if
(
Objects
.
nonNull
(
status
))
{
predicates
.
add
(
criteriaBuilder
.
equal
(
root
.
get
(
"status"
),
status
.
ordinal
()));
}
...
...
src/main/java/cn/quantgroup/customer/util/poi/CsvReader.java
deleted
100644 → 0
View file @
d6515d4e
package
cn
.
quantgroup
.
customer
.
util
.
poi
;
import
cn.quantgroup.customer.model.workorder.WorkOrderVO
;
import
cn.quantgroup.customer.util.JSONTools
;
import
com.opencsv.CSVReader
;
import
java.io.*
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @description:
* @author:tao
* @create: 2020-08-14 14:17
*/
public
class
CsvReader
{
public
static
void
main
(
String
[]
args
)
throws
IOException
{
try
{
DataInputStream
in
=
new
DataInputStream
(
new
FileInputStream
(
new
File
(
"/Users/simon/Downloads/2.csv"
)));
CSVReader
csvReader
=
new
CSVReader
(
new
InputStreamReader
(
in
,
"UTF-8"
));
String
[]
strs
;
// while ((strs = csvReader.readNext()) != null) {
// System.out.println(Arrays.deepToString(strs));
//}
List
<
WorkOrderVO
>
list
=
new
ArrayList
<>();
WorkOrderVO
workOrderVO
=
null
;
while
((
strs
=
csvReader
.
readNext
())
!=
null
)
{
System
.
out
.
println
(
JSONTools
.
serialize
(
strs
));
// workOrderExcel = new WorkOrderExcel();
// workOrderExcel.setWorkOrderId(strs[0]);
// workOrderExcel.setDurationTimes(strs[1]);
// workOrderExcel.setUserName(strs[2]);
// workOrderExcel.setPhone(strs[3]);
// workOrderExcel.setSubject(strs[4]);
// workOrderExcel.setFrom(strs[5]);
// workOrderExcel.setType1(strs[6]);
// workOrderExcel.setType2(strs[7]);
// workOrderExcel.setType3(strs[8]);
// workOrderExcel.setPriority(strs[9]);
// workOrderExcel.setCreateUsername(strs[10]);
// workOrderExcel.setCreatedAt(strs[11]);
// workOrderExcel.setOpUsername(strs[12]);
// workOrderExcel.setDuration(strs[13]);
// workOrderExcel.setStatus(strs[14]);
// workOrderExcel.setOpAt(strs[15]);
// workOrderExcel.setRemark(strs[16]);
// list.add(workOrderExcel);
}
// System.out.println(JSONTools.serialize(list.get(0)));
// System.out.println(JSONTools.serialize(list.get(1)));
// System.out.println(JSONTools.serialize(list.get(list.size() - 2)));
// System.out.println(JSONTools.serialize(list.get(list.size() - 1)));
csvReader
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
// List<String> list = FileUtils.readLines(new File("/Users/simon/Downloads/2.csv"));
//
// System.out.println(list.get(0));
// System.out.println(list.get(1));
// System.out.println(list.get(2));
// System.out.println(list.get(3));
// System.out.println(list.get(list.size() - 1));
// System.out.println(list.get(list.size() - 2));
}
}
src/main/java/cn/quantgroup/customer/util/poi/Reader.java
deleted
100644 → 0
View file @
d6515d4e
package
cn
.
quantgroup
.
customer
.
util
.
poi
;
import
java.util.List
;
/**
* @description:
* @author:tao
* @create: 2020-08-14 11:37
*/
public
interface
Reader
{
/**
* 数据放回接口
*
* @param filePath 文件路径
* @param sheetName sheet名称
* @param sheetIndex sheet序号
* @param curRow 行号
* @param cellList 一行的所有单元格字段
*/
void
read
(
String
filePath
,
String
sheetName
,
int
sheetIndex
,
int
curRow
,
List
<
String
>
cellList
);
}
src/main/java/cn/quantgroup/customer/util/poi/ReaderTest.java
deleted
100644 → 0
View file @
d6515d4e
package
cn
.
quantgroup
.
customer
.
util
.
poi
;
import
cn.quantgroup.customer.model.workorder.WorkOrderVO
;
import
cn.quantgroup.customer.util.JSONTools
;
import
lombok.Getter
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author y
* @create 2018-01-19 0:13
* @desc
**/
public
class
ReaderTest
implements
Reader
{
private
final
static
String
filePath
=
"/Users/simon/Downloads/1.xlsx"
;
// private final static String filePath = "/Users/simon/Downloads/work_order_created.xlsx";
private
WorkOrderVO
workOrderVO
=
null
;
@Getter
private
List
<
WorkOrderVO
>
list
=
new
ArrayList
<>();
public
void
read
()
throws
Exception
{
long
start
=
System
.
currentTimeMillis
();
XlsxReader
excelXlsxReader
=
new
XlsxReader
(
this
);
int
totalRows
=
excelXlsxReader
.
process
(
filePath
);
System
.
out
.
println
(
"总行数:"
+
totalRows
+
",耗时:"
+
(
System
.
currentTimeMillis
()
-
start
));
System
.
out
.
println
(
JSONTools
.
serialize
(
list
.
get
(
0
)));
System
.
out
.
println
(
JSONTools
.
serialize
(
list
.
get
(
list
.
size
()-
1
)));
}
@Override
public
void
read
(
String
filePath
,
String
sheetName
,
int
sheetIndex
,
int
curRow
,
List
<
String
>
cellList
)
{
workOrderVO
=
new
WorkOrderVO
();
workOrderVO
.
setWorkOrderId
(
cellList
.
get
(
0
));
workOrderVO
.
setDurationTimes
(
cellList
.
get
(
1
));
workOrderVO
.
setUserName
(
cellList
.
get
(
2
));
workOrderVO
.
setPhone
(
cellList
.
get
(
3
));
workOrderVO
.
setSubject
(
cellList
.
get
(
4
));
workOrderVO
.
setFrom
(
cellList
.
get
(
5
));
workOrderVO
.
setType1
(
cellList
.
get
(
6
));
workOrderVO
.
setType2
(
cellList
.
get
(
7
));
workOrderVO
.
setType3
(
cellList
.
get
(
8
));
workOrderVO
.
setPriority
(
cellList
.
get
(
9
));
workOrderVO
.
setCreateUsername
(
cellList
.
get
(
10
));
workOrderVO
.
setCreatedAt
(
cellList
.
get
(
11
));
workOrderVO
.
setOpUsername
(
cellList
.
get
(
12
));
workOrderVO
.
setDuration
(
cellList
.
get
(
13
));
workOrderVO
.
setStatus
(
cellList
.
get
(
14
));
workOrderVO
.
setOpAt
(
cellList
.
get
(
15
));
workOrderVO
.
setRemark
(
cellList
.
get
(
16
));
list
.
add
(
workOrderVO
);
}
}
src/main/java/cn/quantgroup/customer/util/poi/XlsxReader.java
deleted
100644 → 0
View file @
d6515d4e
package
cn
.
quantgroup
.
customer
.
util
.
poi
;
import
org.apache.poi.openxml4j.opc.OPCPackage
;
import
org.apache.poi.ss.usermodel.BuiltinFormats
;
import
org.apache.poi.ss.usermodel.DataFormatter
;
import
org.apache.poi.xssf.eventusermodel.XSSFReader
;
import
org.apache.poi.xssf.model.SharedStringsTable
;
import
org.apache.poi.xssf.model.StylesTable
;
import
org.apache.poi.xssf.usermodel.XSSFCellStyle
;
import
org.apache.poi.xssf.usermodel.XSSFRichTextString
;
import
org.xml.sax.Attributes
;
import
org.xml.sax.InputSource
;
import
org.xml.sax.SAXException
;
import
org.xml.sax.XMLReader
;
import
org.xml.sax.helpers.DefaultHandler
;
import
org.xml.sax.helpers.XMLReaderFactory
;
import
java.io.InputStream
;
import
java.lang.reflect.InvocationTargetException
;
import
java.lang.reflect.Method
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* 用于解决office2007版本大数据量问题
**/
public
class
XlsxReader
extends
DefaultHandler
{
private
Reader
reader
;
public
XlsxReader
(
Reader
reader
)
{
this
.
reader
=
reader
;
}
// 单元格中的数据可能的数据类型
enum
CellDataType
{
BOOL
,
ERROR
,
FORMULA
,
INLINESTR
,
SSTINDEX
,
NUMBER
,
DATE
,
NULL
}
// 共享字符串表
private
SharedStringsTable
sst
;
//上一次的索引值
private
String
lastIndex
;
// 文件的绝对路径
private
String
filePath
=
""
;
// 工作表索引
private
int
sheetIndex
=
0
;
// sheet名
private
String
sheetName
=
""
;
// 总行数
private
int
totalRows
=
0
;
// 一行内cell集合
private
List
<
String
>
cellList
=
new
ArrayList
<
String
>();
// 判断整行是否为空行的标记
private
boolean
flag
=
false
;
// 当前行
private
int
curRow
=
1
;
//当前列
private
int
curCol
=
0
;
// T元素标识
private
boolean
isTElement
;
// 异常信息,如果为空则表示没有异常
private
String
exceptionMessage
;
// 单元格数据类型,默认为字符串类型
private
CellDataType
nextDataType
=
CellDataType
.
SSTINDEX
;
private
final
DataFormatter
formatter
=
new
DataFormatter
();
// 单元格日期格式的索引
private
short
formatIndex
;
// 日期格式字符串
private
String
formatString
;
//定义前一个元素和当前元素的位置,用来计算其中空的单元格数量,如A6和A8等
private
String
preRef
=
null
,
ref
=
null
;
//定义该文档一行最大的单元格数,用来补全一行最后可能缺失的单元格
private
String
maxRef
=
null
;
//在工作簿中共享所有表格的样式表
private
StylesTable
stylesTable
;
/**
* 遍历工作簿中所有的电子表格
* 并缓存在mySheetList中
*
* @param filename
* @throws Exception
*/
public
int
process
(
String
filename
)
throws
Exception
{
filePath
=
filename
;
OPCPackage
pkg
=
OPCPackage
.
open
(
filename
);
XSSFReader
xssfReader
=
new
XSSFReader
(
pkg
);
stylesTable
=
xssfReader
.
getStylesTable
();
SharedStringsTable
sst
=
xssfReader
.
getSharedStringsTable
();
XMLReader
parser
=
XMLReaderFactory
.
createXMLReader
(
"org.apache.xerces.parsers.SAXParser"
);
this
.
sst
=
sst
;
parser
.
setContentHandler
(
this
);
XSSFReader
.
SheetIterator
sheets
=
(
XSSFReader
.
SheetIterator
)
xssfReader
.
getSheetsData
();
//遍历sheet
while
(
sheets
.
hasNext
())
{
//标记初始行为第一行
curRow
=
1
;
sheetIndex
++;
//sheets.next()和sheets.getSheetName()不能换位置,否则sheetName报错
InputStream
sheet
=
sheets
.
next
();
sheetName
=
sheets
.
getSheetName
();
InputSource
sheetSource
=
new
InputSource
(
sheet
);
//解析excel的每条记录,在这个过程中startElement()、characters()、endElement()这三个函数会依次执行
parser
.
parse
(
sheetSource
);
sheet
.
close
();
}
//返回该excel文件的总行数,不包括首列和空行
return
totalRows
;
}
/**
* 第一个执行
*
* @param uri
* @param localName
* @param name
* @param attributes
* @throws SAXException
*/
@Override
public
void
startElement
(
String
uri
,
String
localName
,
String
name
,
Attributes
attributes
)
throws
SAXException
{
//c => 单元格
if
(
"c"
.
equals
(
name
))
{
//前一个单元格的位置
if
(
preRef
==
null
)
{
preRef
=
attributes
.
getValue
(
"r"
);
}
else
{
preRef
=
ref
;
}
//当前单元格的位置
ref
=
attributes
.
getValue
(
"r"
);
//设定单元格类型
this
.
setNextDataType
(
attributes
);
}
//当元素为t时
if
(
"t"
.
equals
(
name
))
{
isTElement
=
true
;
}
else
{
isTElement
=
false
;
}
//置空
lastIndex
=
""
;
}
/**
* 第二个执行
* 得到单元格对应的索引值或是内容值
* 如果单元格类型是字符串、INLINESTR、数字、日期,lastIndex则是索引值
* 如果单元格类型是布尔值、错误、公式,lastIndex则是内容值
*
* @param ch
* @param start
* @param length
* @throws SAXException
*/
@Override
public
void
characters
(
char
[]
ch
,
int
start
,
int
length
)
throws
SAXException
{
lastIndex
+=
new
String
(
ch
,
start
,
length
);
}
/**
* 第三个执行
*
* @param uri
* @param localName
* @param name
* @throws SAXException
*/
@Override
public
void
endElement
(
String
uri
,
String
localName
,
String
name
)
throws
SAXException
{
//t元素也包含字符串
if
(
isTElement
)
{
//这个程序没经过
//将单元格内容加入rowlist中,在这之前先去掉字符串前后的空白符
String
value
=
lastIndex
.
trim
();
cellList
.
add
(
curCol
,
value
);
curCol
++;
isTElement
=
false
;
//如果里面某个单元格含有值,则标识该行不为空行
if
(
value
!=
null
&&
!
""
.
equals
(
value
))
{
flag
=
true
;
}
}
else
if
(
"v"
.
equals
(
name
))
{
//v => 单元格的值,如果单元格是字符串,则v标签的值为该字符串在SST中的索引
String
value
=
this
.
getDataValue
(
lastIndex
.
trim
(),
""
);
//根据索引值获取对应的单元格值
//补全单元格之间的空单元格
if
(!
ref
.
equals
(
preRef
))
{
int
len
=
countNullCell
(
ref
,
preRef
);
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
cellList
.
add
(
curCol
,
""
);
curCol
++;
}
}
cellList
.
add
(
curCol
,
value
);
curCol
++;
//如果里面某个单元格含有值,则标识该行不为空行
if
(
value
!=
null
&&
!
""
.
equals
(
value
))
{
flag
=
true
;
}
}
else
{
//如果标签名称为row,这说明已到行尾,调用optRows()方法
if
(
"row"
.
equals
(
name
))
{
//默认第一行为表头,以该行单元格数目为最大数目
if
(
curRow
==
1
)
{
maxRef
=
ref
;
}
//补全一行尾部可能缺失的单元格
if
(
maxRef
!=
null
)
{
int
len
=
countNullCell
(
maxRef
,
ref
);
for
(
int
i
=
0
;
i
<=
len
;
i
++)
{
cellList
.
add
(
curCol
,
""
);
curCol
++;
}
}
//该行不为空行且该行不是第一行,则发送(第一行为列名,不需要)
if
(
flag
&&
curRow
!=
1
)
{
try
{
reader
.
read
(
filePath
,
sheetName
,
sheetIndex
,
curRow
,
cellList
);
// method.invoke(reader, filePath, sheetName, sheetIndex, curRow, cellList);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
totalRows
++;
}
cellList
.
clear
();
curRow
++;
curCol
=
0
;
preRef
=
null
;
ref
=
null
;
flag
=
false
;
}
}
}
/**
* 处理数据类型
*
* @param attributes
*/
public
void
setNextDataType
(
Attributes
attributes
)
{
//cellType为空,则表示该单元格类型为数字
nextDataType
=
CellDataType
.
NUMBER
;
formatIndex
=
-
1
;
formatString
=
null
;
//单元格类型
String
cellType
=
attributes
.
getValue
(
"t"
);
String
cellStyleStr
=
attributes
.
getValue
(
"s"
);
//获取单元格的位置,如A1,B1
// String columnData = attributes.getValue("r");
if
(
"b"
.
equals
(
cellType
))
{
//处理布尔值
nextDataType
=
CellDataType
.
BOOL
;
}
else
if
(
"e"
.
equals
(
cellType
))
{
//处理错误
nextDataType
=
CellDataType
.
ERROR
;
}
else
if
(
"inlineStr"
.
equals
(
cellType
))
{
nextDataType
=
CellDataType
.
INLINESTR
;
}
else
if
(
"s"
.
equals
(
cellType
))
{
//处理字符串
nextDataType
=
CellDataType
.
SSTINDEX
;
}
else
if
(
"str"
.
equals
(
cellType
))
{
nextDataType
=
CellDataType
.
FORMULA
;
}
if
(
cellStyleStr
!=
null
)
{
//处理日期
int
styleIndex
=
Integer
.
parseInt
(
cellStyleStr
);
XSSFCellStyle
style
=
stylesTable
.
getStyleAt
(
styleIndex
);
formatIndex
=
style
.
getDataFormat
();
formatString
=
style
.
getDataFormatString
();
if
(
formatString
.
contains
(
"m/d/yy"
))
{
nextDataType
=
CellDataType
.
DATE
;
formatString
=
"yyyy-MM-dd hh:mm:ss"
;
}
if
(
formatString
==
null
)
{
nextDataType
=
CellDataType
.
NULL
;
formatString
=
BuiltinFormats
.
getBuiltinFormat
(
formatIndex
);
}
}
}
/**
* 对解析出来的数据进行类型处理
*
* @param value 单元格的值,
* value代表解析:BOOL的为0或1, ERROR的为内容值,FORMULA的为内容值,INLINESTR的为索引值需转换为内容值,
* SSTINDEX的为索引值需转换为内容值, NUMBER为内容值,DATE为内容值
* @param thisStr 一个空字符串
* @return
*/
@SuppressWarnings
(
"deprecation"
)
public
String
getDataValue
(
String
value
,
String
thisStr
)
{
switch
(
nextDataType
)
{
// 这几个的顺序不能随便交换,交换了很可能会导致数据错误
case
BOOL:
//布尔值
char
first
=
value
.
charAt
(
0
);
thisStr
=
first
==
'0'
?
"FALSE"
:
"TRUE"
;
break
;
case
ERROR:
//错误
thisStr
=
"\"ERROR:"
+
value
.
toString
()
+
'"'
;
break
;
case
FORMULA:
//公式
thisStr
=
'"'
+
value
.
toString
()
+
'"'
;
break
;
case
INLINESTR:
XSSFRichTextString
rtsi
=
new
XSSFRichTextString
(
value
.
toString
());
thisStr
=
rtsi
.
toString
();
rtsi
=
null
;
break
;
case
SSTINDEX:
//字符串
String
sstIndex
=
value
.
toString
();
try
{
int
idx
=
Integer
.
parseInt
(
sstIndex
);
XSSFRichTextString
rtss
=
new
XSSFRichTextString
(
sst
.
getEntryAt
(
idx
));
//根据idx索引值获取内容值
thisStr
=
rtss
.
toString
();
rtss
=
null
;
}
catch
(
NumberFormatException
ex
)
{
thisStr
=
value
.
toString
();
}
break
;
case
NUMBER:
//数字
if
(
formatString
!=
null
)
{
thisStr
=
formatter
.
formatRawCellContents
(
Double
.
parseDouble
(
value
),
formatIndex
,
formatString
).
trim
();
}
else
{
thisStr
=
value
;
}
thisStr
=
thisStr
.
replace
(
"_"
,
""
).
trim
();
break
;
case
DATE:
//日期
thisStr
=
formatter
.
formatRawCellContents
(
Double
.
parseDouble
(
value
),
formatIndex
,
formatString
);
// 对日期字符串作特殊处理,去掉T
thisStr
=
thisStr
.
replace
(
"T"
,
" "
);
break
;
default
:
thisStr
=
" "
;
break
;
}
return
thisStr
;
}
public
int
countNullCell
(
String
ref
,
String
preRef
)
{
//excel2007最大行数是1048576,最大列数是16384,最后一列列名是XFD
String
xfd
=
ref
.
replaceAll
(
"\\d+"
,
""
);
String
xfd_1
=
preRef
.
replaceAll
(
"\\d+"
,
""
);
xfd
=
fillChar
(
xfd
,
3
,
'@'
,
true
);
xfd_1
=
fillChar
(
xfd_1
,
3
,
'@'
,
true
);
char
[]
letter
=
xfd
.
toCharArray
();
char
[]
letter_1
=
xfd_1
.
toCharArray
();
int
res
=
(
letter
[
0
]
-
letter_1
[
0
])
*
26
*
26
+
(
letter
[
1
]
-
letter_1
[
1
])
*
26
+
(
letter
[
2
]
-
letter_1
[
2
]);
return
res
-
1
;
}
public
String
fillChar
(
String
str
,
int
len
,
char
let
,
boolean
isPre
)
{
int
len_1
=
str
.
length
();
if
(
len_1
<
len
)
{
if
(
isPre
)
{
for
(
int
i
=
0
;
i
<
(
len
-
len_1
);
i
++)
{
str
=
let
+
str
;
}
}
else
{
for
(
int
i
=
0
;
i
<
(
len
-
len_1
);
i
++)
{
str
=
str
+
let
;
}
}
}
return
str
;
}
/**
* @return the exceptionMessage
*/
public
String
getExceptionMessage
()
{
return
exceptionMessage
;
}
}
src/test/xiaoman/WorkOrderTest.java
View file @
946f37ec
package
xiaoman
;
import
cn.quantgroup.customer.Bootstrap
;
import
cn.quantgroup.customer.model.workorder.WorkOrderStatus
;
import
cn.quantgroup.customer.model.workorder.WorkOrderVO
;
import
cn.quantgroup.customer.rest.vo.JsonResult
;
import
cn.quantgroup.customer.service.IWorkOrderService
;
import
cn.quantgroup.customer.util.JSONTools
;
import
cn.quantgroup.customer.util.poi.ReaderTest
;
import
com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer
;
import
lombok.extern.slf4j.Slf4j
;
import
org.junit.Test
;
...
...
@@ -31,21 +31,10 @@ public class WorkOrderTest {
@Autowired
private
IWorkOrderService
workOrderService
;
/**
* 导入数据
* @throws Exception
*/
@Test
public
void
workOrderTest
()
throws
Exception
{
ReaderTest
readerTest
=
new
ReaderTest
();
readerTest
.
read
();
workOrderService
.
importData
(
readerTest
.
getList
());
}
@Test
public
void
queryPage
()
{
JsonResult
<
Page
<
WorkOrderVO
>>
pageJsonResult
=
workOrderService
.
queryWorkOrder
(
1
,
2
,
null
,
null
);
JsonResult
<
Page
<
WorkOrderVO
>>
pageJsonResult
=
workOrderService
.
queryWorkOrder
(
0
,
10
,
""
,
WorkOrderStatus
.
CREATED
);
System
.
out
.
println
(
JSONTools
.
serialize
(
pageJsonResult
));
}
...
...
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