数据权限的修改

This commit is contained in:
1745237360-cloud
2026-01-10 16:39:33 +08:00
parent 29b24e8450
commit 4b427e1b2e
97 changed files with 3056 additions and 466 deletions
@@ -126,4 +126,7 @@ public class CommonRouteDo extends BaseVOEntity
@ApiModelProperty(name = "运费单价")
private BigDecimal freightUnitPrice;
@ApiModelProperty(name = "组织ID(用于数据权限过滤,内部使用)", hidden = true)
private Long organizationId;
}
@@ -10,6 +10,7 @@ import com.mhd.basic.domain.expenseAccount.repository.todo.ExpenseAccountDO;
import com.mhd.basic.domain.expenseAccount.repository.todo.ExpenseAccountDoMap;
import com.mhd.basic.domain.expenseAccount.repository.todo.SearchExpenseAccountDO;
import com.mhd.basic.interfaces.dto.expenseAccount.SearchExpenseAccountDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -24,6 +25,7 @@ import java.util.List;
* @author gen
* @date 2024-06-04
*/
@Slf4j
@Service
public class ExpenseAccountImpl extends ServiceImpl<ExpenseAccountMapper, ExpenseAccount> implements IExpenseAccountService{
@Autowired
@@ -35,7 +37,15 @@ public class ExpenseAccountImpl extends ServiceImpl<ExpenseAccountMapper, Expens
@Override
public List<ExpenseAccountPO> queryList(ExpenseAccountDO expenseAccountDO)
{
return expenseAccountMapper.queryList(expenseAccountDO);
// 添加日志,记录查询参数
log.info("ExpenseAccountImpl.queryList 查询参数:topOrganizationId={}, subjectName={}, subjectCode={}, status={}",
expenseAccountDO.getTopOrganizationId(),
expenseAccountDO.getSubjectName(),
expenseAccountDO.getSubjectCode(),
expenseAccountDO.getStatus());
List<ExpenseAccountPO> result = expenseAccountMapper.queryList(expenseAccountDO);
log.info("ExpenseAccountImpl.queryList 查询结果:{} 条", result != null ? result.size() : 0);
return result;
}
@Override
@@ -39,5 +39,16 @@ public class QueryExpenseAccountPO {
@Excel(name = "上级科目名称")
private String upperSubject;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
}
@@ -25,4 +25,10 @@ public class SearchExpenseAccountDO{
@ApiModelProperty("社会车辆固定显示(1-是,2-否)")
private Integer societyStatus;
@ApiModelProperty("组织ID")
private Long organizationId;
@ApiModelProperty("上级组织ID")
private Long topOrganizationId;
}
@@ -22,7 +22,7 @@ public interface IServiceItemsManageService extends IService<ServiceItemsManage>
/**
* 查询费用类别
*/
public List<ServiceItemsManagePO> getCostType();
public List<ServiceItemsManagePO> getCostType(ServiceItemsManageDO serviceItemsManageDO);
/**
* 新增服务项管理
*/
@@ -21,6 +21,6 @@ public interface ServiceItemsManageMapper extends BaseMapper<ServiceItemsManage>
/**
* 查询费用类别
*/
public List<ServiceItemsManagePO> selectServiceTypes();
public List<ServiceItemsManagePO> selectServiceTypes(ServiceItemsManageDO serviceItemsManageDO);
}
@@ -6,6 +6,7 @@ import com.mhd.basic.domain.serviceItemsManage.entity.ServiceItemsManage;
import com.mhd.basic.domain.serviceItemsManage.repository.facade.IServiceItemsManageService;
import com.mhd.basic.domain.serviceItemsManage.repository.po.ServiceItemsManagePO;
import com.mhd.basic.domain.serviceItemsManage.repository.todo.ServiceItemsManageDO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -19,6 +20,7 @@ import java.util.List;
* @author gen
* @date 2024-06-03
*/
@Slf4j
@Service
public class ServiceItemsManageImpl extends ServiceImpl<ServiceItemsManageMapper, ServiceItemsManage> implements IServiceItemsManageService{
@Autowired
@@ -30,12 +32,80 @@ public class ServiceItemsManageImpl extends ServiceImpl<ServiceItemsManageMapper
@Override
public List<ServiceItemsManagePO> queryList(ServiceItemsManageDO serviceItemsManageDO)
{
return serviceItemsManageMapper.queryList(serviceItemsManageDO);
// 添加日志,记录查询参数
log.info("ServiceItemsManageImpl.queryList 查询参数:topOrganizationId={}, organizationId={}, serviceItemsName={}, serviceItemsCode={}",
serviceItemsManageDO.getTopOrganizationId(),
serviceItemsManageDO.getOrganizationId(),
serviceItemsManageDO.getServiceItemsName(),
serviceItemsManageDO.getServiceItemsCode());
// 构建SQL查询条件说明(用于日志,必须与 MyBatis XML 中的条件保持一致)
StringBuilder sqlCondition = new StringBuilder("WHERE del_flag = 1");
// 组织过滤条件(与 XML 中的 <if test="organizationId != null"> 和 <if test="topOrganizationId != null and organizationId == null"> 对应)
if (serviceItemsManageDO.getOrganizationId() != null) {
// 如果设置了 organizationId,添加 organization_id 条件
sqlCondition.append(" AND organization_id = ").append(serviceItemsManageDO.getOrganizationId());
sqlCondition.append(" AND organization_name IS NOT NULL");
sqlCondition.append(" AND organization_name != ''");
sqlCondition.append(" AND LENGTH(TRIM(organization_name)) > 0");
} else if (serviceItemsManageDO.getTopOrganizationId() != null) {
// 如果设置了 topOrganizationId 但没有设置 organizationId,添加 top_organization_id 条件
sqlCondition.append(" AND top_organization_id = ").append(serviceItemsManageDO.getTopOrganizationId());
sqlCondition.append(" AND organization_name IS NOT NULL");
sqlCondition.append(" AND organization_name != ''");
sqlCondition.append(" AND LENGTH(TRIM(organization_name)) > 0");
} else {
// 如果 organizationId 和 topOrganizationId 都为 null,不添加组织过滤条件(查询所有组织的数据)
sqlCondition.append(" (无组织过滤条件,查询所有组织的数据)");
}
// 其他查询条件
if (serviceItemsManageDO.getCreateByName() != null && !serviceItemsManageDO.getCreateByName().isEmpty()) {
sqlCondition.append(" AND create_by_name LIKE '%").append(serviceItemsManageDO.getCreateByName()).append("%'");
}
if (serviceItemsManageDO.getUpdateByName() != null && !serviceItemsManageDO.getUpdateByName().isEmpty()) {
sqlCondition.append(" AND update_by_name LIKE '%").append(serviceItemsManageDO.getUpdateByName()).append("%'");
}
if (serviceItemsManageDO.getOrganizationName() != null && !serviceItemsManageDO.getOrganizationName().isEmpty()) {
sqlCondition.append(" AND organization_name LIKE '%").append(serviceItemsManageDO.getOrganizationName()).append("%'");
}
if (serviceItemsManageDO.getServiceItemsName() != null && !serviceItemsManageDO.getServiceItemsName().isEmpty()) {
sqlCondition.append(" AND service_items_name LIKE '%").append(serviceItemsManageDO.getServiceItemsName()).append("%'");
}
if (serviceItemsManageDO.getServiceItemsCode() != null && !serviceItemsManageDO.getServiceItemsCode().isEmpty()) {
sqlCondition.append(" AND service_items_code = '").append(serviceItemsManageDO.getServiceItemsCode()).append("'");
}
if (serviceItemsManageDO.getTaxRate() != null) {
sqlCondition.append(" AND tax_rate = ").append(serviceItemsManageDO.getTaxRate());
}
if (serviceItemsManageDO.getRemark() != null && !serviceItemsManageDO.getRemark().isEmpty()) {
sqlCondition.append(" AND remark LIKE '%").append(serviceItemsManageDO.getRemark()).append("%'");
}
log.info("ServiceItemsManageImpl.queryList 生成的SQL条件(预估):SELECT * FROM service_items_manage {}", sqlCondition.toString());
log.info("ServiceItemsManageImpl.queryList 实际执行的SQL请查看 MyBatis 日志,参数:organizationId={}, topOrganizationId={}, delFlag={}",
serviceItemsManageDO.getOrganizationId(), serviceItemsManageDO.getTopOrganizationId(), serviceItemsManageDO.getDelFlag());
List<ServiceItemsManagePO> result = serviceItemsManageMapper.queryList(serviceItemsManageDO);
log.info("ServiceItemsManageImpl.queryList 查询结果:{} 条", result != null ? result.size() : 0);
// 记录查询结果中的组织ID分布
if (result != null && !result.isEmpty()) {
StringBuilder orgIds = new StringBuilder();
for (ServiceItemsManagePO po : result) {
if (orgIds.length() > 0) {
orgIds.append(", ");
}
orgIds.append(po.getOrganizationId());
}
log.info("查询结果中的组织ID分布:{}", orgIds.toString());
}
return result;
}
@Override
public List<ServiceItemsManagePO> getCostType() {
return serviceItemsManageMapper.selectServiceTypes();
public List<ServiceItemsManagePO> getCostType(ServiceItemsManageDO serviceItemsManageDO) {
return serviceItemsManageMapper.selectServiceTypes(serviceItemsManageDO);
}
/**
* 新增服务项管理
@@ -37,7 +37,7 @@ public class ServiceItemsManageDomainService {
* 查询费用类型
*/
public List<ServiceItemsManagePO> getCostsType(ServiceItemsManageDO serviceItemsManageDO){
return serviceItemsManageService.getCostType();
return serviceItemsManageService.getCostType(serviceItemsManageDO);
}