From deb4575b72443cf906946a9fb28a557c16556fb9 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期五, 01 十一月 2024 09:30:50 +0800
Subject: [PATCH] Merge branch '2.0.1' of http://139.186.142.91:10010/r/productDev/yunyibao into 2.0.1

---
 server/service/src/main/java/com/doumee/service/business/impl/CompanyDepartmentServiceImpl.java |  216 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 206 insertions(+), 10 deletions(-)

diff --git a/server/service/src/main/java/com/doumee/service/business/impl/CompanyDepartmentServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/CompanyDepartmentServiceImpl.java
index 86abd9d..ecff560 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/CompanyDepartmentServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/CompanyDepartmentServiceImpl.java
@@ -1,20 +1,35 @@
 package com.doumee.service.business.impl;
 
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.CompanyDepartmentMapper;
+import com.doumee.dao.business.model.Company;
 import com.doumee.dao.business.model.CompanyDepartment;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.system.SystemUserMapper;
+import com.doumee.dao.system.model.SystemUser;
+import com.doumee.dao.system.vo.DepartmentTree;
 import com.doumee.service.business.CompanyDepartmentService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.util.Date;
 import java.util.List;
+import java.util.UUID;
 
 /**
  * 浼佷笟淇℃伅琛⊿ervice瀹炵幇
@@ -26,22 +41,161 @@
 
     @Autowired
     private CompanyDepartmentMapper companyDepartmentMapper;
-
+    @Autowired
+    private SystemUserMapper systemUserMapper;
     @Override
-    public Integer create(CompanyDepartment companyDepartment) {
-        companyDepartmentMapper.insert(companyDepartment);
-        return companyDepartment.getId();
+    public  List<CompanyDepartment> departTree(Integer type){
+        MPJLambdaWrapper<CompanyDepartment> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(Company.class);
+        queryWrapper.select("t2.realname",CompanyDepartment::getEditorName);
+        queryWrapper.select("t2.realname",CompanyDepartment::getHeadName);
+        queryWrapper.select("t2.mobile",CompanyDepartment::getHeadPhone);
+        queryWrapper.select("t1.name",CompanyDepartment::getParentName);
+        queryWrapper.select("t1.name_path",CompanyDepartment::getParentCompanyPath);
+        queryWrapper.select("t1.type",CompanyDepartment::getParentType);
+        queryWrapper.leftJoin(CompanyDepartment.class,CompanyDepartment::getId,CompanyDepartment::getParentId);
+        queryWrapper.leftJoin(SystemUser.class,SystemUser::getId,CompanyDepartment::getHeadId);
+        queryWrapper.leftJoin(SystemUser.class,SystemUser::getId,CompanyDepartment::getEditor);
+        queryWrapper.eq(CompanyDepartment::getIsdeleted,Constants.ZERO);
+        queryWrapper.eq(type!=null,CompanyDepartment::getType,type);
+        queryWrapper.orderByAsc(true,"t.sortnum");
+        List<CompanyDepartment> companyList = companyDepartmentMapper.selectJoinList(CompanyDepartment.class,queryWrapper);
+        DepartmentTree treeBuild = new DepartmentTree(companyList);
+        companyList = treeBuild.buildTree();
+        return companyList;
+    }
+    @Override
+    public Integer create(CompanyDepartment company) {
+
+        LoginUserInfo user = (LoginUserInfo)SecurityUtils.getSubject().getPrincipal();
+        if(StringUtils.isBlank(company.getName())){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        if(company.getType()==null || !(company.getType() ==0 || company.getType() ==1)){
+            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝缁勭粐绫诲瀷涓嶆纭紝璇锋寜瑕佹眰濉啓~");
+        }
+        int type = Constants.ZERO;//榛樿骞冲彴缁勭粐
+        if(Constants.equalsInteger(user.getType(),Constants.UserType.COMPANY.getKey())){
+            //濡傛灉浼佷笟鐢ㄦ埛
+            type  = Constants.ONE;
+        }else if(Constants.equalsInteger(user.getType(),Constants.UserType.ZHUBO.getKey())){
+            //濡傛灉鏄晢鎴�
+            type  = Constants.TWO;
+        }
+        //鏌ヨ鍚嶇О涓嶈兘閲嶅
+        if(companyDepartmentMapper.selectCount(new QueryWrapper<CompanyDepartment>().lambda()
+                .eq(CompanyDepartment::getName,company.getName())
+                .eq(CompanyDepartment::getType,type)
+                .eq(CompanyDepartment::getIsdeleted, Constants.ZERO)) >0){
+            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝缁勭粐鍚嶇О涓嶈兘閲嶅~");
+        }
+        company.setCompanyId(user.getCompanyId());//鎵�灞炰紒涓氱紪鐮�
+        company.setIdPath(company.getId()+"/");//鍚嶇О璺緞
+        company.setNamePath(company.getName());//鍚嶇О璺緞
+        String idPath = "";
+        if(company.getParentId() !=null){
+            CompanyDepartment parent = findById(company.getParentId());
+            if(parent == null || Constants.equalsInteger(parent.getIsdeleted(),Constants.ONE)
+                    || !Constants.equalsInteger(parent.getType(),type)){
+                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝鐖剁骇缁勭粐淇℃伅涓嶅瓨鍦▇");
+            }
+            idPath = parent.getIdPath();
+            company.setIdPath(parent.getIdPath()+company.getId()+"/");
+            company.setNamePath(parent.getNamePath()+"/"+company.getName());
+        }
+        company.setCreateDate(new Date());
+        company.setCreator(user.getId());
+        company.setIsdeleted(Constants.ZERO);
+        company.setStatus(Constants.ZERO);
+        company.setSortnum(0);//榛樿鏈�涓婇潰
+        company.setEditDate(company.getCreateDate());
+        company.setEditor(company.getCreator());
+        companyDepartmentMapper.insert(company);
+        //涓嬪彂娴峰悍瀹夐槻骞冲彴
+
+        CompanyDepartment com = new CompanyDepartment();
+        com.setId(company.getId());
+        com.setIdPath(idPath+company.getId()+"/");
+        companyDepartmentMapper.updateById(com);
+        return company.getId();
     }
 
     @Override
     public void deleteById(Integer id) {
-        companyDepartmentMapper.deleteById(id);
+        LoginUserInfo user = (LoginUserInfo)SecurityUtils.getSubject().getPrincipal();
+
+        int type = Constants.ZERO;//榛樿骞冲彴缁勭粐
+        if(Constants.equalsInteger(user.getType(),Constants.UserType.COMPANY.getKey())){
+            //濡傛灉浼佷笟鐢ㄦ埛
+            type  = Constants.ONE;
+        }else if(Constants.equalsInteger(user.getType(),Constants.UserType.ZHUBO.getKey())){
+            //濡傛灉鏄晢鎴�
+            type  = Constants.TWO;
+        }
+        CompanyDepartment model = findById(id);
+        if(model == null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)
+                || !Constants.equalsInteger(model.getType(),type)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝璇ョ粍缁囦俊鎭笉瀛樺湪锛�");
+        }
+
+        if(companyDepartmentMapper.selectCount(new QueryWrapper<CompanyDepartment>().lambda()
+                .eq(CompanyDepartment::getParentId,id)
+                .eq(CompanyDepartment::getType,type)
+                .eq(CompanyDepartment::getIsdeleted, Constants.ZERO)) >0){
+            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝璇ョ粍缁囧瓨鍦ㄤ笅绾х粍缁囷紝鏃犳硶杩涜璇ユ搷浣滐紒");
+        }
+        if(systemUserMapper.selectCount(new QueryWrapper<SystemUser>().lambda()
+                .eq(SystemUser::getDepartmentId,id)
+                .eq(SystemUser::getType,type)
+                .eq(SystemUser::getDeleted, Boolean.FALSE)) >0){
+            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝璇ョ粍缁囦笅瀛樺湪鐢ㄦ埛淇℃伅锛屾棤娉曡繘琛岃鎿嶄綔锛�");
+        }
+
+        companyDepartmentMapper.update(null, new UpdateWrapper<CompanyDepartment>().lambda()
+                .eq(CompanyDepartment::getId,id)
+                .set(CompanyDepartment::getIsdeleted,Constants.ONE)
+                .set(CompanyDepartment::getEditor,user.getId())
+                .set(CompanyDepartment::getEditDate,new Date())
+        );
     }
 
     @Override
     public void delete(CompanyDepartment companyDepartment) {
-        UpdateWrapper<CompanyDepartment> deleteWrapper = new UpdateWrapper<>(companyDepartment);
-        companyDepartmentMapper.delete(deleteWrapper);
+        LoginUserInfo user = (LoginUserInfo)SecurityUtils.getSubject().getPrincipal();
+
+        int type = Constants.ZERO;//榛樿骞冲彴缁勭粐
+        if(Constants.equalsInteger(user.getType(),Constants.UserType.COMPANY.getKey())){
+            //濡傛灉浼佷笟鐢ㄦ埛
+            type  = Constants.ONE;
+        }else if(Constants.equalsInteger(user.getType(),Constants.UserType.ZHUBO.getKey())){
+            //濡傛灉鏄晢鎴�
+            type  = Constants.TWO;
+        }
+        CompanyDepartment model = findById(companyDepartment.getId());
+        if(model == null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)
+                || !Constants.equalsInteger(model.getType(),type)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝璇ョ粍缁囦俊鎭笉瀛樺湪锛�");
+        }
+
+        if(companyDepartmentMapper.selectCount(new QueryWrapper<CompanyDepartment>().lambda()
+                .eq(CompanyDepartment::getParentId,companyDepartment.getId())
+                .eq(CompanyDepartment::getType,type)
+                .eq(CompanyDepartment::getIsdeleted, Constants.ZERO)) >0){
+            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝璇ョ粍缁囧瓨鍦ㄤ笅绾х粍缁囷紝鏃犳硶杩涜璇ユ搷浣滐紒");
+        }
+        if(systemUserMapper.selectCount(new QueryWrapper<SystemUser>().lambda()
+                .eq(SystemUser::getDepartmentId,companyDepartment.getId())
+                .eq(SystemUser::getType,type)
+                .eq(SystemUser::getDeleted, Boolean.FALSE)) >0){
+            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝璇ョ粍缁囦笅瀛樺湪鐢ㄦ埛淇℃伅锛屾棤娉曡繘琛岃鎿嶄綔锛�");
+        }
+
+        companyDepartmentMapper.update(null, new UpdateWrapper<CompanyDepartment>().lambda()
+                .eq(CompanyDepartment::getId,companyDepartment.getId())
+                .set(CompanyDepartment::getIsdeleted,Constants.ONE)
+                .set(CompanyDepartment::getEditor,user.getId())
+                .set(CompanyDepartment::getEditDate,new Date())
+        );
     }
 
     @Override
@@ -49,12 +203,54 @@
         if (CollectionUtils.isEmpty(ids)) {
             return;
         }
-        companyDepartmentMapper.deleteBatchIds(ids);
+        for(Integer id :ids){
+            deleteById(id);
+        }
     }
 
     @Override
-    public void updateById(CompanyDepartment companyDepartment) {
-        companyDepartmentMapper.updateById(companyDepartment);
+    public void updateById(CompanyDepartment company) {
+
+        if(company.getId() == null|| StringUtils.isBlank(company.getName())){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        if(company.getType()!=null && !(company.getType() ==0 || company.getType() ==1)){
+            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝缁勭粐绫诲瀷涓嶆纭紝璇锋寜瑕佹眰濉啓~");
+        }
+        LoginUserInfo user = (LoginUserInfo)SecurityUtils.getSubject().getPrincipal();
+
+        int type = Constants.ZERO;//榛樿骞冲彴缁勭粐
+        if(Constants.equalsInteger(user.getType(),Constants.UserType.COMPANY.getKey())){
+            //濡傛灉浼佷笟鐢ㄦ埛
+            type  = Constants.ONE;
+        }else if(Constants.equalsInteger(user.getType(),Constants.UserType.ZHUBO.getKey())){
+            //濡傛灉鏄晢鎴�
+            type  = Constants.TWO;
+        }
+        CompanyDepartment  model = findById(company.getId());
+        if(model == null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)
+                || !Constants.equalsInteger(model.getType(),type)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝璇ョ粍缁囦俊鎭笉瀛樺湪锛�");
+        }
+        //鏌ヨ鍚嶇О涓嶈兘閲嶅
+        if(companyDepartmentMapper.selectCount(new QueryWrapper<CompanyDepartment>().lambda()
+                .eq(CompanyDepartment::getName,company.getName())
+                .eq(CompanyDepartment::getType,type)
+                .ne(CompanyDepartment::getId,company.getId())
+                .eq(CompanyDepartment::getIsdeleted,Constants.ZERO)) >0){
+            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝缁勭粐鍚嶇О涓嶈兘閲嶅~");
+        }
+        company.setEditDate(new Date());
+        company.setEditor(user.getId());
+        company.setParentId(null);//涓嶆敮鎸佷慨鏀圭埗绾�
+        companyDepartmentMapper.updateById(company);
+        //鏇存柊鐨刢ompanyPath
+        String newName = model.getNamePath().replace(model.getName(),company.getName());
+        companyDepartmentMapper.update(null,new UpdateWrapper<CompanyDepartment>().lambda()
+                .setSql("company_name_path=REPLACE(name_path,'"+ model.getNamePath()+"','"+newName+"')")
+                .likeRight(CompanyDepartment::getIdPath,model.getIdPath()));
+
+
     }
 
     @Override

--
Gitblit v1.9.3