Commit feda599e authored by 鲁鑫's avatar 鲁鑫

同步组织人员到EP

parent 45e4ddf2
package com.huigou.topsun.base.dictionary.application.impl; 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.jdbc.util.BatchSqlUpdateDetail;
import com.huigou.data.query.model.QueryDescriptor; import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.topsun.base.dictionary.GlobalCode; import com.huigou.topsun.base.dictionary.GlobalCode;
import com.huigou.topsun.base.dictionary.application.DictionaryImportApplication; import com.huigou.topsun.base.dictionary.application.DictionaryImportApplication;
import com.huigou.topsun.base.dictionary.domain.DictionaryImportData; import com.huigou.topsun.base.dictionary.domain.DictionaryImportData;
import com.huigou.uasp.bmp.common.application.BaseApplication; 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.uasp.tool.dataimport.application.ExcelImportInterface;
import com.huigou.util.StringUtil;
import org.springframework.stereotype.Service; 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.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
......
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;
}
}
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;
}
}
...@@ -2,13 +2,11 @@ package com.huigou.topsun.controller; ...@@ -2,13 +2,11 @@ package com.huigou.topsun.controller;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.huigou.cache.DictUtil; 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.SapAreaApplication;
import com.huigou.topsun.sap.sapApplication.application.SapDictionaryApplication; import com.huigou.topsun.sap.sapApplication.application.SapDictionaryApplication;
import com.huigou.topsun.sap.sapApplication.application.SapMaterialApplication; import com.huigou.topsun.sap.sapApplication.application.SapMaterialApplication;
import com.huigou.topsun.sap.sapApplication.application.SapPaymentApplication; import com.huigou.topsun.sap.sapApplication.application.SapPaymentApplication;
import com.huigou.topsun.sap.sapApplication.domain.query.SapDialogQuery; 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.annotation.ControllerMapping;
import com.huigou.uasp.bmp.common.easysearch.EasySearch; import com.huigou.uasp.bmp.common.easysearch.EasySearch;
import com.huigou.uasp.bmp.common.easysearch.domain.model.EasySearchParse; import com.huigou.uasp.bmp.common.easysearch.domain.model.EasySearchParse;
......
...@@ -221,7 +221,7 @@ public class EpSaleOrderApplicationImpl extends FlowBroker implements EpSaleOrde ...@@ -221,7 +221,7 @@ public class EpSaleOrderApplicationImpl extends FlowBroker implements EpSaleOrde
//日志记录 //日志记录
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
try { try {
String execute = httpClient.executeByJsonForEp(map, "od/saleOrder/auditedResult"); String execute = httpClient.executeForEp(map, "od/saleOrder/auditedResult");
EpResult epResult = JSONObject.parseObject(execute, EpResult.class); EpResult epResult = JSONObject.parseObject(execute, EpResult.class);
resultMap.put("type", epResult.getCode()); resultMap.put("type", epResult.getCode());
resultMap.put("message", epResult.getMsg()); resultMap.put("message", epResult.getMsg());
......
...@@ -220,7 +220,7 @@ public class EpSaleOrderCancelApplicationImpl extends FlowBroker implements EpSa ...@@ -220,7 +220,7 @@ public class EpSaleOrderCancelApplicationImpl extends FlowBroker implements EpSa
//日志记录 //日志记录
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
try { try {
String execute = httpClient.executeByJsonForEp(map, "od/saleOrder/auditedResult"); String execute = httpClient.executeForEp(map, "od/saleOrder/auditedResult");
EpResult epResult = JSONObject.parseObject(execute, EpResult.class); EpResult epResult = JSONObject.parseObject(execute, EpResult.class);
resultMap.put("type", epResult.getCode()); resultMap.put("type", epResult.getCode());
resultMap.put("message", epResult.getMsg()); resultMap.put("message", epResult.getMsg());
......
...@@ -127,7 +127,7 @@ public class SapAcceptanceFormAckApplicationImpl implements SapAcceptanceFormAc ...@@ -127,7 +127,7 @@ public class SapAcceptanceFormAckApplicationImpl implements SapAcceptanceFormAc
String string = sdo.getString("params"); String string = sdo.getString("params");
String execute; String execute;
try { try {
execute = httpClient.executeByJson(string, url); execute = httpClient.execute(string, url);
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
......
...@@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; ...@@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.huigou.cache.SystemCache; import com.huigou.cache.SystemCache;
import com.huigou.topsun.sap.common.serializer.MessageSerializer; import com.huigou.topsun.sap.common.serializer.MessageSerializer;
import com.huigou.uasp.bmp.common.application.BaseApplication; 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.HttpResponse;
import org.apache.http.HttpStatus; import org.apache.http.HttpStatus;
import org.apache.http.StatusLine; import org.apache.http.StatusLine;
...@@ -20,8 +20,6 @@ import org.springframework.stereotype.Component; ...@@ -20,8 +20,6 @@ import org.springframework.stereotype.Component;
import java.io.IOException; import java.io.IOException;
import java.util.Base64; import java.util.Base64;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
*/ */
...@@ -37,14 +35,15 @@ public class DefaultHttpClient extends BaseApplication implements HttpClient { ...@@ -37,14 +35,15 @@ public class DefaultHttpClient extends BaseApplication implements HttpClient {
this.messageSerializer = messageSerializer; this.messageSerializer = messageSerializer;
} }
/**
* 访问SAP系统的ip、上下文httpClient配置
* @param param 非JSON数据对象
* @param url 控制层地址
* @return 返回
* @throws IOException
*/
@Override @Override
public String execute(Object param,String url) throws IOException { 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地址 // ip地址
String ip = SystemCache.getParameter("sap.service.ip", String.class); String ip = SystemCache.getParameter("sap.service.ip", String.class);
...@@ -64,56 +63,72 @@ public class DefaultHttpClient extends BaseApplication implements HttpClient { ...@@ -64,56 +63,72 @@ public class DefaultHttpClient extends BaseApplication implements HttpClient {
.append(url) .append(url)
.append("?") .append("?")
.append(client); .append(client);
HttpPost post = new HttpPost(serverUrl.toString());
post.setHeader("Content-type", "application/json;charset=utf-8");
String usernameAndPassword = username + ":" + password; String usernameAndPassword = username + ":" + password;
post.addHeader("Authorization", "Basic " + Base64.getEncoder().encodeToString(usernameAndPassword.getBytes())); return this.buildHttpClient(param, String.valueOf(serverUrl),usernameAndPassword);
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;
} }
/**
* 访问EP系统的ip、上下文httpClient配置
* @param param 非JSON数据对象
* @param url 控制层地址
* @return 返回
* @throws IOException
*/
@Override @Override
public String executeByJsonForEp(Object param,String url) throws IOException { public String executeForEp(Object param,String url) throws IOException {
//系统接口地址 //系统接口地址
// ip地址 // ip地址
String ip = SystemCache.getParameter("ep.service.ip", String.class); String ip = SystemCache.getParameter("ep.service.ip", String.class);
// 上下文 // 上下文
String applicationContext = SystemCache.getParameter("ep.service.application.context", 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"; //String serverUrl = "http://192.168.23.15:8080/api/od/saleOrder/auditedResult.ajax";
StringBuffer serverUrl = new StringBuffer(); StringBuffer serverUrl = new StringBuffer();
serverUrl serverUrl
.append(ip) .append(ip)
.append(applicationContext) .append(applicationContext)
.append(url); .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"); post.setHeader("Content-type", "application/json;charset=utf-8");
//String usernameAndPassword = username + ":" + password; //String usernameAndPassword = username + ":" + password;
//post.addHeader("Authorization", "Basic " + Base64.getEncoder().encodeToString(usernameAndPassword.getBytes())); if (StringUtil.isNotBlank(usernameAndPassword)){
String paramJson = new ObjectMapper().writeValueAsString(param); post.addHeader("Authorization", "Basic " + Base64.getEncoder().encodeToString(usernameAndPassword.getBytes()));
}
String paramJson = new ObjectMapper().writeValueAsString(obj);
LOG.info("requestText={}", paramJson); LOG.info("requestText={}", paramJson);
post.setEntity(new StringEntity(paramJson, ContentType.APPLICATION_JSON)); post.setEntity(new StringEntity(paramJson, ContentType.APPLICATION_JSON));
LOG.info("post={}", post); LOG.info("post={}", post);
...@@ -124,11 +139,10 @@ public class DefaultHttpClient extends BaseApplication implements HttpClient { ...@@ -124,11 +139,10 @@ public class DefaultHttpClient extends BaseApplication implements HttpClient {
StatusLine statusLine = response.getStatusLine(); StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode(); int statusCode = statusLine.getStatusCode();
if (statusLine.getStatusCode() < HttpStatus.SC_OK || statusLine.getStatusCode() >= HttpStatus.SC_MULTIPLE_CHOICES) { 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"); responseText = EntityUtils.toString(response.getEntity(), "UTF-8");
LOG.info("responseText={}", responseText); LOG.info("responseText={}", responseText);
LOG.info("----------->> 调用EP接口 {} 成功 <<-----------", serverUrl);
}finally { }finally {
post.releaseConnection(); post.releaseConnection();
} }
......
package com.huigou.topsun.sap.common; package com.huigou.topsun.sap.common;
import java.io.IOException; import java.io.IOException;
import java.util.Map;
/** /**
* esb客户端,用于调用esb服务。 * 客户端,用于调用远程服务。
*/ */
public interface HttpClient { public interface HttpClient {
/** /**
...@@ -19,9 +16,9 @@ public interface HttpClient { ...@@ -19,9 +16,9 @@ public interface HttpClient {
* @throws IOException * @throws IOException
*/ */
String execute(Object param,String url) throws IOException; public String execute(Object param,String url) throws IOException;
public String executeByJson(String param,String url) throws IOException; public String executeForEp(Object param,String url) throws IOException;
public String executeByJsonForEp(Object param,String url) throws IOException; public String executeForMes(Object param,String url) throws IOException;
} }
package com.huigou.topsun.sap.common.domain; package com.huigou.topsun.sap.common.domain;
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data; import lombok.Data;
import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.GenericGenerator;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
......
package com.huigou.topsun.sap.nonProdApply.domain; package com.huigou.topsun.sap.nonProdApply.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.huigou.data.domain.model.FlowBillAbstractEntity; import com.huigou.data.domain.model.FlowBillAbstractEntity;
import lombok.Data; import lombok.Data;
......
...@@ -34,8 +34,7 @@ public class SapMaterialApplicationImpl implements SapMaterialApplication { ...@@ -34,8 +34,7 @@ public class SapMaterialApplicationImpl implements SapMaterialApplication {
/*if (StringUtil.isBlank(queryRequest.getWerks()) || StringUtil.isBlank(queryRequest.getMatkl())){ /*if (StringUtil.isBlank(queryRequest.getWerks()) || StringUtil.isBlank(queryRequest.getMatkl())){
return sapMaterialVoList; return sapMaterialVoList;
}*/ }*/
String paramJson = new ObjectMapper().writeValueAsString(queryRequest); String json = httpClient.execute(queryRequest, "search/sch_matnr");
String json = httpClient.executeByJson(paramJson, "search/sch_matnr");
Map<String, Object> map = JSONUtil.toMap(json); Map<String, Object> map = JSONUtil.toMap(json);
SapResult sapResult = JSONObject.parseObject(JSONUtil.toString(map.get("MSG")), SapResult.class); SapResult sapResult = JSONObject.parseObject(JSONUtil.toString(map.get("MSG")), SapResult.class);
if ("S".equals(sapResult.getTYPE())){ if ("S".equals(sapResult.getTYPE())){
......
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();
}
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);
}
}
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();
}
}
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());
}
}
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;
}
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;
}
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;
}
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;
}
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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment