Kaynağa Gözat

添加用户损益报表权限控制相关代码

JammeyJiang 8 ay önce
ebeveyn
işleme
64ec6fab23

+ 4 - 0
src/main/java/com/kcim/common/constants/Constant.java

@@ -209,4 +209,8 @@ public interface Constant {
      */
     String ITEM_COST_COLUMN_TYPE = "ITEM_COST_COLUNM_TYPE";
 
+    /**
+     * 空字符串
+     */
+    String EMPTY_STR = "";
 }

+ 5 - 0
src/main/java/com/kcim/common/constants/ParameterConstant.java

@@ -32,5 +32,10 @@ public interface ParameterConstant {
      */
     Long INCOME_COLLECTION_TYPE = 1791289260914118656L;
 
+    /**
+     * 是否开启损益表数据权限功能 0不开启 1开启
+     */
+    Long USER_REPORT_AUTHOR_ABLE = 1862419414851391488L;
+
 
 }

+ 16 - 0
src/main/java/com/kcim/dao/mapper/UserReportRightMapper.java

@@ -0,0 +1,16 @@
+package com.kcim.dao.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kcim.dao.model.UserReportRight;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户有权限的损益报表
+ * 
+ * @author Wang.YS
+ * @date 2023-10-17 15:35:58
+ */
+@Mapper
+public interface UserReportRightMapper extends BaseMapper<UserReportRight> {
+	
+}

+ 16 - 0
src/main/java/com/kcim/dao/mapper/UserResponsibilityRightMapper.java

@@ -0,0 +1,16 @@
+package com.kcim.dao.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kcim.dao.model.UserResponsibilityRight;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户有权限的责任中心
+ * 
+ * @author Wang.YS
+ * @date 2023-10-17 15:35:58
+ */
+@Mapper
+public interface UserResponsibilityRightMapper extends BaseMapper<UserResponsibilityRight> {
+	
+}

+ 86 - 0
src/main/java/com/kcim/dao/model/UserReportRight.java

@@ -0,0 +1,86 @@
+package com.kcim.dao.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 用户报表权限表
+ * 
+ * @author
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("com_user_report_right")
+public class UserReportRight implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@TableId
+	private Integer id;
+	/**
+	 * 医院id
+	 */
+	private Long hospId;
+	/**
+	 * 中台用户id
+	 */
+	private String userId;
+	/**
+	 * 中台用户工号
+	 */
+	private String account;
+	/**
+     *报表代码,对应公用字典(损益表报表类型)的code
+	 */
+	private String reportCode;
+	/**
+	 * 创建人
+	 */
+	@JsonIgnore
+	private String createUser;
+	/**
+	 * 创建时间
+	 */
+	@JsonIgnore
+	private Date createTime;
+	/**
+	 * 更新人
+	 */
+	@JsonIgnore
+	private String updateUser;
+	/**
+	 * 更新时间
+	 */
+	@JsonIgnore
+	private Date updateTime;
+	/**
+	 * 删除人
+	 */
+	@JsonIgnore
+	private String deleteUser;
+	/**
+	 * 删除时间
+	 */
+	@JsonIgnore
+	private Date deleteTime;
+	/**
+	 * 删除标志  0正常 1作废
+	 */
+	@TableLogic(value = "0",delval = "1")
+	@JsonIgnore
+	private Integer delFlag;
+
+}

+ 86 - 0
src/main/java/com/kcim/dao/model/UserResponsibilityRight.java

@@ -0,0 +1,86 @@
+package com.kcim.dao.model;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 用户责任中心权限表
+ * 
+ * @author
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("com_user_responsibility_right")
+public class UserResponsibilityRight implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@TableId
+	private Integer id;
+	/**
+	 * 医院id
+	 */
+	private Long hospId;
+	/**
+	 * 中台用户id
+	 */
+	private String userId;
+	/**
+	 * 中台用户工号
+	 */
+	private String account;
+	/**
+	 *责任中心代码
+	 */
+	private String responsibilityCode;
+	/**
+	 * 创建人
+	 */
+	@JsonIgnore
+	private String createUser;
+	/**
+	 * 创建时间
+	 */
+	@JsonIgnore
+	private Date createTime;
+	/**
+	 * 更新人
+	 */
+	@JsonIgnore
+	private String updateUser;
+	/**
+	 * 更新时间
+	 */
+	@JsonIgnore
+	private Date updateTime;
+	/**
+	 * 删除人
+	 */
+	@JsonIgnore
+	private String deleteUser;
+	/**
+	 * 删除时间
+	 */
+	@JsonIgnore
+	private Date deleteTime;
+	/**
+	 * 删除标志  0正常 1作废
+	 */
+	@TableLogic(value = "0",delval = "1")
+	@JsonIgnore
+	private Integer delFlag;
+
+}

+ 86 - 0
src/main/java/com/kcim/dao/repository/UserReportRightRepository.java

@@ -0,0 +1,86 @@
+package com.kcim.dao.repository;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kcim.common.util.UserContext;
+import com.kcim.dao.mapper.UserReportRightMapper;
+import com.kcim.dao.model.UserReportRight;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @program: CostAccount
+ * @description: 用户有权限的损益报表数据库交互
+ * @author: Wang.YS
+ * @create: 2023-10-26 10:41
+ **/
+@Repository
+public class UserReportRightRepository extends ServiceImpl<UserReportRightMapper, UserReportRight> {
+    /**
+     * 获取当前用户有权限的损益报表数据
+     * @return  列表
+     */
+    public List<UserReportRight> getList() {
+        LambdaQueryWrapper<UserReportRight> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(UserReportRight::getHospId, UserContext.getHospId());
+        queryWrapper.eq(UserReportRight::getUserId, UserContext.getCurrentUser().getId());
+        return this.list(queryWrapper);
+    }
+
+//    public List<StandItem> getList(String name) {
+//        LambdaQueryWrapper<StandItem> queryWrapper = new LambdaQueryWrapper<>();
+//        queryWrapper.eq(StandItem::getHospId, UserContext.getHospId());
+//        if(!StringUtils.isEmpty(name)){
+//            queryWrapper.like(StandItem::getName, name);
+//        }
+//        return this.list(queryWrapper);
+//    }
+//
+//    public Page<StandItem> getPage(Integer current, Integer pageSize, String name, String kcClassCode) {
+//        Page<StandItem> page = new Page<>(current,pageSize);
+//        LambdaQueryWrapper<StandItem> queryWrapper = new LambdaQueryWrapper<>();
+//        queryWrapper.eq(StandItem::getHospId, UserContext.getHospId());
+//        if(!StringUtils.isEmpty(name)){
+////            queryWrapper.like(StandItem::getName,name);
+//            queryWrapper.and(q->q.like(StandItem::getName,name).or().like(StandItem::getNationalCode,name));
+//        }
+//        if(!StringUtils.isEmpty(kcClassCode)){
+//            queryWrapper.eq(StandItem::getKcClassCode,kcClassCode);
+//        }
+//        return this.page(page,queryWrapper);
+//    }
+//
+//    public StandItem getOneByCode(String code) {
+//        LambdaQueryWrapper<StandItem> queryWrapper = new LambdaQueryWrapper<>();
+//        queryWrapper.eq(StandItem::getHospId, UserContext.getHospId());
+//        queryWrapper.eq(StandItem::getCode,code);
+//        return this.getOne(queryWrapper);
+//    }
+//
+//    public void deleteStandItem(Integer id) {
+//        StandItem item = this.getById(id);
+//        if(Objects.nonNull(item)){
+//            item.setDeleteTime(new Date());
+//            item.setDeleteUser(String.valueOf(UserContext.getCurrentUser().getId()));
+//            this.updateById(item);
+//            this.removeById(id);
+//        }
+//    }
+//
+//    public void removeList(List<StandItem> list) {
+//        for (StandItem item : list) {
+//            item.setDeleteTime(new Date());
+//            item.setDeleteUser(String.valueOf(UserContext.getCurrentUser().getId()));
+//        }
+//        this.updateBatchById(list,100);
+//        List<Integer> collect = list.stream().map(StandItem::getId).collect(Collectors.toList());
+//        this.removeBatchByIds(collect,100);
+//    }
+//
+//    public List<StandItem> getList(SessionUserVO currentUser) {
+//        LambdaQueryWrapper<StandItem> queryWrapper = new LambdaQueryWrapper<>();
+//        queryWrapper.eq(StandItem::getHospId, currentUser.getHospId());
+//        return this.list(queryWrapper);
+//    }
+}

+ 86 - 0
src/main/java/com/kcim/dao/repository/UserResponsibilityRightRepository.java

@@ -0,0 +1,86 @@
+package com.kcim.dao.repository;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kcim.common.util.UserContext;
+import com.kcim.dao.mapper.UserResponsibilityRightMapper;
+import com.kcim.dao.model.UserResponsibilityRight;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @program: CostAccount
+ * @description: 用户有权限的责任中心数据库交互
+ * @author: Wang.YS
+ * @create: 2023-10-26 10:41
+ **/
+@Repository
+public class UserResponsibilityRightRepository extends ServiceImpl<UserResponsibilityRightMapper, UserResponsibilityRight> {
+    /**
+     * 获取当前用户有权限的责任中心数据
+     * @return  列表
+     */
+    public List<UserResponsibilityRight> getList() {
+        LambdaQueryWrapper<UserResponsibilityRight> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(UserResponsibilityRight::getHospId, UserContext.getHospId());
+        queryWrapper.eq(UserResponsibilityRight::getUserId, UserContext.getCurrentUser().getId());
+        return this.list(queryWrapper);
+    }
+
+//    public List<StandItem> getList(String name) {
+//        LambdaQueryWrapper<StandItem> queryWrapper = new LambdaQueryWrapper<>();
+//        queryWrapper.eq(StandItem::getHospId, UserContext.getHospId());
+//        if(!StringUtils.isEmpty(name)){
+//            queryWrapper.like(StandItem::getName, name);
+//        }
+//        return this.list(queryWrapper);
+//    }
+//
+//    public Page<StandItem> getPage(Integer current, Integer pageSize, String name, String kcClassCode) {
+//        Page<StandItem> page = new Page<>(current,pageSize);
+//        LambdaQueryWrapper<StandItem> queryWrapper = new LambdaQueryWrapper<>();
+//        queryWrapper.eq(StandItem::getHospId, UserContext.getHospId());
+//        if(!StringUtils.isEmpty(name)){
+////            queryWrapper.like(StandItem::getName,name);
+//            queryWrapper.and(q->q.like(StandItem::getName,name).or().like(StandItem::getNationalCode,name));
+//        }
+//        if(!StringUtils.isEmpty(kcClassCode)){
+//            queryWrapper.eq(StandItem::getKcClassCode,kcClassCode);
+//        }
+//        return this.page(page,queryWrapper);
+//    }
+//
+//    public StandItem getOneByCode(String code) {
+//        LambdaQueryWrapper<StandItem> queryWrapper = new LambdaQueryWrapper<>();
+//        queryWrapper.eq(StandItem::getHospId, UserContext.getHospId());
+//        queryWrapper.eq(StandItem::getCode,code);
+//        return this.getOne(queryWrapper);
+//    }
+//
+//    public void deleteStandItem(Integer id) {
+//        StandItem item = this.getById(id);
+//        if(Objects.nonNull(item)){
+//            item.setDeleteTime(new Date());
+//            item.setDeleteUser(String.valueOf(UserContext.getCurrentUser().getId()));
+//            this.updateById(item);
+//            this.removeById(id);
+//        }
+//    }
+//
+//    public void removeList(List<StandItem> list) {
+//        for (StandItem item : list) {
+//            item.setDeleteTime(new Date());
+//            item.setDeleteUser(String.valueOf(UserContext.getCurrentUser().getId()));
+//        }
+//        this.updateBatchById(list,100);
+//        List<Integer> collect = list.stream().map(StandItem::getId).collect(Collectors.toList());
+//        this.removeBatchByIds(collect,100);
+//    }
+//
+//    public List<StandItem> getList(SessionUserVO currentUser) {
+//        LambdaQueryWrapper<StandItem> queryWrapper = new LambdaQueryWrapper<>();
+//        queryWrapper.eq(StandItem::getHospId, currentUser.getHospId());
+//        return this.list(queryWrapper);
+//    }
+}

+ 7 - 0
src/main/java/com/kcim/service/CenterService.java

@@ -32,6 +32,13 @@ public interface CenterService {
 
     CommonParameterVo getParameter(Long parameterCode);
 
+    /**
+     * 获取指定Code的参数值
+     * @param parameterCode
+     * @return
+     */
+    String getParameterValue(Long parameterCode);
+
     List<KCClassVo>  getKCClass();
 
     List<SysDepartment>  getDepartmentByDepartmentIds(List<Long> departmentIds);

+ 36 - 0
src/main/java/com/kcim/service/UserReportRightService.java

@@ -0,0 +1,36 @@
+package com.kcim.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kcim.dao.model.UserReportRight;
+import com.kcim.vo.DictDataVo;
+import com.kcim.vo.UserReportRightVO;
+
+import java.util.List;
+
+
+/**
+ *
+ * @author Administrator
+ */
+public interface UserReportRightService extends IService<UserReportRight> {
+
+    /**
+     * 获取用户的责任中心权限列表
+     * @return
+     */
+    List<UserReportRight> getUserReportRight();
+
+    /**
+     * 获取用户有权限的损益报表列表
+     * @return
+     */
+    List<UserReportRightVO> UserReportRightList();
+
+
+    /**
+     * 获取用户有权限的损益报表
+     * @return
+     */
+    DictDataVo getUserReports();
+}
+

+ 31 - 0
src/main/java/com/kcim/service/UserResponsibilityRightService.java

@@ -0,0 +1,31 @@
+package com.kcim.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kcim.dao.model.UserResponsibilityRight;
+import com.kcim.vo.UserResponsibilityRightVO;
+
+import java.util.List;
+
+
+/**
+ * 用户责任中心权限
+ * @author Administrator
+ */
+public interface UserResponsibilityRightService  extends IService<UserResponsibilityRight> {
+
+    /**
+     * 获取用户有权限的责任中心列表
+     * @return
+     */
+    List<UserResponsibilityRight> getUserResponsibilityRight();
+
+
+    /**
+     * 获取用户的责任中心权限列表
+     * @return
+     */
+    UserResponsibilityRightVO UserResponsibilityRightList();
+
+
+}
+

+ 24 - 1
src/main/java/com/kcim/service/impl/CenterServiceImpl.java

@@ -1,6 +1,7 @@
 package com.kcim.service.impl;
 
 import com.alibaba.fastjson2.JSON;
+import com.kcim.common.constants.Constant;
 import com.kcim.common.exception.CostException;
 import com.kcim.dao.model.dto.SysDepartment;
 import com.kcim.endPoint.CenterEndPoint;
@@ -12,8 +13,12 @@ import com.kcim.vo.UserInfoVO;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 import static com.kcim.common.constants.Constant.CENTER_SYSTEM_ID;
@@ -31,27 +36,32 @@ import static com.kcim.common.constants.Constant.LOCAL_SYSTEM_ID;
 public class CenterServiceImpl implements CenterService {
     CenterEndPoint endPoint;
 
+    @Override
     public List<UserInfoVO> getCenterUserInfo(String filter) {
         Object userInfo = endPoint.getUserInfo(filter);
         return JSON.parseArray(JSON.toJSONString(userInfo), UserInfoVO.class);
 
     }
 
+    @Override
     public DictDataVo getDict(String dictType){
         Object dict = endPoint.getDict(dictType, LOCAL_SYSTEM_ID);
         return JSON.parseObject(JSON.toJSONString(dict), DictDataVo.class);
     }
 
+    @Override
     public DictDataVo getCenterDict(String dictType){
         Object dict = endPoint.getDict(dictType, CENTER_SYSTEM_ID);
         return JSON.parseObject(JSON.toJSONString(dict), DictDataVo.class);
     }
 
+    @Override
     public List<DictDataVo> getAllDict(){
         Object dict = endPoint.getAllDict();
         return JSON.parseArray(JSON.toJSONString(dict), DictDataVo.class);
     }
 
+    @Override
     public List<DictDataVo> getAllDictBySystemId(){
         Object dict = endPoint.getAllDictBySystemId(LOCAL_SYSTEM_ID);
         return JSON.parseArray(JSON.toJSONString(dict), DictDataVo.class);
@@ -81,8 +91,21 @@ public class CenterServiceImpl implements CenterService {
         }catch (Exception e){
             throw new CostException(e.getMessage());
         }
+    }
 
 
+    @Override
+    public String getParameterValue(Long parameterCode) {
+        try {
+            Object dict = endPoint.getParameter(LOCAL_SYSTEM_ID, parameterCode);
+            CommonParameterVo commonParameterVo = JSON.parseObject(JSON.toJSONString(dict), CommonParameterVo.class);
+            if(ObjectUtils.isEmpty(commonParameterVo)||ObjectUtils.isEmpty(commonParameterVo.getValue())) {
+                return Constant.EMPTY_STR;
+            }
+            return  commonParameterVo.getValue();
+        }catch (Exception e){
+            throw new CostException(e.getMessage());
+        }
     }
 
     @Override

+ 34 - 1
src/main/java/com/kcim/service/impl/CostDepartmentProfitServiceImpl.java

@@ -67,6 +67,7 @@ import java.util.stream.IntStream;
 
 import static com.kcim.common.constants.Constant.PROFIT_REPORT_TYPE;
 import static com.kcim.common.constants.ParameterConstant.MEDICAL_TECHNIQUES_SHARE_LEVEL_ID;
+import static com.kcim.common.constants.ParameterConstant.USER_REPORT_AUTHOR_ABLE;
 
 
 @Service("costDepartmentProfitService")
@@ -108,6 +109,9 @@ public class CostDepartmentProfitServiceImpl extends ServiceImpl<CostDepartmentP
     private final AccountingService accountingService;
 
     private final CostAccountShareService costAccountShareService;
+
+    private final UserResponsibilityRightService userResponsibilityRightService ;
+
     private final String AMOUNT = "金额";
 
     private final String PERCENT = "占比";
@@ -116,7 +120,7 @@ public class CostDepartmentProfitServiceImpl extends ServiceImpl<CostDepartmentP
 
     private final String PERCENT_FIELD = "percent";
 
-    public CostDepartmentProfitServiceImpl(ReportFormService reportFormService, IncomeCollectionService incomeCollectionService, CostShareLevelService costShareLevelService, ResponsibilityService responsibilityService, ReportRelationService reportRelationService, AllocationService allocationService, AllocationQueryService allocationQueryService, FileRecordService fileRecordService, MinioConfig minioConfig, MinioFileUtil minioFileUtil, CenterService centerService, CostDepartmentProfitRepository costDepartmentProfitRepository, ComputeLastProfitDateRepository computeLastProfitDateRepository, AccountingService accountingService, CostAccountShareService costAccountShareService) {
+    public CostDepartmentProfitServiceImpl(ReportFormService reportFormService, IncomeCollectionService incomeCollectionService, CostShareLevelService costShareLevelService, ResponsibilityService responsibilityService, ReportRelationService reportRelationService, AllocationService allocationService, AllocationQueryService allocationQueryService, FileRecordService fileRecordService, MinioConfig minioConfig, MinioFileUtil minioFileUtil, CenterService centerService, CostDepartmentProfitRepository costDepartmentProfitRepository, ComputeLastProfitDateRepository computeLastProfitDateRepository, AccountingService accountingService, CostAccountShareService costAccountShareService,UserResponsibilityRightService userResponsibilityRightService) {
         this.reportFormService = reportFormService;
         this.incomeCollectionService = incomeCollectionService;
         this.costShareLevelService = costShareLevelService;
@@ -132,6 +136,7 @@ public class CostDepartmentProfitServiceImpl extends ServiceImpl<CostDepartmentP
         this.computeLastProfitDateRepository = computeLastProfitDateRepository;
         this.accountingService = accountingService;
         this.costAccountShareService = costAccountShareService;
+        this.userResponsibilityRightService=userResponsibilityRightService;
     }
 
     /**
@@ -1590,6 +1595,21 @@ public class CostDepartmentProfitServiceImpl extends ServiceImpl<CostDepartmentP
         if (CollectionUtils.isEmpty(responsibilityList)) {
             throw new CostException("未找到对应分摊层级责任中心");
         }
+        //开启用户报表数据权限时
+        if(IsUserReportRightAble()){
+            //获取用户所有有权限的责任中心
+            List<UserResponsibilityRight> currentUserResponsibilityRights = userResponsibilityRightService.getUserResponsibilityRight();
+            if(CollectionUtils.isEmpty(currentUserResponsibilityRights)){
+                throw new CostException("您没有分配责任中心权限,请联系管理员");
+            }
+            //筛选出有权限的责任中心对象
+            responsibilityList = responsibilityList.stream().filter(responsibility ->
+                    currentUserResponsibilityRights.stream().anyMatch(userRight ->
+                            userRight.getResponsibilityCode().equals(responsibility.getResponsibilityCode()))).collect(Collectors.toList());
+            if(CollectionUtils.isEmpty(responsibilityList)){
+                throw new CostException("您没有对应的责任中心权限,请联系管理员");
+            }
+        }
         List<Responsibility> responsibilityAllList = responsibilityService.list(new QueryWrapper<Responsibility>().lambda()
                 .eq(Responsibility::getHospId, hospId));
         Map<Long, Responsibility> map = responsibilityAllList.stream().collect(Collectors.toMap(Responsibility::getId, responsibility -> responsibility, (a, b) -> b));
@@ -1623,6 +1643,19 @@ public class CostDepartmentProfitServiceImpl extends ServiceImpl<CostDepartmentP
         return responsibilities;
     }
 
+    /**
+     * 判断是否开启用户报表权限功能
+     * @return
+     */
+    public boolean IsUserReportRightAble(){
+        CommonParameterVo parameter = centerService.getParameter(USER_REPORT_AUTHOR_ABLE);
+        if (Objects.isNull(parameter)){
+            return false;
+        }
+        String incomeCollectType = parameter.getValue();
+        return incomeCollectType.equals(NumberConstant.ONE_S);
+    }
+
 
     private void getResponsibilityParent(Responsibility responsibility, Map<Long, Responsibility> collect, List<Responsibility> addList) {
         Responsibility responsibility1 = collect.get(responsibility.getParentId());

+ 89 - 0
src/main/java/com/kcim/service/impl/UserReportRightServiceImpl.java

@@ -0,0 +1,89 @@
+package com.kcim.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kcim.common.constants.NumberConstant;
+import com.kcim.common.exception.CostException;
+import com.kcim.dao.mapper.UserReportRightMapper;
+import com.kcim.dao.model.UserReportRight;
+import com.kcim.dao.repository.UserReportRightRepository;
+import com.kcim.service.CenterService;
+import com.kcim.service.UserReportRightService;
+import com.kcim.vo.DictDataVo;
+import com.kcim.vo.UserReportRightVO;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static com.kcim.common.constants.Constant.PROFIT_REPORT_TYPE;
+import static com.kcim.common.constants.ParameterConstant.USER_REPORT_AUTHOR_ABLE;
+
+
+/**
+ *
+ * @author Administrator
+ */
+@Service("UserReportRightService")
+@Slf4j
+@AllArgsConstructor
+public class UserReportRightServiceImpl extends ServiceImpl<UserReportRightMapper, UserReportRight> implements UserReportRightService {
+
+    private final CenterService centerService;
+    private UserReportRightRepository repository;
+
+    @Override
+    public List<UserReportRight> getUserReportRight() {
+
+        return null;
+    }
+
+    @Override
+    public List<UserReportRightVO> UserReportRightList() {
+        return null;
+    }
+
+    /**
+     * 获取用户有权限的损益报表
+     * @return
+     */
+    @Override
+    public DictDataVo getUserReports() {
+        DictDataVo dictDataVo = centerService.getDict(PROFIT_REPORT_TYPE);
+        //没开启数据权限流程时返回所有
+        if(!IsUserReportRightAble())
+        {
+            return dictDataVo;
+        }
+        List<UserReportRight> userReportRight = repository.getList();
+        if(CollectionUtils.isEmpty(userReportRight)){
+            throw new CostException("您没有分分配损益报表权限,请联系管理员");
+        }
+        //筛选出有权限的责任中心对象
+        List<DictDataVo> dictDataVoList = dictDataVo.getDataVoList().stream().filter(dictData ->
+                userReportRight.stream().anyMatch(userRight ->
+                        userRight.getReportCode().equals(dictData.getCode()))).collect(Collectors.toList());
+        if(CollectionUtils.isEmpty(dictDataVoList)){
+            throw new CostException("您没有对应的损益报表权限,请联系管理员");
+        }
+        //只返回有权限的损益报表
+        dictDataVo.setDataVoList(dictDataVoList);
+        return dictDataVo;
+    }
+
+    /**
+     * 判断是否开启用户报表权限功能
+     * @return
+     */
+    public boolean IsUserReportRightAble(){
+        String parameterValue = centerService.getParameterValue(USER_REPORT_AUTHOR_ABLE);
+        if (parameterValue.isEmpty()){
+            return false;
+        }
+        return parameterValue.equals(NumberConstant.ONE_S);
+    }
+
+
+}

+ 44 - 0
src/main/java/com/kcim/service/impl/UserResponsibilityRightServiceImpl.java

@@ -0,0 +1,44 @@
+package com.kcim.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kcim.dao.mapper.UserResponsibilityRightMapper;
+import com.kcim.dao.model.UserResponsibilityRight;
+import com.kcim.dao.repository.UserResponsibilityRightRepository;
+import com.kcim.service.UserResponsibilityRightService;
+import com.kcim.vo.UserResponsibilityRightVO;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+
+/**
+ *
+ * @author Administrator
+ */
+@Service("UserResponsibilityRightService")
+@Slf4j
+@AllArgsConstructor
+public class UserResponsibilityRightServiceImpl extends ServiceImpl<UserResponsibilityRightMapper, UserResponsibilityRight> implements UserResponsibilityRightService {
+
+
+    UserResponsibilityRightRepository repository;
+
+    /**
+     * 获取当前用户有权限的责任中心信息
+     * @return
+     */
+    @Override
+    public List<UserResponsibilityRight> getUserResponsibilityRight(){
+        return  repository.getList();
+    }
+
+
+    @Override
+    public UserResponsibilityRightVO UserResponsibilityRightList() {
+        return null;
+    }
+
+
+}

+ 28 - 0
src/main/java/com/kcim/web/UserReportRightController.java

@@ -0,0 +1,28 @@
+package com.kcim.web;
+
+import com.kcim.common.util.Result;
+import com.kcim.service.UserReportRightService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 用户报表权限相关操作
+ */
+@RestController
+@RequestMapping("/UserReportRight")
+@Api(tags = "用户报表权限相关操作")
+public class UserReportRightController {
+    @Autowired
+    private UserReportRightService userReportRightService;
+
+
+    @GetMapping("/getUserReports")
+    @ApiOperation("查询用户有权限的损益报表")
+    public Result getUserReports(){
+        return Result.ok(userReportRightService.getUserReports());
+    }
+}