Commit c39a6fc3 by 墨竹

feat:删除无效代码

parent 78cc11fd
......@@ -44,769 +44,706 @@ import java.util.stream.Collectors;
@Service
public class DepartmentApiServiceImpl implements DepartmentApiService {
private static Logger logger = LoggerFactory.getLogger(DepartmentApiServiceImpl.class);
@Autowired
private DepartmentService departmentService;
@Autowired
private StaffDepartmentRelatedService staffDepartmentService;
@Autowired
private DepartmentMapper departmentMapper;
@Autowired
private com.gic.enterprise.api.service.DepartmentService gicDepartmentService;
@Autowired
private QywxDepartmentApiService qywxDepartmentApiService;
@Autowired
private WxEnterpriseService wxEnterpriseService;
@Autowired
private StoreService storeService;
@Autowired
private StoreGroupService storeGroupService;
@Autowired
private StaffApiService staffApiService;
@Autowired
private StaffDepartmentRelatedApiService staffDepartmentRelatedApiService;
@Autowired
private SyncErrorLogService syncErrorLogService;
@Autowired
private SecretSettingService secretSettingService;
@Override
public List<DepartmentDTO> listByParentId(String parentId) {
List<TabHaobanDepartment> list = departmentService.listByParentId(parentId);
return EntityUtil.changeEntityListByJSON(DepartmentDTO.class, list);
}
@Override
public DepartmentDTO selectById(String departmentId) {
TabHaobanDepartment tab = departmentService.selectById(departmentId);
return EntityUtil.changeEntityByJSON(DepartmentDTO.class, tab);
}
@Override
public ServiceResponse<DepartmentDTO> add(DepartmentDTO department) {
ServiceResponse hr = new ServiceResponse();
hr.setCode(1);
//调微信的新增接口
String wxDepartmentId = "";
WxEnterpriseDTO enterpriseDTO = wxEnterpriseService.selectById(department.getWxEnterpriseId());
logger.info("【部门新增】enterpriseDTO = {}",JSON.toJSONString(enterpriseDTO));
if(enterpriseDTO != null) {
Long sort = department.getSort();
if(sort == null) {
long maxSort = departmentMapper.selectMaxSort(department.getParentDepartmentId());
department.setSort(maxSort + 1);
}
com.gic.wechat.api.dto.qywx.DepartmentDTO dto = new com.gic.wechat.api.dto.qywx.DepartmentDTO();
dto.setCorpid(enterpriseDTO.getCorpid());
dto.setName(department.getDepartmentName());
dto.setOrder(department.getSort());
TabHaobanDepartment parent = departmentService.selectById(department.getParentDepartmentId());
dto.setParentid(Integer.valueOf(parent.getWxDepartmentId()));
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(enterpriseDTO.getWxEnterpriseId(), SecretTypeEnum.CONTACT_SECRET.getVal());
if (null == secretSetting || secretSetting.getCheckFlag()==0) {
hr.setCode(0);
hr.setMessage("没有设置通讯录secret");
return hr;
}
logger.info("【部门新增】corpid() = {},siteId={},dto={}",enterpriseDTO.getCorpid(),secretSetting.getSecretVal(),JSON.toJSONString(dto));
JSONResponse jp = qywxDepartmentApiService.createSelfDepartment(enterpriseDTO.getCorpid(), secretSetting.getSecretVal(), dto);
logger.info("【部门新增】jp = {}",JSON.toJSONString(jp));
if(jp.getErrorCode() != 0) {
hr.setCode(0);
hr.setMessage("微信新增部门失败:" + jp.getErrorCode());
return hr;
}
wxDepartmentId = jp.getResult().toString();
logger.info("【部门新增】wxDepartmentId = {}",wxDepartmentId);
department.setWxDepartmentId(wxDepartmentId);
department.setLevel(parent.getLevel() + 1);
setGicEnterpriseId(department);
String departmentId = departmentService.add(department);
department.setDepartmentId(departmentId);
hr.setResult(department);
}
return hr;
}
private void setGicEnterpriseId(DepartmentDTO department) {
String relatedId = department.getRelatedId();
if(StringUtils.isNotBlank(relatedId)){
Integer storeFlag = department.getIsStore();
if(storeFlag == 1){
StoreDTO store = storeService.getStore(relatedId);
if(store != null){
department.setEnterpriseId(store.getEnterpriseId());
}
}else{
com.gic.enterprise.api.dto.DepartmentDTO departmentDTO = gicDepartmentService.getDeptment(relatedId);
if(departmentDTO != null){
department.setEnterpriseId(departmentDTO.getEnterpriseId());
}
StoreGroupDTO storeGroup = storeGroupService.getStoreGroupById(relatedId);
if(storeGroup != null){
department.setEnterpriseId(storeGroup.getEnterpriseId());
}
}
}
}
@Override
public ServiceResponse edit(DepartmentDTO department) {
ServiceResponse hr = new ServiceResponse();
hr.setCode(1);
hr.setResult(department);
//调微信的修改接口
TabHaobanDepartment tab = departmentService.selectById(department.getDepartmentId());
if(tab == null){
hr.setCode(0);
hr.setMessage("部门不存在");
return hr;
}
logger.info("【部门修改】tab={}",JSON.toJSONString(tab));
WxEnterpriseDTO enterpriseDTO = wxEnterpriseService.selectById(tab.getWxEnterpriseId());
if(enterpriseDTO != null) {
com.gic.wechat.api.dto.qywx.DepartmentDTO dto = new com.gic.wechat.api.dto.qywx.DepartmentDTO();
dto.setCorpid(enterpriseDTO.getCorpid());
dto.setName(department.getDepartmentName());
dto.setOrder(department.getSort());
TabHaobanDepartment parent = departmentService.selectById(department.getParentDepartmentId());
dto.setParentid(Integer.valueOf(parent.getWxDepartmentId()));
dto.setId(Integer.valueOf(tab.getWxDepartmentId()));
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(enterpriseDTO.getWxEnterpriseId(), SecretTypeEnum.CONTACT_SECRET.getVal());
if (null == secretSetting || secretSetting.getCheckFlag()==0) {
hr.setCode(0);
hr.setMessage("没有设置通讯录secret");
return hr;
}
JSONResponse jp = qywxDepartmentApiService.updateSelfDepartment(enterpriseDTO.getCorpid(), secretSetting.getSecretVal(), dto);
logger.info("【部门修改】jp={}",JSON.toJSONString(jp));
if(jp.getErrorCode() != 0) {
hr.setCode(0);
hr.setMessage("微信修改部门失败");
return hr;
}
}
departmentService.edit(department);
return hr;
}
@Override
public ServiceResponse del(String departmentId) {
ServiceResponse hr = new ServiceResponse();
hr.setCode(1);
List<TabHaobanDepartment> list = departmentService.listByParentId(departmentId);
logger.info("【部门删除】list.size={}",list.size());
if(!list.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在子部门,删除部门失败");
return hr;
}
List<TabHaobanStaffDepartmentRelated> staffList = staffDepartmentService.listByDepartmentId(departmentId);
logger.info("【部门删除】staffList.size={}",staffList.size());
if(!staffList.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在成员,删除部门失败");
return hr;
}
//调微信的删除接口
TabHaobanDepartment department = departmentService.selectById(departmentId);
if(department == null){
hr.setCode(0);
hr.setMessage("不存在部门,删除部门失败");
return hr;
}
WxEnterpriseDTO enterpriseDTO = wxEnterpriseService.selectById(department.getWxEnterpriseId());
if(enterpriseDTO != null) {
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(enterpriseDTO.getWxEnterpriseId(), SecretTypeEnum.CONTACT_SECRET.getVal());
if (null == secretSetting || secretSetting.getCheckFlag()==0) {
logger.info("没有设置通讯录secret:{}",JSONObject.toJSONString(secretSetting));
hr.setCode(0);
hr.setMessage("没有设置通讯录secret");
return hr;
}
JSONResponse jp = qywxDepartmentApiService.deleteSelfDepartment(enterpriseDTO.getCorpid(), secretSetting.getSecretVal(), Integer.parseInt(department.getWxDepartmentId()));
if(jp.getErrorCode() != 0) {
logger.info("微信删除部门失败:{}",JSONObject.toJSONString(jp));
hr.setCode(0);
hr.setMessage("微信删除部门失败");
return hr;
}
}
departmentService.del(departmentId);
return hr;
}
@Override
public ServiceResponse wxCallBackDel(String departmentId){
ServiceResponse hr = new ServiceResponse();
hr.setCode(1);
List<TabHaobanDepartment> list = departmentService.listByParentId(departmentId);
logger.info("【部门删除】list.size={}",list.size());
if(!list.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在子部门,删除部门失败");
return hr;
}
List<TabHaobanStaffDepartmentRelated> staffList = staffDepartmentService.listByDepartmentId(departmentId);
logger.info("【部门删除】staffList.size={}",staffList.size());
if(!staffList.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在成员,删除部门失败");
return hr;
}
departmentService.del(departmentId);
return hr;
}
@Override
public DepartmentDTO selectByRelatedId(String relatedId) {
TabHaobanDepartment tab = departmentService.selectByRelatedId(relatedId);
return EntityUtil.changeEntityByJSON(DepartmentDTO.class, tab);
}
@Override
public ServiceResponse recycle(String departmentId) {
ServiceResponse hr = new ServiceResponse();
hr.setCode(1);
List<TabHaobanDepartment> list = departmentService.listByParentId(departmentId);
logger.info("【部门删除】list.size={}",list.size());
if(!list.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在子部门,删除部门失败");
return hr;
}
List<TabHaobanStaffDepartmentRelated> staffList = staffDepartmentService.listByDepartmentId(departmentId);
logger.info("【部门删除】staffList.size={}",staffList.size());
if(!staffList.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在成员,删除部门失败");
return hr;
}
//调微信的新增接口
TabHaobanDepartment department = departmentService.selectById(departmentId);
WxEnterpriseDTO enterpriseDTO = wxEnterpriseService.selectById(department.getWxEnterpriseId());
if(enterpriseDTO != null) {
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(enterpriseDTO.getWxEnterpriseId(), SecretTypeEnum.CONTACT_SECRET.getVal());
if (null == secretSetting || secretSetting.getCheckFlag()==0) {
hr.setCode(0);
hr.setMessage("没有设置通讯录secret");
return hr;
}
JSONResponse jp = qywxDepartmentApiService.deleteSelfDepartment(enterpriseDTO.getCorpid(), secretSetting.getSecretVal(), Integer.parseInt(department.getWxDepartmentId()));
if(jp.getErrorCode() != 0) {
hr.setCode(0);
hr.setMessage("微信删除部门失败");
return hr;
}
}
departmentService.recycle(departmentId);
return hr;
}
@Override
public ServiceResponse wxCallBackrecycle(String departmentId) {
ServiceResponse hr = new ServiceResponse();
hr.setCode(1);
List<TabHaobanDepartment> list = departmentService.listByParentId(departmentId);
logger.info("【部门删除】list.size={}",list.size());
if(!list.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在子部门,删除部门失败");
return hr;
}
List<TabHaobanStaffDepartmentRelated> staffList = staffDepartmentService.listByDepartmentId(departmentId);
logger.info("【部门删除】staffList.size={}",staffList.size());
if(!staffList.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在成员,删除部门失败");
return hr;
}
departmentService.recycle(departmentId);
return hr;
}
@Override
public Page<DepartmentDTO> pageDepartmentByParams(BasePageInfo pageInfo, String wxEnterpriseId, String keyword,
Integer storeFlag, Integer recycleFlag) {
PageHelper.startPage(pageInfo.getPageNum(), pageInfo.getPageSize());
return PageUtil.changePageHelperToCurrentPage(departmentService.pageDepartmentByParams(wxEnterpriseId,keyword,storeFlag,recycleFlag),DepartmentDTO.class);
}
@Override
public ServiceResponse repairRecycle(String departmentId,String parentId) {
ServiceResponse hr = new ServiceResponse();
hr.setCode(0);
TabHaobanDepartment tab = departmentService.selectById(departmentId);
//调微信的新增接口
String wxDepartmentId = "";
WxEnterpriseDTO enterpriseDTO = wxEnterpriseService.selectById(tab.getWxEnterpriseId());
logger.info("【部门新增】enterpriseDTO = {}",JSON.toJSONString(enterpriseDTO));
if(enterpriseDTO != null) {
com.gic.wechat.api.dto.qywx.DepartmentDTO dto = new com.gic.wechat.api.dto.qywx.DepartmentDTO();
dto.setCorpid(enterpriseDTO.getCorpid());
dto.setName(tab.getDepartmentName());
dto.setOrder(tab.getSort());
TabHaobanDepartment parent = departmentService.selectById(parentId);
dto.setParentid(Integer.valueOf(parent.getWxDepartmentId()));
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(enterpriseDTO.getWxEnterpriseId(), SecretTypeEnum.CONTACT_SECRET.getVal());
if (null == secretSetting || secretSetting.getCheckFlag()==0) {
hr.setCode(0);
hr.setMessage("没有设置通讯录secret");
return hr;
}
logger.info("【部门新增】corpid() = {},siteId={},dto={}",enterpriseDTO.getCorpid(),secretSetting.getSecretVal(),JSON.toJSONString(dto));
JSONResponse jp = qywxDepartmentApiService.createSelfDepartment(enterpriseDTO.getCorpid(), secretSetting.getSecretVal(), dto);
logger.info("【部门新增】jp = {}",JSON.toJSONString(jp));
if(jp.getErrorCode() != 0) {
hr.setCode(0);
hr.setMessage("微信新增部门失败");
return hr;
}
wxDepartmentId = jp.getResult().toString();
tab.setWxDepartmentId(wxDepartmentId);
tab.setParentDepartmentId(parentId);
logger.info("【部门新增】wxDepartmentId = {}",wxDepartmentId);
}
departmentService.repairRecycle(tab);
return hr;
}
@Override
public List<DepartmentDTO> listByDepartmentIds(List<String> departmentIds,
Integer storeFlag) {
List<TabHaobanDepartment> list= departmentMapper.listByDepartmentIds(departmentIds, storeFlag);
if(list==null){
return new ArrayList<DepartmentDTO>();
}
return EntityUtil.changeEntityListByJSON(DepartmentDTO.class, list);
}
@Override
public List<DepartmentDTO> listByRelatedIds(List<String> relatedIds) {
List<TabHaobanDepartment> list= departmentMapper.listByRelatedIds(relatedIds);
if(list==null){
return new ArrayList<DepartmentDTO>();
}
return EntityUtil.changeEntityListByJSON(DepartmentDTO.class, list);
}
@Override
public DepartmentDTO getRootByEnterpriseId(String wxEnterpriseId) {
return departmentService.getRootByEnterpriseId(wxEnterpriseId);
}
@Override
public List<DepartmentDTO> listStoreByWxEnterpriseId(String wxEnterpriseId) {
List<TabHaobanDepartment> list = departmentMapper.listStoreByWxEnterpriseId(wxEnterpriseId);
return EntityUtil.changeEntityListByJSON(DepartmentDTO.class, list);
}
@Override
public Page<DepartmentDTO> pageFullStoreByWxEnterpriseId(
String wxEnterpriseId,String search,List<String> storeIds, int count,BasePageInfo pageInfo) {
PageHelper.startPage(pageInfo.getPageNum(), pageInfo.getPageSize());
if(CollectionUtil.isNotEmpty(storeIds)&&StringUtils.isNotEmpty(search)){
return PageUtil.changePageHelperToCurrentPage( departmentMapper.pageFullStoreByWxEnterpriseId2(wxEnterpriseId,search, storeIds,count),DepartmentDTO.class);
}
return PageUtil.changePageHelperToCurrentPage( departmentMapper.pageFullStoreByWxEnterpriseId(wxEnterpriseId,search, storeIds,count),DepartmentDTO.class);
}
@Override
public void syncGicStore(String fieldListString) {
if (true) {
return;
}
logger.info("【同步门店】fieldList={}",fieldListString);
List<SyncJsonColumnDTO> fieldList = JSONArray.parseArray(fieldListString,SyncJsonColumnDTO.class);
if(fieldList.isEmpty()){
return;
}
Integer status = 0;
String storeName = "";
String departmentId = "";
String storeId = "";
String storeParentId="";
for (SyncJsonColumnDTO syncJsonColumnDTO:fieldList){
String name = StringUtil.camelName(syncJsonColumnDTO.getName());
String value = syncJsonColumnDTO.getValue();
if("status".equals(name)) {
status = Integer.parseInt(value);
}
if("storeName".equals(name)) {
storeName = value;
}
if("departmentId".equals(name)) {
departmentId = value;
}
if("storeGroupId".equals(name)) {
storeParentId = value;
}
if("storeId".equals(name)) {
storeId = (value);
}
}
DepartmentDTO department = departmentService.getByRelatedId(storeId);
DepartmentDTO parent = departmentService.getByRelatedId(storeParentId);
if (department!=null && parent!=null&&(!department.getParentDepartmentId().equals(parent.getDepartmentId()))) {
logger.info("更新部门!");
department.setDepartmentName(storeName);
department.setParentDepartmentId(parent.getDepartmentId());
this.edit(department);
}
}
/**
* 向上找父节点
* @param departmentId
* @return
*/
private DepartmentDTO getParent(String departmentId) {
DepartmentDTO department = departmentService.getByRelatedId(departmentId);
if(department == null) {
com.gic.enterprise.api.dto.DepartmentDTO dto = gicDepartmentService.getDeptment(departmentId);
String parentId = dto.getParentDepartId();
getParent(parentId);
}
return department;
}
@Override
public void syncGicDepartment(String fieldListString) {
}
@Override
public Page<DepartmentDTO> pageByParentId(String parentId,String keyword, BasePageInfo pageInfo) {
PageHelper.startPage(pageInfo.getPageNum(), pageInfo.getPageSize());
return PageUtil.changePageHelperToCurrentPage(departmentService.pageByParentId(parentId,keyword),DepartmentDTO.class);
}
@Override
public List<DepartmentDTO> listByChainId(String chainId,String wxEnterpriseId) {
List<TabHaobanDepartment> list = departmentService.listByChainId(chainId,wxEnterpriseId);
return EntityUtil.changeEntityListByJSON(DepartmentDTO.class, list);
}
@Override
public void initwxDepartment(String corpid, String contactSecret, String wxEnterpriseId) {
logger.info("【同步企业微信】wxEnterpriseId={}","init-enterprise-" + wxEnterpriseId);
String key = "init-enterprise-" + wxEnterpriseId;
if(RedisUtil.getCache(key) == null){
RedisUtil.setCache(key,1, 60 * 60L);
String taskId = StringUtil.randomUUID();
List<com.gic.wechat.api.dto.qywx.DepartmentDTO> list = this.qywxDepartmentApiService.listSelfDepartment(corpid, contactSecret, null);
logger.info("企业所有部门数据:{}", JSON.toJSONString(list));
if(CollectionUtils.isNotEmpty(list)){
this.addAllDepartment(list, 0, wxEnterpriseId, corpid, contactSecret,taskId);
}
}else{
RedisUtil.delCache(key);
}
// String taskId = StringUtil.randomUUID();
// List<com.gic.wechat.api.dto.qywx.DepartmentDTO> list = this.qywxDepartmentApiService.listSelfDepartment(corpid, contactSecret, null);
// logger.info("企业所有部门数据:{}", JSON.toJSONString(list));
// if(CollectionUtils.isNotEmpty(list)){
// this.addAllDepartment(list, 0, wxEnterpriseId, corpid, contactSecret,taskId);
// }
}
private void insertMQ(Integer parentId,
String wxEnterpriseId, String corpid, String contactSecret,String taskId){
JSONObject json = new JSONObject();
json.put("parentId", parentId);
json.put("wxEnterpriseId", wxEnterpriseId);
json.put("corpid", corpid);
json.put("contactSecret", contactSecret);
json.put("taskId", taskId);
logger.info("【初始化部门调用】{},{},{}",RouterConstant.INIT_WX_DEPARTMENT_SERVICENAME,RouterConstant.INIT_WX_DEPARTMENT_METHODNAME,json.toJSONString());
private static Logger logger = LoggerFactory.getLogger(DepartmentApiServiceImpl.class);
@Autowired
private DepartmentService departmentService;
@Autowired
private StaffDepartmentRelatedService staffDepartmentService;
@Autowired
private DepartmentMapper departmentMapper;
@Autowired
private com.gic.enterprise.api.service.DepartmentService gicDepartmentService;
@Autowired
private QywxDepartmentApiService qywxDepartmentApiService;
@Autowired
private WxEnterpriseService wxEnterpriseService;
@Autowired
private StoreService storeService;
@Autowired
private StoreGroupService storeGroupService;
@Autowired
private StaffApiService staffApiService;
@Autowired
private StaffDepartmentRelatedApiService staffDepartmentRelatedApiService;
@Autowired
private SyncErrorLogService syncErrorLogService;
@Autowired
private SecretSettingService secretSettingService;
@Override
public List<DepartmentDTO> listByParentId(String parentId) {
List<TabHaobanDepartment> list = departmentService.listByParentId(parentId);
return EntityUtil.changeEntityListByJSON(DepartmentDTO.class, list);
}
@Override
public DepartmentDTO selectById(String departmentId) {
TabHaobanDepartment tab = departmentService.selectById(departmentId);
return EntityUtil.changeEntityByJSON(DepartmentDTO.class, tab);
}
@Override
public ServiceResponse<DepartmentDTO> add(DepartmentDTO department) {
ServiceResponse hr = new ServiceResponse();
hr.setCode(1);
//调微信的新增接口
String wxDepartmentId = "";
WxEnterpriseDTO enterpriseDTO = wxEnterpriseService.selectById(department.getWxEnterpriseId());
logger.info("【部门新增】enterpriseDTO = {}", JSON.toJSONString(enterpriseDTO));
if (enterpriseDTO != null) {
Long sort = department.getSort();
if (sort == null) {
long maxSort = departmentMapper.selectMaxSort(department.getParentDepartmentId());
department.setSort(maxSort + 1);
}
com.gic.wechat.api.dto.qywx.DepartmentDTO dto = new com.gic.wechat.api.dto.qywx.DepartmentDTO();
dto.setCorpid(enterpriseDTO.getCorpid());
dto.setName(department.getDepartmentName());
dto.setOrder(department.getSort());
TabHaobanDepartment parent = departmentService.selectById(department.getParentDepartmentId());
dto.setParentid(Integer.valueOf(parent.getWxDepartmentId()));
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(enterpriseDTO.getWxEnterpriseId(), SecretTypeEnum.CONTACT_SECRET.getVal());
if (null == secretSetting || secretSetting.getCheckFlag() == 0) {
hr.setCode(0);
hr.setMessage("没有设置通讯录secret");
return hr;
}
logger.info("【部门新增】corpid() = {},siteId={},dto={}", enterpriseDTO.getCorpid(), secretSetting.getSecretVal(), JSON.toJSONString(dto));
JSONResponse jp = qywxDepartmentApiService.createSelfDepartment(enterpriseDTO.getCorpid(), secretSetting.getSecretVal(), dto);
logger.info("【部门新增】jp = {}", JSON.toJSONString(jp));
if (jp.getErrorCode() != 0) {
hr.setCode(0);
hr.setMessage("微信新增部门失败:" + jp.getErrorCode());
return hr;
}
wxDepartmentId = jp.getResult().toString();
logger.info("【部门新增】wxDepartmentId = {}", wxDepartmentId);
department.setWxDepartmentId(wxDepartmentId);
department.setLevel(parent.getLevel() + 1);
setGicEnterpriseId(department);
String departmentId = departmentService.add(department);
department.setDepartmentId(departmentId);
hr.setResult(department);
}
return hr;
}
private void setGicEnterpriseId(DepartmentDTO department) {
String relatedId = department.getRelatedId();
if (StringUtils.isNotBlank(relatedId)) {
Integer storeFlag = department.getIsStore();
if (storeFlag == 1) {
StoreDTO store = storeService.getStore(relatedId);
if (store != null) {
department.setEnterpriseId(store.getEnterpriseId());
}
} else {
com.gic.enterprise.api.dto.DepartmentDTO departmentDTO = gicDepartmentService.getDeptment(relatedId);
if (departmentDTO != null) {
department.setEnterpriseId(departmentDTO.getEnterpriseId());
}
StoreGroupDTO storeGroup = storeGroupService.getStoreGroupById(relatedId);
if (storeGroup != null) {
department.setEnterpriseId(storeGroup.getEnterpriseId());
}
}
}
}
@Override
public ServiceResponse edit(DepartmentDTO department) {
ServiceResponse hr = new ServiceResponse();
hr.setCode(1);
hr.setResult(department);
//调微信的修改接口
TabHaobanDepartment tab = departmentService.selectById(department.getDepartmentId());
if (tab == null) {
hr.setCode(0);
hr.setMessage("部门不存在");
return hr;
}
logger.info("【部门修改】tab={}", JSON.toJSONString(tab));
WxEnterpriseDTO enterpriseDTO = wxEnterpriseService.selectById(tab.getWxEnterpriseId());
if (enterpriseDTO != null) {
com.gic.wechat.api.dto.qywx.DepartmentDTO dto = new com.gic.wechat.api.dto.qywx.DepartmentDTO();
dto.setCorpid(enterpriseDTO.getCorpid());
dto.setName(department.getDepartmentName());
dto.setOrder(department.getSort());
TabHaobanDepartment parent = departmentService.selectById(department.getParentDepartmentId());
dto.setParentid(Integer.valueOf(parent.getWxDepartmentId()));
dto.setId(Integer.valueOf(tab.getWxDepartmentId()));
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(enterpriseDTO.getWxEnterpriseId(), SecretTypeEnum.CONTACT_SECRET.getVal());
if (null == secretSetting || secretSetting.getCheckFlag() == 0) {
hr.setCode(0);
hr.setMessage("没有设置通讯录secret");
return hr;
}
JSONResponse jp = qywxDepartmentApiService.updateSelfDepartment(enterpriseDTO.getCorpid(), secretSetting.getSecretVal(), dto);
logger.info("【部门修改】jp={}", JSON.toJSONString(jp));
if (jp.getErrorCode() != 0) {
hr.setCode(0);
hr.setMessage("微信修改部门失败");
return hr;
}
}
departmentService.edit(department);
return hr;
}
@Override
public ServiceResponse del(String departmentId) {
ServiceResponse hr = new ServiceResponse();
hr.setCode(1);
List<TabHaobanDepartment> list = departmentService.listByParentId(departmentId);
logger.info("【部门删除】list.size={}", list.size());
if (!list.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在子部门,删除部门失败");
return hr;
}
List<TabHaobanStaffDepartmentRelated> staffList = staffDepartmentService.listByDepartmentId(departmentId);
logger.info("【部门删除】staffList.size={}", staffList.size());
if (!staffList.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在成员,删除部门失败");
return hr;
}
//调微信的删除接口
TabHaobanDepartment department = departmentService.selectById(departmentId);
if (department == null) {
hr.setCode(0);
hr.setMessage("不存在部门,删除部门失败");
return hr;
}
WxEnterpriseDTO enterpriseDTO = wxEnterpriseService.selectById(department.getWxEnterpriseId());
if (enterpriseDTO != null) {
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(enterpriseDTO.getWxEnterpriseId(), SecretTypeEnum.CONTACT_SECRET.getVal());
if (null == secretSetting || secretSetting.getCheckFlag() == 0) {
logger.info("没有设置通讯录secret:{}", JSONObject.toJSONString(secretSetting));
hr.setCode(0);
hr.setMessage("没有设置通讯录secret");
return hr;
}
JSONResponse jp = qywxDepartmentApiService.deleteSelfDepartment(enterpriseDTO.getCorpid(), secretSetting.getSecretVal(), Integer.parseInt(department.getWxDepartmentId()));
if (jp.getErrorCode() != 0) {
logger.info("微信删除部门失败:{}", JSONObject.toJSONString(jp));
hr.setCode(0);
hr.setMessage("微信删除部门失败");
return hr;
}
}
departmentService.del(departmentId);
return hr;
}
@Override
public ServiceResponse wxCallBackDel(String departmentId) {
ServiceResponse hr = new ServiceResponse();
hr.setCode(1);
List<TabHaobanDepartment> list = departmentService.listByParentId(departmentId);
logger.info("【部门删除】list.size={}", list.size());
if (!list.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在子部门,删除部门失败");
return hr;
}
List<TabHaobanStaffDepartmentRelated> staffList = staffDepartmentService.listByDepartmentId(departmentId);
logger.info("【部门删除】staffList.size={}", staffList.size());
if (!staffList.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在成员,删除部门失败");
return hr;
}
departmentService.del(departmentId);
return hr;
}
@Override
public DepartmentDTO selectByRelatedId(String relatedId) {
TabHaobanDepartment tab = departmentService.selectByRelatedId(relatedId);
return EntityUtil.changeEntityByJSON(DepartmentDTO.class, tab);
}
@Override
public ServiceResponse recycle(String departmentId) {
ServiceResponse hr = new ServiceResponse();
hr.setCode(1);
List<TabHaobanDepartment> list = departmentService.listByParentId(departmentId);
logger.info("【部门删除】list.size={}", list.size());
if (!list.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在子部门,删除部门失败");
return hr;
}
List<TabHaobanStaffDepartmentRelated> staffList = staffDepartmentService.listByDepartmentId(departmentId);
logger.info("【部门删除】staffList.size={}", staffList.size());
if (!staffList.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在成员,删除部门失败");
return hr;
}
//调微信的新增接口
TabHaobanDepartment department = departmentService.selectById(departmentId);
WxEnterpriseDTO enterpriseDTO = wxEnterpriseService.selectById(department.getWxEnterpriseId());
if (enterpriseDTO != null) {
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(enterpriseDTO.getWxEnterpriseId(), SecretTypeEnum.CONTACT_SECRET.getVal());
if (null == secretSetting || secretSetting.getCheckFlag() == 0) {
hr.setCode(0);
hr.setMessage("没有设置通讯录secret");
return hr;
}
JSONResponse jp = qywxDepartmentApiService.deleteSelfDepartment(enterpriseDTO.getCorpid(), secretSetting.getSecretVal(), Integer.parseInt(department.getWxDepartmentId()));
if (jp.getErrorCode() != 0) {
hr.setCode(0);
hr.setMessage("微信删除部门失败");
return hr;
}
}
departmentService.recycle(departmentId);
return hr;
}
@Override
public ServiceResponse wxCallBackrecycle(String departmentId) {
ServiceResponse hr = new ServiceResponse();
hr.setCode(1);
List<TabHaobanDepartment> list = departmentService.listByParentId(departmentId);
logger.info("【部门删除】list.size={}", list.size());
if (!list.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在子部门,删除部门失败");
return hr;
}
List<TabHaobanStaffDepartmentRelated> staffList = staffDepartmentService.listByDepartmentId(departmentId);
logger.info("【部门删除】staffList.size={}", staffList.size());
if (!staffList.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在成员,删除部门失败");
return hr;
}
departmentService.recycle(departmentId);
return hr;
}
@Override
public Page<DepartmentDTO> pageDepartmentByParams(BasePageInfo pageInfo, String wxEnterpriseId, String keyword,
Integer storeFlag, Integer recycleFlag) {
PageHelper.startPage(pageInfo.getPageNum(), pageInfo.getPageSize());
return PageUtil.changePageHelperToCurrentPage(departmentService.pageDepartmentByParams(wxEnterpriseId, keyword, storeFlag, recycleFlag), DepartmentDTO.class);
}
@Override
public ServiceResponse repairRecycle(String departmentId, String parentId) {
ServiceResponse hr = new ServiceResponse();
hr.setCode(0);
TabHaobanDepartment tab = departmentService.selectById(departmentId);
//调微信的新增接口
String wxDepartmentId = "";
WxEnterpriseDTO enterpriseDTO = wxEnterpriseService.selectById(tab.getWxEnterpriseId());
logger.info("【部门新增】enterpriseDTO = {}", JSON.toJSONString(enterpriseDTO));
if (enterpriseDTO != null) {
com.gic.wechat.api.dto.qywx.DepartmentDTO dto = new com.gic.wechat.api.dto.qywx.DepartmentDTO();
dto.setCorpid(enterpriseDTO.getCorpid());
dto.setName(tab.getDepartmentName());
dto.setOrder(tab.getSort());
TabHaobanDepartment parent = departmentService.selectById(parentId);
dto.setParentid(Integer.valueOf(parent.getWxDepartmentId()));
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(enterpriseDTO.getWxEnterpriseId(), SecretTypeEnum.CONTACT_SECRET.getVal());
if (null == secretSetting || secretSetting.getCheckFlag() == 0) {
hr.setCode(0);
hr.setMessage("没有设置通讯录secret");
return hr;
}
logger.info("【部门新增】corpid() = {},siteId={},dto={}", enterpriseDTO.getCorpid(), secretSetting.getSecretVal(), JSON.toJSONString(dto));
JSONResponse jp = qywxDepartmentApiService.createSelfDepartment(enterpriseDTO.getCorpid(), secretSetting.getSecretVal(), dto);
logger.info("【部门新增】jp = {}", JSON.toJSONString(jp));
if (jp.getErrorCode() != 0) {
hr.setCode(0);
hr.setMessage("微信新增部门失败");
return hr;
}
wxDepartmentId = jp.getResult().toString();
tab.setWxDepartmentId(wxDepartmentId);
tab.setParentDepartmentId(parentId);
logger.info("【部门新增】wxDepartmentId = {}", wxDepartmentId);
}
departmentService.repairRecycle(tab);
return hr;
}
@Override
public List<DepartmentDTO> listByDepartmentIds(List<String> departmentIds,
Integer storeFlag) {
List<TabHaobanDepartment> list = departmentMapper.listByDepartmentIds(departmentIds, storeFlag);
if (list == null) {
return new ArrayList<DepartmentDTO>();
}
return EntityUtil.changeEntityListByJSON(DepartmentDTO.class, list);
}
@Override
public List<DepartmentDTO> listByRelatedIds(List<String> relatedIds) {
List<TabHaobanDepartment> list = departmentMapper.listByRelatedIds(relatedIds);
if (list == null) {
return new ArrayList<DepartmentDTO>();
}
return EntityUtil.changeEntityListByJSON(DepartmentDTO.class, list);
}
@Override
public DepartmentDTO getRootByEnterpriseId(String wxEnterpriseId) {
return departmentService.getRootByEnterpriseId(wxEnterpriseId);
}
@Override
public List<DepartmentDTO> listStoreByWxEnterpriseId(String wxEnterpriseId) {
List<TabHaobanDepartment> list = departmentMapper.listStoreByWxEnterpriseId(wxEnterpriseId);
return EntityUtil.changeEntityListByJSON(DepartmentDTO.class, list);
}
@Override
public Page<DepartmentDTO> pageFullStoreByWxEnterpriseId(
String wxEnterpriseId, String search, List<String> storeIds, int count, BasePageInfo pageInfo) {
PageHelper.startPage(pageInfo.getPageNum(), pageInfo.getPageSize());
if (CollectionUtil.isNotEmpty(storeIds) && StringUtils.isNotEmpty(search)) {
return PageUtil.changePageHelperToCurrentPage(departmentMapper.pageFullStoreByWxEnterpriseId2(wxEnterpriseId, search, storeIds, count), DepartmentDTO.class);
}
return PageUtil.changePageHelperToCurrentPage(departmentMapper.pageFullStoreByWxEnterpriseId(wxEnterpriseId, search, storeIds, count), DepartmentDTO.class);
}
@Override
public void syncGicStore(String fieldListString) {
if (true) {
return;
}
logger.info("【同步门店】fieldList={}", fieldListString);
List<SyncJsonColumnDTO> fieldList = JSONArray.parseArray(fieldListString, SyncJsonColumnDTO.class);
if (fieldList.isEmpty()) {
return;
}
Integer status = 0;
String storeName = "";
String departmentId = "";
String storeId = "";
String storeParentId = "";
for (SyncJsonColumnDTO syncJsonColumnDTO : fieldList) {
String name = StringUtil.camelName(syncJsonColumnDTO.getName());
String value = syncJsonColumnDTO.getValue();
if ("status".equals(name)) {
status = Integer.parseInt(value);
}
if ("storeName".equals(name)) {
storeName = value;
}
if ("departmentId".equals(name)) {
departmentId = value;
}
if ("storeGroupId".equals(name)) {
storeParentId = value;
}
if ("storeId".equals(name)) {
storeId = (value);
}
}
DepartmentDTO department = departmentService.getByRelatedId(storeId);
DepartmentDTO parent = departmentService.getByRelatedId(storeParentId);
if (department != null && parent != null && (!department.getParentDepartmentId().equals(parent.getDepartmentId()))) {
logger.info("更新部门!");
department.setDepartmentName(storeName);
department.setParentDepartmentId(parent.getDepartmentId());
this.edit(department);
}
}
/**
* 向上找父节点
*
* @param departmentId
* @return
*/
private DepartmentDTO getParent(String departmentId) {
DepartmentDTO department = departmentService.getByRelatedId(departmentId);
if (department == null) {
com.gic.enterprise.api.dto.DepartmentDTO dto = gicDepartmentService.getDeptment(departmentId);
String parentId = dto.getParentDepartId();
getParent(parentId);
}
return department;
}
@Override
public void syncGicDepartment(String fieldListString) {
}
@Override
public Page<DepartmentDTO> pageByParentId(String parentId, String keyword, BasePageInfo pageInfo) {
PageHelper.startPage(pageInfo.getPageNum(), pageInfo.getPageSize());
return PageUtil.changePageHelperToCurrentPage(departmentService.pageByParentId(parentId, keyword), DepartmentDTO.class);
}
@Override
public List<DepartmentDTO> listByChainId(String chainId, String wxEnterpriseId) {
List<TabHaobanDepartment> list = departmentService.listByChainId(chainId, wxEnterpriseId);
return EntityUtil.changeEntityListByJSON(DepartmentDTO.class, list);
}
@Override
public void initwxDepartment(String corpid, String contactSecret, String wxEnterpriseId) {
logger.info("【同步企业微信】wxEnterpriseId={}", "init-enterprise-" + wxEnterpriseId);
String key = "init-enterprise-" + wxEnterpriseId;
if (RedisUtil.getCache(key) == null) {
RedisUtil.setCache(key, 1, 60 * 60L);
String taskId = StringUtil.randomUUID();
List<com.gic.wechat.api.dto.qywx.DepartmentDTO> list = this.qywxDepartmentApiService.listSelfDepartment(corpid, contactSecret, null);
logger.info("企业所有部门数据:{}", JSON.toJSONString(list));
if (CollectionUtils.isNotEmpty(list)) {
this.addAllDepartment(list, 0, wxEnterpriseId, corpid, contactSecret, taskId);
}
} else {
RedisUtil.delCache(key);
}
}
private void insertMQ(Integer parentId,
String wxEnterpriseId, String corpid, String contactSecret, String taskId) {
JSONObject json = new JSONObject();
json.put("parentId", parentId);
json.put("wxEnterpriseId", wxEnterpriseId);
json.put("corpid", corpid);
json.put("contactSecret", contactSecret);
json.put("taskId", taskId);
logger.info("【初始化部门调用】{},{},{}", RouterConstant.INIT_WX_DEPARTMENT_SERVICENAME, RouterConstant.INIT_WX_DEPARTMENT_METHODNAME, json.toJSONString());
try {
GICMQClientUtil.getClientInstance().sendCommonMessage(RouterConstant.ROUTERTYPE, json.toJSONString(),
RouterConstant.INIT_WX_DEPARTMENT_SERVICENAME, RouterConstant.INIT_WX_DEPARTMENT_METHODNAME);
} catch (Exception e) {
logger.info(e.getMessage(),e);
}
}
@Override
public void syncWxDepartmentByParentMQ(String res){
JSONObject json = JSON.parseObject(res);
Integer parentId = json.getInteger("parentId");
String wxEnterpriseId = json.getString("wxEnterpriseId");
String corpid = json.getString("corpid");
String contactSecret = json.getString("contactSecret");
String taskId = json.getString("taskId");
Integer level = 1;
List<com.gic.wechat.api.dto.qywx.DepartmentDTO> list = this.qywxDepartmentApiService.listSelfDepartment(corpid, contactSecret, parentId);
String chainId = "0";
String chainName = "0";
String pid = "0";
List<com.gic.wechat.api.dto.qywx.DepartmentDTO> handerList = new ArrayList<>();
if(parentId.equals(0)){
for (com.gic.wechat.api.dto.qywx.DepartmentDTO departmentDTO : list) {
if(departmentDTO.getId() == 1){
handerList.add(departmentDTO);
break;
}
}
}else{
for (com.gic.wechat.api.dto.qywx.DepartmentDTO departmentDTO : list) {
if(departmentDTO.getParentid().equals(parentId)){
handerList.add(departmentDTO);
}
}
}
if(parentId != 0){
TabHaobanDepartment parent = this.departmentService.getByWxId(parentId + "", wxEnterpriseId);
if(parent != null){
level = parent.getLevel() + 1;
chainId = parent.getChainId() + Constant.ID_SEPARATOR + parent.getDepartmentId();
chainName = parent.getChainName() + Constant.NAME_SEPARATOR + parent.getDepartmentName();
pid = parent.getParentDepartmentId();
}else{
TabHaobanSyncErrorLog tab = new TabHaobanSyncErrorLog();
tab.setDataId(parentId+"");
tab.setDataType(0);
tab.setLogType(0);
tab.setReason("父部门不存在");
tab.setTaskId(taskId);
tab.setWxEnterpriseId(wxEnterpriseId);
syncErrorLogService.add(tab);
}
}
if(handerList == null || handerList.isEmpty()){
return;
}
logger.info("【mq同步】parentId={}",parentId);
for (com.gic.wechat.api.dto.qywx.DepartmentDTO departmentDTO : handerList) {
// try {
// TabHaobanDepartment exist = this.departmentService.getByWxId(departmentDTO.getId() + "", wxEnterpriseId);
// logger.info("分组是否存在:{}", JSON.toJSONString(exist));
// if(exist == null){
// com.gic.haoban.manage.api.dto.DepartmentDTO dto = new com.gic.haoban.manage.api.dto.DepartmentDTO();
// dto.setDepartmentName(departmentDTO.getName());
// dto.setLevel(level);
// dto.setWxEnterpriseId(wxEnterpriseId);
// dto.setWxDepartmentId(departmentDTO.getId()+"");
// dto.setParentDepartmentId(pid);
// dto.setChainId(chainId);
// dto.setChainName(chainName);
// dto.setSort(departmentDTO.getOrder());
// dto.setIsStore(0);
// this.departmentService.add(dto);
// }
// insertMQ(departmentDTO.getId(),wxEnterpriseId, corpid,contactSecret,taskId);
// } catch (Exception e) {
// TabHaobanSyncErrorLog tab = new TabHaobanSyncErrorLog();
// tab.setDataId(departmentDTO.getId()+"");
// tab.setDataType(0);
// tab.setLogType(0);
// tab.setReason(e.getMessage());
// tab.setTaskId(taskId);
// tab.setWxEnterpriseId(wxEnterpriseId);
// syncErrorLogService.add(tab);
// }
//this.addAllDepartment(list, departmentDTO.getId(), wxEnterpriseId, corpid, contactSecret,taskId);
// this.staffApiService.initWxUser(corpid, contactSecret, wxEnterpriseId, departmentDTO.getId(),taskId);
return;
}
}
@Override
public boolean isInitLocked(String wxEnterpriseId){
return RedisUtil.isLocked("init-enterprise-" + wxEnterpriseId);
}
private void addAllDepartment(List<com.gic.wechat.api.dto.qywx.DepartmentDTO> list, Integer parentId,
String wxEnterpriseId, String corpid, String contactSecret,String taskId){
int level = 1;
String chainId = "0";
String chainName = "0";
String pId = "0";
if(parentId != 0){
TabHaobanDepartment parent = this.departmentService.getByWxId(parentId + "", wxEnterpriseId);
if(parent != null){
level = parent.getLevel() + 1;
chainId = parent.getChainId() + Constant.ID_SEPARATOR + parent.getDepartmentId();
chainName = parent.getChainName() + Constant.NAME_SEPARATOR + parent.getDepartmentName();
pId = parent.getDepartmentId();
}
}
for(com.gic.wechat.api.dto.qywx.DepartmentDTO departmentDTO : list){
try {
if (parentId.equals(departmentDTO.getParentid())) {
TabHaobanDepartment exist = this.departmentService.getByWxId(departmentDTO.getId() + "", wxEnterpriseId);
logger.info("分组是否存在:{}", JSON.toJSONString(exist));
if(exist == null){
com.gic.haoban.manage.api.dto.DepartmentDTO dto = new com.gic.haoban.manage.api.dto.DepartmentDTO();
dto.setDepartmentName(departmentDTO.getName());
dto.setLevel(level);
dto.setWxEnterpriseId(wxEnterpriseId);
dto.setWxDepartmentId(departmentDTO.getId()+"");
dto.setParentDepartmentId(pId);
dto.setChainId(chainId);
dto.setChainName(chainName);
dto.setSort(departmentDTO.getOrder());
dto.setIsStore(0);
this.departmentService.add(dto);
}
}
} catch (Exception e) {
TabHaobanSyncErrorLog tab = new TabHaobanSyncErrorLog();
tab.setDataId(departmentDTO.getId()+"");
tab.setDataType(0);
tab.setLogType(0);
tab.setReason(e.getMessage());
tab.setTaskId(taskId);
tab.setWxEnterpriseId(wxEnterpriseId);
syncErrorLogService.add(tab);
}
this.addAllDepartment(list, departmentDTO.getId(), wxEnterpriseId, corpid, contactSecret,taskId);
this.staffApiService.initWxUser(corpid, contactSecret, wxEnterpriseId, departmentDTO.getId(),taskId);
}
}
@Override
public Integer departmentRecycleCount(String wxEnterpriseId) {
return departmentService.departmentRecycleCount(wxEnterpriseId);
}
@Override
public boolean hasSonNode(String departmentId) {
int departmentCount = departmentService.countByDepartment(departmentId);
if(departmentCount > 0){
return true;
}
return false;
}
@Override
@Deprecated
public ServiceResponse gicDel(String departmentId) {
ServiceResponse hr = new ServiceResponse();
hr.setCode(1);
List<TabHaobanDepartment> list = departmentService.listByParentId(departmentId);
logger.info("【部门删除】list.size={}",list.size());
if(!list.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在子部门,删除部门失败");
//return hr;
TabHaobanDepartment department = departmentService.selectById(departmentId);
if(department != null){
department.setGicDelFlag(1);
}
departmentMapper.updateByPrimaryKeySelective(department);
}
List<TabHaobanStaffDepartmentRelated> staffList = staffDepartmentService.listByDepartmentId(departmentId);
logger.info("【部门删除】staffList.size={}",staffList.size());
if(!staffList.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在成员,删除部门失败");
//return hr;
TabHaobanDepartment department = departmentService.selectById(departmentId);
if(department != null){
department.setGicDelFlag(1);
}
departmentMapper.updateByPrimaryKeySelective(department);
}
//调微信的删除接口
TabHaobanDepartment department = departmentService.selectById(departmentId);
WxEnterpriseDTO enterpriseDTO = wxEnterpriseService.selectById(department.getWxEnterpriseId());
if(enterpriseDTO != null) {
//todo 不需要了
// JSONResponse jp = qywxDepartmentApiService.deleteSelfDepartment(enterpriseDTO.getCorpid(), enterpriseDTO.getContactSecret(), Integer.parseInt(department.getWxDepartmentId()));
// if(jp.getErrorCode() != 0) {
// hr.setCode(0);
// hr.setMessage("微信删除部门失败");
// return hr;
// }
}
departmentService.del(departmentId);
return hr;
}
@Override
public ServiceResponse<List<DepartmentDTO>> listStoreListByStaffId(String staffId) {
ServiceResponse<List<DepartmentDTO>> rer = new ServiceResponse<List<DepartmentDTO>>();
List<StaffDepartmentRelatedDTO> relateList = staffDepartmentRelatedApiService.listByStaffId(staffId);
if (CollectionUtils.isEmpty(relateList)) {
logger.info("没有部分显示:{}", staffId);
return rer;
}
List<String> departmentIds = relateList.stream().map(dto -> dto.getDepartmentId()).collect(Collectors.toList());
List<DepartmentDTO> departmentList = listByDepartmentIds(departmentIds, 1);
rer.setResult(departmentList);
return rer;
}
@Override
public Integer totalStoreCountByEnterpriseId(String wxEnterpriseId) {
return departmentService.totalStoreCountByEnterpriseId(wxEnterpriseId);
}
@Override
public List<DepartmentDTO> listSonByDepartmentIds(List<String> departmentIdList,String wxEnterpriseId) {
List<TabHaobanDepartment> list = new ArrayList<>();
for (String departmentId : departmentIdList) {
String chainId = "";
TabHaobanDepartment department = departmentService.selectById(departmentId);
if(department != null){
chainId = department.getChainId() + Constant.ID_SEPARATOR + departmentId;
}
list.add(department);
if(StringUtils.isNotBlank(chainId)){
List<TabHaobanDepartment> tabList = departmentService.listByChainId(chainId,wxEnterpriseId);
list.addAll(tabList);
}
}
return EntityUtil.changeEntityListByJSON(DepartmentDTO.class,list);
}
@Override
public List<DepartmentShortDTO> searchDepartment(String search, String wxEnterpriseId) {
return departmentService.searchDepartment(search,wxEnterpriseId);
}
@Override
public List<DepartmentShortDTO> listAllDepartment(String wxEnterpriseId) {
List<DepartmentShortDTO> list = departmentService.listAllDepartment(wxEnterpriseId);
return list;
}
GICMQClientUtil.getClientInstance().sendCommonMessage(RouterConstant.ROUTERTYPE, json.toJSONString(),
RouterConstant.INIT_WX_DEPARTMENT_SERVICENAME, RouterConstant.INIT_WX_DEPARTMENT_METHODNAME);
} catch (Exception e) {
logger.info(e.getMessage(), e);
}
}
@Override
public void syncWxDepartmentByParentMQ(String res) {
JSONObject json = JSON.parseObject(res);
Integer parentId = json.getInteger("parentId");
String wxEnterpriseId = json.getString("wxEnterpriseId");
String corpid = json.getString("corpid");
String contactSecret = json.getString("contactSecret");
String taskId = json.getString("taskId");
List<com.gic.wechat.api.dto.qywx.DepartmentDTO> list = this.qywxDepartmentApiService.listSelfDepartment(corpid, contactSecret, parentId);
List<com.gic.wechat.api.dto.qywx.DepartmentDTO> handerList = new ArrayList<>();
if (parentId.equals(0)) {
for (com.gic.wechat.api.dto.qywx.DepartmentDTO departmentDTO : list) {
if (departmentDTO.getId() == 1) {
handerList.add(departmentDTO);
break;
}
}
} else {
for (com.gic.wechat.api.dto.qywx.DepartmentDTO departmentDTO : list) {
if (departmentDTO.getParentid().equals(parentId)) {
handerList.add(departmentDTO);
}
}
}
if (parentId != 0) {
TabHaobanDepartment parent = this.departmentService.getByWxId(parentId + "", wxEnterpriseId);
if (parent == null) {
TabHaobanSyncErrorLog tab = new TabHaobanSyncErrorLog();
tab.setDataId(parentId + "");
tab.setDataType(0);
tab.setLogType(0);
tab.setReason("父部门不存在");
tab.setTaskId(taskId);
tab.setWxEnterpriseId(wxEnterpriseId);
syncErrorLogService.add(tab);
}
}
logger.info("【mq同步】parentId={}", parentId);
}
@Override
public boolean isInitLocked(String wxEnterpriseId) {
return RedisUtil.isLocked("init-enterprise-" + wxEnterpriseId);
}
private void addAllDepartment(List<com.gic.wechat.api.dto.qywx.DepartmentDTO> list, Integer parentId,
String wxEnterpriseId, String corpid, String contactSecret, String taskId) {
int level = 1;
String chainId = "0";
String chainName = "0";
String pId = "0";
if (parentId != 0) {
TabHaobanDepartment parent = this.departmentService.getByWxId(parentId + "", wxEnterpriseId);
if (parent != null) {
level = parent.getLevel() + 1;
chainId = parent.getChainId() + Constant.ID_SEPARATOR + parent.getDepartmentId();
chainName = parent.getChainName() + Constant.NAME_SEPARATOR + parent.getDepartmentName();
pId = parent.getDepartmentId();
}
}
for (com.gic.wechat.api.dto.qywx.DepartmentDTO departmentDTO : list) {
try {
if (parentId.equals(departmentDTO.getParentid())) {
TabHaobanDepartment exist = this.departmentService.getByWxId(departmentDTO.getId() + "", wxEnterpriseId);
logger.info("分组是否存在:{}", JSON.toJSONString(exist));
if (exist == null) {
com.gic.haoban.manage.api.dto.DepartmentDTO dto = new com.gic.haoban.manage.api.dto.DepartmentDTO();
dto.setDepartmentName(departmentDTO.getName());
dto.setLevel(level);
dto.setWxEnterpriseId(wxEnterpriseId);
dto.setWxDepartmentId(departmentDTO.getId() + "");
dto.setParentDepartmentId(pId);
dto.setChainId(chainId);
dto.setChainName(chainName);
dto.setSort(departmentDTO.getOrder());
dto.setIsStore(0);
this.departmentService.add(dto);
}
}
} catch (Exception e) {
TabHaobanSyncErrorLog tab = new TabHaobanSyncErrorLog();
tab.setDataId(departmentDTO.getId() + "");
tab.setDataType(0);
tab.setLogType(0);
tab.setReason(e.getMessage());
tab.setTaskId(taskId);
tab.setWxEnterpriseId(wxEnterpriseId);
syncErrorLogService.add(tab);
}
this.addAllDepartment(list, departmentDTO.getId(), wxEnterpriseId, corpid, contactSecret, taskId);
this.staffApiService.initWxUser(corpid, contactSecret, wxEnterpriseId, departmentDTO.getId(), taskId);
}
}
@Override
public Integer departmentRecycleCount(String wxEnterpriseId) {
return departmentService.departmentRecycleCount(wxEnterpriseId);
}
@Override
public boolean hasSonNode(String departmentId) {
int departmentCount = departmentService.countByDepartment(departmentId);
if (departmentCount > 0) {
return true;
}
return false;
}
@Override
@Deprecated
public ServiceResponse gicDel(String departmentId) {
ServiceResponse hr = new ServiceResponse();
hr.setCode(1);
List<TabHaobanDepartment> list = departmentService.listByParentId(departmentId);
logger.info("【部门删除】list.size={}", list.size());
if (!list.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在子部门,删除部门失败");
//return hr;
TabHaobanDepartment department = departmentService.selectById(departmentId);
if (department != null) {
department.setGicDelFlag(1);
}
departmentMapper.updateByPrimaryKeySelective(department);
}
List<TabHaobanStaffDepartmentRelated> staffList = staffDepartmentService.listByDepartmentId(departmentId);
logger.info("【部门删除】staffList.size={}", staffList.size());
if (!staffList.isEmpty()) {
hr.setCode(0);
hr.setMessage("存在成员,删除部门失败");
//return hr;
TabHaobanDepartment department = departmentService.selectById(departmentId);
if (department != null) {
department.setGicDelFlag(1);
}
departmentMapper.updateByPrimaryKeySelective(department);
}
//调微信的删除接口
TabHaobanDepartment department = departmentService.selectById(departmentId);
WxEnterpriseDTO enterpriseDTO = wxEnterpriseService.selectById(department.getWxEnterpriseId());
departmentService.del(departmentId);
return hr;
}
@Override
public ServiceResponse<List<DepartmentDTO>> listStoreListByStaffId(String staffId) {
ServiceResponse<List<DepartmentDTO>> rer = new ServiceResponse<List<DepartmentDTO>>();
List<StaffDepartmentRelatedDTO> relateList = staffDepartmentRelatedApiService.listByStaffId(staffId);
if (CollectionUtils.isEmpty(relateList)) {
logger.info("没有部分显示:{}", staffId);
return rer;
}
List<String> departmentIds = relateList.stream().map(dto -> dto.getDepartmentId()).collect(Collectors.toList());
List<DepartmentDTO> departmentList = listByDepartmentIds(departmentIds, 1);
rer.setResult(departmentList);
return rer;
}
@Override
public Integer totalStoreCountByEnterpriseId(String wxEnterpriseId) {
return departmentService.totalStoreCountByEnterpriseId(wxEnterpriseId);
}
@Override
public List<DepartmentDTO> listSonByDepartmentIds(List<String> departmentIdList, String wxEnterpriseId) {
List<TabHaobanDepartment> list = new ArrayList<>();
for (String departmentId : departmentIdList) {
String chainId = "";
TabHaobanDepartment department = departmentService.selectById(departmentId);
if (department != null) {
chainId = department.getChainId() + Constant.ID_SEPARATOR + departmentId;
}
list.add(department);
if (StringUtils.isNotBlank(chainId)) {
List<TabHaobanDepartment> tabList = departmentService.listByChainId(chainId, wxEnterpriseId);
list.addAll(tabList);
}
}
return EntityUtil.changeEntityListByJSON(DepartmentDTO.class, list);
}
@Override
public List<DepartmentShortDTO> searchDepartment(String search, String wxEnterpriseId) {
return departmentService.searchDepartment(search, wxEnterpriseId);
}
@Override
public List<DepartmentShortDTO> listAllDepartment(String wxEnterpriseId) {
List<DepartmentShortDTO> list = departmentService.listAllDepartment(wxEnterpriseId);
return list;
}
}
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