|
|
|
|
@ -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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|