1.1.62 合同信息、合同执行信息数据权限仅限本人或合同管理角色能看所有合同。

dev
yinq 4 weeks ago
parent 8a1634884d
commit 79fe322276

@ -26,11 +26,11 @@ public interface ErpContractInfoMapper extends BaseMapperPlus<ErpContractInfo, E
* @param queryWrapper
* @return
*/
@DataPermission({
@DataColumn(key = "deptName", value = "t.create_dept"),
@DataColumn(key = "userName", value = "t.create_by"),
@DataColumn(key = "userName", value = "t.contract_manager_id")
})
// @DataPermission({
// @DataColumn(key = "deptName", value = "t.create_dept"),
// @DataColumn(key = "userName", value = "t.create_by"),
// @DataColumn(key = "userName", value = "t.contract_manager_id")
// })
public Page<ErpContractInfoVo> selectCustomErpContractInfoVoList(@Param("page") Page<ErpContractInfoVo> page, @Param(Constants.WRAPPER) MPJLambdaWrapper<ErpContractInfo> queryWrapper);
/**
@ -39,11 +39,11 @@ public interface ErpContractInfoMapper extends BaseMapperPlus<ErpContractInfo, E
* @param queryWrapper
* @return
*/
@DataPermission({
@DataColumn(key = "deptName", value = "t.create_dept"),
@DataColumn(key = "userName", value = "t.create_by"),
@DataColumn(key = "userName", value = "t.contract_manager_id")
})
// @DataPermission({
// @DataColumn(key = "deptName", value = "t.create_dept"),
// @DataColumn(key = "userName", value = "t.create_by"),
// @DataColumn(key = "userName", value = "t.contract_manager_id")
// })
public List<ErpContractInfoVo> selectCustomErpContractInfoVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper<ErpContractInfo> queryWrapper);

@ -67,17 +67,6 @@ public interface ErpProjectInfoMapper extends BaseMapperPlus<ErpProjectInfo, Erp
// })
public Page<ErpProjectInfoVo> selectErpProjectInfoVoJoinList(@Param("page") Page<ErpProjectInfoVo> page, @Param(Constants.WRAPPER) MPJLambdaWrapper<ErpProjectInfo> queryWrapper);
/**
* 使
*
* @param queryWrapper
* @return
*/
@DataPermission({
@DataColumn(key = "deptName", value = "t.dept_id"),
@DataColumn(key = "userName", value = "t.create_by")
})
public List<ErpProjectInfoVo> selectErpProjectInfoVoJoinList(@Param(Constants.WRAPPER) MPJLambdaWrapper<ErpProjectInfo> queryWrapper);
}

@ -1,7 +1,9 @@
package org.dromara.oa.erp.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.convert.NumberChineseFormatter;
import cn.hutool.core.map.MapUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -22,6 +24,7 @@ import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.oa.base.domain.bo.BaseRelationMaterialBo;
import org.dromara.oa.base.domain.vo.BaseRelationMaterialVo;
@ -71,6 +74,11 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService {
/** 合同审批流程编码(与流程引擎中 flowCode 一致) */
public static final String FLOW_CODE_CONTRACT = "OAC";
/**
* sys_role.role_key
*/
private static final String CONTRACT_ADMIN_ROLE_KEY = "HTGLSJQX";
private final ErpContractInfoMapper baseMapper;
private final ErpContractMaterialMapper contractMaterialMapper;
@ -86,6 +94,30 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService {
@DubboReference(timeout = 30000)
private RemoteWorkflowService remoteWorkflowService;
/**
*
*/
private boolean isContractDataAdmin() {
return LoginHelper.isSuperAdmin() || StpUtil.hasRole(CONTRACT_ADMIN_ROLE_KEY);
}
/**
*
*/
private void applyContractDataScope(MPJLambdaWrapper<ErpContractInfo> lqw) {
if (isContractDataAdmin()) {
return;
}
Long userId = LoginHelper.getUserId();
if (userId == null) {
lqw.eq(ErpContractInfo::getContractId, -1L);
return;
}
lqw.and(w -> w.eq(ErpContractInfo::getCreateBy, userId)
.or()
.eq(ErpContractInfo::getContractManagerId, userId));
}
/**
*
*
@ -251,6 +283,7 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService {
.eq(bo.getFrameworkValidPeriod() != null, ErpContractInfo::getFrameworkValidPeriod, bo.getFrameworkValidPeriod())
.eq("t.del_flag", "0")
.eq("t.active_flag", "1");
applyContractDataScope(lqw);
return lqw;
}

@ -1,6 +1,8 @@
package org.dromara.oa.erp.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
@ -49,6 +51,7 @@ import org.dromara.oa.erp.domain.vo.ErpProjectTypeVo;
import org.dromara.oa.erp.constant.ProjectCategoryConstant;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.helper.DataPermissionHelper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
@ -105,6 +108,11 @@ public class ErpContractOrderServiceImpl implements IErpContractOrderService {
*/
private static final String FLOW_CODE_PROJECT = "xmsq";
/**
* sys_role.role_key/
*/
private static final String CONTRACT_ADMIN_ROLE_KEY = "HTGLSJQX";
@DubboReference(timeout = 300000)
private RemoteWorkflowService remoteWorkflowService;
@ -114,6 +122,47 @@ public class ErpContractOrderServiceImpl implements IErpContractOrderService {
@DubboReference(timeout = 30000)
private RemoteWmsShippingBillService remoteWmsShippingBillService;
/**
*
*/
private boolean isContractDataAdmin() {
return LoginHelper.isSuperAdmin() || StpUtil.hasRole(CONTRACT_ADMIN_ROLE_KEY);
}
/**
*
*/
private void applyContractOrderDataScope(MPJLambdaWrapper<ErpProjectInfo> lqw) {
if (isContractDataAdmin()) {
return;
}
Long userId = LoginHelper.getUserId();
if (userId == null) {
lqw.eq(ErpProjectInfo::getProjectId, -1L);
return;
}
lqw.apply("(c.create_by = {0} OR c.contract_manager_id = {0})", userId);
}
/**
*
* @param page
* @param lqw
* @return
*/
private Page<ErpProjectInfoVo> selectContractOrderPage(Page<ErpProjectInfoVo> page, MPJLambdaWrapper<ErpProjectInfo> lqw) {
return DataPermissionHelper.ignore(() -> projectInfoMapper.selectCustomErpProjectInfoVoList(page, lqw));
}
/**
*
* @param lqw
* @return
*/
private List<ErpProjectInfoVo> selectContractOrderList(MPJLambdaWrapper<ErpProjectInfo> lqw) {
return DataPermissionHelper.ignore(() -> projectInfoMapper.selectCustomErpProjectInfoVoList(lqw));
}
/**
*
*
@ -140,7 +189,7 @@ public class ErpContractOrderServiceImpl implements IErpContractOrderService {
@Override
public TableDataInfo<ErpProjectInfoVo> queryPageList(ErpProjectInfoBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<ErpProjectInfo> lqw = buildQueryWrapper(bo);
Page<ErpProjectInfoVo> result = projectInfoMapper.selectCustomErpProjectInfoVoList(pageQuery.build(), lqw);
Page<ErpProjectInfoVo> result = selectContractOrderPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
@ -154,7 +203,7 @@ public class ErpContractOrderServiceImpl implements IErpContractOrderService {
String todoOwnerType = bo.getTodoOwnerType();
bo.setManagerId(null);
MPJLambdaWrapper<ErpProjectInfo> lqw = buildQueryWrapper(bo);
List<ErpProjectInfoVo> baseList = projectInfoMapper.selectCustomErpProjectInfoVoList(lqw);
List<ErpProjectInfoVo> baseList = selectContractOrderList(lqw);
if (CollUtil.isEmpty(baseList)) {
return baseList;
}
@ -202,7 +251,7 @@ public class ErpContractOrderServiceImpl implements IErpContractOrderService {
@Override
public List<ErpProjectInfoVo> queryList(ErpProjectInfoBo bo) {
MPJLambdaWrapper<ErpProjectInfo> lqw = buildQueryWrapper(bo);
return projectInfoMapper.selectCustomErpProjectInfoVoList(lqw);
return selectContractOrderList(lqw);
}
@Override
@ -246,9 +295,9 @@ public class ErpContractOrderServiceImpl implements IErpContractOrderService {
.eq(StringUtils.isNotBlank(bo.getOrderInvoiceStatus()), ErpProjectInfo::getOrderInvoiceStatus, bo.getOrderInvoiceStatus())
.like(StringUtils.isNotBlank(bo.getContractCode()), "c.contract_code", bo.getContractCode())
.like(StringUtils.isNotBlank(bo.getContractName()), "c.contract_name", bo.getContractName())
.eq(ErpProjectInfo::getProjectCategory, ProjectCategoryConstant.CONTRACT_ORDER)
.eq("t.del_flag", "0")
.orderByDesc(ErpProjectInfo::getCreateTime);
applyContractOrderDataScope(lqw);
return lqw;
}

Loading…
Cancel
Save