Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
datacollector
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chenweisong
datacollector
Commits
ea4c0ca6
Commit
ea4c0ca6
authored
Apr 02, 2020
by
chenweisong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新
parent
b9eb7523
Show whitespace changes
Inline
Side-by-side
Showing
46 changed files
with
1392 additions
and
314 deletions
+1392
-314
pom引入.txt
origin/补录系统excel拆分java代码/pom引入.txt
+38
-0
BreakExcelActor.java
...cel拆分java代码/代码/breakexcel/akka/actor/BreakExcelActor.java
+105
-0
ExportExcelActor.java
...el拆分java代码/代码/breakexcel/akka/actor/ExportExcelActor.java
+70
-0
BreakExcelMsg.java
...cel拆分java代码/代码/breakexcel/akka/message/BreakExcelMsg.java
+62
-0
ConfirmMsg.java
...统excel拆分java代码/代码/breakexcel/akka/message/ConfirmMsg.java
+34
-0
ExportExcelMsg.java
...el拆分java代码/代码/breakexcel/akka/message/ExportExcelMsg.java
+86
-0
BankData.java
origin/补录系统excel拆分java代码/代码/breakexcel/entity/BankData.java
+184
-0
BreakExcelService.java
...xcel拆分java代码/代码/breakexcel/service/BreakExcelService.java
+26
-0
ExcelModelColumnUtils.java
...cel拆分java代码/代码/breakexcel/util/ExcelModelColumnUtils.java
+26
-0
功能描述.doc
origin/补录系统excel拆分java代码/功能描述.doc
+0
-0
excel拆分导入文件.xlsx
origin/补录系统excel拆分java代码/数据和模板文件/excel拆分导入文件.xlsx
+0
-0
excel拆分导出模板.xlsx
origin/补录系统excel拆分java代码/数据和模板文件/excel拆分导出模板.xlsx
+0
-0
pom.xml
pom.xml
+34
-0
BreakExcelActor.java
...n/java/com/keymobile/rest/akka/actor/BreakExcelActor.java
+103
-0
ExportExcelActor.java
.../java/com/keymobile/rest/akka/actor/ExportExcelActor.java
+69
-0
BreakExcelMsg.java
...n/java/com/keymobile/rest/akka/message/BreakExcelMsg.java
+61
-0
ConfirmMsg.java
...main/java/com/keymobile/rest/akka/message/ConfirmMsg.java
+33
-0
ExportExcelMsg.java
.../java/com/keymobile/rest/akka/message/ExportExcelMsg.java
+86
-0
ExcelModelColumnUtils.java
.../com/keymobile/rest/akka/utils/ExcelModelColumnUtils.java
+25
-0
BeanUti.java
src/main/java/com/keymobile/rest/common/utils/BeanUti.java
+2
-17
ExcelController.java
...n/java/com/keymobile/rest/controller/ExcelController.java
+45
-17
TaskController.java
...in/java/com/keymobile/rest/controller/TaskController.java
+11
-17
TaskConstant.java
.../com/keymobile/rest/controller/constant/TaskConstant.java
+4
-4
MissionDao.java
src/main/java/com/keymobile/rest/dao/MissionDao.java
+0
-16
ProcessDao.java
src/main/java/com/keymobile/rest/dao/ProcessDao.java
+0
-2
TemplateDao.java
src/main/java/com/keymobile/rest/dao/TemplateDao.java
+0
-3
UserDao.java
src/main/java/com/keymobile/rest/dao/UserDao.java
+0
-14
UserTemplateMapperDao.java
...in/java/com/keymobile/rest/dao/UserTemplateMapperDao.java
+0
-3
TaskForm.java
src/main/java/com/keymobile/rest/dto/TaskForm.java
+0
-4
Activity.java
src/main/java/com/keymobile/rest/model/Activity.java
+8
-2
BankData.java
src/main/java/com/keymobile/rest/model/BankData.java
+183
-0
Template.java
src/main/java/com/keymobile/rest/model/Template.java
+0
-6
User.java
src/main/java/com/keymobile/rest/model/User.java
+0
-31
BreakExcelService.java
...in/java/com/keymobile/rest/service/BreakExcelService.java
+25
-0
DataInfoService.java
...main/java/com/keymobile/rest/service/DataInfoService.java
+2
-2
GroupDataStandardServiceImpl.java
.../keymobile/rest/service/GroupDataStandardServiceImpl.java
+0
-50
MissionService.java
src/main/java/com/keymobile/rest/service/MissionService.java
+0
-53
TemplateService.java
...main/java/com/keymobile/rest/service/TemplateService.java
+2
-14
UserService.java
src/main/java/com/keymobile/rest/service/UserService.java
+0
-24
UserTemplateMapperService.java
...com/keymobile/rest/service/UserTemplateMapperService.java
+0
-4
Mission.java
src/main/java/com/keymobile/rest/vo/Mission.java
+1
-1
SimpleTask.java
src/main/java/com/keymobile/rest/vo/SimpleTask.java
+3
-3
SimpleTemplate.java
src/main/java/com/keymobile/rest/vo/SimpleTemplate.java
+2
-2
MoreSubProcessStandard.bpmn
src/main/resources/MoreSubProcessStandard.bpmn
+6
-6
application-test.yml
src/main/resources/application-test.yml
+5
-5
ProcessTest.java
src/test/java/com/keymobile/ProcessTest.java
+51
-14
No files found.
origin/补录系统excel拆分java代码/pom引入.txt
0 → 100644
View file @
ea4c0ca6
<properties>
<properties>
<easypoi.version>4.1.3</easypoi.version>
<akka.version>2.6.0-M4</akka.version>
</properties>
<!-- easypoi -->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>${easypoi.version}</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>${easypoi.version}</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>${easypoi.version}</version>
</dependency>
<!-- easypoi -->
<!-- akka -->
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-actor_2.12</artifactId>
<version>${akka.version}</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-testkit_2.12</artifactId>
<version>${akka.version}</version>
<scope>test</scope>
</dependency>
\ No newline at end of file
origin/补录系统excel拆分java代码/代码/breakexcel/akka/actor/BreakExcelActor.java
0 → 100644
View file @
ea4c0ca6
package
com
.
keymobile
.
tagmanager
.
breakexcel
.
akka
.
actor
;
package
com
.
keymobile
.
tagmanager
.
breakexcel
.
akka
.
actor
;
import
java.lang.reflect.Method
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.CopyOnWriteArrayList
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.web.multipart.MultipartFile
;
import
com.keymobile.tagmanager.breakexcel.akka.message.BreakExcelMsg
;
import
com.keymobile.tagmanager.breakexcel.akka.message.ConfirmMsg
;
import
com.keymobile.tagmanager.breakexcel.akka.message.ExportExcelMsg
;
import
com.keymobile.tagmanager.breakexcel.entity.BankData
;
import
com.keymobile.tagmanager.breakexcel.util.ExcelModelColumnUtils
;
import
akka.actor.AbstractActor
;
import
akka.actor.ActorRef
;
import
akka.actor.Props
;
import
cn.afterturn.easypoi.excel.ExcelImportUtil
;
import
cn.afterturn.easypoi.excel.entity.ImportParams
;
import
cn.afterturn.easypoi.excel.entity.result.ExcelImportResult
;
public
class
BreakExcelActor
extends
AbstractActor
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
BreakExcelActor
.
class
);
private
int
numberOfConfirm
=
0
;
//定义返回确认消息的子actor
//定义线程安全的收集反馈确认消息list
private
List
<
Integer
>
confirmList
=
new
CopyOnWriteArrayList
<
Integer
>();
//定义存储导入的消息
private
String
confirmMessage
=
""
;
private
int
excelNum
=
0
;
@Override
public
Receive
createReceive
()
{
return
receiveBuilder
()
.
match
(
BreakExcelMsg
.
class
,
breakExcelMsg
->
{
Map
<
String
,
List
<
BankData
>>
breakResultMap
=
new
HashMap
<>();
MultipartFile
file
=
breakExcelMsg
.
getFile
();
String
breakColumn
=
breakExcelMsg
.
getBreakColumn
();
String
exportPath
=
breakExcelMsg
.
getExportPath
();
String
modelPath
=
breakExcelMsg
.
getModelPath
();
ImportParams
params
=
new
ImportParams
();
params
.
setTitleRows
(
1
);
params
.
setHeadRows
(
1
);
ExcelImportResult
<
BankData
>
excelImportResult
=
ExcelImportUtil
.
importExcelMore
(
file
.
getInputStream
(),
BankData
.
class
,
params
);
List
<
BankData
>
bankDataList
=
excelImportResult
.
getList
();
logger
.
info
(
"num:"
+
bankDataList
.
size
());
String
breakColumnEn
=
ExcelModelColumnUtils
.
getBreakColumn
(
breakColumn
);
if
(
StringUtils
.
isBlank
(
breakColumnEn
))
{
logger
.
info
(
"excel not exist the break column:"
+
breakColumnEn
);
}
else
{
for
(
BankData
bd:
bankDataList
)
{
Method
m
=
bd
.
getClass
().
getMethod
(
"get"
+
breakColumnEn
);
if
(
breakResultMap
.
get
(
m
.
invoke
(
bd
)+
""
)!=
null
)
{
breakResultMap
.
get
(
m
.
invoke
(
bd
)+
""
).
add
(
bd
);
}
else
{
List
<
BankData
>
bankData
=
new
ArrayList
<>();
bankData
.
add
(
bd
);
breakResultMap
.
put
(
m
.
invoke
(
bd
)+
""
,
bankData
);
}
}
}
excelNum
=
breakResultMap
.
size
();
int
index
=
0
;
String
fileName
=
file
.
getOriginalFilename
().
substring
(
0
,
file
.
getOriginalFilename
().
indexOf
(
".xlsx"
));
for
(
Map
.
Entry
<
String
,
List
<
BankData
>>
entry
:
breakResultMap
.
entrySet
())
{
ExportExcelMsg
exportExcelMsg
=
new
ExportExcelMsg
(
entry
.
getValue
(),
exportPath
,
fileName
,
breakColumn
,
modelPath
,
index
++);
ActorRef
exportExcelActor
=
this
.
getContext
().
actorOf
(
Props
.
create
(
ExportExcelActor
.
class
,()->
new
ExportExcelActor
()));
exportExcelActor
.
tell
(
exportExcelMsg
,
getSelf
());
}
})
.
match
(
ConfirmMsg
.
class
,
confirmMsg
->
{
//将确认消息状态值加入确认消息list中
confirmList
.
add
(
confirmMsg
.
getIsFinish
());
confirmMessage
+=
confirmMsg
.
getConfirmMessage
();
if
(++
numberOfConfirm
>=
excelNum
)
{
//导入全部返回
//判断确认消息list是否包含状态值为0的未完成消息
if
(
confirmList
.
contains
(
0
))
{
logger
.
info
(
"excel拆分存在错误"
);
}
else
{
logger
.
info
(
"excel拆分完成"
);
}
logger
.
info
(
confirmMessage
);
}
})
.
build
();
}
}
origin/补录系统excel拆分java代码/代码/breakexcel/akka/actor/ExportExcelActor.java
0 → 100644
View file @
ea4c0ca6
package
com
.
keymobile
.
tagmanager
.
breakexcel
.
akka
.
actor
;
package
com
.
keymobile
.
tagmanager
.
breakexcel
.
akka
.
actor
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
org.apache.commons.lang3.time.DateFormatUtils
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
com.keymobile.tagmanager.breakexcel.akka.message.ConfirmMsg
;
import
com.keymobile.tagmanager.breakexcel.akka.message.ExportExcelMsg
;
import
com.keymobile.tagmanager.breakexcel.entity.BankData
;
import
akka.actor.AbstractActor
;
import
cn.afterturn.easypoi.excel.ExcelExportUtil
;
import
cn.afterturn.easypoi.excel.entity.TemplateExportParams
;
public
class
ExportExcelActor
extends
AbstractActor
{
@Override
public
Receive
createReceive
()
{
return
receiveBuilder
()
.
match
(
ExportExcelMsg
.
class
,
exportExcelMsg
->
{
List
<
BankData
>
bankDataList
=
exportExcelMsg
.
getBankData
();
String
exportPath
=
exportExcelMsg
.
getExportPath
();
String
fileName
=
exportExcelMsg
.
getFileName
();
String
breakColumn
=
exportExcelMsg
.
getBreakColumn
();
String
modelPath
=
exportExcelMsg
.
getModelPath
();
int
index
=
exportExcelMsg
.
getIndex
();
FileOutputStream
fileOutputStream
=
null
;
try
{
TemplateExportParams
params
=
new
TemplateExportParams
(
modelPath
);
Map
<
String
,
Object
>
map
=
new
HashMap
<>()
;
List
<
BankData
>
list
=
new
ArrayList
<>();
for
(
BankData
bd
:
bankDataList
)
{
BankData
newBd
=
new
BankData
(
bd
.
getMonth
()==
null
?
""
:
DateFormatUtils
.
format
(
bd
.
getMonth
(),
"yyyy/MM/dd"
),
bd
.
getUniqueKey
(),
bd
.
getOneSubBank
(),
bd
.
getOneSubBankName
(),
bd
.
getBranches
(),
bd
.
getCustomerNum
(),
bd
.
getCustomerName
(),
bd
.
getUpdateCustomerNum
(),
bd
.
getUpdateBranches
(),
bd
.
getUpdateCustomerName
());
list
.
add
(
newBd
);
}
map
.
put
(
"list"
,
list
)
;
Workbook
workbook
=
ExcelExportUtil
.
exportExcel
(
params
,
map
);
fileName
=
fileName
+
"-"
+
breakColumn
+
"_"
+
index
+
".xlsx"
;
File
pathFile
=
new
File
(
exportPath
);
if
(!
pathFile
.
exists
())
{
pathFile
.
mkdirs
();
}
fileOutputStream
=
new
FileOutputStream
(
exportPath
+
"/"
+
fileName
);
workbook
.
write
(
fileOutputStream
);
getSender
().
tell
(
new
ConfirmMsg
(
1
,
fileName
+
":导出完成"
),
getSelf
());
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
getSender
().
tell
(
new
ConfirmMsg
(
0
,
fileName
+
":导出异常"
),
getSelf
());
}
finally
{
if
(
fileOutputStream
!=
null
)
{
fileOutputStream
.
close
();
}
}
})
.
build
();
}
}
origin/补录系统excel拆分java代码/代码/breakexcel/akka/message/BreakExcelMsg.java
0 → 100644
View file @
ea4c0ca6
package
com
.
keymobile
.
tagmanager
.
breakexcel
.
akka
.
message
;
package
com
.
keymobile
.
tagmanager
.
breakexcel
.
akka
.
message
;
import
java.io.Serializable
;
import
org.springframework.web.multipart.MultipartFile
;
public
class
BreakExcelMsg
implements
Serializable
{
/**
*
*/
private
static
final
long
serialVersionUID
=
1L
;
private
MultipartFile
file
;
private
String
breakColumn
;
private
String
exportPath
;
private
String
modelPath
;
public
BreakExcelMsg
(
MultipartFile
file
,
String
breakColumn
,
String
exportPath
,
String
modelPath
)
{
this
.
file
=
file
;
this
.
breakColumn
=
breakColumn
;
this
.
exportPath
=
exportPath
;
this
.
setModelPath
(
modelPath
);
}
public
MultipartFile
getFile
()
{
return
file
;
}
public
void
setFile
(
MultipartFile
file
)
{
this
.
file
=
file
;
}
public
String
getBreakColumn
()
{
return
breakColumn
;
}
public
void
setBreakColumn
(
String
breakColumn
)
{
this
.
breakColumn
=
breakColumn
;
}
public
String
getExportPath
()
{
return
exportPath
;
}
public
void
setExportPath
(
String
exportPath
)
{
this
.
exportPath
=
exportPath
;
}
public
String
getModelPath
()
{
return
modelPath
;
}
public
void
setModelPath
(
String
modelPath
)
{
this
.
modelPath
=
modelPath
;
}
}
\ No newline at end of file
origin/补录系统excel拆分java代码/代码/breakexcel/akka/message/ConfirmMsg.java
0 → 100644
View file @
ea4c0ca6
package
com
.
keymobile
.
tagmanager
.
breakexcel
.
akka
.
message
;
package
com
.
keymobile
.
tagmanager
.
breakexcel
.
akka
.
message
;
import
java.io.Serializable
;
public
class
ConfirmMsg
implements
Serializable
{
/**
*
*/
private
static
final
long
serialVersionUID
=
1L
;
//是否完成标识:1.完成 0.未完成
private
Integer
isFinish
;
//日志报告
private
String
confirmMessage
;
public
ConfirmMsg
(
Integer
isFinish
,
String
confirmMessage
)
{
this
.
isFinish
=
isFinish
;
this
.
confirmMessage
=
confirmMessage
;
}
public
Integer
getIsFinish
()
{
return
isFinish
;
}
public
void
setIsFinish
(
Integer
isFinish
)
{
this
.
isFinish
=
isFinish
;
}
public
String
getConfirmMessage
()
{
return
confirmMessage
;
}
public
void
setConfirmMessage
(
String
confirmMessage
)
{
this
.
confirmMessage
=
confirmMessage
;
}
}
origin/补录系统excel拆分java代码/代码/breakexcel/akka/message/ExportExcelMsg.java
0 → 100644
View file @
ea4c0ca6
package
com
.
keymobile
.
tagmanager
.
breakexcel
.
akka
.
message
;
package
com
.
keymobile
.
tagmanager
.
breakexcel
.
akka
.
message
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.List
;
import
com.keymobile.tagmanager.breakexcel.entity.BankData
;
public
class
ExportExcelMsg
implements
Serializable
{
/**
*
*/
private
static
final
long
serialVersionUID
=
1L
;
private
List
<
BankData
>
bankData
=
new
ArrayList
<>();
private
String
exportPath
;
private
String
fileName
;
private
String
breakColumn
;
private
String
modelPath
;
private
int
index
;
public
ExportExcelMsg
(
List
<
BankData
>
bankData
,
String
exportPath
,
String
fileName
,
String
breakColumn
,
String
modelPath
,
int
index
)
{
this
.
bankData
.
addAll
(
bankData
);
this
.
exportPath
=
exportPath
;
this
.
fileName
=
fileName
;
this
.
breakColumn
=
breakColumn
;
this
.
setModelPath
(
modelPath
);
this
.
index
=
index
;
}
public
List
<
BankData
>
getBankData
(){
return
bankData
;
}
public
void
setBankData
(
List
<
BankData
>
bankData
)
{
this
.
bankData
.
addAll
(
bankData
);
}
public
String
getExportPath
()
{
return
exportPath
;
}
public
void
setExportPath
(
String
exportPath
)
{
this
.
exportPath
=
exportPath
;
}
public
String
getFileName
()
{
return
fileName
;
}
public
void
setFileName
(
String
fileName
)
{
this
.
fileName
=
fileName
;
}
public
String
getBreakColumn
()
{
return
breakColumn
;
}
public
void
setBreakColumn
(
String
breakColumn
)
{
this
.
breakColumn
=
breakColumn
;
}
public
int
getIndex
()
{
return
index
;
}
public
void
setIndex
(
int
index
)
{
this
.
index
=
index
;
}
public
String
getModelPath
()
{
return
modelPath
;
}
public
void
setModelPath
(
String
modelPath
)
{
this
.
modelPath
=
modelPath
;
}
}
origin/补录系统excel拆分java代码/代码/breakexcel/entity/BankData.java
0 → 100644
View file @
ea4c0ca6
package
com
.
keymobile
.
tagmanager
.
breakexcel
.
entity
;
package
com
.
keymobile
.
tagmanager
.
breakexcel
.
entity
;
import
java.io.Serializable
;
import
java.util.Date
;
import
cn.afterturn.easypoi.excel.annotation.Excel
;
import
cn.afterturn.easypoi.excel.annotation.ExcelTarget
;
import
cn.afterturn.easypoi.handler.inter.IExcelDataModel
;
import
cn.afterturn.easypoi.handler.inter.IExcelModel
;
@ExcelTarget
(
"BankData"
)
public
class
BankData
implements
Serializable
,
IExcelModel
,
IExcelDataModel
{
/**
*
*/
private
static
final
long
serialVersionUID
=
1L
;
@Excel
(
name
=
"月份"
,
format
=
"yyyy-MM-dd"
,
orderNum
=
"0"
,
width
=
30
)
private
Date
month
;
//月份
@Excel
(
name
=
"唯一键"
,
orderNum
=
"1"
,
width
=
30
)
private
String
uniqueKey
;
//唯一键
@Excel
(
name
=
"一级分行"
,
orderNum
=
"2"
,
width
=
30
)
private
String
oneSubBank
;
//一级分行
@Excel
(
name
=
"一级分行名称"
,
orderNum
=
"3"
,
width
=
30
)
private
String
oneSubBankName
;
//一级分行名称
@Excel
(
name
=
"网点"
,
orderNum
=
"4"
,
width
=
30
)
private
String
branches
;
//网点
@Excel
(
name
=
"客户号"
,
orderNum
=
"5"
,
width
=
30
)
private
String
customerNum
;
//客户号
@Excel
(
name
=
"客户名称"
,
orderNum
=
"6"
,
width
=
30
)
private
String
customerName
;
//客户名称
@Excel
(
name
=
"修正后的客户号"
,
orderNum
=
"7"
,
width
=
30
)
private
String
updateCustomerNum
;
//修正后的客户号
@Excel
(
name
=
"修改后的客户开户网点"
,
orderNum
=
"8"
,
width
=
30
)
private
String
updateBranches
;
//修改后的客户开户网点
@Excel
(
name
=
"修正后的客户名称"
,
orderNum
=
"9"
,
width
=
30
)
private
String
updateCustomerName
;
//修正后的客户名称
private
String
monthString
;
public
BankData
()
{
super
();
}
public
BankData
(
String
monthString
,
String
uniqueKey
,
String
oneSubBank
,
String
oneSubBankName
,
String
branches
,
String
customerNum
,
String
customerName
,
String
updateCustomerNum
,
String
updateBranches
,
String
updateCustomerName
)
{
this
.
monthString
=
monthString
;
this
.
uniqueKey
=
uniqueKey
;
this
.
oneSubBank
=
oneSubBank
;
this
.
oneSubBankName
=
oneSubBankName
;
this
.
branches
=
branches
;
this
.
customerNum
=
customerNum
;
this
.
customerName
=
customerName
;
this
.
updateCustomerNum
=
updateCustomerNum
;
this
.
updateBranches
=
updateBranches
;
this
.
updateCustomerName
=
updateCustomerName
;
}
@Override
public
String
toString
()
{
return
"BankData [month="
+
month
+
", uniqueKey="
+
uniqueKey
+
", oneSubBank="
+
oneSubBank
+
", oneSubBankName="
+
oneSubBankName
+
", branches="
+
branches
+
", customerNum="
+
customerNum
+
", customerName="
+
customerName
+
", updateCustomerNum="
+
updateCustomerNum
+
", updateBranches="
+
updateBranches
+
", updateCustomerName="
+
updateCustomerName
+
"]"
;
}
public
Date
getMonth
()
{
return
month
;
}
public
void
setMonth
(
Date
month
)
{
this
.
month
=
month
;
}
public
String
getUniqueKey
()
{
return
uniqueKey
;
}
public
void
setUniqueKey
(
String
uniqueKey
)
{
this
.
uniqueKey
=
uniqueKey
;
}
public
String
getOneSubBank
()
{
return
oneSubBank
;
}
public
void
setOneSubBank
(
String
oneSubBank
)
{
this
.
oneSubBank
=
oneSubBank
;
}
public
String
getOneSubBankName
()
{
return
oneSubBankName
;
}
public
void
setOneSubBankName
(
String
oneSubBankName
)
{
this
.
oneSubBankName
=
oneSubBankName
;
}
public
String
getBranches
()
{
return
branches
;
}
public
void
setBranches
(
String
branches
)
{
this
.
branches
=
branches
;
}
public
String
getCustomerNum
()
{
return
customerNum
;
}
public
void
setCustomerNum
(
String
customerNum
)
{
this
.
customerNum
=
customerNum
;
}
public
String
getCustomerName
()
{
return
customerName
;
}
public
void
setCustomerName
(
String
customerName
)
{
this
.
customerName
=
customerName
;
}
public
String
getUpdateCustomerNum
()
{
return
updateCustomerNum
;
}
public
void
setUpdateCustomerNum
(
String
updateCustomerNum
)
{
this
.
updateCustomerNum
=
updateCustomerNum
;
}
public
String
getUpdateBranches
()
{
return
updateBranches
;
}
public
void
setUpdateBranches
(
String
updateBranches
)
{
this
.
updateBranches
=
updateBranches
;
}
public
String
getUpdateCustomerName
()
{
return
updateCustomerName
;
}
public
void
setUpdateCustomerName
(
String
updateCustomerName
)
{
this
.
updateCustomerName
=
updateCustomerName
;
}
@org
.
springframework
.
data
.
annotation
.
Transient
private
String
errMsg
;
@org
.
springframework
.
data
.
annotation
.
Transient
private
int
excelRowNum
;
@Override
public
String
getErrorMsg
()
{
return
errMsg
;
}
@Override
public
void
setErrorMsg
(
String
errorMsg
)
{
this
.
errMsg
=
errorMsg
;
}
@Override
public
Integer
getRowNum
()
{
return
excelRowNum
;
}
@Override
public
void
setRowNum
(
Integer
rowNum
)
{
this
.
excelRowNum
=
rowNum
;
}
public
String
getMonthString
()
{
return
monthString
;
}
public
void
setMonthString
(
String
monthString
)
{
this
.
monthString
=
monthString
;
}
}
origin/补录系统excel拆分java代码/代码/breakexcel/service/BreakExcelService.java
0 → 100644
View file @
ea4c0ca6
package
com
.
keymobile
.
tagmanager
.
breakexcel
.
service
;
package
com
.
keymobile
.
tagmanager
.
breakexcel
.
service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.multipart.MultipartFile
;
import
com.keymobile.tagmanager.breakexcel.akka.actor.BreakExcelActor
;
import
com.keymobile.tagmanager.breakexcel.akka.message.BreakExcelMsg
;
import
akka.actor.ActorRef
;
import
akka.actor.ActorSystem
;
import
akka.actor.Props
;
@Service
public
class
BreakExcelService
{
public
String
breakExcel
(
MultipartFile
file
,
String
breakColumn
,
String
exportPath
,
String
modelPath
)
throws
Exception
{
final
ActorSystem
system
=
ActorSystem
.
create
(
"ExcelBreakAkka"
);
BreakExcelMsg
breakExcelMsg
=
new
BreakExcelMsg
(
file
,
breakColumn
,
exportPath
,
modelPath
);
ActorRef
breakExcelActor
=
system
.
actorOf
(
Props
.
create
(
BreakExcelActor
.
class
,
()->
new
BreakExcelActor
()));
breakExcelActor
.
tell
(
breakExcelMsg
,
ActorRef
.
noSender
());
return
"breaking the excel......"
;
}
}
origin/补录系统excel拆分java代码/代码/breakexcel/util/ExcelModelColumnUtils.java
0 → 100644
View file @
ea4c0ca6
package
com
.
keymobile
.
tagmanager
.
breakexcel
.
util
;
package
com
.
keymobile
.
tagmanager
.
breakexcel
.
util
;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
ExcelModelColumnUtils
{
public
static
Map
<
String
,
String
>
modelColumnMap
=
new
HashMap
<>();
static
{
modelColumnMap
.
put
(
"月份"
,
"Month"
);
modelColumnMap
.
put
(
"唯一键"
,
"UniqueKey"
);
modelColumnMap
.
put
(
"一级分行"
,
"OneSubBank"
);
modelColumnMap
.
put
(
"一级分行名称"
,
"OneSubBankName"
);
modelColumnMap
.
put
(
"网点"
,
"Branches"
);
modelColumnMap
.
put
(
"客户号"
,
"CustomerNum"
);
modelColumnMap
.
put
(
"客户名称"
,
"CustomerName"
);
modelColumnMap
.
put
(
"修正后的客户号"
,
"UpdateCustomerNum"
);
modelColumnMap
.
put
(
"修改后的客户开户网点"
,
"UpdateBranches"
);
modelColumnMap
.
put
(
"修正后的客户名称"
,
"UpdateCustomerName"
);
}
public
static
String
getBreakColumn
(
String
cnName
)
{
return
modelColumnMap
.
get
(
cnName
);
}
}
origin/补录系统excel拆分java代码/功能描述.doc
0 → 100644
View file @
ea4c0ca6
File added
origin/补录系统excel拆分java代码/数据和模板文件/excel拆分导入文件.xlsx
0 → 100644
View file @
ea4c0ca6
File added
origin/补录系统excel拆分java代码/数据和模板文件/excel拆分导出模板.xlsx
0 → 100644
View file @
ea4c0ca6
File added
pom.xml
View file @
ea4c0ca6
...
...
@@ -21,6 +21,8 @@
<java.version>
1.8
</java.version>
<spring-cloud.version>
Finchley.RELEASE
</spring-cloud.version>
<activiti.version>
5.22.0
</activiti.version>
<easypoi.version>
4.1.3
</easypoi.version>
<akka.version>
2.6.0-M4
</akka.version>
</properties>
<dependencies>
...
...
@@ -110,6 +112,38 @@
<artifactId>
mysql-connector-java
</artifactId>
<!-- <version>8.0.15</version> -->
</dependency>
<!-- 引入easypoi -->
<dependency>
<groupId>
cn.afterturn
</groupId>
<artifactId>
easypoi-base
</artifactId>
<version>
${easypoi.version}
</version>
</dependency>
<dependency>
<groupId>
cn.afterturn
</groupId>
<artifactId>
easypoi-web
</artifactId>
<version>
${easypoi.version}
</version>
</dependency>
<dependency>
<groupId>
cn.afterturn
</groupId>
<artifactId>
easypoi-annotation
</artifactId>
<version>
${easypoi.version}
</version>
</dependency>
<!-- 引入easypoi -->
<!-- akka -->
<dependency>
<groupId>
com.typesafe.akka
</groupId>
<artifactId>
akka-actor_2.12
</artifactId>
<version>
${akka.version}
</version>
</dependency>
<dependency>
<groupId>
com.typesafe.akka
</groupId>
<artifactId>
akka-testkit_2.12
</artifactId>
<version>
${akka.version}
</version>
<scope>
test
</scope>
</dependency>
<!-- activiti start -->
<dependency>
<groupId>
org.activiti
</groupId>
...
...
src/main/java/com/keymobile/rest/akka/actor/BreakExcelActor.java
0 → 100644
View file @
ea4c0ca6
package
com
.
keymobile
.
rest
.
akka
.
actor
;
import
java.lang.reflect.Method
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.CopyOnWriteArrayList
;
import
com.keymobile.rest.akka.message.BreakExcelMsg
;
import
com.keymobile.rest.akka.message.ConfirmMsg
;
import
com.keymobile.rest.akka.message.ExportExcelMsg
;
import
com.keymobile.rest.akka.utils.ExcelModelColumnUtils
;
import
com.keymobile.rest.model.BankData
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.web.multipart.MultipartFile
;
import
akka.actor.AbstractActor
;
import
akka.actor.ActorRef
;
import
akka.actor.Props
;
import
cn.afterturn.easypoi.excel.ExcelImportUtil
;
import
cn.afterturn.easypoi.excel.entity.ImportParams
;
import
cn.afterturn.easypoi.excel.entity.result.ExcelImportResult
;
public
class
BreakExcelActor
extends
AbstractActor
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
BreakExcelActor
.
class
);
private
int
numberOfConfirm
=
0
;
//定义返回确认消息的子actor
//定义线程安全的收集反馈确认消息list
private
List
<
Integer
>
confirmList
=
new
CopyOnWriteArrayList
<
Integer
>();
//定义存储导入的消息
private
String
confirmMessage
=
""
;
private
int
excelNum
=
0
;
@Override
public
Receive
createReceive
()
{
return
receiveBuilder
()
.
match
(
BreakExcelMsg
.
class
,
breakExcelMsg
->
{
Map
<
String
,
List
<
BankData
>>
breakResultMap
=
new
HashMap
<>();
MultipartFile
file
=
breakExcelMsg
.
getFile
();
String
breakColumn
=
breakExcelMsg
.
getBreakColumn
();
String
exportPath
=
breakExcelMsg
.
getExportPath
();
String
modelPath
=
breakExcelMsg
.
getModelPath
();
ImportParams
params
=
new
ImportParams
();
params
.
setTitleRows
(
1
);
params
.
setHeadRows
(
1
);
ExcelImportResult
<
BankData
>
excelImportResult
=
ExcelImportUtil
.
importExcelMore
(
file
.
getInputStream
(),
BankData
.
class
,
params
);
List
<
BankData
>
bankDataList
=
excelImportResult
.
getList
();
logger
.
info
(
"num:"
+
bankDataList
.
size
());
String
breakColumnEn
=
ExcelModelColumnUtils
.
getBreakColumn
(
breakColumn
);
if
(
StringUtils
.
isBlank
(
breakColumnEn
))
{
logger
.
info
(
"excel not exist the break column:"
+
breakColumnEn
);
}
else
{
for
(
BankData
bd
:
bankDataList
)
{
Method
m
=
bd
.
getClass
().
getMethod
(
"get"
+
breakColumnEn
);
if
(
breakResultMap
.
get
(
m
.
invoke
(
bd
)
+
""
)
!=
null
)
{
breakResultMap
.
get
(
m
.
invoke
(
bd
)
+
""
).
add
(
bd
);
}
else
{
List
<
BankData
>
bankData
=
new
ArrayList
<>();
bankData
.
add
(
bd
);
breakResultMap
.
put
(
m
.
invoke
(
bd
)
+
""
,
bankData
);
}
}
}
excelNum
=
breakResultMap
.
size
();
int
index
=
0
;
String
fileName
=
file
.
getOriginalFilename
().
substring
(
0
,
file
.
getOriginalFilename
().
indexOf
(
".xlsx"
));
for
(
Map
.
Entry
<
String
,
List
<
BankData
>>
entry
:
breakResultMap
.
entrySet
())
{
ExportExcelMsg
exportExcelMsg
=
new
ExportExcelMsg
(
entry
.
getValue
(),
exportPath
,
fileName
,
breakColumn
,
modelPath
,
index
++);
ActorRef
exportExcelActor
=
this
.
getContext
().
actorOf
(
Props
.
create
(
ExportExcelActor
.
class
,
()
->
new
ExportExcelActor
()));
exportExcelActor
.
tell
(
exportExcelMsg
,
getSelf
());
}
})
.
match
(
ConfirmMsg
.
class
,
confirmMsg
->
{
//将确认消息状态值加入确认消息list中
confirmList
.
add
(
confirmMsg
.
getIsFinish
());
confirmMessage
+=
confirmMsg
.
getConfirmMessage
();
if
(++
numberOfConfirm
>=
excelNum
)
{
//导入全部返回
//判断确认消息list是否包含状态值为0的未完成消息
if
(
confirmList
.
contains
(
0
))
{
logger
.
info
(
"excel拆分存在错误"
);
}
else
{
logger
.
info
(
"excel拆分完成"
);
}
logger
.
info
(
confirmMessage
);
}
})
.
build
();
}
}
src/main/java/com/keymobile/rest/akka/actor/ExportExcelActor.java
0 → 100644
View file @
ea4c0ca6
package
com
.
keymobile
.
rest
.
akka
.
actor
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
com.keymobile.rest.akka.message.ConfirmMsg
;
import
com.keymobile.rest.akka.message.ExportExcelMsg
;
import
com.keymobile.rest.model.BankData
;
import
org.apache.commons.lang3.time.DateFormatUtils
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
akka.actor.AbstractActor
;
import
cn.afterturn.easypoi.excel.ExcelExportUtil
;
import
cn.afterturn.easypoi.excel.entity.TemplateExportParams
;
public
class
ExportExcelActor
extends
AbstractActor
{
@Override
public
Receive
createReceive
()
{
return
receiveBuilder
()
.
match
(
ExportExcelMsg
.
class
,
exportExcelMsg
->
{
List
<
BankData
>
bankDataList
=
exportExcelMsg
.
getBankData
();
String
exportPath
=
exportExcelMsg
.
getExportPath
();
String
fileName
=
exportExcelMsg
.
getFileName
();
String
breakColumn
=
exportExcelMsg
.
getBreakColumn
();
String
modelPath
=
exportExcelMsg
.
getModelPath
();
int
index
=
exportExcelMsg
.
getIndex
();
FileOutputStream
fileOutputStream
=
null
;
try
{
TemplateExportParams
params
=
new
TemplateExportParams
(
modelPath
);
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
List
<
BankData
>
list
=
new
ArrayList
<>();
for
(
BankData
bd
:
bankDataList
)
{
BankData
newBd
=
new
BankData
(
bd
.
getMonth
()
==
null
?
""
:
DateFormatUtils
.
format
(
bd
.
getMonth
(),
"yyyy/MM/dd"
),
bd
.
getUniqueKey
(),
bd
.
getOneSubBank
(),
bd
.
getOneSubBankName
(),
bd
.
getBranches
(),
bd
.
getCustomerNum
(),
bd
.
getCustomerName
(),
bd
.
getUpdateCustomerNum
(),
bd
.
getUpdateBranches
(),
bd
.
getUpdateCustomerName
());
list
.
add
(
newBd
);
}
map
.
put
(
"list"
,
list
);
Workbook
workbook
=
ExcelExportUtil
.
exportExcel
(
params
,
map
);
fileName
=
fileName
+
"-"
+
breakColumn
+
"_"
+
index
+
".xlsx"
;
File
pathFile
=
new
File
(
exportPath
);
if
(!
pathFile
.
exists
())
{
pathFile
.
mkdirs
();
}
fileOutputStream
=
new
FileOutputStream
(
exportPath
+
"/"
+
fileName
);
workbook
.
write
(
fileOutputStream
);
getSender
().
tell
(
new
ConfirmMsg
(
1
,
fileName
+
":导出完成"
),
getSelf
());
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
getSender
().
tell
(
new
ConfirmMsg
(
0
,
fileName
+
":导出异常"
),
getSelf
());
}
finally
{
if
(
fileOutputStream
!=
null
)
{
fileOutputStream
.
close
();
}
}
})
.
build
();
}
}
src/main/java/com/keymobile/rest/akka/message/BreakExcelMsg.java
0 → 100644
View file @
ea4c0ca6
package
com
.
keymobile
.
rest
.
akka
.
message
;
import
java.io.Serializable
;
import
org.springframework.web.multipart.MultipartFile
;
public
class
BreakExcelMsg
implements
Serializable
{
/**
*
*/
private
static
final
long
serialVersionUID
=
1L
;
private
MultipartFile
file
;
private
String
breakColumn
;
private
String
exportPath
;
private
String
modelPath
;
public
BreakExcelMsg
(
MultipartFile
file
,
String
breakColumn
,
String
exportPath
,
String
modelPath
)
{
this
.
file
=
file
;
this
.
breakColumn
=
breakColumn
;
this
.
exportPath
=
exportPath
;
this
.
setModelPath
(
modelPath
);
}
public
MultipartFile
getFile
()
{
return
file
;
}
public
void
setFile
(
MultipartFile
file
)
{
this
.
file
=
file
;
}
public
String
getBreakColumn
()
{
return
breakColumn
;
}
public
void
setBreakColumn
(
String
breakColumn
)
{
this
.
breakColumn
=
breakColumn
;
}
public
String
getExportPath
()
{
return
exportPath
;
}
public
void
setExportPath
(
String
exportPath
)
{
this
.
exportPath
=
exportPath
;
}
public
String
getModelPath
()
{
return
modelPath
;
}
public
void
setModelPath
(
String
modelPath
)
{
this
.
modelPath
=
modelPath
;
}
}
\ No newline at end of file
src/main/java/com/keymobile/rest/akka/message/ConfirmMsg.java
0 → 100644
View file @
ea4c0ca6
package
com
.
keymobile
.
rest
.
akka
.
message
;
import
java.io.Serializable
;
public
class
ConfirmMsg
implements
Serializable
{
/**
*
*/
private
static
final
long
serialVersionUID
=
1L
;
//是否完成标识:1.完成 0.未完成
private
Integer
isFinish
;
//日志报告
private
String
confirmMessage
;
public
ConfirmMsg
(
Integer
isFinish
,
String
confirmMessage
)
{
this
.
isFinish
=
isFinish
;
this
.
confirmMessage
=
confirmMessage
;
}
public
Integer
getIsFinish
()
{
return
isFinish
;
}
public
void
setIsFinish
(
Integer
isFinish
)
{
this
.
isFinish
=
isFinish
;
}
public
String
getConfirmMessage
()
{
return
confirmMessage
;
}
public
void
setConfirmMessage
(
String
confirmMessage
)
{
this
.
confirmMessage
=
confirmMessage
;
}
}
src/main/java/com/keymobile/rest/akka/message/ExportExcelMsg.java
0 → 100644
View file @
ea4c0ca6
package
com
.
keymobile
.
rest
.
akka
.
message
;
import
com.keymobile.rest.model.BankData
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
ExportExcelMsg
implements
Serializable
{
/**
*
*/
private
static
final
long
serialVersionUID
=
1L
;
private
List
<
BankData
>
bankData
=
new
ArrayList
<>();
private
String
exportPath
;
private
String
fileName
;
private
String
breakColumn
;
private
String
modelPath
;
private
int
index
;
public
ExportExcelMsg
(
List
<
BankData
>
bankData
,
String
exportPath
,
String
fileName
,
String
breakColumn
,
String
modelPath
,
int
index
)
{
this
.
bankData
.
addAll
(
bankData
);
this
.
exportPath
=
exportPath
;
this
.
fileName
=
fileName
;
this
.
breakColumn
=
breakColumn
;
this
.
setModelPath
(
modelPath
);
this
.
index
=
index
;
}
public
List
<
BankData
>
getBankData
()
{
return
bankData
;
}
public
void
setBankData
(
List
<
BankData
>
bankData
)
{
this
.
bankData
.
addAll
(
bankData
);
}
public
String
getExportPath
()
{
return
exportPath
;
}
public
void
setExportPath
(
String
exportPath
)
{
this
.
exportPath
=
exportPath
;
}
public
String
getFileName
()
{
return
fileName
;
}
public
void
setFileName
(
String
fileName
)
{
this
.
fileName
=
fileName
;
}
public
String
getBreakColumn
()
{
return
breakColumn
;
}
public
void
setBreakColumn
(
String
breakColumn
)
{
this
.
breakColumn
=
breakColumn
;
}
public
int
getIndex
()
{
return
index
;
}
public
void
setIndex
(
int
index
)
{
this
.
index
=
index
;
}
public
String
getModelPath
()
{
return
modelPath
;
}
public
void
setModelPath
(
String
modelPath
)
{
this
.
modelPath
=
modelPath
;
}
}
src/main/java/com/keymobile/rest/akka/utils/ExcelModelColumnUtils.java
0 → 100644
View file @
ea4c0ca6
package
com
.
keymobile
.
rest
.
akka
.
utils
;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
ExcelModelColumnUtils
{
public
static
Map
<
String
,
String
>
modelColumnMap
=
new
HashMap
<>();
static
{
modelColumnMap
.
put
(
"月份"
,
"Month"
);
modelColumnMap
.
put
(
"唯一键"
,
"UniqueKey"
);
modelColumnMap
.
put
(
"一级分行"
,
"OneSubBank"
);
modelColumnMap
.
put
(
"一级分行名称"
,
"OneSubBankName"
);
modelColumnMap
.
put
(
"网点"
,
"Branches"
);
modelColumnMap
.
put
(
"客户号"
,
"CustomerNum"
);
modelColumnMap
.
put
(
"客户名称"
,
"CustomerName"
);
modelColumnMap
.
put
(
"修正后的客户号"
,
"UpdateCustomerNum"
);
modelColumnMap
.
put
(
"修改后的客户开户网点"
,
"UpdateBranches"
);
modelColumnMap
.
put
(
"修正后的客户名称"
,
"UpdateCustomerName"
);
}
public
static
String
getBreakColumn
(
String
cnName
)
{
return
modelColumnMap
.
get
(
cnName
);
}
}
src/main/java/com/keymobile/rest/common/utils/BeanUti
ls
.java
→
src/main/java/com/keymobile/rest/common/utils/BeanUti.java
View file @
ea4c0ca6
package
com
.
keymobile
.
rest
.
common
.
utils
;
import
com.keymobile.rest.model.Activity
;
import
com.keymobile.rest.dto.TaskForm
;
import
lombok.extern.slf4j.Slf4j
;
import
java.lang.reflect.Field
;
@Slf4j
public
class
BeanUti
ls
{
public
class
BeanUti
{
private
BeanUti
ls
()
{
private
BeanUti
()
{
throw
new
RuntimeException
(
"hey! don't mess up the party!"
);
}
...
...
@@ -35,17 +33,4 @@ public class BeanUtils {
return
t
;
}
public
static
void
main
(
String
[]
args
)
throws
IllegalAccessException
,
NoSuchFieldException
,
InstantiationException
{
TaskForm
form
=
new
TaskForm
();
Activity
activity
=
new
Activity
();
form
.
setName
(
"asdasdas"
);
form
.
setRemark
(
"asdasdas"
);
form
.
setFreq
(
4
);
convertTo
(
form
,
activity
);
System
.
out
.
printf
(
activity
.
getName
()
+
"***********************"
+
activity
.
getRemark
()
+
"***********************"
+
activity
.
getFreq
());
}
}
src/main/java/com/keymobile/rest/controller/ExcelController.java
View file @
ea4c0ca6
...
...
@@ -2,6 +2,8 @@ package com.keymobile.rest.controller;
import
com.keymobile.rest.common.utils.DateUtil
;
import
com.keymobile.rest.common.validator.CommonValidator
;
import
com.keymobile.rest.controller.constant.TaskConstant
;
import
com.keymobile.rest.model.Activity
;
import
com.keymobile.rest.model.DataInfo
;
import
com.keymobile.rest.model.Process
;
import
com.keymobile.rest.model.Template
;
...
...
@@ -9,6 +11,7 @@ import com.keymobile.rest.service.*;
import
io.swagger.annotations.*
;
import
org.activiti.engine.*
;
import
org.activiti.engine.task.Task
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -25,10 +28,16 @@ public class ExcelController {
private
DataInfoService
dataInfoService
;
@Autowired
private
ProcessService
processService
;
@Autowired
private
ActivityService
activityService
;
@Autowired
private
UserService
user
Service
;
private
FeignAuthService
auth
Service
;
@Autowired
private
TaskService
taskService
;
@Autowired
private
RuntimeService
runtimeService
;
@ApiOperation
(
value
=
"当前补录任务填写补录"
)
...
...
@@ -42,16 +51,20 @@ public class ExcelController {
Task
task
=
taskService
.
createTaskQuery
().
taskId
(
taskId
).
singleResult
();
CommonValidator
.
notNull
(
task
,
"任务不存在"
);
Template
template
=
templateService
.
get
(
excelId
);
Template
template
=
templateService
.
findById
(
excelId
);
CommonValidator
.
notNull
(
template
,
"模板不存在"
);
Process
process
=
processService
.
findByProcessId
(
task
.
getProcessInstanceId
());
Map
user
=
authService
.
getUserById
(
3L
);
taskService
.
claim
(
taskId
,
user
.
get
(
"name"
).
toString
());
String
processInstanceId
=
task
.
getProcessInstanceId
();
Process
process
=
processService
.
findByProcessId
(
processInstanceId
);
DataInfo
dataInfo
=
new
DataInfo
();
dataInfo
.
setCreateAt
(
DateUtil
.
getTimestamp
());
dataInfo
.
setTemplate
(
template
);
dataInfo
.
setTaskId
(
taskId
);
dataInfo
.
setUserId
(
3L
);
dataInfo
.
setUserId
(
Long
.
parseLong
(
user
.
get
(
"id"
).
toString
())
);
dataInfo
.
setProcess
(
process
);
dataInfo
.
setData
(
dataStr
);
dataInfoService
.
save
(
dataInfo
);
...
...
@@ -59,24 +72,39 @@ public class ExcelController {
Map
vars
=
new
HashMap
<>();
if
(
template
.
getNeedAudit
()
==
Template
.
NEED_AUDIT
)
{
vars
.
put
(
"
n
eedDataAudit"
,
true
);
vars
.
put
(
"
N
eedDataAudit"
,
true
);
vars
.
put
(
"auditUser"
,
"审核人"
);
}
else
{
vars
.
put
(
"
n
eedDataAudit"
,
false
);
vars
.
put
(
"
N
eedDataAudit"
,
false
);
}
// 当前流程的所有未完成任务
// long allMissionCount = missionService.countAllByActivityIdAndStatus(template.getActivity().getId(), Mission.STATUS_BEGIN);
// if (allMissionCount == 0) {
// if (template.getNeedConfirm() == Template.NEED_CONFIRM) {
// vars.put("needConfirm", true);
// } else {
// vars.put("needConfirm", false);
// vars.put("needDataBackflow", true);
// }
// }
String
executionId
=
task
.
getExecutionId
();
// 总的会签任务数量
int
nrOfInstances
=
Integer
.
parseInt
(
runtimeService
.
getVariable
(
executionId
,
"nrOfInstances"
).
toString
());
// 当前获取的会签任务数量
int
nrOfActiveInstances
=
Integer
.
parseInt
(
runtimeService
.
getVariable
(
executionId
,
"nrOfActiveInstances"
).
toString
());
// 已经完成的会签任务数量
int
nrOfCompletedInstances
=
Integer
.
parseInt
(
runtimeService
.
getVariable
(
executionId
,
"nrOfCompletedInstances"
).
toString
());
if
(
nrOfCompletedInstances
==
nrOfInstances
-
1
)
{
if
(
template
.
getNeedConfirm
()
==
Template
.
NEED_CONFIRM
)
{
vars
.
put
(
"NeedConfirm"
,
true
);
vars
.
put
(
"manager"
,
"审核人"
);
}
else
{
vars
.
put
(
"NeedConfirm"
,
false
);
if
(
StringUtils
.
isNotEmpty
(
template
.
getBackStreamAddr
()))
{
vars
.
put
(
"NeedDataBack"
,
true
);
vars
.
put
(
"backFlowUser"
,
"数据回流人"
);
}
else
{
vars
.
put
(
"NeedDataBack"
,
false
);
// 流程完
Activity
activity
=
process
.
getActivity
();
activity
.
setStatus
(
Activity
.
STATUS_WAIT
);
activityService
.
save
(
activity
);
}
}
taskService
.
complete
(
task
.
getId
(),
vars
);
}
return
"成功"
;
}
...
...
src/main/java/com/keymobile/rest/controller/TaskController.java
View file @
ea4c0ca6
...
...
@@ -2,7 +2,7 @@ package com.keymobile.rest.controller;
import
com.google.common.collect.ImmutableMap
;
import
com.keymobile.rest.common.bean.SimplePage
;
import
com.keymobile.rest.common.utils.BeanUti
ls
;
import
com.keymobile.rest.common.utils.BeanUti
;
import
com.keymobile.rest.common.utils.DateUtil
;
import
com.keymobile.rest.common.validator.CommonValidator
;
import
com.keymobile.rest.controller.constant.TaskConstant
;
...
...
@@ -45,8 +45,6 @@ public class TaskController {
@Autowired
private
TemplateService
templateService
;
@Autowired
private
UserService
userService
;
@Autowired
private
FeignAuthService
feignAuthService
;
@Autowired
private
ProcessService
processService
;
...
...
@@ -106,7 +104,7 @@ public class TaskController {
// 获取个人任务
List
<
Task
>
tasks
=
taskService
.
createTaskQuery
().
taskAssigneeLike
(
"%"
+
username
+
"%"
).
active
().
list
();
tasks
.
forEach
(
task
->
{
missions
.
add
(
convert
(
task
,
ImmutableMap
.
of
(
"username"
,
username
,
"type"
,
TaskConstant
.
TASK_TYPE_PERSONAL
)));
missions
.
add
(
convert
TaskToMission
(
task
,
ImmutableMap
.
of
(
"username"
,
username
,
"type"
,
TaskConstant
.
TASK_TYPE_PERSONAL
)));
});
// 获取组任务
...
...
@@ -123,7 +121,7 @@ public class TaskController {
// 组id
String
groupId
=
"id:"
+
templateId
;
if
(
groupId
.
equals
(
identityLink
.
getGroupId
()))
{
missions
.
add
(
convert
(
groupTask
,
ImmutableMap
.
of
(
"username"
,
username
,
"type"
,
TaskConstant
.
TASK_TYPE_GROUP
,
"templateId"
,
templateId
)));
missions
.
add
(
convert
TaskToMission
(
groupTask
,
ImmutableMap
.
of
(
"username"
,
username
,
"type"
,
TaskConstant
.
TASK_TYPE_GROUP
,
"templateId"
,
templateId
)));
}
});
}
...
...
@@ -141,13 +139,9 @@ public class TaskController {
CommonValidator
.
notNull
(
form
.
getType
(),
"类型不能为空"
);
CommonValidator
.
isTrue
(
form
.
getExcels
()
!=
null
&&
form
.
getExcels
().
size
()
!=
0
,
"补录模板不能为空"
);
// manager
User
admin
=
userService
.
getManager
();
form
.
setUser
(
admin
);
// 新建活动
Activity
activity
=
new
Activity
();
activity
=
BeanUti
ls
.
convertTo
(
form
,
activity
);
activity
=
BeanUti
.
convertTo
(
form
,
activity
);
activity
.
setCreateAt
(
DateUtil
.
getTimestamp
());
activity
.
setStatus
(
Activity
.
STATUS_WAIT
);
final
Activity
finalActivity
=
activityService
.
save
(
activity
);
...
...
@@ -168,7 +162,7 @@ public class TaskController {
excelForm
.
setActivity
(
finalActivity
);
Template
template
=
new
Template
();
template
=
BeanUti
ls
.
convertTo
(
excelForm
,
template
);
template
=
BeanUti
.
convertTo
(
excelForm
,
template
);
template
.
setCreateAt
(
DateUtil
.
getTimestamp
());
final
Template
finalTemplate
=
templateService
.
save
(
template
);
...
...
@@ -285,16 +279,17 @@ public class TaskController {
return
""
;
}
public
Mission
convert
(
Task
task
,
Map
<
String
,
Object
>
params
)
{
public
Mission
convert
TaskToMission
(
Task
task
,
Map
<
String
,
Object
>
params
)
{
Mission
.
MissionBuilder
builder
=
Mission
.
builder
();
int
type
=
Integer
.
parseInt
(
params
.
get
(
"type"
).
toString
());
builder
.
id
(
task
.
getId
())
.
processId
(
task
.
getProcessInstanceId
())
.
user
(
params
.
get
(
"username"
).
toString
())
.
taskType
(
type
)
.
createAt
(
DateUtil
.
formatDateTime
(
task
.
getCreateTime
()));
int
missionType
=
0
;
String
mission
=
""
;
if
(
task
.
getTaskDefinitionKey
().
toLowerCase
().
equals
(
TaskConstant
.
MISSION_LOW_CASE
_KEY_DATA_ENTER
))
{
if
(
task
.
getTaskDefinitionKey
().
equals
(
TaskConstant
.
MISSION
_KEY_DATA_ENTER
))
{
missionType
=
TaskConstant
.
MISSION_TYPE_DATA_ENTER
;
mission
=
TaskConstant
.
MISSION_TEXT_DATA_ENTER
;
long
templateId
=
0
;
...
...
@@ -310,14 +305,13 @@ public class TaskController {
templateId
=
Long
.
parseLong
(
params
.
get
(
"templateId"
).
toString
());
}
builder
.
excelId
(
templateId
);
}
else
if
(
task
.
getTaskDefinitionKey
().
toLowerCase
().
equals
(
TaskConstant
.
MISSION_LOW_CASE_KEY_
_DATA_AUDIT
))
{
}
else
if
(
task
.
getTaskDefinitionKey
().
equals
(
TaskConstant
.
MISSION_KEY
_DATA_AUDIT
))
{
missionType
=
TaskConstant
.
MISSION_TYPE_DATA_AUDIT
;
mission
=
TaskConstant
.
MISSION_TEXT_DATA_AUDIT
;
}
else
if
(
task
.
getTaskDefinitionKey
().
toLowerCase
().
equals
(
TaskConstant
.
MISSION_LOW_CASE_KEY_
_MANAGER_AUDIT
))
{
}
else
if
(
task
.
getTaskDefinitionKey
().
equals
(
TaskConstant
.
MISSION_KEY
_MANAGER_AUDIT
))
{
missionType
=
TaskConstant
.
MISSION_TYPE_MANAGER_AUDIT
;
mission
=
TaskConstant
.
MISSION_TEXT_MANAGER_AUDIT
;
}
else
if
(
task
.
getTaskDefinitionKey
().
toLowerCase
().
equals
(
TaskConstant
.
MISSION_LOW_CASE_KEY__DATA_BACK_FLOW
)
||
task
.
getTaskDefinitionKey
().
toLowerCase
().
equals
(
"_26"
))
{
}
else
if
(
task
.
getTaskDefinitionKey
().
equals
(
TaskConstant
.
MISSION_KEY_DATA_BACK_FLOW
))
{
missionType
=
TaskConstant
.
MISSION_TYPE_DATA_BACK_FLOW
;
mission
=
TaskConstant
.
MISSION_TEXT_DATA_BACK_FLOW
;
}
...
...
src/main/java/com/keymobile/rest/controller/constant/TaskConstant.java
View file @
ea4c0ca6
...
...
@@ -10,10 +10,10 @@ public interface TaskConstant {
int
MISSION_TYPE_MANAGER_AUDIT
=
3
;
int
MISSION_TYPE_DATA_BACK_FLOW
=
4
;
String
MISSION_
LOW_CASE_KEY_DATA_ENTER
=
"datae
nter"
;
String
MISSION_
LOW_CASE_KEY__DATA_AUDIT
=
"dataa
udit"
;
String
MISSION_
LOW_CASE_KEY__MANAGER_AUDIT
=
"managerc
onfirm"
;
String
MISSION_
LOW_CASE_KEY__DATA_BACK_FLOW
=
"databackf
low"
;
String
MISSION_
KEY_DATA_ENTER
=
"DataE
nter"
;
String
MISSION_
KEY_DATA_AUDIT
=
"DataA
udit"
;
String
MISSION_
KEY_MANAGER_AUDIT
=
"ManagerC
onfirm"
;
String
MISSION_
KEY_DATA_BACK_FLOW
=
"DataBackF
low"
;
String
MISSION_TEXT_DATA_ENTER
=
"填写补录数据"
;
String
MISSION_TEXT_DATA_AUDIT
=
"审核补录数据"
;
...
...
src/main/java/com/keymobile/rest/dao/MissionDao.java
deleted
100644 → 0
View file @
b9eb7523
package
com
.
keymobile
.
rest
.
dao
;
import
com.keymobile.rest.model.Mission
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
java.util.List
;
public
interface
MissionDao
extends
JpaRepository
<
Mission
,
Long
>
{
List
<
Mission
>
findAllByTemplateIdAndStatus
(
long
templateId
,
int
status
);
long
countAllByActivityIdAndStatus
(
long
activityId
,
int
status
);
Mission
findByProcessIdAndTemplateIdAndStatusAndType
(
long
processId
,
long
templateId
,
int
status
,
int
type
);
}
src/main/java/com/keymobile/rest/dao/ProcessDao.java
View file @
ea4c0ca6
...
...
@@ -6,7 +6,5 @@ import org.springframework.data.jpa.repository.JpaRepository;
import
java.util.List
;
public
interface
ProcessDao
extends
JpaRepository
<
Process
,
Long
>
{
Process
findByProcessId
(
String
processId
);
}
src/main/java/com/keymobile/rest/dao/TemplateDao.java
View file @
ea4c0ca6
...
...
@@ -7,7 +7,4 @@ import java.util.List;
public
interface
TemplateDao
extends
JpaRepository
<
Template
,
Long
>
{
List
<
Template
>
findAllByIdIn
(
List
<
Long
>
ids
);
List
<
Template
>
findAllByActivityId
(
long
activityId
);
}
src/main/java/com/keymobile/rest/dao/UserDao.java
deleted
100644 → 0
View file @
b9eb7523
package
com
.
keymobile
.
rest
.
dao
;
import
com.keymobile.rest.model.User
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
java.util.List
;
public
interface
UserDao
extends
JpaRepository
<
User
,
Long
>
{
List
<
User
>
findAllByIdIn
(
List
<
Long
>
ids
);
List
<
User
>
findAllByUsername
(
String
username
);
List
<
User
>
findAllByRole
(
int
role
);
}
src/main/java/com/keymobile/rest/dao/UserTemplateMapperDao.java
View file @
ea4c0ca6
...
...
@@ -6,8 +6,5 @@ import org.springframework.data.jpa.repository.JpaRepository;
import
java.util.List
;
public
interface
UserTemplateMapperDao
extends
JpaRepository
<
UserTemplateMapper
,
Long
>
{
List
<
UserTemplateMapper
>
findAllByTemplateId
(
long
templateId
);
List
<
UserTemplateMapper
>
findAllByUserIdAndActivityStatus
(
long
userId
,
int
status
);
}
src/main/java/com/keymobile/rest/dto/TaskForm.java
View file @
ea4c0ca6
package
com
.
keymobile
.
rest
.
dto
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.keymobile.rest.model.User
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
...
...
@@ -28,6 +26,4 @@ public class TaskForm {
@ApiModelProperty
(
required
=
true
,
name
=
"excels"
,
value
=
"新建的模板配置数组"
)
private
List
<
ExcelForm
>
excels
;
@JsonIgnore
private
User
user
;
}
src/main/java/com/keymobile/rest/model/Activity.java
View file @
ea4c0ca6
...
...
@@ -21,6 +21,9 @@ public class Activity implements Serializable {
public
static
int
TYPE_AUTO
=
2
;
public
static
int
TYPE_MANUAL
=
1
;
public
static
int
NEED_CONFIRM
=
2
;
public
static
int
NO_NEED_CONFIRM
=
1
;
public
static
int
STATUS_WAIT
=
1
;
public
static
int
STATUS_BEGIN
=
2
;
/**
...
...
@@ -47,6 +50,9 @@ public class Activity implements Serializable {
@Column
(
columnDefinition
=
(
"integer(2) comment '频度'"
))
private
Integer
freq
;
@Column
(
name
=
"need_confirm"
,
columnDefinition
=
(
"integer(2) default 1 comment '需要负责人确认'"
))
private
Integer
needConfirm
=
1
;
@Column
(
nullable
=
false
,
name
=
"create_at"
)
private
Timestamp
createAt
;
...
...
@@ -56,8 +62,8 @@ public class Activity implements Serializable {
/**
* 发送人
*/
@
ManyToOne
private
User
user
;
@
Column
(
nullable
=
false
,
columnDefinition
=
(
"bigint(22) comment '发布人id'"
))
private
Long
userId
;
@OneToMany
(
fetch
=
FetchType
.
EAGER
,
mappedBy
=
"activity"
)
private
List
<
Template
>
templateList
;
...
...
src/main/java/com/keymobile/rest/model/BankData.java
0 → 100644
View file @
ea4c0ca6
package
com
.
keymobile
.
rest
.
model
;
import
java.io.Serializable
;
import
java.util.Date
;
import
cn.afterturn.easypoi.excel.annotation.Excel
;
import
cn.afterturn.easypoi.excel.annotation.ExcelTarget
;
import
cn.afterturn.easypoi.handler.inter.IExcelDataModel
;
import
cn.afterturn.easypoi.handler.inter.IExcelModel
;
@ExcelTarget
(
"BankData"
)
public
class
BankData
implements
Serializable
,
IExcelModel
,
IExcelDataModel
{
/**
*
*/
private
static
final
long
serialVersionUID
=
1L
;
@Excel
(
name
=
"月份"
,
format
=
"yyyy-MM-dd"
,
orderNum
=
"0"
,
width
=
30
)
private
Date
month
;
//月份
@Excel
(
name
=
"唯一键"
,
orderNum
=
"1"
,
width
=
30
)
private
String
uniqueKey
;
//唯一键
@Excel
(
name
=
"一级分行"
,
orderNum
=
"2"
,
width
=
30
)
private
String
oneSubBank
;
//一级分行
@Excel
(
name
=
"一级分行名称"
,
orderNum
=
"3"
,
width
=
30
)
private
String
oneSubBankName
;
//一级分行名称
@Excel
(
name
=
"网点"
,
orderNum
=
"4"
,
width
=
30
)
private
String
branches
;
//网点
@Excel
(
name
=
"客户号"
,
orderNum
=
"5"
,
width
=
30
)
private
String
customerNum
;
//客户号
@Excel
(
name
=
"客户名称"
,
orderNum
=
"6"
,
width
=
30
)
private
String
customerName
;
//客户名称
@Excel
(
name
=
"修正后的客户号"
,
orderNum
=
"7"
,
width
=
30
)
private
String
updateCustomerNum
;
//修正后的客户号
@Excel
(
name
=
"修改后的客户开户网点"
,
orderNum
=
"8"
,
width
=
30
)
private
String
updateBranches
;
//修改后的客户开户网点
@Excel
(
name
=
"修正后的客户名称"
,
orderNum
=
"9"
,
width
=
30
)
private
String
updateCustomerName
;
//修正后的客户名称
private
String
monthString
;
public
BankData
()
{
super
();
}
public
BankData
(
String
monthString
,
String
uniqueKey
,
String
oneSubBank
,
String
oneSubBankName
,
String
branches
,
String
customerNum
,
String
customerName
,
String
updateCustomerNum
,
String
updateBranches
,
String
updateCustomerName
)
{
this
.
monthString
=
monthString
;
this
.
uniqueKey
=
uniqueKey
;
this
.
oneSubBank
=
oneSubBank
;
this
.
oneSubBankName
=
oneSubBankName
;
this
.
branches
=
branches
;
this
.
customerNum
=
customerNum
;
this
.
customerName
=
customerName
;
this
.
updateCustomerNum
=
updateCustomerNum
;
this
.
updateBranches
=
updateBranches
;
this
.
updateCustomerName
=
updateCustomerName
;
}
@Override
public
String
toString
()
{
return
"BankData [month="
+
month
+
", uniqueKey="
+
uniqueKey
+
", oneSubBank="
+
oneSubBank
+
", oneSubBankName="
+
oneSubBankName
+
", branches="
+
branches
+
", customerNum="
+
customerNum
+
", customerName="
+
customerName
+
", updateCustomerNum="
+
updateCustomerNum
+
", updateBranches="
+
updateBranches
+
", updateCustomerName="
+
updateCustomerName
+
"]"
;
}
public
Date
getMonth
()
{
return
month
;
}
public
void
setMonth
(
Date
month
)
{
this
.
month
=
month
;
}
public
String
getUniqueKey
()
{
return
uniqueKey
;
}
public
void
setUniqueKey
(
String
uniqueKey
)
{
this
.
uniqueKey
=
uniqueKey
;
}
public
String
getOneSubBank
()
{
return
oneSubBank
;
}
public
void
setOneSubBank
(
String
oneSubBank
)
{
this
.
oneSubBank
=
oneSubBank
;
}
public
String
getOneSubBankName
()
{
return
oneSubBankName
;
}
public
void
setOneSubBankName
(
String
oneSubBankName
)
{
this
.
oneSubBankName
=
oneSubBankName
;
}
public
String
getBranches
()
{
return
branches
;
}
public
void
setBranches
(
String
branches
)
{
this
.
branches
=
branches
;
}
public
String
getCustomerNum
()
{
return
customerNum
;
}
public
void
setCustomerNum
(
String
customerNum
)
{
this
.
customerNum
=
customerNum
;
}
public
String
getCustomerName
()
{
return
customerName
;
}
public
void
setCustomerName
(
String
customerName
)
{
this
.
customerName
=
customerName
;
}
public
String
getUpdateCustomerNum
()
{
return
updateCustomerNum
;
}
public
void
setUpdateCustomerNum
(
String
updateCustomerNum
)
{
this
.
updateCustomerNum
=
updateCustomerNum
;
}
public
String
getUpdateBranches
()
{
return
updateBranches
;
}
public
void
setUpdateBranches
(
String
updateBranches
)
{
this
.
updateBranches
=
updateBranches
;
}
public
String
getUpdateCustomerName
()
{
return
updateCustomerName
;
}
public
void
setUpdateCustomerName
(
String
updateCustomerName
)
{
this
.
updateCustomerName
=
updateCustomerName
;
}
@org
.
springframework
.
data
.
annotation
.
Transient
private
String
errMsg
;
@org
.
springframework
.
data
.
annotation
.
Transient
private
int
excelRowNum
;
@Override
public
String
getErrorMsg
()
{
return
errMsg
;
}
@Override
public
void
setErrorMsg
(
String
errorMsg
)
{
this
.
errMsg
=
errorMsg
;
}
@Override
public
Integer
getRowNum
()
{
return
excelRowNum
;
}
@Override
public
void
setRowNum
(
Integer
rowNum
)
{
this
.
excelRowNum
=
rowNum
;
}
public
String
getMonthString
()
{
return
monthString
;
}
public
void
setMonthString
(
String
monthString
)
{
this
.
monthString
=
monthString
;
}
}
src/main/java/com/keymobile/rest/model/Template.java
View file @
ea4c0ca6
...
...
@@ -18,9 +18,6 @@ public class Template implements Serializable {
public
static
int
NEED_AUDIT
=
2
;
public
static
int
NO_NEED_AUDIT
=
1
;
public
static
int
NEED_CONFIRM
=
2
;
public
static
int
NO_NEED_CONFIRM
=
1
;
public
static
int
NEED_MERGE
=
2
;
public
static
int
NO_NEED_MERGE
=
1
;
...
...
@@ -40,9 +37,6 @@ public class Template implements Serializable {
@Column
(
name
=
"need_audit"
,
columnDefinition
=
(
"integer(2) default 1 comment '需要审核'"
))
private
Integer
needAudit
=
1
;
@Column
(
name
=
"need_confirm"
,
columnDefinition
=
(
"integer(2) default 1 comment '需要负责人确认'"
))
private
Integer
needConfirm
=
1
;
@Column
(
name
=
"need_merge"
,
columnDefinition
=
(
"integer(2) default 1 comment '需要数据合并'"
))
private
Integer
needMerge
=
1
;
...
...
src/main/java/com/keymobile/rest/model/User.java
deleted
100644 → 0
View file @
b9eb7523
package
com
.
keymobile
.
rest
.
model
;
import
lombok.Data
;
import
javax.persistence.*
;
import
java.io.Serializable
;
/**
* 内部用户 例如 发起人 审核人
*/
@Data
@Entity
@Table
(
name
=
"t_user"
)
public
class
User
implements
Serializable
{
public
static
int
ROLE_NORMAL
=
1
;
public
static
int
ROLE_AUDIT
=
2
;
public
static
int
ROLE_MANAGER
=
3
;
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
long
id
;
@Column
(
nullable
=
false
,
columnDefinition
=
(
"varchar(100) comment '用户名'"
))
private
String
username
;
@Column
(
nullable
=
false
,
columnDefinition
=
(
"integer(2) comment '角色 1 普通 2 审核人 3 管理人'"
))
private
int
role
;
}
src/main/java/com/keymobile/rest/service/BreakExcelService.java
0 → 100644
View file @
ea4c0ca6
package
com
.
keymobile
.
rest
.
service
;
import
com.keymobile.rest.akka.actor.BreakExcelActor
;
import
com.keymobile.rest.akka.message.BreakExcelMsg
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.multipart.MultipartFile
;
import
akka.actor.ActorRef
;
import
akka.actor.ActorSystem
;
import
akka.actor.Props
;
@Service
public
class
BreakExcelService
{
public
String
breakExcel
(
MultipartFile
file
,
String
breakColumn
,
String
exportPath
,
String
modelPath
)
throws
Exception
{
final
ActorSystem
system
=
ActorSystem
.
create
(
"ExcelBreakAkka"
);
BreakExcelMsg
breakExcelMsg
=
new
BreakExcelMsg
(
file
,
breakColumn
,
exportPath
,
modelPath
);
ActorRef
breakExcelActor
=
system
.
actorOf
(
Props
.
create
(
BreakExcelActor
.
class
,
()
->
new
BreakExcelActor
()));
breakExcelActor
.
tell
(
breakExcelMsg
,
ActorRef
.
noSender
());
return
"breaking the excel......"
;
}
}
src/main/java/com/keymobile/rest/service/DataInfoService.java
View file @
ea4c0ca6
...
...
@@ -12,8 +12,8 @@ public class DataInfoService {
@Autowired
private
DataInfoDao
dataInfoDao
;
public
DataInfo
get
(
long
id
)
{
return
dataInfoDao
.
getOne
(
id
);
public
DataInfo
findById
(
long
id
)
{
return
dataInfoDao
.
findById
(
id
).
get
(
);
}
public
DataInfo
save
(
DataInfo
dataInfo
)
{
...
...
src/main/java/com/keymobile/rest/service/GroupDataStandardServiceImpl.java
deleted
100644 → 0
View file @
b9eb7523
package
com
.
keymobile
.
rest
.
service
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
org.activiti.engine.delegate.DelegateExecution
;
import
org.springframework.stereotype.Service
;
@Service
public
class
GroupDataStandardServiceImpl
{
public
List
<
String
>
findAssigneesForProcess
(
DelegateExecution
execution
,
String
groupsString
)
{
System
.
out
.
println
(
groupsString
);
String
[]
groups
=
groupsString
.
split
(
","
);
return
this
.
getAssignessByGroup
(
groups
);
}
private
List
<
String
>
getAssignessByGroup
(
String
[]
groups
)
{
List
<
String
>
assignees
=
new
ArrayList
<>();
for
(
String
group
:
groups
)
{
if
(
"group1"
.
equals
(
group
))
{
assignees
.
addAll
(
Arrays
.
asList
(
"root"
));
}
if
(
"group2"
.
equals
(
group
))
{
assignees
.
addAll
(
Arrays
.
asList
(
"root"
));
}
if
(
"group3"
.
equals
(
group
))
{
assignees
.
addAll
(
Arrays
.
asList
(
"root"
));
}
if
(
"group4"
.
equals
(
group
))
{
assignees
.
addAll
(
Arrays
.
asList
(
"root"
));
}
if
(
"group5"
.
equals
(
group
))
{
assignees
.
addAll
(
Arrays
.
asList
(
"root"
));
}
if
(
"group6"
.
equals
(
group
))
{
assignees
.
addAll
(
Arrays
.
asList
(
"root"
));
}
if
(
"group7"
.
equals
(
group
))
{
assignees
.
addAll
(
Arrays
.
asList
(
"root"
));
}
if
(
"group8"
.
equals
(
group
))
{
assignees
.
addAll
(
Arrays
.
asList
(
"root"
));
}
}
return
assignees
;
}
}
\ No newline at end of file
src/main/java/com/keymobile/rest/service/MissionService.java
deleted
100644 → 0
View file @
b9eb7523
package
com
.
keymobile
.
rest
.
service
;
import
com.keymobile.rest.common.utils.DateUtil
;
import
com.keymobile.rest.dao.*
;
import
com.keymobile.rest.model.Template
;
import
com.keymobile.rest.model.Mission
;
import
com.keymobile.rest.model.User
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.sql.Timestamp
;
import
java.util.List
;
@Service
public
class
MissionService
{
@Autowired
private
MissionDao
missionDao
;
public
Mission
save
(
long
userId
,
Template
template
)
{
Mission
info
=
new
Mission
();
info
.
setTemplate
(
template
);
// 初始的开始状态
info
.
setStatus
(
Mission
.
STATUS_BEGIN
);
info
.
setUserId
(
userId
);
info
.
setType
(
Mission
.
TYPE_RECORD
);
info
.
setCreateAt
(
DateUtil
.
getTimestamp
());
info
=
missionDao
.
save
(
info
);
return
info
;
}
public
Mission
save
(
Mission
mission
)
{
missionDao
.
save
(
mission
);
return
mission
;
}
public
Mission
findById
(
long
missionId
)
{
return
missionDao
.
getOne
(
missionId
);
}
public
Mission
findByProcessIdAndUsernameAndTemplateIdAndStatusAndType
(
long
processId
,
String
username
,
long
templateId
,
int
status
)
{
return
missionDao
.
findByProcessIdAndTemplateIdAndStatusAndType
(
processId
,
templateId
,
1
,
status
);
}
public
List
<
Mission
>
findAllByTemplateIdAndStatus
(
long
templateId
,
int
status
)
{
return
missionDao
.
findAllByTemplateIdAndStatus
(
templateId
,
status
);
}
public
long
countAllByActivityIdAndStatus
(
long
activityId
,
int
status
)
{
return
missionDao
.
countAllByActivityIdAndStatus
(
activityId
,
status
);
}
}
src/main/java/com/keymobile/rest/service/TemplateService.java
View file @
ea4c0ca6
...
...
@@ -5,7 +5,6 @@ import com.keymobile.rest.model.Template;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
@Service
public
class
TemplateService
{
...
...
@@ -13,8 +12,8 @@ public class TemplateService {
@Autowired
private
TemplateDao
templateDao
;
public
Template
get
(
long
id
)
{
return
templateDao
.
getOne
(
id
);
public
Template
findById
(
long
id
)
{
return
templateDao
.
findById
(
id
).
get
(
);
}
public
Template
save
(
Template
template
)
{
...
...
@@ -22,15 +21,4 @@ public class TemplateService {
return
template
;
}
public
List
<
Template
>
findAllByIdIn
(
List
<
Long
>
ids
)
{
return
templateDao
.
findAllByIdIn
(
ids
);
}
public
List
<
Template
>
findAllByAssignmentId
(
long
assignmentId
)
{
return
templateDao
.
findAllByActivityId
(
assignmentId
);
}
public
void
saveAll
(
List
<
Template
>
templateList
)
{
templateDao
.
saveAll
(
templateList
);
}
}
src/main/java/com/keymobile/rest/service/UserService.java
deleted
100644 → 0
View file @
b9eb7523
package
com
.
keymobile
.
rest
.
service
;
import
com.keymobile.rest.dao.UserDao
;
import
com.keymobile.rest.model.User
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
@Service
public
class
UserService
{
@Autowired
private
UserDao
userDao
;
public
List
<
User
>
findAll
()
{
return
userDao
.
findAll
();
}
public
User
getManager
()
{
return
userDao
.
findAllByRole
(
User
.
ROLE_MANAGER
).
get
(
0
);
}
}
src/main/java/com/keymobile/rest/service/UserTemplateMapperService.java
View file @
ea4c0ca6
...
...
@@ -13,10 +13,6 @@ public class UserTemplateMapperService {
@Autowired
private
UserTemplateMapperDao
userTemplateMapperDao
;
public
List
<
UserTemplateMapper
>
findAllByTemplateId
(
long
templateId
)
{
return
userTemplateMapperDao
.
findAllByTemplateId
(
templateId
);
}
public
List
<
UserTemplateMapper
>
findAllByUserIdAndActivityStatus
(
long
userId
,
int
status
)
{
return
userTemplateMapperDao
.
findAllByUserIdAndActivityStatus
(
userId
,
status
);
}
...
...
src/main/java/com/keymobile/rest/vo/Mission.java
View file @
ea4c0ca6
...
...
@@ -15,5 +15,5 @@ public class Mission {
private
int
missionType
;
private
String
mission
;
private
long
excelId
;
private
String
processId
;
}
src/main/java/com/keymobile/rest/vo/SimpleTask.java
View file @
ea4c0ca6
package
com
.
keymobile
.
rest
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.keymobile.rest.common.utils.BeanUti
ls
;
import
com.keymobile.rest.common.utils.BeanUti
;
import
com.keymobile.rest.model.Activity
;
import
com.keymobile.rest.model.Template
;
import
lombok.Data
;
...
...
@@ -34,10 +34,10 @@ public class SimpleTask {
List
<
SimpleTemplate
>
simpleTemplateList
=
new
ArrayList
<>();
List
<
Template
>
templateList
=
activity
.
getTemplateList
();
templateList
.
forEach
(
template
->
{
simpleTemplateList
.
add
(
BeanUti
ls
.
convertTo
(
template
,
new
SimpleTemplate
()));
simpleTemplateList
.
add
(
BeanUti
.
convertTo
(
template
,
new
SimpleTemplate
()));
});
SimpleTask
task
=
new
SimpleTask
();
task
=
BeanUti
ls
.
convertTo
(
activity
,
task
);
task
=
BeanUti
.
convertTo
(
activity
,
task
);
task
.
setExcelList
(
simpleTemplateList
);
return
task
;
}
...
...
src/main/java/com/keymobile/rest/vo/SimpleTemplate.java
View file @
ea4c0ca6
package
com
.
keymobile
.
rest
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.keymobile.rest.common.utils.BeanUti
ls
;
import
com.keymobile.rest.common.utils.BeanUti
;
import
com.keymobile.rest.model.Template
;
import
lombok.Data
;
...
...
@@ -21,7 +21,7 @@ public class SimpleTemplate {
public
static
SimpleTemplate
convert
(
Template
template
)
{
SimpleTemplate
simpleTemplate
=
new
SimpleTemplate
();
simpleTemplate
=
BeanUti
ls
.
convertTo
(
template
,
simpleTemplate
);
simpleTemplate
=
BeanUti
.
convertTo
(
template
,
simpleTemplate
);
return
simpleTemplate
;
}
}
src/main/resources/MoreSubProcessStandard.bpmn
View file @
ea4c0ca6
...
...
@@ -44,7 +44,7 @@
<exclusiveGateway
gatewayDirection=
"Unspecified"
id=
"_22"
/>
<exclusiveGateway
gatewayDirection=
"Unspecified"
id=
"_23"
name=
"ExclusiveGateway"
/>
<exclusiveGateway
gatewayDirection=
"Unspecified"
id=
"_24"
name=
"ExclusiveGateway"
/>
<userTask
activiti:assignee=
"${backFlowUser}"
activiti:exclusive=
"true"
id=
"
_26
"
name=
"数据回流"
/>
<userTask
activiti:assignee=
"${backFlowUser}"
activiti:exclusive=
"true"
id=
"
DataBackFlow
"
name=
"数据回流"
/>
<endEvent
id=
"_27"
name=
"EndEvent"
/>
<sequenceFlow
id=
"_28"
sourceRef=
"SubProcess"
targetRef=
"_22"
/>
<sequenceFlow
id=
"_31"
sourceRef=
"_24"
targetRef=
"_23"
>
...
...
@@ -57,12 +57,12 @@
<![CDATA[${NeedConfirm == false }]]>
</conditionExpression>
</sequenceFlow>
<sequenceFlow
id=
"_33"
sourceRef=
"_23"
targetRef=
"
_26
"
>
<sequenceFlow
id=
"_33"
sourceRef=
"_23"
targetRef=
"
DataBackFlow
"
>
<conditionExpression
xsi:type=
"tFormalExpression"
>
<![CDATA[${NeedDataBack == true }]]>
</conditionExpression>
</sequenceFlow>
<sequenceFlow
id=
"_34"
sourceRef=
"
_26
"
targetRef=
"_27"
/>
<sequenceFlow
id=
"_34"
sourceRef=
"
DataBackFlow
"
targetRef=
"_27"
/>
<sequenceFlow
id=
"_35"
sourceRef=
"_23"
targetRef=
"_27"
>
<conditionExpression
xsi:type=
"tFormalExpression"
>
<![CDATA[${NeedDataBack == false }]]>
...
...
@@ -113,7 +113,7 @@
<dc:Bounds
height=
"32.0"
width=
"32.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"
_26"
id=
"Shape-_26
"
>
<bpmndi:BPMNShape
bpmnElement=
"
DataBackFlow"
id=
"Shape-DataBackFlow
"
>
<dc:Bounds
height=
"55.0"
width=
"85.0"
x=
"865.0"
y=
"45.0"
/>
<bpmndi:BPMNLabel>
<dc:Bounds
height=
"55.0"
width=
"85.0"
x=
"0.0"
y=
"0.0"
/>
...
...
@@ -182,7 +182,7 @@
<dc:Bounds
height=
"0.0"
width=
"0.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"_34"
id=
"BPMNEdge__34"
sourceElement=
"
_26
"
targetElement=
"_27"
>
<bpmndi:BPMNEdge
bpmnElement=
"_34"
id=
"BPMNEdge__34"
sourceElement=
"
DataBackFlow
"
targetElement=
"_27"
>
<di:waypoint
x=
"913.0"
y=
"115.0"
/>
<di:waypoint
x=
"913.0"
y=
"170.0"
/>
<di:waypoint
x=
"762.0"
y=
"346.0"
/>
...
...
@@ -277,7 +277,7 @@
<dc:Bounds
height=
"0.0"
width=
"0.0"
x=
"0.0"
y=
"0.0"
/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"_33"
id=
"BPMNEdge__33"
sourceElement=
"_23"
targetElement=
"
_26
"
>
<bpmndi:BPMNEdge
bpmnElement=
"_33"
id=
"BPMNEdge__33"
sourceElement=
"_23"
targetElement=
"
DataBackFlow
"
>
<di:waypoint
x=
"817.0"
y=
"176.0"
/>
<di:waypoint
x=
"865.0"
y=
"72.5"
/>
<bpmndi:BPMNLabel>
...
...
src/main/resources/application-test.yml
View file @
ea4c0ca6
...
...
@@ -9,8 +9,8 @@ eureka:
enabled
:
true
instance
:
prefer-ip-address
:
false
hostname
:
192.168.0.48
#
hostname: 192.168.0.68
#
hostname: 192.168.0.48
hostname
:
192.168.0.68
hystrix
:
command
:
default
:
...
...
@@ -42,7 +42,7 @@ spring:
max-request-size
:
100Mb
redis
:
host
:
192.168.0.192
# host: 127.0.0.1
# host: 127.0.0.1
port
:
6379
session
:
store-type
:
redis
...
...
@@ -57,8 +57,8 @@ app:
active-process
:
MoreSubProcessStandard.bpmn
swagger2
:
host
:
192.168.0.240:8762/api/datacollector
#
host: localhost:8110
#
host: 192.168.0.240:8762/api/datacollector
host
:
localhost:8110
security
:
authUser
:
root
authPwd
:
pwd
...
...
src/test/java/com/keymobile/ProcessTest.java
View file @
ea4c0ca6
package
com
.
keymobile
;
import
com.google.common.collect.ImmutableMap
;
import
com.keymobile.rest.controller.constant.TaskConstant
;
import
com.keymobile.rest.service.ActivityService
;
import
org.activiti.engine.*
;
import
org.activiti.engine.history.HistoricProcessInstance
;
...
...
@@ -40,7 +42,7 @@ public class ProcessTest {
// @Value("${app.active-process}")
private
String
process
=
"MoreSubProcessStandard.bpmn"
;
@Test
//
@Test
public
void
createActivitiTask
()
{
// 加载的我们创建好的demo.bpmn 文件还有png文件
// 获取流的引擎
...
...
@@ -125,26 +127,48 @@ public class ProcessTest {
// taskService.complete(resultTask.getId(), ImmutableMap.of("signConfirm", "true", "needDataBackflow", "true"));
// System.out.println(resultTask);
List
<
Task
>
tasks
=
taskService
.
createTaskQuery
().
active
().
list
();
// List<Task> tasks = taskService.createTaskQuery().active().list();
//
// AtomicInteger i = new AtomicInteger();
// tasks.forEach(task -> {
//
//
// if (StringUtils.isEmpty(task.getAssignee())) {
// List<IdentityLink> identityLinkList = taskService.getIdentityLinksForTask(task.getId());
// if (identityLinkList != null && identityLinkList.size() > 0) {
// identityLinkList.forEach(identityLink -> {
// System.out.println("link :" + identityLink.getType());
// if (identityLink.getType().equals("candidate")) {
// i.getAndIncrement();
// taskService.claim(task.getId(), "ss" + i);
// }
// });
// }
// }
//
// });
AtomicInteger
i
=
new
AtomicInteger
();
// 获取个人任务
List
<
Task
>
tasks
=
taskService
.
createTaskQuery
().
active
().
list
();
tasks
.
forEach
(
task
->
{
try
{
System
.
out
.
println
(
task
.
getId
()
+
"---"
+
task
.
getTaskDefinitionKey
()
+
"---"
+
task
.
getExecutionId
()
+
"---"
+
task
.
getProcessInstanceId
());
int
nrOfInstances
=
Integer
.
parseInt
(
runtimeService
.
getVariable
(
task
.
getExecutionId
(),
"nrOfInstances"
).
toString
());
// 当前获取的会签任务数量
int
nrOfActiveInstances
=
Integer
.
parseInt
(
runtimeService
.
getVariable
(
task
.
getExecutionId
(),
"nrOfActiveInstances"
).
toString
());
// 已经完成的会签任务数量
int
nrOfCompletedInstances
=
Integer
.
parseInt
(
runtimeService
.
getVariable
(
task
.
getExecutionId
(),
"nrOfCompletedInstances"
).
toString
());
System
.
out
.
println
(
nrOfInstances
+
"---"
+
nrOfActiveInstances
+
"---"
+
nrOfCompletedInstances
);
if
(
StringUtils
.
isEmpty
(
task
.
getAssignee
()))
{
List
<
IdentityLink
>
identityLinkList
=
taskService
.
getIdentityLinksForTask
(
task
.
getId
());
if
(
identityLinkList
!=
null
&&
identityLinkList
.
size
()
>
0
)
{
identityLinkList
.
forEach
(
identityLink
->
{
System
.
out
.
println
(
"link :"
+
identityLink
.
getType
());
if
(
identityLink
.
getType
().
equals
(
"candidate"
))
{
i
.
getAndIncrement
();
taskService
.
claim
(
task
.
getId
(),
"汤颖思"
+
i
);
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
e
.
getMessage
());
}
});
}
}
});
// taskService.claim("17532", "小米");
}
@Test
...
...
@@ -207,4 +231,17 @@ public class ProcessTest {
// System.out.println(e.getMessage());
// }
}
@Test
public
void
asdsa
()
{
try
{
// taskService.complete( "28", ImmutableMap.of("needDataAudit", false, "needConfirm", false, "NeedDataBack", false));
taskService
.
complete
(
"52504"
,
ImmutableMap
.
of
(
"DataAudit"
,
true
,
"NeedDataAudit"
,
true
,
"auditUser"
,
"asdsa"
,
"NeedConfirm"
,
false
,
"NeedDataBack"
,
false
));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
// taskService.complete("12508", ImmutableMap.of("Confirm", true, "NeedDataBack", false));
}
}
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