Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
T
topsun-bpm
Project
Project
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
鲁鑫
topsun-bpm
Commits
feda599e
Commit
feda599e
authored
Mar 25, 2024
by
鲁鑫
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
同步组织人员到EP
parent
45e4ddf2
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
773 additions
and
72 deletions
+773
-72
DictionaryImportApplicationImpl.java
...ary/application/impl/DictionaryImportApplicationImpl.java
+0
-12
OrgKindId.java
topsun/src/main/java/com/huigou/topsun/common/OrgKindId.java
+36
-0
SystemType.java
...un/src/main/java/com/huigou/topsun/common/SystemType.java
+35
-0
ResourceSearchController.java
...om/huigou/topsun/controller/ResourceSearchController.java
+0
-2
EpSaleOrderApplicationImpl.java
...ep/order/application/impl/EpSaleOrderApplicationImpl.java
+1
-1
EpSaleOrderCancelApplicationImpl.java
...er/application/impl/EpSaleOrderCancelApplicationImpl.java
+1
-1
SapAcceptanceFormAckApplicationImpl.java
...application/impl/SapAcceptanceFormAckApplicationImpl.java
+1
-1
DefaultHttpClient.java
.../java/com/huigou/topsun/sap/common/DefaultHttpClient.java
+58
-44
HttpClient.java
...rc/main/java/com/huigou/topsun/sap/common/HttpClient.java
+4
-7
SapMutualEpLog.java
...a/com/huigou/topsun/sap/common/domain/SapMutualEpLog.java
+0
-1
NonProdApplyBaseInfo.java
.../topsun/sap/nonProdApply/domain/NonProdApplyBaseInfo.java
+0
-1
SapMaterialApplicationImpl.java
...lication/application/impl/SapMaterialApplicationImpl.java
+1
-2
OrgSyncApplication.java
...huigou/topsun/syncOrg/application/OrgSyncApplication.java
+48
-0
OrgSyncApplicationImpl.java
...psun/syncOrg/application/impl/OrgSyncApplicationImpl.java
+178
-0
SyncOrgController.java
...m/huigou/topsun/syncOrg/controller/SyncOrgController.java
+30
-0
OrgSync.java
...ain/java/com/huigou/topsun/syncOrg/scheduled/OrgSync.java
+30
-0
EpOrgVo.java
...n/src/main/java/com/huigou/topsun/syncOrg/vo/EpOrgVo.java
+33
-0
OrgPersonVo.java
...c/main/java/com/huigou/topsun/syncOrg/vo/OrgPersonVo.java
+36
-0
OrgVo.java
topsun/src/main/java/com/huigou/topsun/syncOrg/vo/OrgVo.java
+82
-0
PersonVo.java
.../src/main/java/com/huigou/topsun/syncOrg/vo/PersonVo.java
+87
-0
SapPersonVo.java
...c/main/java/com/huigou/topsun/syncOrg/vo/SapPersonVo.java
+112
-0
No files found.
topsun/src/main/java/com/huigou/topsun/base/dictionary/application/impl/DictionaryImportApplicationImpl.java
View file @
feda599e
package
com
.
huigou
.
topsun
.
base
.
dictionary
.
application
.
impl
;
import
cn.hutool.core.util.NumberUtil
;
import
com.huigou.data.jdbc.util.BatchSqlUpdateDetail
;
import
com.huigou.data.query.model.QueryDescriptor
;
import
com.huigou.topsun.base.dictionary.GlobalCode
;
import
com.huigou.topsun.base.dictionary.application.DictionaryImportApplication
;
import
com.huigou.topsun.base.dictionary.domain.DictionaryImportData
;
import
com.huigou.uasp.bmp.common.application.BaseApplication
;
import
com.huigou.uasp.bmp.configuration.application.DictionaryApplication
;
import
com.huigou.uasp.bmp.configuration.domain.model.SysDictionary
;
import
com.huigou.uasp.bmp.configuration.repository.SysDictionaryRepository
;
import
com.huigou.uasp.tool.dataimport.application.ExcelImportInterface
;
import
com.huigou.util.StringUtil
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.Assert
;
import
javax.annotation.Resource
;
import
java.math.BigDecimal
;
import
java.sql.Types
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
topsun/src/main/java/com/huigou/topsun/common/OrgKindId.java
0 → 100644
View file @
feda599e
package
com
.
huigou
.
topsun
.
common
;
public
enum
OrgKindId
{
OGN
(
"ogn"
,
"机构"
),
DPT
(
"dpt"
,
"部门"
),
POS
(
"pos"
,
"岗位"
),
PSM
(
"psm"
,
"人员"
),
;
private
String
id
;
private
String
name
;
private
OrgKindId
(
String
id
,
String
name
)
{
this
.
id
=
id
;
this
.
name
=
name
;
}
public
String
getId
()
{
return
id
;
}
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
}
topsun/src/main/java/com/huigou/topsun/common/SystemType.java
0 → 100644
View file @
feda599e
package
com
.
huigou
.
topsun
.
common
;
public
enum
SystemType
{
SAP
(
"SAP"
,
"SAP系统"
),
EP
(
"EP"
,
"EP系统"
),
MES
(
"MES"
,
"MES系统"
),
;
private
String
id
;
private
String
name
;
private
SystemType
(
String
id
,
String
name
)
{
this
.
id
=
id
;
this
.
name
=
name
;
}
public
String
getId
()
{
return
id
;
}
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
}
topsun/src/main/java/com/huigou/topsun/controller/ResourceSearchController.java
View file @
feda599e
...
...
@@ -2,13 +2,11 @@ package com.huigou.topsun.controller;
import
cn.hutool.core.collection.CollectionUtil
;
import
com.huigou.cache.DictUtil
;
import
com.huigou.topsun.sap.costCenter.application.CostCenterApplication
;
import
com.huigou.topsun.sap.sapApplication.application.SapAreaApplication
;
import
com.huigou.topsun.sap.sapApplication.application.SapDictionaryApplication
;
import
com.huigou.topsun.sap.sapApplication.application.SapMaterialApplication
;
import
com.huigou.topsun.sap.sapApplication.application.SapPaymentApplication
;
import
com.huigou.topsun.sap.sapApplication.domain.query.SapDialogQuery
;
import
com.huigou.topsun.sap.sapApplication.domain.vo.SapMaterialVo
;
import
com.huigou.uasp.annotation.ControllerMapping
;
import
com.huigou.uasp.bmp.common.easysearch.EasySearch
;
import
com.huigou.uasp.bmp.common.easysearch.domain.model.EasySearchParse
;
...
...
topsun/src/main/java/com/huigou/topsun/ep/order/application/impl/EpSaleOrderApplicationImpl.java
View file @
feda599e
...
...
@@ -221,7 +221,7 @@ public class EpSaleOrderApplicationImpl extends FlowBroker implements EpSaleOrde
//日志记录
Map
<
String
,
Object
>
resultMap
=
new
HashMap
<>();
try
{
String
execute
=
httpClient
.
execute
ByJson
ForEp
(
map
,
"od/saleOrder/auditedResult"
);
String
execute
=
httpClient
.
executeForEp
(
map
,
"od/saleOrder/auditedResult"
);
EpResult
epResult
=
JSONObject
.
parseObject
(
execute
,
EpResult
.
class
);
resultMap
.
put
(
"type"
,
epResult
.
getCode
());
resultMap
.
put
(
"message"
,
epResult
.
getMsg
());
...
...
topsun/src/main/java/com/huigou/topsun/ep/order/application/impl/EpSaleOrderCancelApplicationImpl.java
View file @
feda599e
...
...
@@ -220,7 +220,7 @@ public class EpSaleOrderCancelApplicationImpl extends FlowBroker implements EpSa
//日志记录
Map
<
String
,
Object
>
resultMap
=
new
HashMap
<>();
try
{
String
execute
=
httpClient
.
execute
ByJson
ForEp
(
map
,
"od/saleOrder/auditedResult"
);
String
execute
=
httpClient
.
executeForEp
(
map
,
"od/saleOrder/auditedResult"
);
EpResult
epResult
=
JSONObject
.
parseObject
(
execute
,
EpResult
.
class
);
resultMap
.
put
(
"type"
,
epResult
.
getCode
());
resultMap
.
put
(
"message"
,
epResult
.
getMsg
());
...
...
topsun/src/main/java/com/huigou/topsun/sap/acceptanceFormAck/application/impl/SapAcceptanceFormAckApplicationImpl.java
View file @
feda599e
...
...
@@ -127,7 +127,7 @@ public class SapAcceptanceFormAckApplicationImpl implements SapAcceptanceFormAc
String
string
=
sdo
.
getString
(
"params"
);
String
execute
;
try
{
execute
=
httpClient
.
execute
ByJson
(
string
,
url
);
execute
=
httpClient
.
execute
(
string
,
url
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
...
...
topsun/src/main/java/com/huigou/topsun/sap/common/DefaultHttpClient.java
View file @
feda599e
...
...
@@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import
com.huigou.cache.SystemCache
;
import
com.huigou.topsun.sap.common.serializer.MessageSerializer
;
import
com.huigou.uasp.bmp.common.application.BaseApplication
;
import
org.apache.commons.io.IOUtils
;
import
com.huigou.util.StringUtil
;
import
org.apache.http.HttpResponse
;
import
org.apache.http.HttpStatus
;
import
org.apache.http.StatusLine
;
...
...
@@ -20,8 +20,6 @@ import org.springframework.stereotype.Component;
import
java.io.IOException
;
import
java.util.Base64
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
*/
...
...
@@ -37,14 +35,15 @@ public class DefaultHttpClient extends BaseApplication implements HttpClient {
this
.
messageSerializer
=
messageSerializer
;
}
/**
* 访问SAP系统的ip、上下文httpClient配置
* @param param 非JSON数据对象
* @param url 控制层地址
* @return 返回
* @throws IOException
*/
@Override
public
String
execute
(
Object
param
,
String
url
)
throws
IOException
{
String
paramJson
=
new
ObjectMapper
().
writeValueAsString
(
param
);
return
executeByJson
(
paramJson
,
url
);
}
@Override
public
String
executeByJson
(
String
param
,
String
url
)
throws
IOException
{
//系统接口地址
// ip地址
String
ip
=
SystemCache
.
getParameter
(
"sap.service.ip"
,
String
.
class
);
...
...
@@ -64,56 +63,72 @@ public class DefaultHttpClient extends BaseApplication implements HttpClient {
.
append
(
url
)
.
append
(
"?"
)
.
append
(
client
);
HttpPost
post
=
new
HttpPost
(
serverUrl
.
toString
());
post
.
setHeader
(
"Content-type"
,
"application/json;charset=utf-8"
);
String
usernameAndPassword
=
username
+
":"
+
password
;
post
.
addHeader
(
"Authorization"
,
"Basic "
+
Base64
.
getEncoder
().
encodeToString
(
usernameAndPassword
.
getBytes
()));
LOG
.
info
(
"requestText={}"
,
param
);
post
.
setEntity
(
new
StringEntity
(
param
,
ContentType
.
APPLICATION_JSON
));
LOG
.
info
(
"post={}"
,
post
);
HttpResponse
response
;
String
responseText
=
""
;
try
{
response
=
http
.
execute
(
post
);
StatusLine
statusLine
=
response
.
getStatusLine
();
int
statusCode
=
statusLine
.
getStatusCode
();
if
(
statusLine
.
getStatusCode
()
<
HttpStatus
.
SC_OK
||
statusLine
.
getStatusCode
()
>=
HttpStatus
.
SC_MULTIPLE_CHOICES
)
{
throw
new
IOException
(
String
.
format
(
"调用SAP系统出错,statusCode=%s, %s"
,
statusCode
,
statusLine
.
getReasonPhrase
()));
}
responseText
=
EntityUtils
.
toString
(
response
.
getEntity
(),
"UTF-8"
);
LOG
.
info
(
"responseText={}"
,
responseText
);
LOG
.
info
(
"----------->> 调用SAP接口 {} 成功 <<-----------"
,
serverUrl
);
}
finally
{
post
.
releaseConnection
();
}
return
responseText
;
return
this
.
buildHttpClient
(
param
,
String
.
valueOf
(
serverUrl
),
usernameAndPassword
);
}
/**
* 访问EP系统的ip、上下文httpClient配置
* @param param 非JSON数据对象
* @param url 控制层地址
* @return 返回
* @throws IOException
*/
@Override
public
String
execute
ByJson
ForEp
(
Object
param
,
String
url
)
throws
IOException
{
public
String
executeForEp
(
Object
param
,
String
url
)
throws
IOException
{
//系统接口地址
// ip地址
String
ip
=
SystemCache
.
getParameter
(
"ep.service.ip"
,
String
.
class
);
// 上下文
String
applicationContext
=
SystemCache
.
getParameter
(
"ep.service.application.context"
,
String
.
class
);
// 用户名
// password = SystemCache.getParameter("ep.service.password", String.class);
// 密码
//String username = SystemCache.getParameter("ep.service.username", String.class);
// 客户端
//String client = SystemCache.getParameter("ep.service.client", String.class);
//String serverUrl = "http://192.168.23.15:8080/api/od/saleOrder/auditedResult.ajax";
StringBuffer
serverUrl
=
new
StringBuffer
();
serverUrl
.
append
(
ip
)
.
append
(
applicationContext
)
.
append
(
url
);
HttpPost
post
=
new
HttpPost
(
serverUrl
.
toString
());
return
this
.
buildHttpClient
(
param
,
String
.
valueOf
(
serverUrl
),
""
);
}
/**
* 访问MES系统的ip、上下文httpClient配置
* @param param 非JSON数据对象
* @param url 控制层地址
* @return 返回
* @throws IOException
*/
@Override
public
String
executeForMes
(
Object
param
,
String
url
)
throws
IOException
{
//系统接口地址
// ip地址
String
ip
=
SystemCache
.
getParameter
(
"mes.service.ip"
,
String
.
class
);
// 上下文
String
applicationContext
=
SystemCache
.
getParameter
(
"mes.service.application.context"
,
String
.
class
);
//String serverUrl = "http://192.168.23.15:8080/api/od/saleOrder/auditedResult.ajax";
StringBuffer
serverUrl
=
new
StringBuffer
();
serverUrl
.
append
(
ip
)
.
append
(
applicationContext
)
.
append
(
url
);
return
this
.
buildHttpClient
(
param
,
String
.
valueOf
(
serverUrl
),
""
);
}
/**
*
* @param obj 非JSON数据对象
* @param serverUrl 服务拼接地址
* @param usernameAndPassword 用户名密码拼接
* @return
* @throws IOException
*/
public
String
buildHttpClient
(
Object
obj
,
String
serverUrl
,
String
usernameAndPassword
)
throws
IOException
{
HttpPost
post
=
new
HttpPost
(
serverUrl
);
post
.
setHeader
(
"Content-type"
,
"application/json;charset=utf-8"
);
//String usernameAndPassword = username + ":" + password;
//post.addHeader("Authorization", "Basic " + Base64.getEncoder().encodeToString(usernameAndPassword.getBytes()));
String
paramJson
=
new
ObjectMapper
().
writeValueAsString
(
param
);
if
(
StringUtil
.
isNotBlank
(
usernameAndPassword
)){
post
.
addHeader
(
"Authorization"
,
"Basic "
+
Base64
.
getEncoder
().
encodeToString
(
usernameAndPassword
.
getBytes
()));
}
String
paramJson
=
new
ObjectMapper
().
writeValueAsString
(
obj
);
LOG
.
info
(
"requestText={}"
,
paramJson
);
post
.
setEntity
(
new
StringEntity
(
paramJson
,
ContentType
.
APPLICATION_JSON
));
LOG
.
info
(
"post={}"
,
post
);
...
...
@@ -124,11 +139,10 @@ public class DefaultHttpClient extends BaseApplication implements HttpClient {
StatusLine
statusLine
=
response
.
getStatusLine
();
int
statusCode
=
statusLine
.
getStatusCode
();
if
(
statusLine
.
getStatusCode
()
<
HttpStatus
.
SC_OK
||
statusLine
.
getStatusCode
()
>=
HttpStatus
.
SC_MULTIPLE_CHOICES
)
{
throw
new
IOException
(
String
.
format
(
"调用
EP
系统出错,statusCode=%s, %s"
,
statusCode
,
statusLine
.
getReasonPhrase
()));
throw
new
IOException
(
String
.
format
(
"调用系统出错,statusCode=%s, %s"
,
statusCode
,
statusLine
.
getReasonPhrase
()));
}
responseText
=
EntityUtils
.
toString
(
response
.
getEntity
(),
"UTF-8"
);
LOG
.
info
(
"responseText={}"
,
responseText
);
LOG
.
info
(
"----------->> 调用EP接口 {} 成功 <<-----------"
,
serverUrl
);
}
finally
{
post
.
releaseConnection
();
}
...
...
topsun/src/main/java/com/huigou/topsun/sap/common/HttpClient.java
View file @
feda599e
package
com
.
huigou
.
topsun
.
sap
.
common
;
import
java.io.IOException
;
import
java.util.Map
;
/**
*
esb客户端,用于调用esb
服务。
*
客户端,用于调用远程
服务。
*/
public
interface
HttpClient
{
/**
...
...
@@ -19,9 +16,9 @@ public interface HttpClient {
* @throws IOException
*/
String
execute
(
Object
param
,
String
url
)
throws
IOException
;
public
String
execute
(
Object
param
,
String
url
)
throws
IOException
;
public
String
execute
ByJson
(
String
param
,
String
url
)
throws
IOException
;
public
String
execute
ForEp
(
Object
param
,
String
url
)
throws
IOException
;
public
String
execute
ByJsonForEp
(
Object
param
,
String
url
)
throws
IOException
;
public
String
execute
ForMes
(
Object
param
,
String
url
)
throws
IOException
;
}
topsun/src/main/java/com/huigou/topsun/sap/common/domain/SapMutualEpLog.java
View file @
feda599e
package
com
.
huigou
.
topsun
.
sap
.
common
.
domain
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
lombok.Data
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.springframework.format.annotation.DateTimeFormat
;
...
...
topsun/src/main/java/com/huigou/topsun/sap/nonProdApply/domain/NonProdApplyBaseInfo.java
View file @
feda599e
package
com
.
huigou
.
topsun
.
sap
.
nonProdApply
.
domain
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.huigou.data.domain.model.FlowBillAbstractEntity
;
import
lombok.Data
;
...
...
topsun/src/main/java/com/huigou/topsun/sap/sapApplication/application/impl/SapMaterialApplicationImpl.java
View file @
feda599e
...
...
@@ -34,8 +34,7 @@ public class SapMaterialApplicationImpl implements SapMaterialApplication {
/*if (StringUtil.isBlank(queryRequest.getWerks()) || StringUtil.isBlank(queryRequest.getMatkl())){
return sapMaterialVoList;
}*/
String
paramJson
=
new
ObjectMapper
().
writeValueAsString
(
queryRequest
);
String
json
=
httpClient
.
executeByJson
(
paramJson
,
"search/sch_matnr"
);
String
json
=
httpClient
.
execute
(
queryRequest
,
"search/sch_matnr"
);
Map
<
String
,
Object
>
map
=
JSONUtil
.
toMap
(
json
);
SapResult
sapResult
=
JSONObject
.
parseObject
(
JSONUtil
.
toString
(
map
.
get
(
"MSG"
)),
SapResult
.
class
);
if
(
"S"
.
equals
(
sapResult
.
getTYPE
())){
...
...
topsun/src/main/java/com/huigou/topsun/syncOrg/application/OrgSyncApplication.java
0 → 100644
View file @
feda599e
package
com
.
huigou
.
topsun
.
syncOrg
.
application
;
import
com.huigou.topsun.syncOrg.vo.EpOrgVo
;
import
com.huigou.topsun.syncOrg.vo.OrgPersonVo
;
import
com.huigou.topsun.syncOrg.vo.PersonVo
;
import
com.huigou.topsun.syncOrg.vo.SapPersonVo
;
import
com.huigou.uasp.bmp.opm.domain.model.org.Org
;
import
java.util.List
;
/**
* @Auther: xin.lu
* @Date: 2024/03/25/9:27
* @Description:
*/
public
interface
OrgSyncApplication
{
/**
* 构建机构、部门、岗位、人员VO类
* @return
*/
public
EpOrgVo
buildOrgVo
();
/**
* 构建组织人员对应关系
* @param psmList
* @return
*/
public
List
<
OrgPersonVo
>
buildOrgPersonVo
(
List
<
Org
>
psmList
);
/**
* 构架人员
* @param psmList
* @return
*/
public
List
<
PersonVo
>
buildPersonVo
(
List
<
Org
>
psmList
);
/**
* 构建SAP人员
* @return
*/
public
List
<
SapPersonVo
>
buildSapPersonVo
();
/**
* 同步SAP人员
*/
public
void
syncOrgToSap
();
}
topsun/src/main/java/com/huigou/topsun/syncOrg/application/impl/OrgSyncApplicationImpl.java
0 → 100644
View file @
feda599e
package
com
.
huigou
.
topsun
.
syncOrg
.
application
.
impl
;
import
cn.hutool.core.bean.BeanUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.huigou.topsun.common.OrgKindId
;
import
com.huigou.topsun.syncOrg.application.OrgSyncApplication
;
import
com.huigou.topsun.syncOrg.vo.*
;
import
com.huigou.topsun.sap.common.DefaultHttpClient
;
import
com.huigou.topsun.sap.common.application.SapMutualEpLogApplication
;
import
com.huigou.topsun.sap.common.domain.EpResult
;
import
com.huigou.uasp.bmp.opm.domain.model.org.Org
;
import
com.huigou.uasp.bmp.opm.domain.model.org.Person
;
import
com.huigou.uasp.bmp.opm.repository.org.OrgRepository
;
import
com.huigou.util.DateUtil
;
import
com.huigou.util.StringUtil
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* @Auther: xin.lu
* @Date: 2024/03/25/9:28
* @Description:
*/
@Service
(
"orgSyncApplication"
)
public
class
OrgSyncApplicationImpl
implements
OrgSyncApplication
{
private
final
static
Logger
LOG
=
LoggerFactory
.
getLogger
(
OrgSyncApplicationImpl
.
class
);
@Autowired
private
OrgRepository
orgRepository
;
@Autowired
private
DefaultHttpClient
httpClient
;
@Autowired
SapMutualEpLogApplication
sapMutualEpLogApplication
;
@Override
public
EpOrgVo
buildOrgVo
()
{
List
<
Org
>
orgList
=
orgRepository
.
findAll
();
orgList
=
orgList
.
stream
()
.
filter
(
org
->
org
.
getFullId
().
contains
(
"/E3B4E5C5C6454F81921CF58B7597CE2F"
))
.
collect
(
Collectors
.
toList
());
//机构、部门、岗位
List
<
OrgVo
>
orgVoList
=
orgList
.
stream
()
.
filter
(
org
->
!
OrgKindId
.
PSM
.
getId
().
equals
(
org
.
getOrgKindId
()))
.
map
(
org
->
{
OrgVo
orgVo
=
new
OrgVo
();
BeanUtil
.
copyProperties
(
org
,
orgVo
);
orgVo
.
setDelFlag
(
"0"
);
//把id做hash处理,得到int类型数据
orgVo
.
setId
(
convertHashCode
(
org
.
getId
()));
//从全路径中获取当前组织的父节点名称
if
(
StringUtil
.
isNotBlank
(
org
.
getParentId
())){
String
fullName
=
org
.
getFullName
();
String
[]
split
=
fullName
.
split
(
"/"
);
orgVo
.
setParentName
(
split
[
split
.
length
-
2
]);
//把父id做hash处理,得到int类型数据
orgVo
.
setParentId
(
convertHashCode
(
org
.
getParentId
()));
}
return
orgVo
;
})
.
collect
(
Collectors
.
toList
());
//人员
List
<
Org
>
psmList
=
orgList
.
stream
()
.
filter
(
org
->
OrgKindId
.
PSM
.
getId
().
equals
(
org
.
getOrgKindId
()))
.
collect
(
Collectors
.
toList
());
//先同步机构、部门、岗位、再同步组织人员
List
<
OrgPersonVo
>
orgPersonVoList
=
this
.
buildOrgPersonVo
(
psmList
);
//同步人员
List
<
PersonVo
>
personVoList
=
this
.
buildPersonVo
(
psmList
);
EpOrgVo
epOrgVo
=
new
EpOrgVo
();
epOrgVo
.
setOrgVoList
(
orgVoList
);
epOrgVo
.
setOrgPersonVoList
(
orgPersonVoList
);
epOrgVo
.
setPersonVoList
(
personVoList
);
LOG
.
info
(
DateUtil
.
getDateFormat
(
new
Date
())+
"====同步的组织结构数据===={}"
,
epOrgVo
);
return
epOrgVo
;
}
@Override
public
List
<
OrgPersonVo
>
buildOrgPersonVo
(
List
<
Org
>
psmList
){
return
psmList
.
stream
()
.
map
(
orgPerson
->
{
OrgPersonVo
orgPersonVo
=
new
OrgPersonVo
();
//组织人员id
orgPersonVo
.
setId
(
convertHashCode
(
orgPerson
.
getId
()));
//部门id
orgPersonVo
.
setDeptId
(
convertHashCode
(
orgPerson
.
getDeptId
()));
//岗位id
orgPersonVo
.
setPositionId
(
convertHashCode
(
orgPerson
.
getPositionId
()));
//人员id
orgPersonVo
.
setPersonId
(
convertHashCode
(
orgPerson
.
getPerson
().
getId
()));
return
orgPersonVo
;
}).
collect
(
Collectors
.
toList
());
}
@Override
public
List
<
PersonVo
>
buildPersonVo
(
List
<
Org
>
psmList
){
return
psmList
.
stream
()
.
map
(
psm
->
{
Person
person
=
psm
.
getPerson
();
PersonVo
personVo
=
new
PersonVo
();
BeanUtil
.
copyProperties
(
person
,
personVo
);
personVo
.
setDelFlag
(
"0"
);
//把人员id做hash处理,得到int类型数据
personVo
.
setId
(
convertHashCode
(
person
.
getId
()));
personVo
.
setDeptId
(
convertHashCode
(
psm
.
getDeptId
()));
return
personVo
;
}).
collect
(
Collectors
.
toList
());
}
@Override
public
List
<
SapPersonVo
>
buildSapPersonVo
(){
List
<
Org
>
orgList
=
orgRepository
.
findAll
();
//人员
return
orgList
.
stream
()
.
filter
(
org
->
OrgKindId
.
PSM
.
getId
().
equals
(
org
.
getOrgKindId
()))
.
map
(
org
->
{
SapPersonVo
sapPersonVo
=
new
SapPersonVo
();
Person
person
=
org
.
getPerson
();
BeanUtil
.
copyProperties
(
person
,
sapPersonVo
);
sapPersonVo
.
setParentFullName
(
org
.
getFullName
());
return
sapPersonVo
;
})
.
collect
(
Collectors
.
toList
());
}
@Override
public
void
syncOrgToSap
()
{
}
/**
* 字符串转hashcode
* @param value
* @return
*/
public
String
convertHashCode
(
String
value
){
if
(
StringUtil
.
isBlank
(
value
)){
return
""
;
}
int
abs
=
Math
.
abs
(
value
.
hashCode
());
return
String
.
valueOf
(
abs
);
}
/**
* 记录日志
* @param epResult
* @param epOrgVo
*/
public
void
saveMutualEpLog
(
EpResult
epResult
,
EpOrgVo
epOrgVo
,
String
systemType
){
//日志记录
Map
<
String
,
Object
>
resultMap
=
new
HashMap
<>();
resultMap
.
put
(
"type"
,
epResult
.
getCode
());
resultMap
.
put
(
"message"
,
epResult
.
getMsg
());
resultMap
.
put
(
"businessType"
,
systemType
);
resultMap
.
put
(
"businessId"
,
"syncOrg"
);
resultMap
.
put
(
"parameter"
,
JSON
.
toJSONString
(
epOrgVo
));
resultMap
.
put
(
"sequence"
,
resultMap
.
get
(
"row"
));
sapMutualEpLogApplication
.
saveSapMutualEpLog
(
resultMap
);
}
}
topsun/src/main/java/com/huigou/topsun/syncOrg/controller/SyncOrgController.java
0 → 100644
View file @
feda599e
package
com
.
huigou
.
topsun
.
syncOrg
.
controller
;
import
com.huigou.topsun.syncOrg.application.OrgSyncApplication
;
import
com.huigou.topsun.syncOrg.vo.EpOrgVo
;
import
com.huigou.uasp.annotation.ControllerMapping
;
import
com.huigou.uasp.annotation.SkipAuth
;
import
com.huigou.uasp.client.CommonController
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
/**
* @Auther: xin.lu
* @Date: 2024/03/25/10:51
* @Description: 获取同步的机构、部门、岗位、人员
*/
@Controller
@ControllerMapping
(
"/syncOrg"
)
public
class
SyncOrgController
extends
CommonController
{
@Autowired
private
OrgSyncApplication
orgSyncApplication
;
@SkipAuth
@RequestMapping
(
value
=
"/syncOrgInfo"
)
@ResponseBody
public
EpOrgVo
syncOrgInfo
()
{
return
orgSyncApplication
.
buildOrgVo
();
}
}
topsun/src/main/java/com/huigou/topsun/syncOrg/scheduled/OrgSync.java
0 → 100644
View file @
feda599e
package
com
.
huigou
.
topsun
.
syncOrg
.
scheduled
;
import
com.huigou.topsun.syncOrg.application.OrgSyncApplication
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
java.io.IOException
;
import
java.util.Date
;
/**
* @Auther: xin.lu
* @Date: 2024/03/24/9:45
* @Description:
*/
@Component
@EnableScheduling
public
class
OrgSync
{
@Autowired
private
OrgSyncApplication
orgSyncApplication
;
/** * 每10分钟执行一次 */
//@Scheduled(cron = "0 0/10 * * * ?")
public
void
syncOrgToSap
()
{
orgSyncApplication
.
syncOrgToSap
();
System
.
out
.
println
(
"十分钟了======="
+(
new
Date
()).
toString
());
}
}
topsun/src/main/java/com/huigou/topsun/syncOrg/vo/EpOrgVo.java
0 → 100644
View file @
feda599e
package
com
.
huigou
.
topsun
.
syncOrg
.
vo
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* @Auther: xin.lu
* @Date: 2024/03/24/14:49
* @Description:
*/
@Data
public
class
EpOrgVo
implements
Serializable
{
/**
* 机构、部门、岗位
*/
@JsonProperty
(
"orgVoList"
)
private
List
<
OrgVo
>
orgVoList
;
/**
* 部门、岗位、人员关系
*/
@JsonProperty
(
"orgPersonVoList"
)
private
List
<
OrgPersonVo
>
orgPersonVoList
;
/**
* 人员
*/
@JsonProperty
(
"personVoList"
)
private
List
<
PersonVo
>
personVoList
;
}
topsun/src/main/java/com/huigou/topsun/syncOrg/vo/OrgPersonVo.java
0 → 100644
View file @
feda599e
package
com
.
huigou
.
topsun
.
syncOrg
.
vo
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
lombok.Data
;
/**
* @Auther: xin.lu
* @Date: 2024/03/23/15:18
* @Description: 人员组织对应关系
*/
@Data
public
class
OrgPersonVo
{
/**
* 组织人员id
*/
@JsonProperty
(
"id"
)
private
String
id
;
/**
* 岗位id
*/
@JsonProperty
(
"positionId"
)
private
String
positionId
;
/**
* 部门id
*/
@JsonProperty
(
"deptId"
)
private
String
deptId
;
/**
* 人员id
*/
@JsonProperty
(
"personId"
)
private
String
personId
;
}
topsun/src/main/java/com/huigou/topsun/syncOrg/vo/OrgVo.java
0 → 100644
View file @
feda599e
package
com
.
huigou
.
topsun
.
syncOrg
.
vo
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
lombok.Data
;
/**
* @Auther: xin.lu
* @Date: 2024/03/23/10:30
* @Description: 同步到EP系统机构/部门/岗位Vo类
*/
@Data
public
class
OrgVo
{
@JsonProperty
(
"deptId"
)
private
String
id
;
/**
* 父节点ID
*/
@JsonProperty
(
"parentId"
)
private
String
parentId
;
/**
* 编码全路径
*/
@JsonProperty
(
"deptCode"
)
private
String
fullCode
;
/**
* 名称
*/
@JsonProperty
(
"deptName"
)
private
String
name
;
/**
* 顺序
*/
@JsonProperty
(
"orderNum"
)
private
Integer
sequence
;
/**
* 负责人
*/
@JsonProperty
(
"leader"
)
private
String
leader
;
/**
* 邮箱
*/
@JsonProperty
(
"email"
)
private
String
email
;
/**
* 联系电话
*/
@JsonProperty
(
"phone"
)
private
String
phone
;
/**
* 状态(0代表禁用 1代表启用)
*/
@JsonProperty
(
"status"
)
private
Integer
status
;
/**
* 删除标志(0代表存在 2代表删除)
*/
@JsonProperty
(
"delFlag"
)
private
String
delFlag
;
/**
* 父部门名称
*/
@JsonProperty
(
"parentName"
)
private
String
parentName
;
/**
* 组织节点类型
*/
@JsonProperty
(
"orgKindId"
)
private
String
orgKindId
;
}
topsun/src/main/java/com/huigou/topsun/syncOrg/vo/PersonVo.java
0 → 100644
View file @
feda599e
package
com
.
huigou
.
topsun
.
syncOrg
.
vo
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
lombok.Data
;
/**
* @Auther: xin.lu
* @Date: 2024/03/23/11:23
* @Description:
*/
@Data
public
class
PersonVo
{
/**
* 用户ID
*/
@JsonProperty
(
"userId"
)
private
String
id
;
/**
* 编码
*/
@JsonProperty
(
"userCode"
)
private
String
code
;
/**
* 部门ID
*/
@JsonProperty
(
"deptId"
)
private
String
deptId
;
/**
* 登录名
*/
@JsonProperty
(
"userName"
)
private
String
loginName
;
/**
* 名称
*/
@JsonProperty
(
"nickName"
)
private
String
name
;
/**
* 英文名称
*/
@JsonProperty
(
"enName"
)
private
String
englishName
;
/**
* email
*/
@JsonProperty
(
"email"
)
private
String
email
;
/**
* 移动电话
*/
@JsonProperty
(
"phonenumber"
)
private
String
mobilePhone
;
/**
* 性别
*/
@JsonProperty
(
"sex"
)
private
Integer
sex
;
/**
* 密码
*/
@JsonProperty
(
"password"
)
private
String
password
;
/**
* 删除标志(0代表存在 2代表删除)
*/
@JsonProperty
(
value
=
"delFlag"
,
defaultValue
=
"0"
)
private
String
delFlag
;
/**
* 状态
* "0=正常,1=停用"
*/
@JsonProperty
(
"status"
)
private
Integer
status
;
}
topsun/src/main/java/com/huigou/topsun/syncOrg/vo/SapPersonVo.java
0 → 100644
View file @
feda599e
package
com
.
huigou
.
topsun
.
syncOrg
.
vo
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @Auther: xin.lu
* @Date: 2024/03/23/9:46
* @Description: 映射SAP人员
*/
@Data
public
class
SapPersonVo
implements
Serializable
{
/**
* 上级
*/
@JsonProperty
(
"PARENT_FULL_NAME"
)
private
String
parentFullName
;
/**
* 员工编号
*/
@JsonProperty
(
"CODE"
)
private
String
code
;
/**
* 姓名
*/
@JsonProperty
(
"NAME"
)
private
String
name
;
/**
* 邮件
*/
@JsonProperty
(
"EMAIL"
)
private
String
email
;
/**
* 英文名称
*/
@JsonProperty
(
"ENGLISH_NAME"
)
private
String
englishName
;
/**
* 性别
*/
@JsonProperty
(
"SEX"
)
private
String
sex
;
/**
* 办公电话
*/
@JsonProperty
(
"OFFICE_PHONE"
)
private
String
officePhone
;
/**
* 移动电话
*/
@JsonProperty
(
"MOBILE_PHONE"
)
private
String
mobilePhone
;
/**
* 邮编
*/
@JsonProperty
(
"ZIP"
)
private
String
zip
;
/**
* 家庭住址
*/
@JsonProperty
(
"FAMILY_ADDRESS"
)
private
String
familyAddress
;
/**
* 国家
*/
@JsonProperty
(
"COUNTRY"
)
private
String
country
;
/**
* 银行所属国家
*/
@JsonProperty
(
"BANK_COUNTRY"
)
private
String
bankCountry
;
/**
* 银行代码
*/
@JsonProperty
(
"BANK_CODE"
)
private
String
bankCode
;
/**
* 银行账号
*/
@JsonProperty
(
"BANK_ACCOUNT_NUMBER"
)
private
String
bankAccountNumber
;
/**
* 参考明细
*/
@JsonProperty
(
"CONSULT_ITEM"
)
private
String
consultItem
;
/**
* 公司代码
*/
@JsonProperty
(
"COMPANY_CODE"
)
private
String
companyCode
;
}
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