package doumeemes.service.ext.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import doumeemes.core.model.LoginUserInfo;
|
import doumeemes.core.model.PageData;
|
import doumeemes.core.model.PageWrap;
|
import doumeemes.core.utils.Constants;
|
import doumeemes.core.utils.dingding.DingDingSyncUtil;
|
import doumeemes.dao.business.model.Company;
|
import doumeemes.dao.business.model.CompanyPosition;
|
import doumeemes.dao.business.model.CompanyUser;
|
import doumeemes.dao.business.model.Department;
|
import doumeemes.dao.ext.CompanyExtMapper;
|
import doumeemes.dao.ext.CompanyPositionExtMapper;
|
import doumeemes.dao.ext.CompanyUserExtMapper;
|
import doumeemes.dao.ext.dto.QueryCompanyUserExtDTO;
|
import doumeemes.dao.ext.vo.CompanyUserExtListVO;
|
import doumeemes.dao.ext.vo.DepartmentExtListVO;
|
import doumeemes.dao.system.SystemUserMapper;
|
import doumeemes.dao.system.model.SystemRole;
|
import doumeemes.dao.system.model.SystemUser;
|
import doumeemes.service.ext.CompanyExtService;
|
import doumeemes.service.ext.CompanyUserExtService;
|
import doumeemes.service.ext.DepartmentExtService;
|
import doumeemes.service.ext.ProceduresExtService;
|
import doumeemes.service.system.SystemRoleService;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.shiro.SecurityUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.annotation.Lazy;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Objects;
|
|
/**
|
* 组织人员关联信息Service实现
|
* @author 江蹄蹄
|
* @date 2022/04/20 10:59
|
*/
|
@Service
|
public class CompanyUserExtServiceImpl implements CompanyUserExtService {
|
|
@Autowired
|
private CompanyUserExtMapper companyUserExtMapper;
|
@Autowired
|
private DepartmentExtService departmentExtService;
|
@Autowired
|
private CompanyExtMapper companyExtMapper;
|
@Autowired
|
private SystemUserMapper systemUserMapper;
|
@Lazy
|
@Autowired
|
private SystemRoleService systemRoleService;
|
@Autowired
|
private ProceduresExtService proceduresExtService;
|
@Autowired
|
private CompanyPositionExtMapper companyPositionExtMapper;
|
@Autowired
|
private CompanyExtService companyExtService;
|
|
@Override
|
public PageData<CompanyUserExtListVO> findPage(PageWrap<QueryCompanyUserExtDTO> pageWrap) {
|
pageWrap.getModel().setDeleted(Constants.ZERO);
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
|
//如果是企业级用户,只能看自己企业的部门数据
|
pageWrap.getModel().setCompanyId(user.getCompany().getId());
|
pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId());
|
}else{
|
return PageData.from(new PageInfo<>(new ArrayList<>()));
|
}
|
PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
|
List<CompanyUserExtListVO> result = companyUserExtMapper.selectList(pageWrap.getModel());
|
if(result!=null && user!=null){
|
SystemRole role = new SystemRole();
|
role.setCompanyId(user.getCompany().getId());
|
role.setType(Constants.ROLETYPE.com);
|
role.setDeleted(Boolean.FALSE);
|
for(CompanyUserExtListVO u : result){
|
//查询工序名称
|
u.setProcedureNames(proceduresExtService.getNamesByIdStr(user.getCompany().getId(),u.getProcedureIds()));
|
// 查询用户角色列表
|
u.setRoles(systemRoleService.findByUserModel(u.getUserId(),role));
|
}
|
}
|
return PageData.from(new PageInfo<>(result));
|
}
|
@Override
|
public List<CompanyUserExtListVO> allUser(QueryCompanyUserExtDTO pageWrap){
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
|
//如果是企业级用户,只能看自己企业的部门数据
|
pageWrap.setCompanyId(user.getCompany().getId());
|
pageWrap.setRootDepartId(user.getRootDepartment().getId());
|
if(pageWrap.getDepartmentId()!=null){
|
DepartmentExtListVO t = new DepartmentExtListVO();
|
t.setCompanyId(user.getCompany().getId());
|
t.setId(pageWrap.getDepartmentId());
|
pageWrap.setDepartIds(departmentExtService.userDataPermissonList(t, true));
|
}
|
if(pageWrap.getDepartIds()!=null && pageWrap.getDepartIds().size()>0){
|
pageWrap.setDepartmentId(null);
|
}
|
pageWrap.setDeleted(null);
|
}else{
|
return new ArrayList<>() ;
|
}
|
pageWrap.setDeleted(Constants.ZERO);
|
List<CompanyUserExtListVO> result = companyUserExtMapper.selectList(pageWrap );
|
return result;
|
}
|
@Override
|
public CompanyUserExtListVO selectOne(QueryCompanyUserExtDTO c) {
|
CompanyUserExtListVO result = companyUserExtMapper.selectModel(c);
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(result!=null && user !=null && user.getCompany()!=null){
|
//查询工序名称
|
result.setProcedureNames(proceduresExtService.getNamesByIdStr(user.getCompany().getId(),result.getProcedureIds()));
|
}
|
return result;
|
}
|
@Override
|
public CompanyUserExtListVO selectById(Integer proUserId){
|
QueryCompanyUserExtDTO c = new QueryCompanyUserExtDTO();
|
c.setId(proUserId);
|
CompanyUserExtListVO result = companyUserExtMapper.selectModel(c);
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(result!=null && user !=null){
|
//查询工序名称
|
result.setProcedureNames(proceduresExtService.getNamesByIdStr(user.getCompany().getId(),result.getProcedureIds()));
|
}
|
return result;
|
}
|
|
|
@Override
|
public List<CompanyUserExtListVO> getUserDevice(QueryCompanyUserExtDTO pageWrap){
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
|
//如果是企业级用户,只能看自己企业的部门数据
|
pageWrap.setCompanyId(user.getCompany().getId());
|
}else{
|
return new ArrayList<>() ;
|
}
|
List<CompanyUserExtListVO> result = companyUserExtMapper.getUserDevice(pageWrap );
|
return result;
|
}
|
|
|
|
/**
|
* 订阅用户信息变动
|
* @param ddUserId
|
* @param companyId
|
* @param optType add = 新增 edit = 修改 delete = 删除
|
*/
|
@Override
|
public void syncCompanyUser(Long ddUserId,Integer companyId,String optType){
|
Company company = companyExtMapper.selectById(companyId);
|
String accessToken = companyExtService.getDingdingToken(companyId);
|
CompanyUser companyUser = DingDingSyncUtil.getDingDingUserInfo(ddUserId.toString(),accessToken);
|
if(optType.equals("add")){
|
CompanyUser dbCompanyUser = companyUserExtMapper.selectOne(new QueryWrapper<CompanyUser>()
|
.and( i -> i.eq("DD_USERID", ddUserId).or()
|
.eq("PHONE", companyUser.getPhone()))
|
.apply(" COM_DEPART_ID in ( select d.id from department d where d.COMPANY_ID = '"+companyId+"' ) ")
|
.last(" limit 1 ")
|
);
|
if(Objects.isNull(dbCompanyUser)){
|
//查询手机号是否存在用户
|
SystemUser systemUser = systemUserMapper.selectOne(new QueryWrapper<SystemUser>()
|
.eq("MOBILE",companyUser.getPhone())
|
.eq("DELETED",Constants.ZERO)
|
.last(" limit 1 ")
|
);
|
if(Objects.isNull(systemUser)){
|
systemUser = new SystemUser();
|
systemUser.setCreateTime(new Date());
|
systemUser.setUsername(companyUser.getPhone());
|
systemUser.setRealname(companyUser.getName());
|
systemUser.setType(Constants.ONE);
|
systemUserMapper.insert(systemUser);
|
}
|
if(StringUtils.isNotBlank(companyUser.getPosition())){
|
//查询岗位是否已存在
|
CompanyPosition companyPosition = companyPositionExtMapper.selectOne(new QueryWrapper<CompanyPosition>()
|
.eq("COMPANY_ID",company.getId())
|
.eq("NAME",companyUser.getPosition())
|
.eq("DELETED",Constants.ZERO)
|
.eq("STATUS",Constants.ZERO)
|
.last(" limit 1 ")
|
);
|
if(Objects.isNull(companyPosition)){
|
companyPosition = new CompanyPosition();
|
companyPosition.setDeleted(Constants.ZERO);
|
companyPosition.setStatus(Constants.ZERO);
|
companyPosition.setCreateTime(new Date());
|
companyPosition.setName(companyUser.getPosition());
|
companyPosition.setCompanyId(company.getId());
|
companyPositionExtMapper.insert(companyPosition);
|
}
|
companyUser.setPositionId(companyPosition.getId());
|
}
|
if(Objects.isNull(companyUser.getDepartmentId())){
|
//查询部门信息是否存在
|
Department queryDepartment = new Department();
|
queryDepartment.setDdDeptId(Long.valueOf(companyUser.getDepartmentId()));
|
queryDepartment.setCompanyId(company.getId());
|
Department department = departmentExtService.findOne(queryDepartment);
|
if(Objects.isNull(department)){
|
department = departmentExtService.syncDepartment(Long.valueOf(companyUser.getDepartmentId()),companyId,"add");
|
}
|
companyUser.setDepartmentId(department.getId());
|
}
|
companyUser.setUserId(systemUser.getId());
|
companyUserExtMapper.insert(companyUser);
|
}
|
}else if(optType.equals("edit")){
|
CompanyUser dbCompanyUser = companyUserExtMapper.selectOne(new QueryWrapper<CompanyUser>()
|
.eq("DD_USERID", ddUserId)
|
.apply(" COM_DEPART_ID in ( select d.id from department d where d.COMPANY_ID = '"+companyId+"' ) ")
|
.last(" limit 1 ")
|
);
|
if(!Objects.isNull(dbCompanyUser)){
|
companyUser.setDeleted(Constants.ZERO);
|
companyUser.setCreateTime(new Date());
|
companyUser.setName(dbCompanyUser.getName());
|
companyUser.setPhone(dbCompanyUser.getPhone());
|
companyUser.setPhoneAuthStatus(Integer.toString(Constants.ZERO));
|
if(Objects.isNull(companyUser.getDepartmentId())){
|
//查询部门信息是否存在
|
Department queryDepartment = new Department();
|
queryDepartment.setDdDeptId(Long.valueOf(companyUser.getDepartmentId()));
|
queryDepartment.setCompanyId(company.getId());
|
Department department = departmentExtService.findOne(queryDepartment);
|
if(Objects.isNull(department)){
|
department = departmentExtService.syncDepartment(Long.valueOf(companyUser.getDepartmentId()),companyId,"add");
|
}
|
companyUser.setDepartmentId(department.getId());
|
}
|
companyUserExtMapper.updateById(companyUser);
|
}
|
|
}else if(optType.equals("delete")){
|
CompanyUser dbCompanyUser = companyUserExtMapper.selectOne(new QueryWrapper<CompanyUser>()
|
.eq("DD_USERID", ddUserId)
|
.apply(" COM_DEPART_ID in ( select d.id from department d where d.COMPANY_ID = '"+companyId+"' ) ")
|
.last(" limit 1 ")
|
);
|
if(!Objects.isNull(dbCompanyUser)){
|
dbCompanyUser.setDeleted(Constants.ONE);
|
companyUserExtMapper.updateById(companyUser);
|
}
|
}
|
|
|
}
|
|
|
|
|
}
|