Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yanxuan-qc-change-system
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
胡园园
yanxuan-qc-change-system
Commits
53f964e8
Commit
53f964e8
authored
Dec 09, 2022
by
jx-art
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/feature-changeFlow-221110' into feature-changeFlow-221110
parents
17b19a1d
a738bffe
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
841 additions
and
89 deletions
+841
-89
pom.xml
pom.xml
+8
-1
application.properties
...y/src/main/resources/config/online/application.properties
+6
-2
application.properties
...bly/src/main/resources/config/test/application.properties
+6
-2
ChangeFlowBiz.java
...om/netease/mail/yanxuan/change/biz/biz/ChangeFlowBiz.java
+99
-28
ChangeFlowExportCallback.java
...yanxuan/change/biz/callback/ChangeFlowExportCallback.java
+117
-0
AppConfig.java
...com/netease/mail/yanxuan/change/biz/config/AppConfig.java
+4
-0
ChangeFlowExportQuery.java
...ail/yanxuan/change/biz/service/ChangeFlowExportQuery.java
+86
-0
DESExportService.java
...ase/mail/yanxuan/change/biz/service/DESExportService.java
+53
-0
InteriorChangeConfigServiceImpl.java
...nge/biz/service/impl/InteriorChangeConfigServiceImpl.java
+5
-3
AdminChangeConfigServiceImpl.java
...biz/service/impl/change/AdminChangeConfigServiceImpl.java
+2
-1
SupplierSendService.java
...l/yanxuan/change/biz/service/rpc/SupplierSendService.java
+4
-5
AutoSubmit.java
.../com/netease/mail/yanxuan/change/biz/task/AutoSubmit.java
+21
-1
ExcelTitleName.java
...tease/mail/yanxuan/change/common/anno/ExcelTitleName.java
+24
-0
ChangeCommanderEnum.java
...mail/yanxuan/change/common/enums/ChangeCommanderEnum.java
+1
-1
ChangePrincipalEnum.java
...mail/yanxuan/change/common/enums/ChangePrincipalEnum.java
+1
-1
ExcelUtil.java
...om/netease/mail/yanxuan/change/common/util/ExcelUtil.java
+104
-0
ChangeExecRecord.java
...ease/mail/yanxuan/change/dal/entity/ChangeExecRecord.java
+1
-1
ChangeFlowListQueryReq.java
...uan/change/dal/meta/model/req/ChangeFlowListQueryReq.java
+1
-1
ChangeFlowRequest.java
.../yanxuan/change/dal/meta/model/req/ChangeFlowRequest.java
+79
-0
ChangeRecordMapper.xml
.../src/main/resources/mybatis/mapper/ChangeRecordMapper.xml
+4
-2
EmailTemplateEnum.java
...uan/change/integration/email/enums/EmailTemplateEnum.java
+4
-4
IEmailService.java
...nxuan/change/integration/email/service/IEmailService.java
+4
-3
EmailServiceImpl.java
...ange/integration/email/service/impl/EmailServiceImpl.java
+8
-4
UasClientServiceImpl.java
.../integration/email/service/impl/UasClientServiceImpl.java
+1
-0
ChangeFlowExcelVo.java
...l/yanxuan/change/integration/excel/ChangeFlowExcelVo.java
+149
-0
WebMvcConfig.java
.../netease/mail/yanxuan/change/web/config/WebMvcConfig.java
+1
-1
ChangeFlowController.java
...l/yanxuan/change/web/controller/ChangeFlowController.java
+48
-28
No files found.
pom.xml
View file @
53f964e8
...
@@ -59,7 +59,8 @@
...
@@ -59,7 +59,8 @@
<commonsio.version>
2.4
</commonsio.version>
<commonsio.version>
2.4
</commonsio.version>
<commonscollection.version>
4.1
</commonscollection.version>
<commonscollection.version>
4.1
</commonscollection.version>
<commons.lang.version>
2.4
</commons.lang.version>
<commons.lang.version>
2.4
</commons.lang.version>
<des.version>
1.0.2-SNAPSHOT
</des.version>
<mapstruct.version>
1.3.1.Final
</mapstruct.version>
</properties>
</properties>
<!-- 子模块可选依赖 -->
<!-- 子模块可选依赖 -->
...
@@ -443,6 +444,12 @@
...
@@ -443,6 +444,12 @@
<version>
3.1.0
</version>
<version>
3.1.0
</version>
</dependency>
</dependency>
<dependency>
<groupId>
com.netease.mail.dp
</groupId>
<artifactId>
des-boot-starter
</artifactId>
<version>
${des.version}
</version>
</dependency>
</dependencies>
</dependencies>
<repositories>
<repositories>
...
...
yanxuan-qc-change-system-assembly/src/main/resources/config/online/application.properties
View file @
53f964e8
...
@@ -43,4 +43,8 @@ spring.redis.host=yx-cust23-online.ncr.cn-east-p1.internal.
...
@@ -43,4 +43,8 @@ spring.redis.host=yx-cust23-online.ncr.cn-east-p1.internal.
spring.redis.port
=
32427
spring.redis.port
=
32427
# supplier
# supplier
supplier.url
=
http://127.0.0.1:8550/proxy/test-v1.yanxuan-supplier-ms.service.mailsaas
supplier.url
=
http://127.0.0.1:8550/proxy/test-v1.yanxuan-supplier-ms.service.mailsaas
\ No newline at end of file
### des\u914D\u7F6E
# \u5BFC\u51FA\u6587\u4EF6\u4E0A\u4F20\u5230\u54EA\u4E2A\u670D\u52A1\u5668\uFF0C\u6709test\u548Conline\u53EF\u9009
des.prop.env
=
online
\ No newline at end of file
yanxuan-qc-change-system-assembly/src/main/resources/config/test/application.properties
View file @
53f964e8
...
@@ -41,4 +41,8 @@ spring.redis.host=yx-cust23-test.ncr.cn-east-p1.internal
...
@@ -41,4 +41,8 @@ spring.redis.host=yx-cust23-test.ncr.cn-east-p1.internal
spring.redis.port
=
31461
spring.redis.port
=
31461
# supplier
# supplier
supplier.url
=
http://127.0.0.1:8550/proxy/test-v1.yanxuan-supplier-ms.service.mailsaas
supplier.url
=
http://127.0.0.1:8550/proxy/test-v1.yanxuan-supplier-ms.service.mailsaas
\ No newline at end of file
### des\u914D\u7F6E
# \u5BFC\u51FA\u6587\u4EF6\u4E0A\u4F20\u5230\u54EA\u4E2A\u670D\u52A1\u5668\uFF0C\u6709test\u548Conline\u53EF\u9009
des.prop.env
=
test
\ No newline at end of file
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/biz/ChangeFlowBiz.java
View file @
53f964e8
...
@@ -53,6 +53,7 @@ import com.netease.mail.yanxuan.change.common.enums.ChangeFlowEnum;
...
@@ -53,6 +53,7 @@ import com.netease.mail.yanxuan.change.common.enums.ChangeFlowEnum;
import
com.netease.mail.yanxuan.change.common.enums.ChangeResultEnum
;
import
com.netease.mail.yanxuan.change.common.enums.ChangeResultEnum
;
import
com.netease.mail.yanxuan.change.common.enums.ChangeStatusEnum
;
import
com.netease.mail.yanxuan.change.common.enums.ChangeStatusEnum
;
import
com.netease.mail.yanxuan.change.common.enums.ChangeSubjectEnum
;
import
com.netease.mail.yanxuan.change.common.enums.ChangeSubjectEnum
;
import
com.netease.mail.yanxuan.change.common.enums.CreateSourceEnum
;
import
com.netease.mail.yanxuan.change.common.enums.FileTypeEnum
;
import
com.netease.mail.yanxuan.change.common.enums.FileTypeEnum
;
import
com.netease.mail.yanxuan.change.common.enums.FlowOperationTypeEnum
;
import
com.netease.mail.yanxuan.change.common.enums.FlowOperationTypeEnum
;
import
com.netease.mail.yanxuan.change.common.enums.FlowxOperationEnum
;
import
com.netease.mail.yanxuan.change.common.enums.FlowxOperationEnum
;
...
@@ -66,6 +67,7 @@ import com.netease.mail.yanxuan.change.dal.entity.ChangeRecord;
...
@@ -66,6 +67,7 @@ import com.netease.mail.yanxuan.change.dal.entity.ChangeRecord;
import
com.netease.mail.yanxuan.change.dal.entity.ChangeType
;
import
com.netease.mail.yanxuan.change.dal.entity.ChangeType
;
import
com.netease.mail.yanxuan.change.dal.mapper.ChangeRecordMapper
;
import
com.netease.mail.yanxuan.change.dal.mapper.ChangeRecordMapper
;
import
com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeCommanderPO
;
import
com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeCommanderPO
;
import
com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeConfigPo
;
import
com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeGoodsPrincipalPO
;
import
com.netease.mail.yanxuan.change.dal.meta.model.po.ChangeGoodsPrincipalPO
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeExecConfigReq
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeExecConfigReq
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCancelReq
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCancelReq
;
...
@@ -233,7 +235,7 @@ public class ChangeFlowBiz {
...
@@ -233,7 +235,7 @@ public class ChangeFlowBiz {
TaskCreateDTO
todoTask
=
todoService
.
createTodoTask
(
changeRecord
);
TaskCreateDTO
todoTask
=
todoService
.
createTodoTask
(
changeRecord
);
changeRecord
.
setTodoId
(
todoTask
.
getId
());
changeRecord
.
setTodoId
(
todoTask
.
getId
());
changeFlowService
.
updateRecord
(
changeRecord
);
changeFlowService
.
updateRecord
(
changeRecord
);
// 如果发起人=变更负责人
// 如果发起人=变更负责人
,直接提交到执行节点,发送邮件
if
(
changeCommander
.
equals
(
uid
))
{
if
(
changeCommander
.
equals
(
uid
))
{
log
.
debug
(
"[createAndSubmit] changeCommander:{}, uid:{}"
,
changeCommander
,
uid
);
log
.
debug
(
"[createAndSubmit] changeCommander:{}, uid:{}"
,
changeCommander
,
uid
);
String
nextNodeId
=
flowService
.
submitFlow
(
flowId
,
flowDataDTO
,
uid
,
String
nextNodeId
=
flowService
.
submitFlow
(
flowId
,
flowDataDTO
,
uid
,
...
@@ -242,30 +244,66 @@ public class ChangeFlowBiz {
...
@@ -242,30 +244,66 @@ public class ChangeFlowBiz {
throw
ExceptionFactory
.
createBiz
(
ResponseCode
.
SUBMIT_FLOW_ERROR
,
"首次提交节点失败"
);
throw
ExceptionFactory
.
createBiz
(
ResponseCode
.
SUBMIT_FLOW_ERROR
,
"首次提交节点失败"
);
}
}
// 更新节点id
// 更新节点id
changeRecord
.
setFlowNode
(
nodeId
);
changeRecord
.
setFlowNode
(
ChangeFlowEnum
.
CHANGE_FLOW_EXE
.
getNodeId
()
);
changeRecord
.
setUpdateTime
(
DateUtils
.
getCurrentTime
());
changeRecord
.
setUpdateTime
(
DateUtils
.
getCurrentTime
());
changeFlowService
.
updateRecord
(
changeRecord
);
changeFlowService
.
updateRecord
(
changeRecord
);
// todo:502节点,发送邮件,变更执行
HashMap
<
String
,
Object
>
param
=
new
HashMap
<>();
param
.
put
(
"changeId"
,
changeRecord
.
getId
());
param
.
put
(
"changeSubject"
,
changeRecord
.
getChangeSubject
());
param
.
put
(
"changeContent"
,
changeRecord
.
getChangeContent
());
param
.
put
(
"changeReason"
,
changeRecord
.
getChangeReason
());
param
.
put
(
"changeCommander"
,
changeRecord
.
getChangeCommander
());
param
.
put
(
"changeCommanderEmail"
,
changeRecord
.
getChangeCommander
());
param
.
put
(
"flowUrl"
,
changeRecord
.
getFlowId
());
param
.
put
(
"dataList"
,
changeExecRecords
);
qcSendEmail
(
changeCommander
,
changeRecord
.
getId
().
toString
(),
EmailTemplateEnum
.
YX_QC_CHANGE_EXECUTE
,
param
);
// 如果是供应商,再次发送供应商邮件
if
(
changeFlowCreateReq
.
getCreateSource
().
equals
(
CreateSourceEnum
.
QC
.
getType
()))
{
sendSupplierEmail
.
sendSupplierEmail
(
changeRecord
,
EmailTemplateEnum
.
YX_QC_CHANGE_EXECUTE
,
param
);
}
return
flowId
;
return
flowId
;
}
}
// todo: 变更发起人≠变更负责人,到达501节点,发送邮件,变更申请
// 如果发起人≠变更负责人,停留在变更申请提交节点,发送邮件
qcSendEmail
(
changeCommander
,
changeRecord
);
// 如果是供应商,再次发送供应商邮件
HashMap
<
String
,
Object
>
param
=
new
HashMap
<>();
HashMap
<
String
,
Object
>
param
=
new
HashMap
<>();
param
.
put
(
"changeId"
,
changeRecord
.
getId
());
param
.
put
(
"changeId"
,
changeRecord
.
getId
());
param
.
put
(
"changeSubject"
,
changeRecord
.
getChangeSubject
());
param
.
put
(
"changeSubject"
,
changeRecord
.
getChangeSubject
());
param
.
put
(
"changeType"
,
changeRecord
);
ChangeConfigPo
changeConfigPo
=
changeConfigService
.
queryInfoPo
(
parentChangeClassId
,
sonChangeClassId
);
param
.
put
(
"flowUrl"
,
"工单链接"
);
StringBuilder
changeType
=
new
StringBuilder
(
""
);
sendSupplierEmail
.
sendSupplierEmail
(
changeRecord
,
EmailTemplateEnum
.
YX_QC_CHANGE_RELEASE_FLOW
,
param
);
try
{
changeType
.
append
(
changeConfigPo
.
getChangeTypes
().
get
(
0
).
getTypeName
());
}
catch
(
Exception
e
)
{
log
.
error
(
"queryInfoPo error:{}"
,
JSON
.
toJSONString
(
changeConfigPo
));
}
try
{
changeType
.
append
(
changeConfigPo
.
getChangeTypes
().
get
(
1
).
getTypeName
());
}
catch
(
Exception
e
)
{
log
.
error
(
"queryInfoPo error:{}"
,
JSON
.
toJSONString
(
changeConfigPo
));
}
param
.
put
(
"changeType"
,
changeType
.
toString
());
param
.
put
(
"flowUrl"
,
changeRecord
.
getFlowId
());
qcSendEmail
(
changeCommander
,
changeRecord
.
getId
().
toString
(),
EmailTemplateEnum
.
YX_QC_CHANGE_RELEASE_FLOW
,
param
);
// 如果是供应商,再次发送供应商邮件
if
(
changeFlowCreateReq
.
getCreateSource
().
equals
(
CreateSourceEnum
.
QC
.
getType
()))
{
sendSupplierEmail
.
sendSupplierEmail
(
changeRecord
,
EmailTemplateEnum
.
YX_QC_CHANGE_RELEASE_FLOW
,
param
);
}
return
flowId
;
return
flowId
;
}
}
private
void
qcSendEmail
(
String
changeCommander
,
ChangeRecord
changeRecord
)
{
/**
* 严选QC端发送邮件
* @param changeCommander 负责人
* @param subjectParam 主体参数
* @param emailTemplateEnum 邮件模板
* @param param 正文参数
*/
public
void
qcSendEmail
(
String
changeCommander
,
String
subjectParam
,
EmailTemplateEnum
emailTemplateEnum
,
Map
<
String
,
Object
>
param
)
{
IusDepartmentReq
iusDepartmentReq
=
new
IusDepartmentReq
();
IusDepartmentReq
iusDepartmentReq
=
new
IusDepartmentReq
();
iusDepartmentReq
.
setHasOrgPos
(
true
);
iusDepartmentReq
.
setHasOrgPos
(
true
);
iusDepartmentReq
.
setIcac
(
true
);
iusDepartmentReq
.
setIcac
(
true
);
iusDepartmentReq
.
setUids
(
Collections
.
singletonList
(
changeCommander
));
iusDepartmentReq
.
setUids
(
Collections
.
singletonList
(
changeCommander
));
HashMap
<
String
,
List
<
SecondaryDepartments
>>
map
=
iusService
.
queryDepartment
(
iusDepartmentReq
);
HashMap
<
String
,
List
<
SecondaryDepartments
>>
map
=
iusService
.
queryDepartment
(
iusDepartmentReq
);
log
.
info
(
"[qcSendEmail] subjectParam:{}, map:{}"
,
subjectParam
,
map
);
List
<
SecondaryDepartments
>
secondaryDepartments
=
map
.
get
(
changeCommander
);
List
<
SecondaryDepartments
>
secondaryDepartments
=
map
.
get
(
changeCommander
);
List
<
String
>
ccList
=
new
ArrayList
<>();
List
<
String
>
ccList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
secondaryDepartments
))
{
if
(
CollectionUtils
.
isNotEmpty
(
secondaryDepartments
))
{
...
@@ -273,13 +311,8 @@ public class ChangeFlowBiz {
...
@@ -273,13 +311,8 @@ public class ChangeFlowBiz {
}
}
// 变更管理QM,所有邮件都要发
// 变更管理QM,所有邮件都要发
ccList
.
add
(
appConfig
.
getChangeManageQM
());
ccList
.
add
(
appConfig
.
getChangeManageQM
());
HashMap
<
String
,
Object
>
param
=
new
HashMap
<>();
iEmailService
.
sendEmail
(
Collections
.
singletonList
(
changeCommander
),
ccList
,
param
,
emailTemplateEnum
,
param
.
put
(
"changeId"
,
changeRecord
.
getId
());
subjectParam
);
param
.
put
(
"changeSubject"
,
changeRecord
.
getChangeSubject
());
param
.
put
(
"changeType"
,
changeRecord
);
param
.
put
(
"flowUrl"
,
"工单链接"
);
iEmailService
.
sendEmail
(
Collections
.
singletonList
(
changeCommander
),
ccList
,
param
,
EmailTemplateEnum
.
YX_QC_CHANGE_RELEASE_FLOW
,
Collections
.
singletonList
(
changeRecord
.
getId
().
toString
()));
}
}
private
List
<
ChangeFile
>
buildChangeFileRecord
(
Long
changeRecordId
,
List
<
ChangeFlowFile
>
files
,
Integer
type
)
{
private
List
<
ChangeFile
>
buildChangeFileRecord
(
Long
changeRecordId
,
List
<
ChangeFlowFile
>
files
,
Integer
type
)
{
...
@@ -462,8 +495,20 @@ public class ChangeFlowBiz {
...
@@ -462,8 +495,20 @@ public class ChangeFlowBiz {
List
<
ChangeFile
>
changeFiles
=
buildChangeFileRecord
(
changeRecord
.
getId
(),
files
,
FileTypeEnum
.
CHANGE
.
getType
());
List
<
ChangeFile
>
changeFiles
=
buildChangeFileRecord
(
changeRecord
.
getId
(),
files
,
FileTypeEnum
.
CHANGE
.
getType
());
changeFiles
.
forEach
(
file
->
changeFileService
.
saveRecord
(
file
));
changeFiles
.
forEach
(
file
->
changeFileService
.
saveRecord
(
file
));
}
}
// todo: 502节点,发送邮件,变更执行
HashMap
<
String
,
Object
>
param
=
new
HashMap
<>();
param
.
put
(
"changeId"
,
changeRecord
.
getId
());
param
.
put
(
"changeSubject"
,
changeRecord
.
getChangeSubject
());
param
.
put
(
"changeContent"
,
changeRecord
.
getChangeContent
());
param
.
put
(
"changeReason"
,
changeRecord
.
getChangeReason
());
param
.
put
(
"changeCommander"
,
changeRecord
.
getChangeCommander
());
param
.
put
(
"changeCommanderEmail"
,
changeRecord
.
getChangeCommander
());
param
.
put
(
"flowUrl"
,
changeRecord
.
getFlowId
());
param
.
put
(
"dataList"
,
changeExecRecords
);
qcSendEmail
(
changeRecord
.
getChangeCommander
(),
changeRecord
.
getId
().
toString
(),
EmailTemplateEnum
.
YX_QC_CHANGE_EXECUTE
,
param
);
// 如果是供应商,再次发送供应商邮件
if
(
changeRecord
.
getCreateSource
().
equals
(
CreateSourceEnum
.
QC
.
getType
()))
{
sendSupplierEmail
.
sendSupplierEmail
(
changeRecord
,
EmailTemplateEnum
.
YX_QC_CHANGE_EXECUTE
,
param
);
}
return
submitNode
;
return
submitNode
;
case
CHANGE_FLOW_CONFIRM:
case
CHANGE_FLOW_CONFIRM:
Integer
changeResult
=
changeFlowSubmitReq
.
getChangeResult
();
Integer
changeResult
=
changeFlowSubmitReq
.
getChangeResult
();
...
@@ -495,7 +540,17 @@ public class ChangeFlowBiz {
...
@@ -495,7 +540,17 @@ public class ChangeFlowBiz {
changeFlowService
.
updateRecord
(
changeRecord
);
changeFlowService
.
updateRecord
(
changeRecord
);
changeExecRecordList
.
forEach
(
exec
->
changeFlowExecService
.
update
(
exec
));
changeExecRecordList
.
forEach
(
exec
->
changeFlowExecService
.
update
(
exec
));
todoService
.
progressTodoTask
(
changeRecord
,
OperateTypeEnum
.
FINISH
.
getType
());
todoService
.
progressTodoTask
(
changeRecord
,
OperateTypeEnum
.
FINISH
.
getType
());
// todo:完结工单,发送邮件
// 发送邮件
HashMap
<
String
,
Object
>
finishPartMap
=
new
HashMap
<>();
finishPartMap
.
put
(
"changeId"
,
changeRecord
.
getId
());
finishPartMap
.
put
(
"changeSubject"
,
changeRecord
.
getChangeSubject
());
finishPartMap
.
put
(
"flowUrl"
,
changeRecord
.
getFlowId
());
qcSendEmail
(
changeRecord
.
getChangeCommander
(),
changeRecord
.
getId
().
toString
(),
EmailTemplateEnum
.
YX_QC_CHANGE_FINISH
,
finishPartMap
);
// 如果是供应商,再次发送供应商邮件
if
(
changeRecord
.
getCreateSource
().
equals
(
CreateSourceEnum
.
QC
.
getType
()))
{
sendSupplierEmail
.
sendSupplierEmail
(
changeRecord
,
EmailTemplateEnum
.
YX_QC_CHANGE_FINISH
,
finishPartMap
);
}
return
confirmNode
;
return
confirmNode
;
case
CANCEL:
case
CANCEL:
// 取消填写取消原因
// 取消填写取消原因
...
@@ -509,7 +564,16 @@ public class ChangeFlowBiz {
...
@@ -509,7 +564,16 @@ public class ChangeFlowBiz {
changeRecord
.
setUpdateTime
(
DateUtils
.
getCurrentTime
());
changeRecord
.
setUpdateTime
(
DateUtils
.
getCurrentTime
());
changeFlowService
.
updateRecord
(
changeRecord
);
changeFlowService
.
updateRecord
(
changeRecord
);
todoService
.
progressTodoTask
(
changeRecord
,
OperateTypeEnum
.
FINISH
.
getType
());
todoService
.
progressTodoTask
(
changeRecord
,
OperateTypeEnum
.
FINISH
.
getType
());
// todo:完结工单,发送邮件
// 发送邮件
HashMap
<
String
,
Object
>
cancelMap
=
new
HashMap
<>();
cancelMap
.
put
(
"changeId"
,
changeRecord
.
getId
());
cancelMap
.
put
(
"changeSubject"
,
changeRecord
.
getChangeSubject
());
cancelMap
.
put
(
"flowUrl"
,
changeRecord
.
getFlowId
());
qcSendEmail
(
changeRecord
.
getChangeCommander
(),
changeRecord
.
getId
().
toString
(),
EmailTemplateEnum
.
YX_QC_CHANGE_FINISH
,
cancelMap
);
// 如果是供应商,再次发送供应商邮件
if
(
changeRecord
.
getCreateSource
().
equals
(
CreateSourceEnum
.
QC
.
getType
()))
{
sendSupplierEmail
.
sendSupplierEmail
(
changeRecord
,
EmailTemplateEnum
.
YX_QC_CHANGE_FINISH
,
cancelMap
);
}
return
cancelNode
;
return
cancelNode
;
case
DELAY:
case
DELAY:
// 延期不流转工单
// 延期不流转工单
...
@@ -592,7 +656,11 @@ public class ChangeFlowBiz {
...
@@ -592,7 +656,11 @@ public class ChangeFlowBiz {
changeRecord
.
setCancelReason
(
req
.
getCancelReason
());
changeRecord
.
setCancelReason
(
req
.
getCancelReason
());
changeRecord
.
setUpdateTime
(
DateUtils
.
getCurrentTime
());
changeRecord
.
setUpdateTime
(
DateUtils
.
getCurrentTime
());
todoService
.
progressTodoTask
(
changeRecord
,
OperateTypeEnum
.
FINISH
.
getType
());
todoService
.
progressTodoTask
(
changeRecord
,
OperateTypeEnum
.
FINISH
.
getType
());
// todo:取消501节点,取消工单,发送邮件
/*qcSendEmail(changeCommander, changeRecord.getId().toString(), EmailTemplateEnum.YX_QC_CHANGE_RELEASE_FLOW, param);
// 如果是供应商,再次发送供应商邮件
if (changeRecord.getCreateSource().equals(CreateSourceEnum.QC.getType())) {
sendSupplierEmail.sendSupplierEmail(changeRecord, EmailTemplateEnum.YX_QC_CHANGE_RELEASE_FLOW, param);
}*/
return
changeFlowService
.
updateRecord
(
changeRecord
);
return
changeFlowService
.
updateRecord
(
changeRecord
);
}
}
...
@@ -710,10 +778,12 @@ public class ChangeFlowBiz {
...
@@ -710,10 +778,12 @@ public class ChangeFlowBiz {
}
}
public
ChangeFlowListVO
query
(
Integer
page
,
Integer
pageSize
,
ChangeFlowListQueryReq
changeFlowListQueryReq
)
{
public
ChangeFlowListVO
query
(
Integer
page
,
Integer
pageSize
,
ChangeFlowListQueryReq
changeFlowListQueryReq
)
{
log
.
info
(
"[query] page:{}, pageSize:{}, changeFlowListQueryReq:{}"
,
page
,
pageSize
,
JSON
.
toJSONString
(
changeFlowListQueryReq
));
log
.
info
(
"[query] page:{}, pageSize:{}, changeFlowListQueryReq:{}"
,
page
,
pageSize
,
JSON
.
toJSONString
(
changeFlowListQueryReq
));
//进行分页
//进行分页
PageHelper
.
startPage
(
page
,
pageSize
);
PageHelper
.
startPage
(
page
,
pageSize
);
PageInfo
<
ChangeRecord
>
changeRecordPageInfo
=
new
PageInfo
<>(
changeRecordMapper
.
selectByCondition
(
changeFlowListQueryReq
));
PageInfo
<
ChangeRecord
>
changeRecordPageInfo
=
new
PageInfo
<>(
changeRecordMapper
.
selectByCondition
(
changeFlowListQueryReq
));
List
<
ChangeRecord
>
changeRecords
=
changeRecordPageInfo
.
getList
();
List
<
ChangeRecord
>
changeRecords
=
changeRecordPageInfo
.
getList
();
List
<
ChangeFlowVO
>
list
=
new
ArrayList
<>();
List
<
ChangeFlowVO
>
list
=
new
ArrayList
<>();
// 处理数据
// 处理数据
...
@@ -747,7 +817,7 @@ public class ChangeFlowBiz {
...
@@ -747,7 +817,7 @@ public class ChangeFlowBiz {
return
changeFlowVO
;
return
changeFlowVO
;
}).
collect
(
Collectors
.
toList
());
}).
collect
(
Collectors
.
toList
());
}
}
PageVO
pageVO
=
buildPageVo
(
list
.
size
(),
pageSize
,
page
);
PageVO
pageVO
=
buildPageVo
(
changeRecordPageInfo
.
getTotal
(),
pageSize
,
page
);
ChangeFlowListVO
changeFlowListVO
=
new
ChangeFlowListVO
();
ChangeFlowListVO
changeFlowListVO
=
new
ChangeFlowListVO
();
changeFlowListVO
.
setPageVo
(
pageVO
);
changeFlowListVO
.
setPageVo
(
pageVO
);
changeFlowListVO
.
setChangeFlowList
(
list
);
changeFlowListVO
.
setChangeFlowList
(
list
);
...
@@ -757,12 +827,13 @@ public class ChangeFlowBiz {
...
@@ -757,12 +827,13 @@ public class ChangeFlowBiz {
/**
/**
* 构建分页信息
* 构建分页信息
*
*
* @param total
Count
* @param total
* @param pageSize
* @param pageSize
* @param page
* @param page
* @return
* @return
*/
*/
private
PageVO
buildPageVo
(
int
totalCount
,
Integer
pageSize
,
Integer
page
)
{
private
PageVO
buildPageVo
(
Long
total
,
Integer
pageSize
,
Integer
page
)
{
Integer
totalCount
=
Math
.
toIntExact
(
total
);
int
totalPage
;
int
totalPage
;
int
i
=
totalCount
%
pageSize
;
int
i
=
totalCount
%
pageSize
;
if
(
i
!=
0
)
{
if
(
i
!=
0
)
{
...
...
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/callback/ChangeFlowExportCallback.java
0 → 100644
View file @
53f964e8
/**
* @(#)ChangeFlowExportCallback.java, 2022/12/8.
* <p/>
* Copyright 2022 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package
com
.
netease
.
mail
.
yanxuan
.
change
.
biz
.
callback
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.alibaba.fastjson.JSON
;
import
com.google.common.collect.Lists
;
import
com.netease.mail.dp.des.process.api.entity.CallbackQueryReq
;
import
com.netease.mail.dp.des.process.api.entity.ExcelCell
;
import
com.netease.mail.dp.des.process.api.entity.ExcelTitle
;
import
com.netease.mail.dp.des.process.api.entity.PivotTable
;
import
com.netease.mail.dp.des.starter.callback.DesCallbackService
;
import
com.netease.mail.yanxuan.change.biz.service.ChangeFlowExportQuery
;
import
com.netease.mail.yanxuan.change.biz.service.change.ChangeTypeService
;
import
com.netease.mail.yanxuan.change.common.enums.ChangeSubjectEnum
;
import
com.netease.mail.yanxuan.change.common.util.ExcelUtil
;
import
com.netease.mail.yanxuan.change.dal.entity.ChangeRecord
;
import
com.netease.mail.yanxuan.change.dal.entity.ChangeType
;
import
com.netease.mail.yanxuan.change.dal.mapper.ChangeRecordMapper
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowListQueryReq
;
import
com.netease.mail.yanxuan.change.dal.meta.model.vo.ItemVO
;
import
com.netease.mail.yanxuan.change.integration.excel.ChangeFlowExcelDTO
;
import
com.netease.mail.yanxuan.change.integration.excel.ChangeFlowExcelVo
;
import
lombok.extern.slf4j.Slf4j
;
/**
* @Author zcwang
* @Date 2022/12/8
*/
@Slf4j
@Component
public
class
ChangeFlowExportCallback
implements
DesCallbackService
{
@Autowired
private
ChangeRecordMapper
changeRecordMapper
;
@Autowired
private
ChangeTypeService
changeTypeService
;
@Override
public
ExcelTitle
queryExcelTitle
(
CallbackQueryReq
req
)
{
log
.
info
(
"[op: change flow export callback queryExcelTitle] req={}"
,
JSON
.
toJSONString
(
req
));
ChangeFlowExportQuery
query
=
JSON
.
parseObject
(
req
.
getParamJson
(),
ChangeFlowExportQuery
.
class
);
ChangeFlowListQueryReq
changeFlowListQueryReq
=
new
ChangeFlowListQueryReq
();
BeanUtils
.
copyProperties
(
query
,
changeFlowListQueryReq
);
List
<
ChangeRecord
>
list
=
changeRecordMapper
.
selectByCondition
(
changeFlowListQueryReq
);
ExcelTitle
excelTitle
=
ExcelUtil
.
fetchExceltile
(
ChangeFlowExcelVo
.
class
);
excelTitle
.
setTotal
((
long
)
list
.
size
());
log
.
info
(
"[op: change flow export callback queryExcelTitle] result={}"
,
JSON
.
toJSONString
(
excelTitle
));
return
excelTitle
;
}
@Override
public
List
<
List
<
ExcelCell
>>
queryExcelData
(
CallbackQueryReq
req
)
{
log
.
info
(
"[op: address book export callback queryExcelData] req={}"
,
JSON
.
toJSONString
(
req
));
ChangeFlowExportQuery
query
=
JSON
.
parseObject
(
req
.
getParamJson
(),
ChangeFlowExportQuery
.
class
);
List
<
ChangeFlowExcelDTO
>
list
=
getExportList
(
query
);
return
list
.
stream
().
map
(
ChangeFlowExcelVo:
:
init
).
collect
(
Collectors
.
toList
());
}
private
List
<
ChangeFlowExcelDTO
>
getExportList
(
ChangeFlowExportQuery
query
)
{
ChangeFlowListQueryReq
changeFlowListQueryReq
=
new
ChangeFlowListQueryReq
();
BeanUtils
.
copyProperties
(
query
,
changeFlowListQueryReq
);
List
<
ChangeRecord
>
changeRecords
=
changeRecordMapper
.
selectByCondition
(
changeFlowListQueryReq
);
if
(
CollectionUtils
.
isEmpty
(
changeRecords
))
{
return
Lists
.
newArrayList
();
}
return
changeRecords
.
stream
().
map
(
record
->
{
ChangeFlowExcelDTO
changeFlowExcelDTO
=
new
ChangeFlowExcelDTO
();
changeFlowExcelDTO
.
setId
(
record
.
getId
());
changeFlowExcelDTO
.
setChangeSubject
(
ChangeSubjectEnum
.
getChangeSubjectEnum
(
record
.
getChangeSubject
()).
getDesc
());
ChangeType
parentChangeType
=
changeTypeService
.
getChangeTypeById
(
record
.
getParentChangeClassId
());
ChangeType
sonChangeType
=
changeTypeService
.
getChangeTypeById
(
record
.
getSonChangeClassId
());
changeFlowExcelDTO
.
setChangeType
(
parentChangeType
.
getTypeName
()
+
">"
+
sonChangeType
.
getTypeName
());
changeFlowExcelDTO
.
setChangeDepartment
(
record
.
getChangeDepartment
());
changeFlowExcelDTO
.
setChangeContent
(
record
.
getChangeContent
());
changeFlowExcelDTO
.
setChangeCommander
(
record
.
getChangeCommander
());
String
changeItemJsonStr
=
record
.
getChangeItem
();
if
(
StringUtils
.
isNotBlank
(
changeItemJsonStr
))
{
List
<
ItemVO
>
itemVOS
=
JSON
.
parseArray
(
changeItemJsonStr
,
ItemVO
.
class
);
changeFlowExcelDTO
.
setChangeItems
(
itemVOS
.
stream
().
map
(
item
->
item
.
getItemId
()
+
item
.
getItemName
())
.
collect
(
Collectors
.
joining
(
","
)));
}
if
(
StringUtils
.
isNotBlank
(
record
.
getChangeSupplier
()))
{
changeFlowExcelDTO
.
setSupplier
(
record
.
getChangeSupplier
());
}
changeFlowExcelDTO
.
setChangeState
(
record
.
getState
());
// todo:变更发起人组织查询:姓名(组织架构三级部门)/供应商ID/system+发起时间
changeFlowExcelDTO
.
setChangeCreator
(
record
.
getCreator
());
changeFlowExcelDTO
.
setExecDepartmentStrList
(
record
.
getParticipateChangeExecDepartment
());
changeFlowExcelDTO
.
setCreateTime
(
record
.
getCreateTime
());
return
changeFlowExcelDTO
;
}).
collect
(
Collectors
.
toList
());
}
@Override
public
PivotTable
queryPivotTable
(
CallbackQueryReq
callbackQueryReq
)
{
return
null
;
}
}
\ No newline at end of file
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/config/AppConfig.java
View file @
53f964e8
...
@@ -50,4 +50,7 @@ public class AppConfig {
...
@@ -50,4 +50,7 @@ public class AppConfig {
*/
*/
@Value
(
"${changeManageQM:cuiyixian@corp.netease.com}"
)
@Value
(
"${changeManageQM:cuiyixian@corp.netease.com}"
)
private
String
changeManageQM
;
private
String
changeManageQM
;
@Value
(
"${exportLimit:20}"
)
private
Long
exportLimit
;
}
}
\ No newline at end of file
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/service/ChangeFlowExportQuery.java
0 → 100644
View file @
53f964e8
/**
* @(#)ChangeFlowExportQuery.java, 2022/12/8.
* <p/>
* Copyright 2022 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package
com
.
netease
.
mail
.
yanxuan
.
change
.
biz
.
service
;
import
com.netease.mail.yanxuan.change.common.enums.CreateSourceEnum
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
/**
* @Author zcwang
* @Date 2022/12/8
*/
@Data
public
class
ChangeFlowExportQuery
{
/**
* 变更商品(变更主体为商品时有效)
*/
private
String
itemId
;
/**
* 变更供应商(变更主体为供应商时有效)
*/
private
String
supplier
;
/**
* 一级变更类型id
*/
private
Long
parentChangeClassId
;
/**
* 二级变更类型id
*/
private
Long
sonChangeClassId
;
/**
* 工单状态
*/
private
Integer
changeState
;
/**
* 变更负责人
*/
private
String
changeCommander
;
/**
* 变更负责部门名
*/
private
String
changeDepartment
;
/**
* 变更行动部门
*/
private
String
changeExecDepartment
;
/**
* 开始时间
*/
private
Long
startTime
;
/**
* 结束时间
*/
private
Long
endTime
;
/**
* 创建端
* @see CreateSourceEnum
*/
private
Integer
createSource
;
/**
* 服务编码 yanxuan-qc-change-flow
*/
protected
String
serviceCode
;
/**
* 登录用户
*/
protected
String
uid
;
}
\ No newline at end of file
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/service/DESExportService.java
0 → 100644
View file @
53f964e8
/**
* @(#)DESExport.java, 2022/12/8.
* <p/>
* Copyright 2022 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package
com
.
netease
.
mail
.
yanxuan
.
change
.
biz
.
service
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.alibaba.fastjson.JSON
;
import
com.netease.mail.dp.des.common.api.enums.DataType
;
import
com.netease.mail.dp.des.common.api.enums.TaskType
;
import
com.netease.mail.dp.des.common.api.query.CallbackQueryParam
;
import
com.netease.mail.dp.des.interaction.api.req.TaskReq
;
import
com.netease.mail.dp.des.starter.client.DesClient
;
import
com.netease.mail.yanxuan.change.biz.config.AppConfig
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowRequest
;
/**
* @Author zcwang
* @Date 2022/12/8
*/
@Component
@Slf4j
public
class
DESExportService
{
@Autowired
private
DesClient
desClient
;
@Autowired
private
AppConfig
appConfig
;
public
String
changeFlowExport
(
ChangeFlowRequest
query
)
{
TaskReq
taskReq
=
new
TaskReq
();
taskReq
.
setUserEmail
(
query
.
getUid
());
taskReq
.
setProductCode
(
query
.
getServiceCode
());
taskReq
.
setFileName
(
"变更管理列表导出"
);
taskReq
.
setTaskType
(
TaskType
.
BIVARIATE
);
taskReq
.
setDataType
(
DataType
.
CALLBACK
);
CallbackQueryParam
callbackQueryParam
=
new
CallbackQueryParam
();
callbackQueryParam
.
setParamJson
(
JSON
.
toJSONString
(
query
));
callbackQueryParam
.
setCallbackBeanName
(
"changeFlowExportCallback"
);
callbackQueryParam
.
setLimit
(
appConfig
.
getExportLimit
());
taskReq
.
setCallbackQueryParam
(
callbackQueryParam
);
String
desResult
=
desClient
.
addTask
(
taskReq
);
log
.
info
(
"create task result: {}"
,
desResult
);
return
desResult
;
}
}
\ No newline at end of file
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/service/impl/InteriorChangeConfigServiceImpl.java
View file @
53f964e8
...
@@ -7,7 +7,6 @@ import java.util.List;
...
@@ -7,7 +7,6 @@ import java.util.List;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
com.netease.mail.yanxuan.change.integration.flow.supplier.FlowRpcSupplierInfoService
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
...
@@ -15,6 +14,7 @@ import org.slf4j.LoggerFactory;
...
@@ -15,6 +14,7 @@ import org.slf4j.LoggerFactory;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.Assert
;
import
org.springframework.util.Assert
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.netease.mail.yanxuan.change.biz.config.AppConfig
;
import
com.netease.mail.yanxuan.change.biz.config.AppConfig
;
...
@@ -37,6 +37,7 @@ import com.netease.mail.yanxuan.change.dal.meta.model.vo.ItemVO;
...
@@ -37,6 +37,7 @@ import com.netease.mail.yanxuan.change.dal.meta.model.vo.ItemVO;
import
com.netease.mail.yanxuan.change.integration.flow.goods.ItemcenterApiRpcService
;
import
com.netease.mail.yanxuan.change.integration.flow.goods.ItemcenterApiRpcService
;
import
com.netease.mail.yanxuan.change.integration.flow.goods.PfuApiRpcService
;
import
com.netease.mail.yanxuan.change.integration.flow.goods.PfuApiRpcService
;
import
com.netease.mail.yanxuan.change.integration.flow.goods.QcApiRpcService
;
import
com.netease.mail.yanxuan.change.integration.flow.goods.QcApiRpcService
;
import
com.netease.mail.yanxuan.change.integration.flow.supplier.FlowRpcSupplierInfoService
;
import
com.netease.mail.yanxuan.change.integration.flow.supplier.FlowRpcSupplierSendService
;
import
com.netease.mail.yanxuan.change.integration.flow.supplier.FlowRpcSupplierSendService
;
import
com.netease.mail.yanxuan.change.integration.flow.supplier.req.SupplierRelatedUserReq
;
import
com.netease.mail.yanxuan.change.integration.flow.supplier.req.SupplierRelatedUserReq
;
import
com.netease.mail.yanxuan.change.integration.flow.supplier.rsp.SupplierUserRsp
;
import
com.netease.mail.yanxuan.change.integration.flow.supplier.rsp.SupplierUserRsp
;
...
@@ -120,7 +121,8 @@ public class InteriorChangeConfigServiceImpl implements InteriorChangeConfigServ
...
@@ -120,7 +121,8 @@ public class InteriorChangeConfigServiceImpl implements InteriorChangeConfigServ
* @return
* @return
*/
*/
private
GoodsResponseRpc
queryGoodsCommander
(
ChangeCommanderEnum
commanderEnum
,
List
<
Long
>
goodsInfos
,
String
commander
){
private
GoodsResponseRpc
queryGoodsCommander
(
ChangeCommanderEnum
commanderEnum
,
List
<
Long
>
goodsInfos
,
String
commander
){
if
(
commanderEnum
.
getId
()
!=
ChangeCommanderEnum
.
GOODS_ASSOCIATED
.
getId
()
||
CollectionUtils
.
isEmpty
(
goodsInfos
)
||
commander
==
null
){
if
(!
commanderEnum
.
getId
().
equals
(
ChangeCommanderEnum
.
GOODS_ASSOCIATED
.
getId
())
||
CollectionUtils
.
isEmpty
(
goodsInfos
)
||
commander
==
null
)
{
return
null
;
return
null
;
}
}
Map
<
String
,
GoodsResponseRpc
>
map
=
new
HashMap
<
String
,
GoodsResponseRpc
>();
Map
<
String
,
GoodsResponseRpc
>
map
=
new
HashMap
<
String
,
GoodsResponseRpc
>();
...
@@ -318,7 +320,7 @@ public class InteriorChangeConfigServiceImpl implements InteriorChangeConfigServ
...
@@ -318,7 +320,7 @@ public class InteriorChangeConfigServiceImpl implements InteriorChangeConfigServ
return
commanderResponse
;
return
commanderResponse
;
case
SUPPLIERS_ASSOCIATED:
case
SUPPLIERS_ASSOCIATED:
String
changeSupplier
=
req
.
getChangeSupplier
();
String
changeSupplier
=
req
.
getChangeSupplier
();
Assert
.
isTrue
(
StringUtils
.
isNotBlank
(
changeSupplier
),
"变更负责人为供应商时,
商品列表
不可为空"
);
Assert
.
isTrue
(
StringUtils
.
isNotBlank
(
changeSupplier
),
"变更负责人为供应商时,
供应商
不可为空"
);
try
{
try
{
GoodsResponseRpc
supplierResponseRpc
=
queryChangeSupplier
(
changeCommanderEnum
,
GoodsResponseRpc
supplierResponseRpc
=
queryChangeSupplier
(
changeCommanderEnum
,
changeSupplier
,
changeExecUser
);
changeSupplier
,
changeExecUser
);
...
...
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/service/impl/change/AdminChangeConfigServiceImpl.java
View file @
53f964e8
package
com
.
netease
.
mail
.
yanxuan
.
change
.
biz
.
service
.
impl
.
change
;
package
com
.
netease
.
mail
.
yanxuan
.
change
.
biz
.
service
.
impl
.
change
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.netease.mail.yanxuan.change.biz.meta.exception.ExceptionFactory
;
import
com.netease.mail.yanxuan.change.biz.meta.exception.ExceptionFactory
;
import
com.netease.mail.yanxuan.change.biz.service.change.ChangeConfigService
;
import
com.netease.mail.yanxuan.change.biz.service.change.ChangeConfigService
;
...
@@ -104,7 +105,7 @@ public class AdminChangeConfigServiceImpl implements AdminChangeConfigService {
...
@@ -104,7 +105,7 @@ public class AdminChangeConfigServiceImpl implements AdminChangeConfigService {
changeConfigVO
=
getChangeConfigVO
(
changeConfig
,
changeTypes
,
changeExecConfigs
);
changeConfigVO
=
getChangeConfigVO
(
changeConfig
,
changeTypes
,
changeExecConfigs
);
//如果没有查询后返回redis
//如果没有查询后返回redis
getValue
().
set
(
CHANGE_CONFIG
+
id
,
changeConfigVO
,
1
,
TimeUnit
.
DAYS
);
getValue
().
set
(
CHANGE_CONFIG
+
id
,
changeConfigVO
,
1
,
TimeUnit
.
DAYS
);
return
AjaxResult
.
success
(
JSON
Object
.
parseObject
(
changeConfigVO
,
ChangeConfigVO
.
class
));
return
AjaxResult
.
success
(
JSON
.
parseObject
(
changeConfigVO
,
ChangeConfigVO
.
class
));
}
}
@Override
@Override
...
...
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/service/rpc/SupplierSendService.java
View file @
53f964e8
...
@@ -42,14 +42,13 @@ public class SupplierSendService {
...
@@ -42,14 +42,13 @@ public class SupplierSendService {
* @param emailTemplateEnum
* @param emailTemplateEnum
* @param param
* @param param
*/
*/
public
void
sendSupplierEmail
(
ChangeRecord
changeRecord
,
EmailTemplateEnum
emailTemplateEnum
,
Map
<
String
,
Object
>
param
)
{
public
void
sendSupplierEmail
(
ChangeRecord
changeRecord
,
EmailTemplateEnum
emailTemplateEnum
,
Map
<
String
,
Object
>
param
)
{
SupplierSendEmailReq
req
=
new
SupplierSendEmailReq
();
SupplierSendEmailReq
req
=
new
SupplierSendEmailReq
();
req
.
setSupplierId
(
changeRecord
.
getChangeSupplier
());
req
.
setSupplierId
(
changeRecord
.
getChangeSupplier
());
req
.
setMailSubject
(
String
.
format
(
emailTemplateEnum
.
getSubject
(),
changeRecord
.
getId
()));
req
.
setMailSubject
(
String
.
format
(
emailTemplateEnum
.
getSubject
(),
changeRecord
.
getId
()));
EmailFactor
emailFactor
=
new
EmailFactor
();
EmailFactor
factor
=
EmailFactor
.
builder
().
data
(
param
).
emailTemplateEnum
(
emailTemplateEnum
)
EmailFactor
factor
=
EmailFactor
.
builder
()
.
subject
(
req
.
getMailSubject
()).
type
(
EmailTypeEnum
.
HTML
.
getType
()).
build
();
.
data
(
param
).
emailTemplateEnum
(
emailTemplateEnum
)
.
subject
(
req
.
getMailSubject
()).
type
(
EmailTypeEnum
.
HTML
.
getType
()).
build
();
req
.
setMailContent
(
this
.
content
(
factor
));
req
.
setMailContent
(
this
.
content
(
factor
));
log
.
debug
(
"[sendSupplierEmail] 发送供应商邮件内容 flowId:{}, req:{}"
,
changeRecord
.
getFlowId
(),
JSON
.
toJSONString
(
req
));
log
.
debug
(
"[sendSupplierEmail] 发送供应商邮件内容 flowId:{}, req:{}"
,
changeRecord
.
getFlowId
(),
JSON
.
toJSONString
(
req
));
flowRpcSupplierSendService
.
sendEmail
(
req
);
flowRpcSupplierSendService
.
sendEmail
(
req
);
...
...
yanxuan-qc-change-system-biz/src/main/java/com/netease/mail/yanxuan/change/biz/task/AutoSubmit.java
View file @
53f964e8
...
@@ -20,11 +20,14 @@ import com.alibaba.fastjson.JSON;
...
@@ -20,11 +20,14 @@ import com.alibaba.fastjson.JSON;
import
com.netease.mail.yanxuan.change.biz.biz.ChangeFlowBiz
;
import
com.netease.mail.yanxuan.change.biz.biz.ChangeFlowBiz
;
import
com.netease.mail.yanxuan.change.biz.service.ChangeFlowService
;
import
com.netease.mail.yanxuan.change.biz.service.ChangeFlowService
;
import
com.netease.mail.yanxuan.change.biz.service.rpc.FlowService
;
import
com.netease.mail.yanxuan.change.biz.service.rpc.FlowService
;
import
com.netease.mail.yanxuan.change.biz.service.rpc.SupplierSendService
;
import
com.netease.mail.yanxuan.change.common.bean.CommonConstants
;
import
com.netease.mail.yanxuan.change.common.bean.CommonConstants
;
import
com.netease.mail.yanxuan.change.common.enums.ChangeFlowEnum
;
import
com.netease.mail.yanxuan.change.common.enums.ChangeFlowEnum
;
import
com.netease.mail.yanxuan.change.common.enums.CreateSourceEnum
;
import
com.netease.mail.yanxuan.change.common.enums.FlowOperationTypeEnum
;
import
com.netease.mail.yanxuan.change.common.enums.FlowOperationTypeEnum
;
import
com.netease.mail.yanxuan.change.common.util.DateUtils
;
import
com.netease.mail.yanxuan.change.common.util.DateUtils
;
import
com.netease.mail.yanxuan.change.dal.entity.ChangeRecord
;
import
com.netease.mail.yanxuan.change.dal.entity.ChangeRecord
;
import
com.netease.mail.yanxuan.change.integration.email.enums.EmailTemplateEnum
;
import
com.netease.mail.yanxuan.dschedule.core.biz.model.ReturnT
;
import
com.netease.mail.yanxuan.dschedule.core.biz.model.ReturnT
;
import
com.netease.mail.yanxuan.dschedule.core.handler.IJobHandler
;
import
com.netease.mail.yanxuan.dschedule.core.handler.IJobHandler
;
import
com.netease.mail.yanxuan.dschedule.core.handler.annotation.JobHandler
;
import
com.netease.mail.yanxuan.dschedule.core.handler.annotation.JobHandler
;
...
@@ -47,6 +50,12 @@ public class AutoSubmit extends IJobHandler {
...
@@ -47,6 +50,12 @@ public class AutoSubmit extends IJobHandler {
@Autowired
@Autowired
private
FlowService
flowService
;
private
FlowService
flowService
;
@Autowired
private
ChangeFlowBiz
changeFlowBiz
;
@Autowired
private
SupplierSendService
sendSupplierEmail
;
@Override
@Override
public
ReturnT
<
String
>
execute
(
String
...
strings
)
throws
Exception
{
public
ReturnT
<
String
>
execute
(
String
...
strings
)
throws
Exception
{
log
.
info
(
"AutoSubmit start"
);
log
.
info
(
"AutoSubmit start"
);
...
@@ -100,6 +109,16 @@ public class AutoSubmit extends IJobHandler {
...
@@ -100,6 +109,16 @@ public class AutoSubmit extends IJobHandler {
log
.
debug
(
"[progressRecord] submit error, flowId{}"
,
flowId
);
log
.
debug
(
"[progressRecord] submit error, flowId{}"
,
flowId
);
}
}
}
}
// todo: 到达执行确认时间,发送邮件
// 发送邮件
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"changeId"
,
changeRecord
.
getId
());
map
.
put
(
"changeSubject"
,
changeRecord
.
getChangeSubject
());
map
.
put
(
"flowUrl"
,
changeRecord
.
getFlowId
());
changeFlowBiz
.
qcSendEmail
(
changeRecord
.
getChangeCommander
(),
changeRecord
.
getId
().
toString
(),
EmailTemplateEnum
.
YX_QC_CHANGE_AFFIRM
,
map
);
// 如果是供应商,再次发送供应商邮件
if
(
changeRecord
.
getCreateSource
().
equals
(
CreateSourceEnum
.
QC
.
getType
()))
{
sendSupplierEmail
.
sendSupplierEmail
(
changeRecord
,
EmailTemplateEnum
.
YX_QC_CHANGE_AFFIRM
,
map
);
}
}
}
}
}
\ No newline at end of file
yanxuan-qc-change-system-common/src/main/java/com/netease/mail/yanxuan/change/common/anno/ExcelTitleName.java
0 → 100644
View file @
53f964e8
package
com
.
netease
.
mail
.
yanxuan
.
change
.
common
.
anno
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
/**
* @author lfmu
*/
@Target
(
value
=
{
ElementType
.
TYPE_PARAMETER
,
ElementType
.
FIELD
})
@Retention
(
value
=
RetentionPolicy
.
RUNTIME
)
public
@interface
ExcelTitleName
{
/**
* 表头列名
*/
String
title
()
default
""
;
/**
* 列数
*/
int
order
()
default
-
1
;
}
yanxuan-qc-change-system-common/src/main/java/com/netease/mail/yanxuan/change/common/enums/ChangeCommanderEnum.java
View file @
53f964e8
...
@@ -8,7 +8,7 @@ public enum ChangeCommanderEnum {
...
@@ -8,7 +8,7 @@ public enum ChangeCommanderEnum {
COMMANDER_ORIGINATOR
(
1
,
"发起人"
),
COMMANDER_ORIGINATOR
(
1
,
"发起人"
),
FIXED_PERSON
(
2
,
"固定人"
),
FIXED_PERSON
(
2
,
"固定人"
),
GOODS_ASSOCIATED
(
3
,
"
产
品关联角色"
),
GOODS_ASSOCIATED
(
3
,
"
商
品关联角色"
),
SUPPLIERS_ASSOCIATED
(
4
,
"供应商关联角色"
);
SUPPLIERS_ASSOCIATED
(
4
,
"供应商关联角色"
);
ChangeCommanderEnum
(
Integer
id
,
String
name
)
{
ChangeCommanderEnum
(
Integer
id
,
String
name
)
{
...
...
yanxuan-qc-change-system-common/src/main/java/com/netease/mail/yanxuan/change/common/enums/ChangePrincipalEnum.java
View file @
53f964e8
...
@@ -6,7 +6,7 @@ package com.netease.mail.yanxuan.change.common.enums;
...
@@ -6,7 +6,7 @@ package com.netease.mail.yanxuan.change.common.enums;
*/
*/
public
enum
ChangePrincipalEnum
{
public
enum
ChangePrincipalEnum
{
GOODS_BU
(
1
,
"商品
BU
"
),
GOODS_BU
(
1
,
"商品
开发
"
),
PURCHASE
(
2
,
"采购"
),
PURCHASE
(
2
,
"采购"
),
PROSPECTUS
(
3
,
"计划"
),
PROSPECTUS
(
3
,
"计划"
),
SQE
(
4
,
"SQE"
);
SQE
(
4
,
"SQE"
);
...
...
yanxuan-qc-change-system-common/src/main/java/com/netease/mail/yanxuan/change/common/util/ExcelUtil.java
0 → 100644
View file @
53f964e8
/**
* @(#)ExcelUtil.java, 2022/7/5.
* <p/>
* Copyright 2022 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package
com
.
netease
.
mail
.
yanxuan
.
change
.
common
.
util
;
import
java.io.InputStream
;
import
java.lang.reflect.Field
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
import
org.springframework.web.multipart.MultipartFile
;
import
com.netease.mail.dp.des.common.api.enums.ExcelCellType
;
import
com.netease.mail.dp.des.process.api.entity.ExcelCell
;
import
com.netease.mail.dp.des.process.api.entity.ExcelTitle
;
import
com.netease.mail.yanxuan.change.common.anno.ExcelTitleName
;
import
cn.afterturn.easypoi.excel.ExcelImportUtil
;
import
cn.afterturn.easypoi.excel.entity.ImportParams
;
/**
* @author ysl (wb.yeshunliang01@mesg.corp.netease.com)
*/
public
class
ExcelUtil
{
private
static
final
List
<
Field
>
NULL_FIELDS
=
Collections
.
emptyList
();
private
static
Map
<
Class
<?>,
List
<
Field
>>
annotedFieldMap
=
new
ConcurrentHashMap
<>(
4
);
/**
* 解析excel,转换成list
* @param file
* @param clazz
* @param <T>
* @return
*/
public
static
<
T
>
List
<
T
>
parseExcelList
(
MultipartFile
file
,
Class
<
T
>
clazz
)
{
List
<
T
>
list
;
try
{
InputStream
inputStream
=
file
.
getInputStream
();
ImportParams
importParams
=
new
ImportParams
();
list
=
ExcelImportUtil
.
importExcel
(
inputStream
,
clazz
,
importParams
);
}
catch
(
Exception
e
)
{
throw
new
IllegalArgumentException
(
"上传的文件错误"
);
}
return
list
;
}
public
static
<
T
>
ExcelTitle
fetchExceltile
(
Class
<
T
>
clazz
)
{
if
(
clazz
==
null
)
{
throw
new
RuntimeException
(
"clazz参数不能为空"
);
}
List
<
Field
>
sortedFields
=
fetchAnnotedFields
(
clazz
);
if
(
sortedFields
==
NULL_FIELDS
)
{
throw
new
RuntimeException
(
"未找到表头字段"
);
}
ExcelTitle
excelTitle
=
new
ExcelTitle
();
List
<
ExcelCell
>
excelCells
=
new
ArrayList
<>();
sortedFields
.
forEach
(
field
->
{
ExcelCell
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
field
.
getAnnotation
(
ExcelTitleName
.
class
).
title
());
excelCell
.
setCellType
(
ExcelCellType
.
NORMAL
);
excelCells
.
add
(
excelCell
);
});
excelTitle
.
setTitle
(
excelCells
);
return
excelTitle
;
}
private
static
<
T
>
List
<
Field
>
fetchAnnotedFields
(
Class
<
T
>
clazz
)
{
if
(
annotedFieldMap
.
containsKey
(
clazz
))
{
return
annotedFieldMap
.
get
(
clazz
);
}
Field
[]
fields
=
clazz
.
getDeclaredFields
();
Map
<
Field
,
ExcelTitleName
>
fieldMap
=
new
HashMap
<>(
4
);
for
(
Field
field:
fields
)
{
ExcelTitleName
column
=
field
.
getAnnotation
(
ExcelTitleName
.
class
);
if
(
column
==
null
)
{
continue
;
}
fieldMap
.
put
(
field
,
column
);
}
if
(
fieldMap
.
isEmpty
())
{
annotedFieldMap
.
put
(
clazz
,
NULL_FIELDS
);
return
NULL_FIELDS
;
}
List
<
Field
>
fieldList
=
new
ArrayList
<>(
fieldMap
.
keySet
());
Collections
.
sort
(
fieldList
,
(
field1
,
field2
)
->
{
ExcelTitleName
column1
=
fieldMap
.
get
(
field1
);
ExcelTitleName
column2
=
fieldMap
.
get
(
field2
);
return
column1
.
order
()
-
column2
.
order
();
});
annotedFieldMap
.
put
(
clazz
,
fieldList
);
return
fieldList
;
}
}
\ No newline at end of file
yanxuan-qc-change-system-dal/src/main/java/com/netease/mail/yanxuan/change/dal/entity/ChangeExecRecord.java
View file @
53f964e8
...
@@ -54,7 +54,7 @@ public class ChangeExecRecord {
...
@@ -54,7 +54,7 @@ public class ChangeExecRecord {
private
String
changeExecUser
;
private
String
changeExecUser
;
/**
/**
* 变更行动人
(不同类型存储不同内容)
* 变更行动人
邮箱
*/
*/
private
String
changeExecUserEmail
;
private
String
changeExecUserEmail
;
...
...
yanxuan-qc-change-system-dal/src/main/java/com/netease/mail/yanxuan/change/dal/meta/model/req/ChangeFlowListQueryReq.java
View file @
53f964e8
...
@@ -39,7 +39,7 @@ public class ChangeFlowListQueryReq {
...
@@ -39,7 +39,7 @@ public class ChangeFlowListQueryReq {
/**
/**
* 工单状态
* 工单状态
*/
*/
private
Integer
s
tate
;
private
Integer
changeS
tate
;
/**
/**
* 变更负责人
* 变更负责人
...
...
yanxuan-qc-change-system-dal/src/main/java/com/netease/mail/yanxuan/change/dal/meta/model/req/ChangeFlowRequest.java
0 → 100644
View file @
53f964e8
/**
* @(#)ChangeFlowRequest.java, 2022/12/8.
* <p/>
* Copyright 2022 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package
com
.
netease
.
mail
.
yanxuan
.
change
.
dal
.
meta
.
model
.
req
;
import
com.netease.mail.yanxuan.change.common.enums.CreateSourceEnum
;
import
lombok.Data
;
/**
* @Author zcwang
* @Date 2022/12/8
*/
@Data
public
class
ChangeFlowRequest
{
/**
* 变更商品(变更主体为商品时有效)
*/
private
String
itemId
;
/**
* 变更供应商(变更主体为供应商时有效)
*/
private
String
supplier
;
/**
* 一级变更类型id
*/
private
Long
parentChangeClassId
;
/**
* 二级变更类型id
*/
private
Long
sonChangeClassId
;
/**
* 工单状态
*/
private
Integer
changeState
;
/**
* 变更负责人
*/
private
String
changeCommander
;
/**
* 变更负责部门名
*/
private
String
changeDepartment
;
/**
* 变更行动部门
*/
private
String
changeExecDepartment
;
/**
* 开始时间
*/
private
Long
startTime
;
/**
* 结束时间
*/
private
Long
endTime
;
/**
* 创建端
* @see CreateSourceEnum
*/
private
Integer
createSource
;
private
String
serviceCode
;
private
String
uid
;
}
\ No newline at end of file
yanxuan-qc-change-system-dal/src/main/resources/mybatis/mapper/ChangeRecordMapper.xml
View file @
53f964e8
...
@@ -60,8 +60,8 @@
...
@@ -60,8 +60,8 @@
<if
test=
"sonChangeClassId != null"
>
<if
test=
"sonChangeClassId != null"
>
and son_change_class_id = #{sonChangeClassId}
and son_change_class_id = #{sonChangeClassId}
</if>
</if>
<if
test=
"
s
tate != null"
>
<if
test=
"
changeS
tate != null"
>
and `state` = #{
s
tate}
and `state` = #{
changeS
tate}
</if>
</if>
<if
test=
"changeCommander != null and changeCommander != ''"
>
<if
test=
"changeCommander != null and changeCommander != ''"
>
and `change_commander` = #{changeCommander}
and `change_commander` = #{changeCommander}
...
@@ -78,6 +78,7 @@
...
@@ -78,6 +78,7 @@
<if
test=
"endTime != null"
>
<if
test=
"endTime != null"
>
and create_time
<![CDATA[ < ]]>
#{endTime}
and create_time
<![CDATA[ < ]]>
#{endTime}
</if>
</if>
order by create_time desc
</where>
</where>
</select>
</select>
</mapper>
</mapper>
\ No newline at end of file
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/enums/EmailTemplateEnum.java
View file @
53f964e8
...
@@ -11,15 +11,15 @@ public enum EmailTemplateEnum {
...
@@ -11,15 +11,15 @@ public enum EmailTemplateEnum {
YX_QC_CHANGE_RELEASE_FLOW
(
"yxqc_change_release_flow"
,
"发起变更"
,
"【待处理】%s 变更申请提交 "
),
YX_QC_CHANGE_RELEASE_FLOW
(
"yxqc_change_release_flow"
,
"发起变更"
,
"【待处理】%s 变更申请提交 "
),
YX_QC_CHANGE_SUBMIT_CANCEL
(
"yx_qc_change_submit_cancel"
,
"变更取消"
,
"【待处理】%s 变更
申请提交
"
),
YX_QC_CHANGE_SUBMIT_CANCEL
(
"yx_qc_change_submit_cancel"
,
"变更取消"
,
"【待处理】%s 变更
取消通知
"
),
YX_QC_CHANGE_SUBMIT_FORWARD
(
"yx_qc_change_submit_forward"
,
"变更转交"
,
"%s 变更工单转交通知"
),
YX_QC_CHANGE_SUBMIT_FORWARD
(
"yx_qc_change_submit_forward"
,
"变更转交"
,
"%s 变更工单转交通知"
),
YX_QC_CHANGE_EXECUTE
(
" yx_qc_change_execute"
,
"变更执行"
,
"【待处理】变更行动项确认 %s
%s %s
"
),
YX_QC_CHANGE_EXECUTE
(
" yx_qc_change_execute"
,
"变更执行"
,
"【待处理】变更行动项确认 %s"
),
YX_QC_CHANGE_AFFIRM
(
"yx_qc_change_affirm"
,
"变更确认"
,
"【待处理】变更结果确认 %s
%s %s
"
),
YX_QC_CHANGE_AFFIRM
(
"yx_qc_change_affirm"
,
"变更确认"
,
"【待处理】变更结果确认 %s"
),
YX_QC_CHANGE_FINISH
(
"yx_qc_change_finish"
,
"工单完结"
,
"【已完结】%s
%s %s
变更风险行动项已完结,请开始执行变更。"
),
YX_QC_CHANGE_FINISH
(
"yx_qc_change_finish"
,
"工单完结"
,
"【已完结】%s 变更风险行动项已完结,请开始执行变更。"
),
YX_QC_CHANGE_PENDING
(
"yx_qc_change_pending"
,
"待处理"
,
"【待处理】执行标准号 执行标准名称已变更 请排查对应的商品变更"
);
YX_QC_CHANGE_PENDING
(
"yx_qc_change_pending"
,
"待处理"
,
"【待处理】执行标准号 执行标准名称已变更 请排查对应的商品变更"
);
/**
/**
...
...
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/service/IEmailService.java
View file @
53f964e8
...
@@ -3,6 +3,7 @@ package com.netease.mail.yanxuan.change.integration.email.service;
...
@@ -3,6 +3,7 @@ package com.netease.mail.yanxuan.change.integration.email.service;
import
java.util.Collection
;
import
java.util.Collection
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
com.netease.mail.yanxuan.change.integration.email.enums.EmailTemplateEnum
;
import
com.netease.mail.yanxuan.change.integration.email.enums.EmailTemplateEnum
;
...
@@ -19,8 +20,8 @@ public interface IEmailService {
...
@@ -19,8 +20,8 @@ public interface IEmailService {
* @param ccList 抄送人
* @param ccList 抄送人
* @param map 邮箱参数
* @param map 邮箱参数
* @param emailTemplateEnum 标题枚举
* @param emailTemplateEnum 标题枚举
* @param subjectParam
s
标题参数
* @param subjectParam 标题参数
*/
*/
void
sendEmail
(
Collection
<
String
>
toList
,
Collection
<
String
>
ccList
,
Hash
Map
<
String
,
Object
>
map
,
void
sendEmail
(
Collection
<
String
>
toList
,
Collection
<
String
>
ccList
,
Map
<
String
,
Object
>
map
,
EmailTemplateEnum
emailTemplateEnum
,
List
<
String
>
subjectParams
);
EmailTemplateEnum
emailTemplateEnum
,
String
subjectParam
);
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/service/impl/EmailServiceImpl.java
View file @
53f964e8
...
@@ -5,13 +5,17 @@ import com.netease.mail.yanxuan.change.integration.email.enums.EmailTemplateEnum
...
@@ -5,13 +5,17 @@ import com.netease.mail.yanxuan.change.integration.email.enums.EmailTemplateEnum
import
com.netease.mail.yanxuan.change.integration.email.enums.EmailTypeEnum
;
import
com.netease.mail.yanxuan.change.integration.email.enums.EmailTypeEnum
;
import
com.netease.mail.yanxuan.change.integration.email.service.IEmailService
;
import
com.netease.mail.yanxuan.change.integration.email.service.IEmailService
;
import
com.netease.mail.yanxuan.change.integration.email.service.UasClientService
;
import
com.netease.mail.yanxuan.change.integration.email.service.UasClientService
;
import
org.apache.logging.log4j.util.Strings
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
import
java.util.Collection
;
import
java.util.Collection
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
@Service
@Service
...
@@ -25,8 +29,8 @@ public class EmailServiceImpl implements IEmailService {
...
@@ -25,8 +29,8 @@ public class EmailServiceImpl implements IEmailService {
@Override
@Override
@Async
(
"asyncEmail"
)
@Async
(
"asyncEmail"
)
public
void
sendEmail
(
Collection
<
String
>
toList
,
Collection
<
String
>
ccList
,
public
void
sendEmail
(
Collection
<
String
>
toList
,
Collection
<
String
>
ccList
,
Map
<
String
,
Object
>
map
,
HashMap
<
String
,
Object
>
map
,
EmailTemplateEnum
emailTemplateEnum
,
List
<
String
>
subjectParams
)
{
EmailTemplateEnum
emailTemplateEnum
,
String
subjectParam
)
{
EmailFactor
emailFactor
=
new
EmailFactor
();
EmailFactor
emailFactor
=
new
EmailFactor
();
//固定
//固定
emailFactor
.
setType
(
EmailTypeEnum
.
TEXT
.
getType
());
emailFactor
.
setType
(
EmailTypeEnum
.
TEXT
.
getType
());
...
@@ -42,8 +46,8 @@ public class EmailServiceImpl implements IEmailService {
...
@@ -42,8 +46,8 @@ public class EmailServiceImpl implements IEmailService {
}
}
String
subject
=
emailFactor
.
getSubject
();
String
subject
=
emailFactor
.
getSubject
();
//标题参数处理
//标题参数处理
if
(
subjectParams
!=
null
)
{
if
(
Strings
.
isNotBlank
(
subjectParam
))
{
subject
=
String
.
format
(
subject
,
subjectParams
.
toArray
()
);
subject
=
String
.
format
(
subject
,
subjectParam
);
}
}
uasClient
.
sendEmail
(
subject
,
content
,
toList
,
ccList
,
null
);
uasClient
.
sendEmail
(
subject
,
content
,
toList
,
ccList
,
null
);
}
}
...
...
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/service/impl/UasClientServiceImpl.java
View file @
53f964e8
...
@@ -28,6 +28,7 @@ public class UasClientServiceImpl implements UasClientService {
...
@@ -28,6 +28,7 @@ public class UasClientServiceImpl implements UasClientService {
@Autowired
@Autowired
private
EmailRpcService
service
;
private
EmailRpcService
service
;
@Override
public
void
sendEmail
(
String
subject
,
String
content
,
Collection
<
String
>
toList
,
Collection
<
String
>
ccList
,
List
<
File
>
fileList
)
{
public
void
sendEmail
(
String
subject
,
String
content
,
Collection
<
String
>
toList
,
Collection
<
String
>
ccList
,
List
<
File
>
fileList
)
{
if
(!
CollectionUtils
.
isEmpty
(
toList
))
{
if
(!
CollectionUtils
.
isEmpty
(
toList
))
{
Map
<
String
,
String
>
params
=
new
HashMap
();
Map
<
String
,
String
>
params
=
new
HashMap
();
...
...
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/excel/ChangeFlowExcelVo.java
0 → 100644
View file @
53f964e8
/**
* @(#)ChangeFlowExcelVo.java, 2022/12/8.
* <p/>
* Copyright 2022 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
excel
;
import
java.util.ArrayList
;
import
java.util.List
;
import
com.netease.mail.dp.des.common.api.enums.ExcelCellType
;
import
com.netease.mail.dp.des.process.api.entity.ExcelCell
;
import
com.netease.mail.yanxuan.change.common.anno.ExcelTitleName
;
import
com.netease.mail.yanxuan.change.common.enums.ChangeStatusEnum
;
import
com.netease.mail.yanxuan.change.common.enums.ChangeSubjectEnum
;
import
lombok.Data
;
/**
* @Author zcwang
* @Date 2022/12/8
*/
@Data
public
class
ChangeFlowExcelVo
{
/**
* 主键id
*/
@ExcelTitleName
(
title
=
"主键id"
,
order
=
1
)
private
Long
id
;
/**
* 变更主体
* @see ChangeSubjectEnum
*/
@ExcelTitleName
(
title
=
"变更主体"
,
order
=
2
)
private
String
changeSubject
;
/**
* 变更类型,一级类型>二级类型
*/
@ExcelTitleName
(
title
=
"变更类型"
,
order
=
3
)
private
String
changeType
;
/**
* 变更负责部门名
*/
@ExcelTitleName
(
title
=
"变更负责部门名"
,
order
=
4
)
private
String
changeDepartment
;
/**
* 变更内容
*/
@ExcelTitleName
(
title
=
"变更内容"
,
order
=
5
)
private
String
changeContent
;
/**
* 变更负责人
*/
@ExcelTitleName
(
title
=
"变更负责人"
,
order
=
6
)
private
String
changeCommander
;
/**
* 变更商品列表,SPUID+商品名称
*/
@ExcelTitleName
(
title
=
"变更商品列表"
,
order
=
7
)
private
String
changeItems
;
/**
* 变更供应商,仅展示供应商ID,没有时展示为“/”
*/
@ExcelTitleName
(
title
=
"变更供应商"
,
order
=
8
)
private
String
supplier
;
/**
* 变更状态
* @see ChangeStatusEnum
*/
@ExcelTitleName
(
title
=
"变更状态"
,
order
=
9
)
private
Integer
changeState
;
/**
* 变更发起人
*/
@ExcelTitleName
(
title
=
"变更发起人"
,
order
=
10
)
private
String
changeCreator
;
/**
* 变更行动部门列表
*/
@ExcelTitleName
(
title
=
"变更行动部门列表"
,
order
=
11
)
private
String
execDepartmentStrList
;
/**
* 创建时间
*/
@ExcelTitleName
(
title
=
"创建时间"
,
order
=
12
)
private
Long
createTime
;
public
static
List
<
ExcelCell
>
init
(
ChangeFlowExcelDTO
dto
)
{
List
<
ExcelCell
>
cellInfo
=
new
ArrayList
<>();
ExcelCell
excelCell
=
new
ExcelCell
();
excelCell
.
setCellType
(
ExcelCellType
.
TEXT
);
// id
excelCell
.
setValue
(
dto
.
getId
());
cellInfo
.
add
(
excelCell
);
// 变更主体
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getChangeSubject
());
cellInfo
.
add
(
excelCell
);
// 变更类型
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getChangeType
());
cellInfo
.
add
(
excelCell
);
// 变更负责部门名
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getChangeDepartment
());
cellInfo
.
add
(
excelCell
);
// 变更内容
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getChangeContent
());
cellInfo
.
add
(
excelCell
);
// 变更负责人
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getChangeCommander
());
cellInfo
.
add
(
excelCell
);
// 变更商品列表
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getChangeItems
());
cellInfo
.
add
(
excelCell
);
// 变更供应商
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getSupplier
());
cellInfo
.
add
(
excelCell
);
// 变更状态
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getChangeState
());
cellInfo
.
add
(
excelCell
);
// 变更发起人
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getChangeCreator
());
cellInfo
.
add
(
excelCell
);
// 变更行动部门列表
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getExecDepartmentStrList
());
cellInfo
.
add
(
excelCell
);
// 创建时间
excelCell
=
new
ExcelCell
();
excelCell
.
setValue
(
dto
.
getCreateTime
());
cellInfo
.
add
(
excelCell
);
return
cellInfo
;
}
}
\ No newline at end of file
yanxuan-qc-change-system-web/src/main/java/com/netease/mail/yanxuan/change/web/config/WebMvcConfig.java
View file @
53f964e8
...
@@ -26,7 +26,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
...
@@ -26,7 +26,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
@Override
@Override
public
void
addInterceptors
(
InterceptorRegistry
registry
)
{
public
void
addInterceptors
(
InterceptorRegistry
registry
)
{
registry
.
addInterceptor
(
userInterceptor
).
addPathPatterns
(
"/**"
).
excludePathPatterns
(
"/i/health"
)
registry
.
addInterceptor
(
userInterceptor
).
addPathPatterns
(
"/**"
).
excludePathPatterns
(
"/i/health"
)
.
excludePathPatterns
(
"/change/flow/getOperator"
,
"/test/
createToDo"
,
"/test/progressTodo"
,
"/test/submit
"
);
.
excludePathPatterns
(
"/change/flow/getOperator"
,
"/test/
**"
,
"/api/des/callback/**
"
);
registry
.
addInterceptor
(
adminUserLoginInterceptor
).
addPathPatterns
(
"test/**"
);
registry
.
addInterceptor
(
adminUserLoginInterceptor
).
addPathPatterns
(
"test/**"
);
}
}
...
...
yanxuan-qc-change-system-web/src/main/java/com/netease/mail/yanxuan/change/web/controller/ChangeFlowController.java
View file @
53f964e8
...
@@ -6,13 +6,11 @@
...
@@ -6,13 +6,11 @@
*/
*/
package
com
.
netease
.
mail
.
yanxuan
.
change
.
web
.
controller
;
package
com
.
netease
.
mail
.
yanxuan
.
change
.
web
.
controller
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.validation.Valid
;
import
javax.validation.Valid
;
import
org.apache.logging.log4j.util.Strings
;
import
org.apache.logging.log4j.util.Strings
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.Assert
;
import
org.springframework.util.Assert
;
import
org.springframework.util.StringUtils
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
...
@@ -22,15 +20,19 @@ import org.springframework.web.bind.annotation.RestController;
...
@@ -22,15 +20,19 @@ import org.springframework.web.bind.annotation.RestController;
import
com.netease.mail.yanxuan.change.biz.biz.ChangeFlowBiz
;
import
com.netease.mail.yanxuan.change.biz.biz.ChangeFlowBiz
;
import
com.netease.mail.yanxuan.change.biz.config.TitleConfig
;
import
com.netease.mail.yanxuan.change.biz.config.TitleConfig
;
import
com.netease.mail.yanxuan.change.biz.service.ChangeFlowExportQuery
;
import
com.netease.mail.yanxuan.change.biz.service.ChangeFlowService
;
import
com.netease.mail.yanxuan.change.biz.service.ChangeFlowService
;
import
com.netease.mail.yanxuan.change.biz.service.DESExportService
;
import
com.netease.mail.yanxuan.change.biz.service.InteriorChangeConfigService
;
import
com.netease.mail.yanxuan.change.biz.service.InteriorChangeConfigService
;
import
com.netease.mail.yanxuan.change.common.bean.AjaxResult
;
import
com.netease.mail.yanxuan.change.common.bean.AjaxResult
;
import
com.netease.mail.yanxuan.change.common.bean.RequestLocalBean
;
import
com.netease.mail.yanxuan.change.common.enums.CreateSourceEnum
;
import
com.netease.mail.yanxuan.change.common.enums.CreateSourceEnum
;
import
com.netease.mail.yanxuan.change.dal.meta.model.po.QueryCommanderEmailReq
;
import
com.netease.mail.yanxuan.change.dal.meta.model.po.QueryCommanderEmailReq
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCancelReq
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCancelReq
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCreateReq
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCreateReq
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowDeliverReq
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowDeliverReq
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowListQueryReq
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowListQueryReq
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowRequest
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowSubmitReq
;
import
com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowSubmitReq
;
import
com.netease.mail.yanxuan.change.dal.meta.model.rpc.CommanderResponse
;
import
com.netease.mail.yanxuan.change.dal.meta.model.rpc.CommanderResponse
;
import
com.netease.mail.yanxuan.change.dal.meta.model.vo.BasicChangeFlowVO
;
import
com.netease.mail.yanxuan.change.dal.meta.model.vo.BasicChangeFlowVO
;
...
@@ -59,6 +61,9 @@ public class ChangeFlowController {
...
@@ -59,6 +61,9 @@ public class ChangeFlowController {
@Autowired
@Autowired
private
InteriorChangeConfigService
interiorChangeConfigService
;
private
InteriorChangeConfigService
interiorChangeConfigService
;
@Autowired
private
DESExportService
desExportService
;
/**
/**
* 变更工单详情查询
* 变更工单详情查询
*
*
...
@@ -93,13 +98,13 @@ public class ChangeFlowController {
...
@@ -93,13 +98,13 @@ public class ChangeFlowController {
changeFlowListQueryReq
.
setSupplier
(
supplier
);
changeFlowListQueryReq
.
setSupplier
(
supplier
);
changeFlowListQueryReq
.
setParentChangeClassId
(
parentChangeClassId
);
changeFlowListQueryReq
.
setParentChangeClassId
(
parentChangeClassId
);
changeFlowListQueryReq
.
setSonChangeClassId
(
sonChangeClassId
);
changeFlowListQueryReq
.
setSonChangeClassId
(
sonChangeClassId
);
changeFlowListQueryReq
.
setState
(
changeState
);
changeFlowListQueryReq
.
set
Change
State
(
changeState
);
changeFlowListQueryReq
.
setChangeCommander
(
changeCommander
);
changeFlowListQueryReq
.
setChangeCommander
(
changeCommander
);
changeFlowListQueryReq
.
setChangeDepartment
(
changeDepartment
);
changeFlowListQueryReq
.
setChangeDepartment
(
changeDepartment
);
changeFlowListQueryReq
.
setChangeExecDepartment
(
changeExecDepartment
);
changeFlowListQueryReq
.
setChangeExecDepartment
(
changeExecDepartment
);
changeFlowListQueryReq
.
setStartTime
(
startTime
);
changeFlowListQueryReq
.
setStartTime
(
startTime
);
changeFlowListQueryReq
.
setEndTime
(
endTime
);
changeFlowListQueryReq
.
setEndTime
(
endTime
);
// QC端可以查看所有,不
许
加入过滤条件
// QC端可以查看所有,不加入过滤条件
if
(!
CreateSourceEnum
.
QC
.
getType
().
equals
(
createSource
))
{
if
(!
CreateSourceEnum
.
QC
.
getType
().
equals
(
createSource
))
{
changeFlowListQueryReq
.
setCreateSource
(
createSource
);
changeFlowListQueryReq
.
setCreateSource
(
createSource
);
}
}
...
@@ -175,30 +180,45 @@ public class ChangeFlowController {
...
@@ -175,30 +180,45 @@ public class ChangeFlowController {
*
*
* @return
* @return
*/
*/
@PostMapping
(
"/export"
)
@GetMapping
(
"/export"
)
public
AjaxResult
<
Void
>
export
(
@RequestParam
(
name
=
"itemId"
,
required
=
false
)
String
itemId
,
public
AjaxResult
<
String
>
export
(
@RequestParam
(
name
=
"itemId"
,
required
=
false
)
String
itemId
,
@RequestParam
(
name
=
"supplier"
,
required
=
false
)
String
supplier
,
@RequestParam
(
name
=
"supplier"
,
required
=
false
)
String
supplier
,
@RequestParam
(
name
=
"parentChangeClassId"
,
required
=
false
)
Long
parentChangeClassId
,
@RequestParam
(
name
=
"parentChangeClassId"
,
required
=
false
)
Long
parentChangeClassId
,
@RequestParam
(
name
=
"sonChangeClassId"
,
required
=
false
)
Long
sonChangeClassId
,
@RequestParam
(
name
=
"sonChangeClassId"
,
required
=
false
)
Long
sonChangeClassId
,
@RequestParam
(
name
=
"changeState"
,
required
=
false
)
Integer
changeState
,
@RequestParam
(
name
=
"changeState"
,
required
=
false
)
Integer
changeState
,
@RequestParam
(
name
=
"changeCommander"
,
required
=
false
)
String
changeCommander
,
@RequestParam
(
name
=
"changeCommander"
,
required
=
false
)
String
changeCommander
,
@RequestParam
(
name
=
"changeDepartment"
,
required
=
false
)
String
changeDepartment
,
@RequestParam
(
name
=
"changeDepartment"
,
required
=
false
)
String
changeDepartment
,
@RequestParam
(
name
=
"changeExecDepartment"
,
required
=
false
)
String
changeExecDepartment
,
@RequestParam
(
name
=
"changeExecDepartment"
,
required
=
false
)
String
changeExecDepartment
,
@RequestParam
(
name
=
"startTime"
,
required
=
false
)
Long
startTime
,
@RequestParam
(
name
=
"startTime"
,
required
=
false
)
Long
startTime
,
@RequestParam
(
name
=
"endTime"
,
required
=
false
)
Long
endTime
,
HttpServletResponse
response
)
{
@RequestParam
(
name
=
"endTime"
,
required
=
false
)
Long
endTime
,
ChangeFlowListQueryReq
changeFlowListQueryReq
=
new
ChangeFlowListQueryReq
();
@RequestParam
(
name
=
"createSource"
,
required
=
false
,
defaultValue
=
"1"
)
Integer
createSource
,
changeFlowListQueryReq
.
setItemId
(
itemId
);
@RequestParam
(
name
=
"serviceCode"
)
String
serviceCode
)
{
changeFlowListQueryReq
.
setSupplier
(
supplier
);
ChangeFlowRequest
changeFlowRequest
=
new
ChangeFlowRequest
();
changeFlowListQueryReq
.
setParentChangeClassId
(
parentChangeClassId
);
changeFlowRequest
.
setItemId
(
itemId
);
changeFlowListQueryReq
.
setSonChangeClassId
(
sonChangeClassId
);
changeFlowRequest
.
setSupplier
(
supplier
);
changeFlowListQueryReq
.
setState
(
changeState
);
changeFlowRequest
.
setParentChangeClassId
(
parentChangeClassId
);
changeFlowListQueryReq
.
setChangeCommander
(
changeCommander
);
changeFlowRequest
.
setSonChangeClassId
(
sonChangeClassId
);
changeFlowListQueryReq
.
setChangeDepartment
(
changeDepartment
);
changeFlowRequest
.
setChangeState
(
changeState
);
changeFlowListQueryReq
.
setChangeExecDepartment
(
changeExecDepartment
);
changeFlowRequest
.
setChangeCommander
(
changeCommander
);
changeFlowListQueryReq
.
setStartTime
(
startTime
);
changeFlowRequest
.
setChangeDepartment
(
changeDepartment
);
changeFlowListQueryReq
.
setEndTime
(
endTime
);
changeFlowRequest
.
setChangeExecDepartment
(
changeExecDepartment
);
changeFlowBiz
.
export
(
changeFlowListQueryReq
,
response
);
changeFlowRequest
.
setStartTime
(
startTime
);
return
AjaxResult
.
success
();
changeFlowRequest
.
setEndTime
(
endTime
);
changeFlowRequest
.
setServiceCode
(
serviceCode
);
// QC端可以查看所有,不加入过滤条件
if
(!
CreateSourceEnum
.
QC
.
getType
().
equals
(
createSource
))
{
changeFlowRequest
.
setCreateSource
(
createSource
);
}
if
(
CreateSourceEnum
.
TONG_ZHOU
.
getType
().
equals
(
createSource
))
{
Assert
.
isTrue
(
Strings
.
isNotBlank
(
supplier
),
"同舟端查询供应商id不可为空"
);
}
String
s
=
this
.
exportAddressBook
(
changeFlowRequest
);
return
AjaxResult
.
success
(
s
);
}
public
String
exportAddressBook
(
ChangeFlowRequest
req
)
{
req
.
setUid
(
RequestLocalBean
.
getUid
());
return
desExportService
.
changeFlowExport
(
req
);
}
}
/**
/**
...
...
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