package com.bysoft.bcp.ams.interfaces.service;
import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.bysoft.bcp.ams.interfaces.dao.SyncDao;
import com.bysoft.bcp.ams.util.CXFAuthenticationInterceptor;
import com.bysoft.bcp.ams.webservice.ganghong.org.Exception_Exception;
import com.bysoft.bcp.ams.webservice.ganghong.org.ISysSynchroGetOrgWebService;
import com.bysoft.bcp.ams.webservice.ganghong.org.ISysSynchroGetOrgWebServiceService;
import com.bysoft.bcp.ams.webservice.ganghong.org.SysSynchroGetOrgBaseInfoContext;
import com.bysoft.bcp.ams.webservice.ganghong.org.SysSynchroOrgResult;
import com.bysoft.bcp.core.entity.BaseEntity;
import com.bysoft.bcp.core.util.PasswordUtils;
import com.bysoft.bcp.core.util.StringUtils;
import com.bysoft.bcp.core.util.UUIDUtils;
import com.bysoft.bcp.system.dao.OrganDao;
import com.bysoft.bcp.system.dao.UserDao;
import com.bysoft.bcp.system.entity.Organ;
import com.bysoft.bcp.system.entity.User;
/**
人员组织同步业务层
@author wangwentao
@date 2020-04-28
/
@Service
public class SyncService {
@Autowired
private SyncDao syncDao;
@Autowired
private OrganDao organDao;
@Autowired
private UserDao userDao;
private static final Logger logger = LoggerFactory.getLogger(SyncService.class);
private static final String PASSWORD = "KM12345678";
private static final String USER_AVATAR = "/img/avatar.jpg";
private static ISysSynchroGetOrgWebService port;
/**
public static void main(String[] args) {
port = createWebService();
getOrgan();
getdept();
getgroup();
getpost();
getperson();
}
/**
/**
SysSynchroOrgResult elementsBaseInfo = port.getElementsBaseInfo(sysSynchroGetOrgBaseInfoContext);
String message = elementsBaseInfo.getMessage();
System.out.println(message);
int count = elementsBaseInfo.getCount();
System.out.println(count);
} catch (Exception_Exception e) { // TODO Auto-generated catch block
e.printStackTrace();
}private static void getdept() {
SysSynchroGetOrgBaseInfoContext sysSynchroGetOrgBaseInfoContext = new SysSynchroGetOrgBaseInfoContext();
sysSynchroGetOrgBaseInfoContext.setReturnOrgType("[{\"type\":\"dept\"}]");
try {
SysSynchroOrgResult elementsBaseInfo = port.getElementsBaseInfo(sysSynchroGetOrgBaseInfoContext);
String message = elementsBaseInfo.getMessage();
System.out.println(message);
int count = elementsBaseInfo.getCount();
System.out.println(count);
} catch (Exception_Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void getgroup() {
SysSynchroGetOrgBaseInfoContext sysSynchroGetOrgBaseInfoContext = new SysSynchroGetOrgBaseInfoContext();
sysSynchroGetOrgBaseInfoContext.setReturnOrgType("[{\"type\":\"group\"}]");
try {
SysSynchroOrgResult elementsBaseInfo = port.getElementsBaseInfo(sysSynchroGetOrgBaseInfoContext);
String message = elementsBaseInfo.getMessage();
System.out.println(message);
int count = elementsBaseInfo.getCount();
System.out.println(count);
} catch (Exception_Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void getpost() {
SysSynchroGetOrgBaseInfoContext sysSynchroGetOrgBaseInfoContext = new SysSynchroGetOrgBaseInfoContext();
sysSynchroGetOrgBaseInfoContext.setReturnOrgType("[{\"type\":\"post\"}]");
try {
SysSynchroOrgResult elementsBaseInfo = port.getElementsBaseInfo(sysSynchroGetOrgBaseInfoContext);
String message = elementsBaseInfo.getMessage();
System.out.println(message);
int count = elementsBaseInfo.getCount();
System.out.println(count);
} catch (Exception_Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void getperson() {
SysSynchroGetOrgBaseInfoContext sysSynchroGetOrgBaseInfoContext = new SysSynchroGetOrgBaseInfoContext();
sysSynchroGetOrgBaseInfoContext.setReturnOrgType("[{\"type\":\"person\"}]");
try {
SysSynchroOrgResult elementsBaseInfo = port.getElementsBaseInfo(sysSynchroGetOrgBaseInfoContext);
String message = elementsBaseInfo.getMessage();
System.out.println(message);
int count = elementsBaseInfo.getCount();
System.out.println(count);
} catch (Exception_Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main1(String[] args) {
SysSynchroGetOrgBaseInfoContext sysSynchroGetOrgBaseInfoContext = new SysSynchroGetOrgBaseInfoContext();
sysSynchroGetOrgBaseInfoContext.setReturnOrgType("[{\"type\":\"person\"}]");
try {
SysSynchroOrgResult elementsBaseInfo = port.getElementsBaseInfo(sysSynchroGetOrgBaseInfoContext);
String message = elementsBaseInfo.getMessage();
System.out.println(message);
int count = elementsBaseInfo.getCount();
System.out.println(count);
} catch (Exception_Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//blog.csdn.net/lpcuili/article/details/97828750
// for (Iterator iterator = organlist.iterator(); iterator.hasNext(); ) {
// try {
// BaseEntity entity = iterator.next();
// Organ organ = new Organ();
// String id = entity.get("id").toString();
// organ.setOrganId(id);
// organ.setOrganName(entity.get("departmentname").toString());
// int sup = 0;
// if (StringUtils.isNotNull(entity.get("supdepid"))) {
// Number number = (Number) entity.get("supdepid");
// sup = number.intValue();
// }
// String type = "";
// if (sup == 0) {
// type = "sub";
// }
// if (sup == 0 && StringUtils.isNotNull(entity.get("subcompanyid1"))) {
// Number number = (Number) entity.get("subcompanyid1");
// sup = number.intValue();
// }
// if ("sub1050".equals(type + sup)) {
// continue;
// }
// organ.setOrganParentId(type + sup);
// organ.setOrganState(1);
// int sn = 0;
// if (StringUtils.isNotNull(entity.get("showorder"))) {
// Number number = (Number) entity.get("showorder");
// sn = number.intValue();
// }
// organ.setOrganSn(sn);
// organ.setOrganLeaf(false);
// Organ dbOrgan = organDao.createLambdaQuery().andEq(Organ::getOrganId, id).single();
// if (dbOrgan != null) {
// organ.setUpdateTime(new Date());
// organDao.updateById(organ);
// } else {
// organ.setCreateTime(new Date());
// organDao.insert(organ);
// }
// } catch (Exception e) {
// logger.error("同步部门出错", e);
// continue;
// }
// }
/**
* 优化组织架构
*/
private void optimizeLevel() {
List<Organ> organAll = organDao.all();
if (null != organAll) {
for (Organ organ : organAll) {
if ((int) organDao.createLambdaQuery().andEq(Organ::getOrganParentId, organ.getOrganId()).count() == 0) {
organDao.executeUpdate("update sys_organ set organ_leaf = ? where organ_id = ?", true, organ.getOrganId());
}
}
}
}
/**
* 同步用户
*/
private void getUser() {
List<BaseEntity> userList = null;
for (Iterator<BaseEntity> iterator = userList.iterator(); iterator.hasNext(); ) {
try {
BaseEntity entity = iterator.next();
User user = new User();
String id = entity.get("id").toString();
//用户ID
user.setUserId(id);
//用户登陆名
user.setUserLoginName(entity.get("loginid").toString());
//用户名
user.setUserName(entity.get("lastname").toString());
//性别
user.setUserSex(((String) entity.get("sex")).equals("0") ? "男" : "女");
//头像
user.setUserAvatar(USER_AVATAR);
String organId = entity.get("departmentid").toString();
//用户部门ID
user.setUserOrganId(organId);
Organ dbOrgan = organDao.createLambdaQuery().andEq(Organ::getOrganId, organId).single();
if (dbOrgan != null) {
//用户部门名称
user.setUserOrganName(dbOrgan.getOrganName());
} else {
continue;
}
String organFullName = getOrganFullNameById(organId);
//用户部门全称
user.setUserOrganFullname(organFullName);
//用户工作电话
user.setUserWorkPhone((String) entity.get("telephone"));
//用户移动电话
user.setUserMobilePhone((String) entity.get("mobile"));
//用户邮箱
user.setUserEmail((String) entity.get("email"));
//用户状态
int state = 0;
if (StringUtils.isNotNull(entity.get("status"))) {
Number number = (Number) entity.get("status");
state = number.intValue();
}
if (state == 0 || state == 1 || state == 2 || state == 3) {
state = 1;
} else {
state = 0;
}
user.setUserState(state);
User dbUser = userDao.createLambdaQuery().andEq(User::getUserId, id).single();
if (dbUser != null) {
user.setUpdateTime(new Date());
userDao.updateTemplateById(user);
} else {
User loginidUser = userDao.createLambdaQuery().andEq(User::getUserLoginName, entity.get("loginid").toString()).single();
if (loginidUser != null) {
userDao.deleteById(loginidUser.getUserId());
userDao.executeUpdate("delete from sys_user_group where user_id = ?", loginidUser.getUserId());
}
//用户密码
user.setUserPassword(PasswordUtils.sha256(PASSWORD));
user.setCreateTime(new Date());
userDao.insert(user);
userDao.executeUpdate("INSERT INTO sys_user_group(guid,group_id,user_id) VALUES (?,?,?)", UUIDUtils.uuid(), "dd355313-136c-4fc4-9cd9-c45761d9f75e", id);
}
} catch (Exception e) {
logger.error("同步用户出错", e);
continue;
}
}
}
/**
* 根据部门ID获取部门全称
*
* @param organId 部门ID
* @return 部门全称
*/
private String getOrganFullNameById(String organId) {
StringBuilder organFullName = new StringBuilder();
List<BaseEntity> organIdList = syncDao.execute("select func_query_parent_organ(?) as id", organId);
if (!organIdList.isEmpty()) {
StringBuilder organName = new StringBuilder();
String id = organIdList.get(0).get("id").toString();
if (!StringUtils.isBlank(id)) {
String[] guid = id.split(",");
List<Organ> organNameList = organDao.createLambdaQuery().andIn(Organ::getOrganId, Arrays.asList(guid))
.appendSql(" order by FIND_IN_SET(organ_id,func_query_parent_organ('" + organId + "'))").select();
if (!organNameList.isEmpty()) {
for (Organ organ : organNameList) {
organName.append("-" + organ.getOrganName());
}
if (StringUtils.isBlank(organFullName.toString())) {
organFullName.append(organName.substring(1));
} else {
organFullName.append("-" + organName);
}
}
}
}
return organFullName.toString();
}
}
用 fastjson 或者 jackson包
可以用fastjson或者Gson都可以这个挺简单的,想要学java可以看看我的博客哦
使用Gson:
JSONObject jsonObject = JSONObject.parseObject(str);