Commit 1d2bc45f by 墨竹

fix:删除无效代码

parent a61d55f1
......@@ -19,6 +19,7 @@ import com.gic.haoban.manage.service.config.Config;
import com.gic.haoban.manage.service.entity.*;
import com.gic.haoban.manage.service.service.*;
import com.gic.mq.sdk.GicMQClient;
import com.gic.redis.data.util.RedisUtil;
import com.gic.thirdparty.api.dto.PicUploadResDTO;
import com.gic.thirdparty.api.service.QQCloudPicService;
import com.gic.wechat.api.dto.qywx.ItemDTO;
......@@ -397,6 +398,7 @@ public class MessageApiServiceImpl implements MessageApiService {
log.info("企微删除部门同步完成");
}
}
RedisUtil.delLocalCache("department-list-cache-" + wxEnterpriseId);
log.info("处理部门end:{}", JSON.toJSONString(qywxCallBackDTO));
}
......
......@@ -2,7 +2,6 @@ package com.gic.haoban.manage.web.controller;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.gic.api.base.commons.Page;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.dto.ClerkListDTO;
......@@ -29,8 +28,6 @@ import com.gic.haoban.manage.api.service.DepartmentApiService;
import com.gic.haoban.manage.api.service.StaffApiService;
import com.gic.haoban.manage.api.service.StaffDepartmentRelatedApiService;
import com.gic.haoban.manage.web.errCode.HaoBanErrCode;
import com.gic.haoban.manage.web.qo.DepartmentAddQO;
import com.gic.haoban.manage.web.qo.DepartmentEditQO;
import com.gic.haoban.manage.web.qo.SyncDepartmentQO;
import com.gic.haoban.manage.web.thread.SyncDepartmentThread;
import com.gic.haoban.manage.web.vo.DepartmentChainVO;
......@@ -48,710 +45,424 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.*;
@RestController
public class DepartmentContoller extends WebBaseController{
private static final Logger logger = LoggerFactory.getLogger(DepartmentContoller.class);
@Autowired
private DepartmentApiService departmentApiService;
@Autowired
private StoreGroupService storeGroupService;
@Autowired
private StoreService storeService;
@Autowired
private StaffApiService staffApiService;
@Autowired
private EnterpriseService enterpriseService;
@Autowired
private ClerkService clerkService;
@Autowired
private StaffDepartmentRelatedApiService staffDepartmentRelatedApiService;
@RequestMapping("department-list")
public HaobanResponse departmentList(String parentId,BasePageInfo pageInfo,String keyWord) {
public class DepartmentContoller extends WebBaseController {
private static final Logger logger = LoggerFactory.getLogger(DepartmentContoller.class);
@Autowired
private DepartmentApiService departmentApiService;
@Autowired
private StoreGroupService storeGroupService;
@Autowired
private StoreService storeService;
@Autowired
private StaffApiService staffApiService;
@Autowired
private EnterpriseService enterpriseService;
@Autowired
private ClerkService clerkService;
@Autowired
private StaffDepartmentRelatedApiService staffDepartmentRelatedApiService;
@RequestMapping("department-list")
public HaobanResponse departmentList(String parentId, BasePageInfo pageInfo, String keyWord) {
WebLoginDTO login = AuthWebRequestUtil.getLoginUser();
String wxEnterpriseId = login.getWxEnterpriseId();
logger.info("【部门列表】wxEnterpriseId={}",wxEnterpriseId);
Page<DepartmentDTO> page = new Page<DepartmentDTO>();
List<DepartmentDTO> list = new ArrayList<DepartmentDTO>();
if(StringUtils.isNotBlank(parentId)) {
page = departmentApiService.pageByParentId(parentId,keyWord,pageInfo);
}else {
DepartmentDTO dto = departmentApiService.getRootByEnterpriseId(wxEnterpriseId);
list.add(dto);
page.setTotalPage(1);
page.setTotalCount(1);
page.setResult(list);
}
List<DepartmentDTO> result = page.getResult();
for (DepartmentDTO departmentDTO : result) {
String chainId = departmentDTO.getChainId() + Constant.ID_SEPARATOR + departmentDTO.getDepartmentId();
List<DepartmentDTO> sonList = departmentApiService.listByChainId(chainId,wxEnterpriseId);
int staffCount = 0;
List<String> departmentIds = new ArrayList<>();
departmentIds.add(departmentDTO.getDepartmentId());
for (DepartmentDTO departmentDTO2 : sonList) {
departmentIds.add(departmentDTO2.getDepartmentId());
}
staffCount += staffApiService.countByDepartmentIds(departmentIds);
departmentDTO.setStaffCount(staffCount);
departmentDTO.setHasSonNode(departmentApiService.hasSonNode(departmentDTO.getDepartmentId()));
}
PageResult<DepartmentDTO> pageVo = new PageResult<>();
logger.info("【部门列表】wxEnterpriseId={}", wxEnterpriseId);
Page<DepartmentDTO> page = new Page<DepartmentDTO>();
List<DepartmentDTO> list = new ArrayList<DepartmentDTO>();
if (StringUtils.isNotBlank(parentId)) {
page = departmentApiService.pageByParentId(parentId, keyWord, pageInfo);
} else {
DepartmentDTO dto = departmentApiService.getRootByEnterpriseId(wxEnterpriseId);
list.add(dto);
page.setTotalPage(1);
page.setTotalCount(1);
page.setResult(list);
}
List<DepartmentDTO> result = page.getResult();
for (DepartmentDTO departmentDTO : result) {
String chainId = departmentDTO.getChainId() + Constant.ID_SEPARATOR + departmentDTO.getDepartmentId();
List<DepartmentDTO> sonList = departmentApiService.listByChainId(chainId, wxEnterpriseId);
int staffCount = 0;
List<String> departmentIds = new ArrayList<>();
departmentIds.add(departmentDTO.getDepartmentId());
for (DepartmentDTO departmentDTO2 : sonList) {
departmentIds.add(departmentDTO2.getDepartmentId());
}
staffCount += staffApiService.countByDepartmentIds(departmentIds);
departmentDTO.setStaffCount(staffCount);
departmentDTO.setHasSonNode(departmentApiService.hasSonNode(departmentDTO.getDepartmentId()));
}
PageResult<DepartmentDTO> pageVo = new PageResult<>();
pageVo.setList(result);
pageVo.setPageNum(page.getCurrentPage());
pageVo.setPages(page.getPages());
pageVo.setPageSize(page.getPageSize());
pageVo.setTotal(page.getTotalCount());
return resultResponse(HaoBanErrCode.ERR_1,pageVo);
}
@RequestMapping("department-list-level")
public HaobanResponse departmentLevelList(String parentId) {
return resultResponse(HaoBanErrCode.ERR_1, pageVo);
}
@RequestMapping("department-list-level")
public HaobanResponse departmentLevelList(String parentId) {
WebLoginDTO login = AuthWebRequestUtil.getLoginUser();
String wxEnterpriseId = login.getWxEnterpriseId();
logger.info("【部门层级列表】wxEnterpriseId={}",wxEnterpriseId);
List<DepartmentDTO> list = new ArrayList<DepartmentDTO>();
if(StringUtils.isNotBlank(parentId)) {
list = departmentApiService.listByParentId(parentId);
}else {
DepartmentDTO dto = departmentApiService.getRootByEnterpriseId(wxEnterpriseId);
list.add(dto);
}
Set<String> enterpriseSet = new HashSet<>();
for (DepartmentDTO departmentDTO : list) {
String relatedId = departmentDTO.getRelatedId();
if(StringUtils.isBlank(relatedId)){
departmentDTO.setBindFlag(0);
}else{
String gicEnterpriseId = departmentDTO.getEnterpriseId();
enterpriseSet.add(gicEnterpriseId);
departmentDTO.setBindFlag(1);
}
departmentDTO.setHasSonNode(departmentApiService.hasSonNode(departmentDTO.getDepartmentId()));
}
Map<String,EnterpriseDTO> enterpriseMap = new HashMap<>();
List<String> enterpriseSetList = new ArrayList<>(enterpriseSet);
logger.info("size大小为=====================》{}",enterpriseSetList.size());
List<EnterpriseDTO> enterprises = enterpriseService.listEnterpriseByIds(enterpriseSetList);
if(CollectionUtil.isNotEmpty(enterprises)){
for (EnterpriseDTO enterprise : enterprises) {
enterpriseMap.put(enterprise.getEnterpriseId(), enterprise);
}
}
for (DepartmentDTO departmentDTO : list) {
String enterpriseId = departmentDTO.getEnterpriseId();
if(StringUtils.isNotBlank(enterpriseId)){
EnterpriseDTO enterprise = enterpriseMap.get(enterpriseId);
if(enterprise != null){
departmentDTO.setGicEnterpriseName(enterprise.getEnterpriseName());
}
}
departmentDTO.setHasSonNode(departmentApiService.hasSonNode(departmentDTO.getDepartmentId()));
}
return resultResponse(HaoBanErrCode.ERR_1,EntityUtil.changeEntityListByJSON(DepartmentVO.class, list));
}
@RequestMapping("department-add")
public HaobanResponse departmentAdd(String parentId,String departmentName) {
DepartmentDTO dto = departmentApiService.selectById(parentId);
if(dto == null || dto.getStatusFlag() == 0) {
return resultResponse(HaoBanErrCode.ERR_10001);
}
if(dto.getIsStore() == 1) {
return resultResponse(HaoBanErrCode.ERR_10002);
}
DepartmentDTO department = new DepartmentDTO();
department.setParentDepartmentId(parentId);
department.setDepartmentName(departmentName);
department.setWxEnterpriseId(dto.getWxEnterpriseId());
department.setChainId(dto.getChainId() + Constant.ID_SEPARATOR + dto.getDepartmentId());
department.setIsStore(0);
department.setLevel(dto.getLevel() + 1);
ServiceResponse<DepartmentDTO> hr = departmentApiService.add(department);
if(hr.getCode() != 1){
return resultResponse(HaoBanErrCode.ERR_DEFINE, hr.getMessage(), null, hr.getMessage());
}
DepartmentDTO departmentDTO = hr.getResult();
departmentDTO.setHasSonNode(false);
return resultResponse(HaoBanErrCode.ERR_1, departmentDTO);
}
@RequestMapping("department-edit")
public HaobanResponse departmentEdit(String departmentId,String departmentName) {
DepartmentDTO dto = departmentApiService.selectById(departmentId);
if(dto == null || dto.getStatusFlag() == 0) {
return resultResponse(HaoBanErrCode.ERR_10001);
}
dto.setDepartmentName(departmentName);
departmentApiService.edit(dto);
return resultResponse(HaoBanErrCode.ERR_1);
}
@RequestMapping("department-sel")
public HaobanResponse departmentSel(String departmentId) {
DepartmentDTO dto = departmentApiService.selectById(departmentId);
if(dto == null || dto.getStatusFlag() == 0) {
return resultResponse(HaoBanErrCode.ERR_10003);
}
return resultResponse(HaoBanErrCode.ERR_1,dto);
}
@RequestMapping("department-recycle-count")
public HaobanResponse departmentRecycleCount() {
logger.info("【部门层级列表】wxEnterpriseId={}", wxEnterpriseId);
List<DepartmentDTO> list = new ArrayList<DepartmentDTO>();
if (StringUtils.isNotBlank(parentId)) {
list = departmentApiService.listByParentId(parentId);
} else {
DepartmentDTO dto = departmentApiService.getRootByEnterpriseId(wxEnterpriseId);
list.add(dto);
}
Set<String> enterpriseSet = new HashSet<>();
for (DepartmentDTO departmentDTO : list) {
String relatedId = departmentDTO.getRelatedId();
if (StringUtils.isBlank(relatedId)) {
departmentDTO.setBindFlag(0);
} else {
String gicEnterpriseId = departmentDTO.getEnterpriseId();
enterpriseSet.add(gicEnterpriseId);
departmentDTO.setBindFlag(1);
}
departmentDTO.setHasSonNode(departmentApiService.hasSonNode(departmentDTO.getDepartmentId()));
}
Map<String, EnterpriseDTO> enterpriseMap = new HashMap<>();
List<String> enterpriseSetList = new ArrayList<>(enterpriseSet);
logger.info("size大小为=====================》{}", enterpriseSetList.size());
List<EnterpriseDTO> enterprises = enterpriseService.listEnterpriseByIds(enterpriseSetList);
if (CollectionUtil.isNotEmpty(enterprises)) {
for (EnterpriseDTO enterprise : enterprises) {
enterpriseMap.put(enterprise.getEnterpriseId(), enterprise);
}
}
for (DepartmentDTO departmentDTO : list) {
String enterpriseId = departmentDTO.getEnterpriseId();
if (StringUtils.isNotBlank(enterpriseId)) {
EnterpriseDTO enterprise = enterpriseMap.get(enterpriseId);
if (enterprise != null) {
departmentDTO.setGicEnterpriseName(enterprise.getEnterpriseName());
}
}
departmentDTO.setHasSonNode(departmentApiService.hasSonNode(departmentDTO.getDepartmentId()));
}
return resultResponse(HaoBanErrCode.ERR_1, EntityUtil.changeEntityListByJSON(DepartmentVO.class, list));
}
@RequestMapping("department-sel")
public HaobanResponse departmentSel(String departmentId) {
DepartmentDTO dto = departmentApiService.selectById(departmentId);
if (dto == null || dto.getStatusFlag() == 0) {
return resultResponse(HaoBanErrCode.ERR_10003);
}
return resultResponse(HaoBanErrCode.ERR_1, dto);
}
@RequestMapping("department-recycle-count")
public HaobanResponse departmentRecycleCount() {
WebLoginDTO login = AuthWebRequestUtil.getLoginUser();
String wxEnterpriseId = login.getWxEnterpriseId();
Integer count = departmentApiService.departmentRecycleCount(wxEnterpriseId);
Map<String,Object> map = new HashMap<String, Object>();
map.put("count", count);
map.put("syncDate", RedisUtil.getCache("haoban-sync-department-" + wxEnterpriseId));
return resultResponse(HaoBanErrCode.ERR_1,map);
}
@RequestMapping("department-del")
public HaobanResponse departmentDel(String departmentId) {
DepartmentDTO dto = departmentApiService.selectById(departmentId);
if(dto == null || dto.getStatusFlag() == 0) {
return resultResponse(HaoBanErrCode.ERR_10003);
}
if(dto.getTempFlag() != null && dto.getTempFlag() == 1){
return resultResponse(HaoBanErrCode.ERR_100015);
}
ServiceResponse hr;
if(StringUtils.isBlank(dto.getRelatedId())) {
hr = departmentApiService.del(departmentId);
}else {
hr = departmentApiService.recycle(departmentId);
}
if(hr.getCode() == 0) {
return resultResponse(HaoBanErrCode.ERR_0, hr.getMessage(),null,hr.getMessage());
}
return resultResponse(HaoBanErrCode.ERR_1);
}
@RequestMapping("department-batch-sync")
@ResponseBody
public HaobanResponse departmentBatchSync(@RequestBody SyncDepartmentQO args) {
Integer count = departmentApiService.departmentRecycleCount(wxEnterpriseId);
Map<String, Object> map = new HashMap<String, Object>();
map.put("count", count);
map.put("syncDate", RedisUtil.getCache("haoban-sync-department-" + wxEnterpriseId));
return resultResponse(HaoBanErrCode.ERR_1, map);
}
@RequestMapping("department-batch-sync")
@ResponseBody
public HaobanResponse departmentBatchSync(@RequestBody SyncDepartmentQO args) {
WebLoginDTO login = AuthWebRequestUtil.getLoginUser();
String wxEnterpriseId = login.getWxEnterpriseId();
String key = "haoban-sync-department-" + wxEnterpriseId;
if(RedisUtil.getCache(key) != null){
return resultResponse(HaoBanErrCode.ERR_10011);
}
Object editDepartmentObject = null;
Object addDepartmentObject = null;
String editDepartment = "";
String addDepartment = "";
String delDepartmentIds = "";
logger.info("【部门同步】args={}",JSON.toJSONString(args));
if(args != null){
editDepartmentObject = args.getEditDepartment();
addDepartmentObject = args.getAddDepartment();
editDepartment = JSON.toJSONString(editDepartmentObject);
addDepartment = JSON.toJSONString(addDepartmentObject);
}
RedisUtil.setCache(key,1,3600L);
new SyncDepartmentThread(this,editDepartment,delDepartmentIds,addDepartment,key).start();
return resultResponse(HaoBanErrCode.ERR_1,key);
}
@RequestMapping("department-chain")
public HaobanResponse departmentChain(String departmentId) {
if(StringUtils.isBlank(departmentId)){
return resultResponse(HaoBanErrCode.ERR_2);
}
DepartmentDTO department = departmentApiService.selectById(departmentId);
if(department == null){
return resultResponse(HaoBanErrCode.ERR_10003);
}
String chainId = departmentId;
while(department != null){
department = departmentApiService.selectById(department.getParentDepartmentId());
if(department != null){
chainId = department.getDepartmentId() + Constant.ID_SEPARATOR + chainId;
}
}
String[] chainIdArr = chainId.split(Constant.ID_SEPARATOR);
List<DepartmentChainVO> list = new ArrayList<>();
for (String string : chainIdArr) {
DepartmentDTO son = departmentApiService.selectById(string);
DepartmentChainVO chain = EntityUtil.changeEntityByJSON(DepartmentChainVO.class, son);
if(son != null){
list.add(chain);
}
}
return resultResponse(HaoBanErrCode.ERR_1,list);
}
@RequestMapping("department-batch-sync-success")
public HaobanResponse syncSuccess(String syncKey) {
if(RedisUtil.getCache(syncKey) == null){
return resultResponse(HaoBanErrCode.ERR_1,true);
}else{
return resultResponse(HaoBanErrCode.ERR_1,false);
}
}
public void syncDepartment(String editDepartment,String delDepartmentIds,String addDepartment){
if(StringUtils.isNotBlank(addDepartment)) {
List<DepartmentAddQO> list = JSONArray.parseArray(addDepartment, DepartmentAddQO.class);
long sort = 0;
long maxSort = list.size();
for (DepartmentAddQO departmentAddQO : list) {
String parentId = departmentAddQO.getParentId();
DepartmentDTO dto = departmentApiService.selectById(parentId);
if(dto == null || dto.getStatusFlag() == 0) {
continue;
}
if(dto.getIsStore() == 1) {
continue;
}
Integer type = departmentAddQO.getType();
Integer isStore = 0;
String storeCode = "";
if(type != null && type == 3){
isStore = 1;
StoreDTO store = storeService.getStore(departmentAddQO.getRelatedId());
if(store != null){
storeCode = store.getStoreCode();
}
}
DepartmentDTO department = new DepartmentDTO();
department.setParentDepartmentId(parentId);
//department.setWxDepartmentId(dto.getWxDepartmentId());
department.setWxEnterpriseId(dto.getWxEnterpriseId());
department.setDepartmentName(departmentAddQO.getDepartmentName());
department.setChainId(dto.getChainId() + Constant.ID_SEPARATOR + dto.getDepartmentId());
department.setChainName(dto.getChainName() + Constant.NAME_SEPARATOR + dto.getDepartmentName());
if(departmentAddQO.getStoreFlag() != null){
department.setIsStore(departmentAddQO.getStoreFlag());
}else{
department.setIsStore(isStore);
}
//department.setSort(departmentAddQO.getSort());
department.setLevel(dto.getLevel() + 1);
department.setRelatedId(departmentAddQO.getRelatedId());
department.setRelatedCode(storeCode);
department.setSort(maxSort - sort);
ServiceResponse hr = departmentApiService.add(department);
if(hr.getCode() != 1) {
continue;
}
DepartmentDTO departmentAdd = (DepartmentDTO) hr.getResult();
String departmentId = departmentAdd.getDepartmentId();
String sonDepartment = departmentAddQO.getChildren();
handler(sonDepartment,departmentId);
if(isStore == 1){
handerStoreClerk(departmentId, departmentAddQO.getRelatedId());
}
}
}
logger.info("【部门修改】editDepartment={}",editDepartment);
if(StringUtils.isNotBlank(editDepartment)) {
List<DepartmentEditQO> list = JSONArray.parseArray(editDepartment, DepartmentEditQO.class);
long sort = 0;
long maxSort = list.size();
logger.info("【部门修改】list={}",JSON.toJSONString(list));
for (DepartmentEditQO departmentQO : list) {
String parentId = departmentQO.getParentId();
DepartmentDTO parent = departmentApiService.selectById(parentId);
if(parent == null || parent.getStatusFlag() == 0) {
continue;
}
DepartmentDTO department = departmentApiService.selectById(departmentQO.getDepartmentId());
if(department == null){
continue;
}
department.setParentDepartmentId(parentId);
department.setWxEnterpriseId(department.getWxEnterpriseId());
department.setDepartmentName(departmentQO.getDepartmentName());
department.setChainId(parent.getChainId() + Constant.ID_SEPARATOR + parent.getDepartmentId());
department.setChainName(parent.getChainName() + Constant.NAME_SEPARATOR + parent.getDepartmentName());
department.setLevel(parent.getLevel() + 1);
//department.setSort(departmentQO.getSort());
department.setSort(maxSort - sort);
logger.info("【部门修改】department={}",JSON.toJSONString(department));
handerSonDepartment(departmentQO.getCurrDepartment());
ServiceResponse hr = departmentApiService.edit(department);
String sonDepartment = departmentQO.getChildren();
handler(sonDepartment,department.getDepartmentId());
}
}
if(StringUtils.isNotBlank(delDepartmentIds)) {
String[] delIds = delDepartmentIds.split(",");
for (String string : delIds) {
DepartmentDTO dto = departmentApiService.selectById(string);
if(dto == null || dto.getStatusFlag() == 0) {
continue;
}
if(StringUtils.isBlank(dto.getRelatedId())) {
departmentApiService.del(string);
}else {
departmentApiService.recycle(string);
}
}
}
}
/**
* 修改子孙部门
* @param departmentId
*/
private void handerSonDepartment(String departmentId) {
DepartmentDTO department = departmentApiService.selectById(departmentId);
List<DepartmentDTO> list = departmentApiService.listByParentId(departmentId);
if(!list.isEmpty()) {
for (DepartmentDTO departmentDTO : list) {
departmentDTO.setChainId(department.getChainId() + Constant.ID_SEPARATOR + department.getDepartmentId());
departmentDTO.setChainName(department.getChainName() + Constant.NAME_SEPARATOR + department.getDepartmentName());
departmentDTO.setLevel(department.getLevel());
departmentApiService.edit(departmentDTO);
}
}
}
@RequestMapping("unbind-department-list")
public HaobanResponse unbindDepartmentList(String departmentId,String enterpriseId,Integer type) {
List<GicTreeDTO> departmentList = storeGroupService.listGicTree(enterpriseId,type, departmentId);
logger.info("【未绑定部门列表】enterpriseId={},type={},departmentId={},departmentList={}",enterpriseId,type,departmentId,JSON.toJSONString(departmentList));
List<DepartmentDTO> dtoList = new ArrayList<DepartmentDTO>();
for (GicTreeDTO departmentDTO : departmentList) {
DepartmentDTO dto = departmentApiService.selectByRelatedId(departmentDTO.getId());
if(dto == null) {
String key = "haoban-sync-department-" + wxEnterpriseId;
if (RedisUtil.getCache(key) != null) {
return resultResponse(HaoBanErrCode.ERR_10011);
}
Object editDepartmentObject = null;
Object addDepartmentObject = null;
String editDepartment = "";
String addDepartment = "";
String delDepartmentIds = "";
logger.info("【部门同步】args={}", JSON.toJSONString(args));
if (args != null) {
editDepartmentObject = args.getEditDepartment();
addDepartmentObject = args.getAddDepartment();
editDepartment = JSON.toJSONString(editDepartmentObject);
addDepartment = JSON.toJSONString(addDepartmentObject);
}
RedisUtil.setCache(key, 1, 3600L);
new SyncDepartmentThread(this, editDepartment, delDepartmentIds, addDepartment, key).start();
return resultResponse(HaoBanErrCode.ERR_1, key);
}
@RequestMapping("department-chain")
public HaobanResponse departmentChain(String departmentId) {
if (StringUtils.isBlank(departmentId)) {
return resultResponse(HaoBanErrCode.ERR_2);
}
DepartmentDTO department = departmentApiService.selectById(departmentId);
if (department == null) {
return resultResponse(HaoBanErrCode.ERR_10003);
}
String chainId = departmentId;
while (department != null) {
department = departmentApiService.selectById(department.getParentDepartmentId());
if (department != null) {
chainId = department.getDepartmentId() + Constant.ID_SEPARATOR + chainId;
}
}
String[] chainIdArr = chainId.split(Constant.ID_SEPARATOR);
List<DepartmentChainVO> list = new ArrayList<>();
for (String string : chainIdArr) {
DepartmentDTO son = departmentApiService.selectById(string);
DepartmentChainVO chain = EntityUtil.changeEntityByJSON(DepartmentChainVO.class, son);
if (son != null) {
list.add(chain);
}
}
return resultResponse(HaoBanErrCode.ERR_1, list);
}
@RequestMapping("department-batch-sync-success")
public HaobanResponse syncSuccess(String syncKey) {
if (RedisUtil.getCache(syncKey) == null) {
return resultResponse(HaoBanErrCode.ERR_1, true);
} else {
return resultResponse(HaoBanErrCode.ERR_1, false);
}
}
@RequestMapping("unbind-department-list")
public HaobanResponse unbindDepartmentList(String departmentId, String enterpriseId, Integer type) {
List<GicTreeDTO> departmentList = storeGroupService.listGicTree(enterpriseId, type, departmentId);
logger.info("【未绑定部门列表】enterpriseId={},type={},departmentId={},departmentList={}", enterpriseId, type, departmentId, JSON.toJSONString(departmentList));
List<DepartmentDTO> dtoList = new ArrayList<DepartmentDTO>();
for (GicTreeDTO departmentDTO : departmentList) {
DepartmentDTO dto = departmentApiService.selectByRelatedId(departmentDTO.getId());
if (dto == null) {
if (departmentDTO.getType() == 1) {
continue;
}
DepartmentDTO unBindDTO = new DepartmentDTO();
unBindDTO.setRelatedId(departmentDTO.getId());
Integer storeType = departmentDTO.getType();
if(storeType == 3){
unBindDTO.setIsStore(1);
}else{
unBindDTO.setIsStore(0);
}
unBindDTO.setDepartmentName(departmentDTO.getName());
unBindDTO.setDepartmentId(departmentDTO.getId());
unBindDTO.setType(departmentDTO.getType());
unBindDTO.setLevel(departmentDTO.getLevel());
unBindDTO.setHasSonNode(departmentDTO.isHasChildren());
dtoList.add(unBindDTO);
}
}
return resultResponse(HaoBanErrCode.ERR_1,EntityUtil.changeEntityListByJSON(DepartmentVO.class, dtoList));
}
@RequestMapping("department-recycle-list")
public HaobanResponse departmentRecycleList(String keyWord,Integer storeFlag,BasePageInfo pageInfo) {
unBindDTO.setRelatedId(departmentDTO.getId());
Integer storeType = departmentDTO.getType();
if (storeType == 3) {
unBindDTO.setIsStore(1);
} else {
unBindDTO.setIsStore(0);
}
unBindDTO.setDepartmentName(departmentDTO.getName());
unBindDTO.setDepartmentId(departmentDTO.getId());
unBindDTO.setType(departmentDTO.getType());
unBindDTO.setLevel(departmentDTO.getLevel());
unBindDTO.setHasSonNode(departmentDTO.isHasChildren());
dtoList.add(unBindDTO);
}
}
return resultResponse(HaoBanErrCode.ERR_1, EntityUtil.changeEntityListByJSON(DepartmentVO.class, dtoList));
}
@RequestMapping("department-recycle-list")
public HaobanResponse departmentRecycleList(String keyWord, Integer storeFlag, BasePageInfo pageInfo) {
WebLoginDTO login = AuthWebRequestUtil.getLoginUser();
String wxEnterpriseId = login.getWxEnterpriseId();
Integer recycleFlag = 1;
Page<DepartmentDTO> page = departmentApiService.pageDepartmentByParams(pageInfo,wxEnterpriseId,keyWord,storeFlag,recycleFlag);
List<DepartmentDTO> list = page.getResult();
for (DepartmentDTO departmentDTO : list) {
if(departmentDTO.getIsStore() != null && departmentDTO.getIsStore() == 1){
StoreDTO store = storeService.getStore(departmentDTO.getRelatedId());
if(store != null){
departmentDTO.setStoreCode(store.getStoreCode());
}
}
}
PageResult<DepartmentDTO> pageVo = new PageResult<>();
String wxEnterpriseId = login.getWxEnterpriseId();
Integer recycleFlag = 1;
Page<DepartmentDTO> page = departmentApiService.pageDepartmentByParams(pageInfo, wxEnterpriseId, keyWord, storeFlag, recycleFlag);
List<DepartmentDTO> list = page.getResult();
for (DepartmentDTO departmentDTO : list) {
if (departmentDTO.getIsStore() != null && departmentDTO.getIsStore() == 1) {
StoreDTO store = storeService.getStore(departmentDTO.getRelatedId());
if (store != null) {
departmentDTO.setStoreCode(store.getStoreCode());
}
}
}
PageResult<DepartmentDTO> pageVo = new PageResult<>();
pageVo.setList(list);
pageVo.setPageNum(page.getCurrentPage());
pageVo.setPages(page.getPages());
pageVo.setPageSize(page.getPageSize());
pageVo.setTotal(page.getTotalCount());
return resultResponse(HaoBanErrCode.ERR_1, pageVo);
}
@RequestMapping("department-repair")
public HaobanResponse departmentRepair(String departmentId,String parentId) {
DepartmentDTO dto = departmentApiService.selectById(departmentId);
if(dto == null || dto.getStatusFlag() == 0) {
return resultResponse(HaoBanErrCode.ERR_10003);
}
departmentApiService.repairRecycle(departmentId,parentId);
return resultResponse(HaoBanErrCode.ERR_1);
}
/**
* 处理子节点
* @param sonDepartment
* @param parentId
*/
private void handler(String sonDepartment, String parentId) {
logger.info("【处理子节点】sonDepartment={},parentId={}",sonDepartment,parentId);
if(StringUtils.isNotBlank(sonDepartment)) {
List<DepartmentAddQO> list = JSONArray.parseArray(sonDepartment, DepartmentAddQO.class);
long maxSort = list.size();
long sort = 0;
for (DepartmentAddQO departmentAddQO : list) {
Integer type = departmentAddQO.getType();
Integer isStore = 0;
String storeCode = "";
if(type != null && type == 3){
isStore = 1;
StoreDTO store = storeService.getStore(departmentAddQO.getRelatedId());
if(store != null){
storeCode = store.getStoreCode();
}
}
String sonParentId = "";
DepartmentDTO dto = departmentApiService.selectById(parentId);
if(dto == null || dto.getStatusFlag() == 0) {
continue;
}
if(dto.getIsStore() != null && dto.getIsStore() == 1) {
continue;
}
String departmentId = departmentAddQO.getDepartmentId();
Boolean addFlag = departmentAddQO.getAddFlag();
//在部门下新增部门
DepartmentDTO oldDepartment = departmentApiService.selectById(departmentId);
if(addFlag != null && addFlag && oldDepartment == null) {
DepartmentDTO department = new DepartmentDTO();
department.setParentDepartmentId(parentId);
department.setWxEnterpriseId(dto.getWxEnterpriseId());
department.setDepartmentName(departmentAddQO.getDepartmentName());
department.setChainId(dto.getChainId() + Constant.ID_SEPARATOR + dto.getDepartmentId());
department.setChainName(dto.getChainName() + Constant.NAME_SEPARATOR + dto.getDepartmentName());
//department.setSort(departmentAddQO.getSort());
department.setSort(maxSort - sort);
department.setIsStore(departmentAddQO.getStoreFlag());
department.setLevel(dto.getLevel() + 1);
if(departmentAddQO.getStoreFlag() != null){
department.setIsStore(departmentAddQO.getStoreFlag());
}else{
department.setIsStore(isStore);
}
department.setRelatedId(departmentAddQO.getRelatedId());
department.setRelatedCode(storeCode);
ServiceResponse hr = departmentApiService.add(department);
if(hr.getCode() != 1) {
continue;
}
DepartmentDTO departmentAdd = (DepartmentDTO) hr.getResult();
if(isStore == 1){
String storeId = departmentAdd.getRelatedId();
handerStoreClerk(departmentAdd.getDepartmentId(),storeId);
}
sonParentId = departmentAdd.getDepartmentId();
//别的部门调整过来的
}else {
DepartmentDTO department = departmentApiService.selectById(departmentId);
if(department == null || department.getStatusFlag() == 0) {
continue;
}
department.setParentDepartmentId(parentId);
department.setDepartmentName(departmentAddQO.getDepartmentName());
department.setChainId(dto.getChainId() + Constant.ID_SEPARATOR + dto.getDepartmentId());
department.setChainName(dto.getChainName() + Constant.NAME_SEPARATOR + dto.getDepartmentName());
department.setSort(departmentAddQO.getSort());
ServiceResponse hr = departmentApiService.edit(department);
if(hr.getCode() != 1) {
continue;
}
DepartmentDTO departmentEdit = (DepartmentDTO) hr.getResult();
sonParentId = departmentEdit.getDepartmentId();
}
sonDepartment = departmentAddQO.getChildren();
handler(sonDepartment,sonParentId);
}
}
}
private void handerStoreClerk(String departmentId, String storeId) {
logger.info("【处理门店下导购】storeId={},departmentId={}",storeId,departmentId);
StoreDTO store = storeService.getStore(storeId);
DepartmentDTO departmentDTO = departmentApiService.selectById(departmentId);
if(departmentDTO == null){
logger.info("【处理门店下导购】部门为空");
return;
}
String wxEnterpriseId = departmentDTO.getWxEnterpriseId();
if(store != null){
String enterpriseId = store.getEnterpriseId();
List<ClerkListDTO> list = clerkService.getClerkByStoreId(store.getEnterpriseId(), storeId);
logger.info("【处理门店下导购】list={}",JSON.toJSONString(list));
for (ClerkListDTO clerkListDTO : list) {
try {
String nationcode = clerkListDTO.getNationcode();
if(StringUtils.isNotBlank(nationcode) && nationcode.startsWith("+")){
nationcode = nationcode.replace("+", "");
}
String phoneNumber = clerkListDTO.getPhoneNumber();
if(StringUtils.isBlank(phoneNumber)){
continue;
}
String clerkCode = clerkListDTO.getClerkCode();
StaffDTO staff = staffApiService.selectByNationcodeAndPhoneNumber(wxEnterpriseId, nationcode, phoneNumber);
if(staff == null){
staff = new StaffDTO();
staff.setNationCode(nationcode);
staff.setActiveFlag(1);
staff.setDepartmentIds(departmentId);
staff.setBindFlag(1);
staff.setClerkCode(clerkCode);
staff.setNickName(clerkListDTO.getClerkName());
staff.setStaffName(clerkListDTO.getClerkName());
staff.setPostion(clerkListDTO.getPositionName());
staff.setWxEnterpriseId(wxEnterpriseId);
staff.setPhoneNumber(phoneNumber);
try {
staff.setSex(clerkListDTO.getClerkGender() == null?null:Integer.parseInt(clerkListDTO.getClerkGender()));
} catch (Exception e) {
logger.info("【同步店员】设置性别错误sex={}",clerkListDTO.getClerkGender());
}
staff.setSyncPostionFlag(1);
ServiceResponse hr = staffApiService.add(staff, departmentId);
if(hr.getCode() == 1){
StaffDepartmentRelatedDTO staffRelated = staffApiService.getDepartmentIdAndStaffId(departmentId, hr.getResult().toString());
StaffDepartmentRelatedDTO isCodeExist = staffApiService.getDepartmentIdAndCode(departmentId,clerkCode);
if(staffRelated != null && isCodeExist == null){
staffRelated.setClerkCode(clerkCode);
staffDepartmentRelatedApiService.updateById(staffRelated);
ClerkDTO clerkDTO= clerkService.getClerkByCodeNoStatus(enterpriseId,clerkCode);
if(clerkDTO != null && (!clerkDTO.getClerkName().equals(staff.getStaffName()) || !staff.getPhoneNumber().equals(clerkDTO.getPhoneNumber()))){
logger.info("【员工修改】clerkDTO={}",JSON.toJSONString(clerkDTO));
clerkDTO.setClerkName(staff.getStaffName());
clerkDTO.setPhoneNumber(staff.getPhoneNumber());
clerkService.updateClerk(clerkDTO);
}
}
}
}else{
String staffId = staff.getStaffId();
List<StaffDepartmentRelatedDTO> relatedList = staffApiService.listStaffDepartmentByStaffId(staffId);
String departmentIds = departmentId;
for (StaffDepartmentRelatedDTO staffDepartmentRelatedDTO : relatedList) {
departmentIds += "," + staffDepartmentRelatedDTO.getDepartmentId();
}
Map<String,StaffDepartmentRelatedDTO> map = com.gic.commons.util.CollectionUtil.toMap(relatedList, "departmentId");
if(map.get(departmentId) == null){
staffApiService.staffEdit(staff, departmentIds);
}
StaffDepartmentRelatedDTO staffRelated = staffApiService.getDepartmentIdAndStaffId(departmentId, staffId);
//如果这个人是未绑定的 则绑定clerk
StaffDepartmentRelatedDTO isCodeExist = staffApiService.getDepartmentIdAndCode(departmentId,clerkCode);
if(StringUtils.isBlank(staffRelated.getClerkCode()) && isCodeExist == null){
ClerkDTO clerkDTO= clerkService.getClerkByCodeNoStatus(enterpriseId,clerkCode);
if(clerkDTO != null && (!clerkDTO.getClerkName().equals(staff.getStaffName()) || !staff.getPhoneNumber().equals(clerkDTO.getPhoneNumber()))){
logger.info("【员工修改】clerkDTO={}",JSON.toJSONString(clerkDTO));
clerkDTO.setClerkName(staff.getStaffName());
clerkDTO.setPhoneNumber(staff.getPhoneNumber());
clerkService.updateClerk(clerkDTO);
}
staffRelated.setClerkCode(clerkCode);
staffDepartmentRelatedApiService.updateById(staffRelated);
}
}
} catch (Exception e) {
logger.info("同步失败");
}
}
}else{
logger.info("【处理门店下导购】门店为空");
}
}
@RequestMapping("department-batch-del")
public HaobanResponse departmentBatchDel(String departmentIds) {
String[] departmentIdArr = departmentIds.split(",");
for (String departmentId : departmentIdArr) {
ServiceResponse hr;
hr = departmentApiService.del(departmentId);
}
return resultResponse(HaoBanErrCode.ERR_1);
}
@RequestMapping("department-cache")
public HaobanResponse departmentCache(String wxEnterpriseId) {
RedisUtil.delCache("haoban-sync-department-" + wxEnterpriseId);
return resultResponse(HaoBanErrCode.ERR_1);
}
@RequestMapping("department-user-init")
public HaobanResponse departmentInit(String corpid, String suiteid, String wxEnterpriseId, Integer wxDepartmentId) {
RedisUtil.delCache("haoban-user-department-" + wxEnterpriseId);
//TODO 这里有段代码没提交上来
staffApiService.initWxUser(corpid, suiteid, wxEnterpriseId, wxDepartmentId,"");
return resultResponse(HaoBanErrCode.ERR_1);
}
@RequestMapping("department-search")
public HaobanResponse departmentSearch(String search) {
}
@RequestMapping("department-repair")
public HaobanResponse departmentRepair(String departmentId, String parentId) {
DepartmentDTO dto = departmentApiService.selectById(departmentId);
if (dto == null || dto.getStatusFlag() == 0) {
return resultResponse(HaoBanErrCode.ERR_10003);
}
departmentApiService.repairRecycle(departmentId, parentId);
return resultResponse(HaoBanErrCode.ERR_1);
}
private void handerStoreClerk(String departmentId, String storeId) {
logger.info("【处理门店下导购】storeId={},departmentId={}", storeId, departmentId);
StoreDTO store = storeService.getStore(storeId);
DepartmentDTO departmentDTO = departmentApiService.selectById(departmentId);
if (departmentDTO == null) {
logger.info("【处理门店下导购】部门为空");
return;
}
String wxEnterpriseId = departmentDTO.getWxEnterpriseId();
if (store != null) {
String enterpriseId = store.getEnterpriseId();
List<ClerkListDTO> list = clerkService.getClerkByStoreId(store.getEnterpriseId(), storeId);
logger.info("【处理门店下导购】list={}", JSON.toJSONString(list));
for (ClerkListDTO clerkListDTO : list) {
try {
String nationcode = clerkListDTO.getNationcode();
if (StringUtils.isNotBlank(nationcode) && nationcode.startsWith("+")) {
nationcode = nationcode.replace("+", "");
}
String phoneNumber = clerkListDTO.getPhoneNumber();
if (StringUtils.isBlank(phoneNumber)) {
continue;
}
String clerkCode = clerkListDTO.getClerkCode();
StaffDTO staff = staffApiService.selectByNationcodeAndPhoneNumber(wxEnterpriseId, nationcode, phoneNumber);
if (staff == null) {
staff = new StaffDTO();
staff.setNationCode(nationcode);
staff.setActiveFlag(1);
staff.setDepartmentIds(departmentId);
staff.setBindFlag(1);
staff.setClerkCode(clerkCode);
staff.setNickName(clerkListDTO.getClerkName());
staff.setStaffName(clerkListDTO.getClerkName());
staff.setPostion(clerkListDTO.getPositionName());
staff.setWxEnterpriseId(wxEnterpriseId);
staff.setPhoneNumber(phoneNumber);
try {
staff.setSex(clerkListDTO.getClerkGender() == null ? null : Integer.parseInt(clerkListDTO.getClerkGender()));
} catch (Exception e) {
logger.info("【同步店员】设置性别错误sex={}", clerkListDTO.getClerkGender());
}
staff.setSyncPostionFlag(1);
ServiceResponse hr = staffApiService.add(staff, departmentId);
if (hr.getCode() == 1) {
StaffDepartmentRelatedDTO staffRelated = staffApiService.getDepartmentIdAndStaffId(departmentId, hr.getResult().toString());
StaffDepartmentRelatedDTO isCodeExist = staffApiService.getDepartmentIdAndCode(departmentId, clerkCode);
if (staffRelated != null && isCodeExist == null) {
staffRelated.setClerkCode(clerkCode);
staffDepartmentRelatedApiService.updateById(staffRelated);
ClerkDTO clerkDTO = clerkService.getClerkByCodeNoStatus(enterpriseId, clerkCode);
if (clerkDTO != null && (!clerkDTO.getClerkName().equals(staff.getStaffName()) || !staff.getPhoneNumber().equals(clerkDTO.getPhoneNumber()))) {
logger.info("【员工修改】clerkDTO={}", JSON.toJSONString(clerkDTO));
clerkDTO.setClerkName(staff.getStaffName());
clerkDTO.setPhoneNumber(staff.getPhoneNumber());
clerkService.updateClerk(clerkDTO);
}
}
}
} else {
String staffId = staff.getStaffId();
List<StaffDepartmentRelatedDTO> relatedList = staffApiService.listStaffDepartmentByStaffId(staffId);
String departmentIds = departmentId;
for (StaffDepartmentRelatedDTO staffDepartmentRelatedDTO : relatedList) {
departmentIds += "," + staffDepartmentRelatedDTO.getDepartmentId();
}
Map<String, StaffDepartmentRelatedDTO> map = com.gic.commons.util.CollectionUtil.toMap(relatedList, "departmentId");
if (map.get(departmentId) == null) {
staffApiService.staffEdit(staff, departmentIds);
}
StaffDepartmentRelatedDTO staffRelated = staffApiService.getDepartmentIdAndStaffId(departmentId, staffId);
//如果这个人是未绑定的 则绑定clerk
StaffDepartmentRelatedDTO isCodeExist = staffApiService.getDepartmentIdAndCode(departmentId, clerkCode);
if (StringUtils.isBlank(staffRelated.getClerkCode()) && isCodeExist == null) {
ClerkDTO clerkDTO = clerkService.getClerkByCodeNoStatus(enterpriseId, clerkCode);
if (clerkDTO != null && (!clerkDTO.getClerkName().equals(staff.getStaffName()) || !staff.getPhoneNumber().equals(clerkDTO.getPhoneNumber()))) {
logger.info("【员工修改】clerkDTO={}", JSON.toJSONString(clerkDTO));
clerkDTO.setClerkName(staff.getStaffName());
clerkDTO.setPhoneNumber(staff.getPhoneNumber());
clerkService.updateClerk(clerkDTO);
}
staffRelated.setClerkCode(clerkCode);
staffDepartmentRelatedApiService.updateById(staffRelated);
}
}
} catch (Exception e) {
logger.info("同步失败");
}
}
} else {
logger.info("【处理门店下导购】门店为空");
}
}
@RequestMapping("department-cache")
public HaobanResponse departmentCache(String wxEnterpriseId) {
RedisUtil.delCache("haoban-sync-department-" + wxEnterpriseId);
return resultResponse(HaoBanErrCode.ERR_1);
}
@RequestMapping("department-user-init")
public HaobanResponse departmentInit(String corpid, String suiteid, String wxEnterpriseId, Integer wxDepartmentId) {
RedisUtil.delCache("haoban-user-department-" + wxEnterpriseId);
//TODO 这里有段代码没提交上来
staffApiService.initWxUser(corpid, suiteid, wxEnterpriseId, wxDepartmentId, "");
return resultResponse(HaoBanErrCode.ERR_1);
}
@RequestMapping("department-search")
public HaobanResponse departmentSearch(String search) {
WebLoginDTO login = AuthWebRequestUtil.getLoginUser();
String wxEnterpriseId = login.getWxEnterpriseId();
if (StringUtils.isBlank(wxEnterpriseId)) {
return resultResponse(HaoBanErrCode.ERR_6);
}
List<DepartmentShortDTO> list = departmentApiService.searchDepartment(search, wxEnterpriseId);
return resultResponse(HaoBanErrCode.ERR_1,list);
}
/**
* 加载
* @return
*/
@RequestMapping("department-list-cache")
public HaobanResponse departmentCachelist() {
if (StringUtils.isBlank(wxEnterpriseId)) {
return resultResponse(HaoBanErrCode.ERR_6);
}
List<DepartmentShortDTO> list = departmentApiService.searchDepartment(search, wxEnterpriseId);
return resultResponse(HaoBanErrCode.ERR_1, list);
}
/**
* 加载
*
* @return
*/
@RequestMapping("department-list-cache")
public HaobanResponse departmentCachelist() {
WebLoginDTO login = AuthWebRequestUtil.getLoginUser();
String wxEnterpriseId = login.getWxEnterpriseId();
if (StringUtils.isBlank(wxEnterpriseId)) {
return resultResponse(HaoBanErrCode.ERR_6);
}
Object cache = RedisUtil.getLocalCache("department-list-cache-"+wxEnterpriseId);
if (null == cache) {
List<DepartmentShortDTO> list = departmentApiService.listAllDepartment(wxEnterpriseId);
RedisUtil.setLocalCache("department-list-cache-"+wxEnterpriseId,list,-1L);
return resultResponse(HaoBanErrCode.ERR_1, list);
}else {
return resultResponse(HaoBanErrCode.ERR_1, cache);
}
}
if (StringUtils.isBlank(wxEnterpriseId)) {
return resultResponse(HaoBanErrCode.ERR_6);
}
Object cache = RedisUtil.getLocalCache("department-list-cache-" + wxEnterpriseId);
if (null == cache) {
List<DepartmentShortDTO> list = departmentApiService.listAllDepartment(wxEnterpriseId);
RedisUtil.setLocalCache("department-list-cache-" + wxEnterpriseId, list, -1L);
return resultResponse(HaoBanErrCode.ERR_1, list);
} else {
return resultResponse(HaoBanErrCode.ERR_1, cache);
}
}
}
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