Browse Source

更新了首页

LiRong 2 months ago
parent
commit
8565d2c577

+ 23 - 0
ruoyi-common/src/main/java/com/ruoyi/common/exception/user/urNotshareholderException.java

@@ -0,0 +1,23 @@
+package com.ruoyi.common.exception.user;
+
+public class urNotshareholderException extends RuntimeException{
+    // 无参构造方法
+    public urNotshareholderException() {
+        super("当前账号未绑定股东,请绑定股东后重试");
+    }
+
+    // 带消息的构造方法
+    public urNotshareholderException(String message) {
+        super(message);
+    }
+
+    // 带消息和原因的构造方法
+    public urNotshareholderException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    // 带原因的构造方法
+    public urNotshareholderException(Throwable cause) {
+        super(cause);
+    }
+}

+ 0 - 1
ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java

@@ -161,7 +161,6 @@ public class SecurityUtils
         Collection<String> roles = roleList.stream().map(SysRole::getRoleKey).collect(Collectors.toSet());
         return hasRole(roles, role);
     }
-
     /**
      * 判断是否包含角色
      * 

+ 0 - 1
ruoyi-equity/src/main/java/com/ruoyi/equity/controller/ShareholderInfoController.java

@@ -74,7 +74,6 @@ public class ShareholderInfoController extends BaseController
         List<ShareholderInfo> list = shareholderInfoService.getAllCompany();
         return success(list);
     }
-
     /**
      * 获取所有的股东
      */

+ 5 - 0
ruoyi-equity/src/main/java/com/ruoyi/equity/mapper/ShareholderInfoMapper.java

@@ -76,4 +76,9 @@ public interface ShareholderInfoMapper extends BaseMapper<ShareholderInfo>
     List<ShareholderInfo> getAllCompany();
 
 
+    ShareholderInfo selectShareholderInfoByUserId(Long userId);
+
+    Long selectShareholderRoleIdByUserId(Long userId);
+
+    List<ShareholderUpPicVO> getOneSelfNode( @Param("shareholderId") Long shareholderId,@Param("ancestors") List<Long> ancestors);
 }

+ 80 - 45
ruoyi-equity/src/main/java/com/ruoyi/equity/service/impl/ShareholderInfoServiceImpl.java

@@ -2,14 +2,17 @@ package com.ruoyi.equity.service.impl;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.exception.user.OnlyOneMainCompanyAllowedException;
+import com.ruoyi.common.exception.user.urNotshareholderException;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.equity.domain.vo.ShareholderDownPicVO;
 import com.ruoyi.equity.domain.vo.ShareholderInfoVO;
 import com.ruoyi.equity.domain.vo.ShareholderPicVO;
@@ -17,7 +20,11 @@ import com.ruoyi.equity.domain.vo.ShareholderUpPicVO;
 import com.ruoyi.equity.utils.ForestNodeManager2;
 import com.ruoyi.equity.utils.ForestNodeMerger;
 import com.ruoyi.equity.utils.ForestNodeMerger2;
+import com.ruoyi.framework.web.service.SysLoginService;
+import com.ruoyi.system.domain.SysLogininfor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.Authentication;
 import org.springframework.stereotype.Service;
 import com.ruoyi.equity.mapper.ShareholderInfoMapper;
 import com.ruoyi.equity.domain.ShareholderInfo;
@@ -26,127 +33,155 @@ import org.springframework.util.CollectionUtils;
 
 /**
  * 股东信息Service业务层处理
- * 
+ *
  * @author ruoyi
  * @date 2025-03-03
  */
 @Service
-public class ShareholderInfoServiceImpl extends ServiceImpl<ShareholderInfoMapper, ShareholderInfo> implements IShareholderInfoService
-{
+@Slf4j
+public class ShareholderInfoServiceImpl extends ServiceImpl<ShareholderInfoMapper, ShareholderInfo> implements IShareholderInfoService {
+    public static final long USER_ROLE_ID = 102 ;
     @Autowired
     private ShareholderInfoMapper shareholderInfoMapper;
 
     /**
      * 查询股东信息
-     * 
+     *
      * @param shareholderId 股东信息主键
      * @return 股东信息
      */
     @Override
-    public ShareholderInfo selectShareholderInfoByShareholderId(Long shareholderId)
-    {
+    public ShareholderInfo selectShareholderInfoByShareholderId(Long shareholderId) {
         return shareholderInfoMapper.selectShareholderInfoByShareholderId(shareholderId);
     }
 
     /**
      * 查询股东信息列表
-     * 
+     *
      * @param shareholderInfo 股东信息
      * @return 股东信息
      */
     @Override
-    public List<ShareholderInfoVO> selectShareholderInfoList(ShareholderInfo shareholderInfo)
-    {
+    public List<ShareholderInfoVO> selectShareholderInfoList(ShareholderInfo shareholderInfo) {
 
         return shareholderInfoMapper.selectShareholderInfoList(shareholderInfo);
     }
 
     /**
      * 新增股东信息
-     * 
+     *
      * @param shareholderInfo 股东信息
      * @return 结果
      */
     @Override
-    public int insertShareholderInfo(ShareholderInfo shareholderInfo)
-    {
+    public int insertShareholderInfo(ShareholderInfo shareholderInfo) {
         shareholderInfo.setCreateTime(DateUtils.getNowDate());
         return shareholderInfoMapper.insertShareholderInfo(shareholderInfo);
     }
 
     /**
      * 修改股东信息
-     * 
+     *
      * @param shareholderInfo 股东信息
      * @return 结果
      */
     @Override
-    public int updateShareholderInfo(ShareholderInfo shareholderInfo)
-    {
+    public int updateShareholderInfo(ShareholderInfo shareholderInfo) {
         shareholderInfo.setUpdateTime(DateUtils.getNowDate());
         return shareholderInfoMapper.updateShareholderInfo(shareholderInfo);
     }
 
     /**
      * 批量删除股东信息
-     * 
+     *
      * @param shareholderIds 需要删除的股东信息主键
      * @return 结果
      */
     @Override
-    public int deleteShareholderInfoByShareholderIds(Long[] shareholderIds)
-    {
+    public int deleteShareholderInfoByShareholderIds(Long[] shareholderIds) {
         return shareholderInfoMapper.deleteShareholderInfoByShareholderIds(shareholderIds);
     }
 
     /**
      * 删除股东信息信息
-     * 
+     *
      * @param shareholderId 股东信息主键
      * @return 结果
      */
     @Override
-    public int deleteShareholderInfoByShareholderId(Long shareholderId)
-    {
+    public int deleteShareholderInfoByShareholderId(Long shareholderId) {
         return shareholderInfoMapper.deleteShareholderInfoByShareholderId(shareholderId);
     }
 
     @Override
     public ShareholderPicVO getShareholderPic() {
+        ShareholderInfo info;
         try {
             //获取主体公司,如果未获取到,则直接提示
-            ShareholderInfo info = shareholderInfoMapper.getSubjectCompany();
-            if (Objects.isNull(info)){
-                return null;
+            info = shareholderInfoMapper.getSubjectCompany();
+        } catch (Exception e) {
+            //如果是多主体公司,抛出自定义异常
+            throw new OnlyOneMainCompanyAllowedException();
+        }
+        if (Objects.isNull(info)) {
+            return null;
+        }
+
+        //封装返回值
+        ShareholderPicVO vo = ShareholderPicVO.builder()
+                .id(info.getShareholderId())
+                .name(info.getShareholderName())
+                .companyValuation(info.getCompanyValuation())
+                .shareholdingRatio(info.getShareholdingRatio())
+                .build();
+
+        // ----- 根据股东信息来显示内容
+        //获取登录用户所绑定的股东信息;如果不是股东就抛异常
+        Long userId = SecurityUtils.getUserId();
+        try {
+            ShareholderInfo shareholderInfo = shareholderInfoMapper.selectShareholderInfoByUserId(userId);
+            Long shareholderId = shareholderInfo.getShareholderId();
+            String[] str = shareholderInfo.getAncestors().split(",");
+            List<Long> ancestors = Arrays.stream(str) .map(Long::parseLong).collect(Collectors.toList());
+            //获取股东的role_id
+            Long shareholderRoleId = shareholderInfoMapper.selectShareholderRoleIdByUserId(userId);
+
+            log.info("当前登录用户所绑定的股东:{}", shareholderInfo.getShareholderName());
+
+
+            List<ShareholderUpPicVO> ups;
+            //如果是管理员 查什么写好的,如果不是查我们自己的
+            if (shareholderRoleId == USER_ROLE_ID){
+                List<ShareholderUpPicVO> oneselfNodes = shareholderInfoMapper.getOneSelfNode(shareholderId,ancestors);
+          ups = ForestNodeMerger2.merge(oneselfNodes);
+            }else{
+                //获取主体上层的所有节点
+                List<ShareholderUpPicVO> upNodes = shareholderInfoMapper.getAllUpNode();
+                 ups = ForestNodeMerger2.merge(upNodes);
             }
-            //封装返回值
-            ShareholderPicVO vo =ShareholderPicVO.builder()
-                            .id(info.getShareholderId())
-                            .name(info.getShareholderName())
-                            .companyValuation(info.getCompanyValuation())
-                            .shareholdingRatio(info.getShareholdingRatio())
-                            .build();
-            //获取主体上层的所有节点
-            List<ShareholderUpPicVO> upNodes = shareholderInfoMapper.getAllUpNode();
-            List<ShareholderUpPicVO> ups = ForestNodeMerger2.merge(upNodes);
-            if (!ups.isEmpty()){
+
+
+            if (!ups.isEmpty()) {
                 List<ShareholderUpPicVO> parents = ups.get(0).getParents();
                 //如果公司存在估值,则递归生成股份估值信息
-                if (Objects.nonNull(info.getCompanyValuation())){
-                    setShareholdingRatio(parents,info.getCompanyValuation());
+                if (Objects.nonNull(info.getCompanyValuation())) {
+                    setShareholdingRatio(parents, info.getCompanyValuation());
                 }
                 vo.setParents(parents);
             }
+
+
             //获取主体下层的所有节点
             List<ShareholderDownPicVO> downNodes = shareholderInfoMapper.getAllDownNode();
             List<ShareholderDownPicVO> downs = ForestNodeMerger.merge(downNodes);
-            if (!downs.isEmpty()){
+            if (!downs.isEmpty()) {
                 vo.setChildren(downs.get(0).getChildren());
             }
             return vo;
         } catch (Exception e) {
-            throw new OnlyOneMainCompanyAllowedException();
+            throw  new urNotshareholderException();
         }
+
     }
 
     @Override
@@ -160,11 +195,11 @@ public class ShareholderInfoServiceImpl extends ServiceImpl<ShareholderInfoMappe
     }
 
     //递归赋值股份信息
-    private void setShareholdingRatio(List<ShareholderUpPicVO> list, BigDecimal equityValuation){
+    private void setShareholdingRatio(List<ShareholderUpPicVO> list, BigDecimal equityValuation) {
         for (ShareholderUpPicVO vo : list) {
             vo.setValuation(equityValuation.divide(new BigDecimal(100)).multiply(vo.getShareholdingRatio()).setScale(2, RoundingMode.UP));
-            if (!CollectionUtils.isEmpty(vo.getParents())){
-                setShareholdingRatio(vo.getParents(),vo.getValuation());
+            if (!CollectionUtils.isEmpty(vo.getParents())) {
+                setShareholdingRatio(vo.getParents(), vo.getValuation());
             }
         }
     }

+ 27 - 0
ruoyi-equity/src/main/resources/mapper/equity/ShareholderInfoMapper.xml

@@ -74,6 +74,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         from e_shareholder_info
         where shareholder_type = 2
     </select>
+    <select id="selectShareholderInfoByUserId" resultType="com.ruoyi.equity.domain.ShareholderInfo" parameterType="java.lang.Long">
+        select shareholder.* from e_shareholder_info shareholder left join  sys_user user on user.shareholder_id = shareholder.shareholder_id where user.user_id = #{userId};
+    </select>
+    <select id="selectShareholderRoleIdByUserId" resultType="java.lang.Long" parameterType="java.lang.Long">
+        select r.role_id from sys_user u left join sys_user_role r on u.user_id = r.user_id where r.user_id = #{userId};
+    </select>
+    <select id="getOneSelfNode" resultType="com.ruoyi.equity.domain.vo.ShareholderUpPicVO">
+        select shareholder_id as id,
+               parent_id as parentId,
+               shareholder_name as name,
+               shareholding_ratio as shareholdingRatio,
+               shareholding_ratio as shareholdingRatio
+        from e_shareholder_info
+        where  <choose>
+        <when test="ancestors != null and ancestors.size() > 0">
+            e_shareholder_info.shareholder_id in
+            <foreach item="ancestor" index="index" collection="ancestors" open="(" separator="," close=")">
+                #{ancestor}
+            </foreach>
+            or shareholder_id = #{shareholderId}
+        </when>
+        <otherwise>
+            shareholder_id = #{shareholderId}
+        </otherwise>
+    </choose>
+
+    </select>
 
     <insert id="insertShareholderInfo" parameterType="ShareholderInfo" useGeneratedKeys="true" keyProperty="shareholderId">
         insert into e_shareholder_info

+ 2 - 1
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -58,7 +58,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </sql>
     
     <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
-		select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
+		select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.shareholder_id, d.dept_name, d.leader from sys_user u
 		left join sys_dept d on u.dept_id = d.dept_id
 		where u.del_flag = '0'
 		<if test="userId != null and userId != 0">
@@ -70,6 +70,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<if test="status != null and status != ''">
 			AND u.status = #{status}
 		</if>
+
 		<if test="phonenumber != null and phonenumber != ''">
 			AND u.phonenumber like concat('%', #{phonenumber}, '%')
 		</if>