修改科目创建订单默认显示设置

This commit is contained in:
hjx
2026-01-14 15:20:06 +08:00
parent abf2847475
commit 14cfad6b50
2 changed files with 57 additions and 19 deletions
@@ -53,10 +53,10 @@ public class ExpenseAccountApplicationService {
*/
public List<ExpenseAccountPO> queryList(ExpenseAccountDO expenseAccountDO) {
try {
log.info("开始查询费用科目列表,参数:organizationId={}, topOrganizationId={}, expenseAccountDO={}",
log.info("开始查询费用科目列表,参数:organizationId={}, topOrganizationId={}, expenseAccountDO={}",
expenseAccountDO.getOrganizationId(), expenseAccountDO.getTopOrganizationId(), expenseAccountDO);
setDataPermission(expenseAccountDO);
// 处理 createByName 和 updateByName 字段:
// 问题:ExpenseAccountAssembler 在查询场景下可能会自动设置 createByName 和 updateByName 为当前登录用户名
// 这会导致 SQL 中添加 create_by_name LIKE '%nanguang%' 和 update_by_name LIKE '%nanguang%' 条件
@@ -67,21 +67,21 @@ public class ExpenseAccountApplicationService {
if (loginUser != null && loginUser.getUserPo() != null) {
Long loginUserOrganizationId = loginUser.getUserPo().getOrganizationId();
String currentUserName = loginUser.getUsername();
// 先保存前端传递的 createByName 和 updateByName(用于判断是否是前端传递的查询条件)
String frontendCreateByName = expenseAccountDO.getCreateByName();
String frontendUpdateByName = expenseAccountDO.getUpdateByName();
if (expenseAccountDO.getOrganizationId() == null && expenseAccountDO.getTopOrganizationId() == null) {
// 查询所有组织的数据时,不应该通过创建者或更新者来过滤,清空这些字段
// 除非前端明确传递了这些字段作为查询条件
if (frontendCreateByName == null || frontendCreateByName.isEmpty() ||
if (frontendCreateByName == null || frontendCreateByName.isEmpty() ||
(currentUserName != null && frontendCreateByName.equals(currentUserName))) {
// 前端未传递,或者等于当前登录用户名(可能是 Assembler 自动设置的),清空
log.info("查询所有组织数据,清空 createByName 过滤条件(前端未传递或由 Assembler 自动设置)");
expenseAccountDO.setCreateByName(null);
}
if (frontendUpdateByName == null || frontendUpdateByName.isEmpty() ||
if (frontendUpdateByName == null || frontendUpdateByName.isEmpty() ||
(currentUserName != null && frontendUpdateByName.equals(currentUserName))) {
// 前端未传递,或者等于当前登录用户名(可能是 Assembler 自动设置的),清空
log.info("查询所有组织数据,清空 updateByName 过滤条件(前端未传递或由 Assembler 自动设置)");
@@ -92,20 +92,20 @@ public class ExpenseAccountApplicationService {
// 清空这些字段,避免限制查询结果(因为其他组织的数据可能不是当前登录用户创建的)
if (currentUserName != null) {
if (expenseAccountDO.getCreateByName() != null && expenseAccountDO.getCreateByName().equals(currentUserName)) {
log.info("南光组织查询指定组织数据(organizationId={}),清空 createByName 过滤条件(可能由 Assembler 自动设置)",
log.info("南光组织查询指定组织数据(organizationId={}),清空 createByName 过滤条件(可能由 Assembler 自动设置)",
expenseAccountDO.getOrganizationId());
expenseAccountDO.setCreateByName(null);
}
if (expenseAccountDO.getUpdateByName() != null && expenseAccountDO.getUpdateByName().equals(currentUserName)) {
log.info("南光组织查询指定组织数据(organizationId={}),清空 updateByName 过滤条件(可能由 Assembler 自动设置)",
log.info("南光组织查询指定组织数据(organizationId={}),清空 updateByName 过滤条件(可能由 Assembler 自动设置)",
expenseAccountDO.getOrganizationId());
expenseAccountDO.setUpdateByName(null);
}
}
}
}
log.info("设置组织ID后,查询参数:organizationId={}, topOrganizationId={}, createByName={}, updateByName={}",
log.info("设置组织ID后,查询参数:organizationId={}, topOrganizationId={}, createByName={}, updateByName={}",
expenseAccountDO.getOrganizationId(), expenseAccountDO.getTopOrganizationId(),
expenseAccountDO.getCreateByName(), expenseAccountDO.getUpdateByName());
List<ExpenseAccountPO> result = expenseAccountDomainService.queryList(expenseAccountDO);
@@ -137,14 +137,14 @@ public class ExpenseAccountApplicationService {
log.warn("费用科目查询 - 未获取到登录用户信息,跳过数据权限过滤");
return;
}
UserPo userPo = loginUser.getUserPo();
Long loginUserOrganizationId = userPo.getOrganizationId();
Long topOrganizationId = userPo.getTopOrganizationId();
// 先保存前端传递的 organizationId(如果存在)
Long frontendOrganizationId = expenseAccountDO.getOrganizationId();
// 数据权限:根据 organizationId 来设置查询权限
// 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己
if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
@@ -379,6 +379,35 @@ public class ExpenseAccountApplicationService {
expenseAccountDO.setUpdateByName(loginUser.getUsername());
return expenseAccountDomainService.update(expenseAccountDO);
}
/**
* 修改创建订单是否固定显示 0-否 1-是
* @param expenseAccountDTO
* @return
*/
public boolean changeFixedOrderDisplay(ExpenseAccountDTO expenseAccountDTO) {
//获取登录用户信息
LoginUser loginUser = SecurityUtils.getLoginUser();
if (ObjectUtil.isNull(loginUser)) {
throw new DigitalLogisticsException(UserError.TIMEOUT);
}
//根据id修改启用状态停用状态
if(expenseAccountDTO.getExpenseAccountId() == null){
throw new ServiceException("费用科目id不能为空");
}
if(expenseAccountDTO.getFixedOrderDisplay() == null){
throw new ServiceException("状态不能为空");
}
if(expenseAccountDTO.getFixedOrderDisplay() != 0 && expenseAccountDTO.getFixedOrderDisplay()!=1){
throw new ServiceException("状态错误");
}
ExpenseAccountDO expenseAccountDO = new ExpenseAccountDO();
expenseAccountDO.setExpenseAccountId(expenseAccountDTO.getExpenseAccountId());
expenseAccountDO.setFixedOrderDisplay(expenseAccountDTO.getFixedOrderDisplay());
expenseAccountDO.setUpdateBy(loginUser.getUserid());
expenseAccountDO.setUpdateTime(new Date());
expenseAccountDO.setUpdateByName(loginUser.getUsername());
return expenseAccountDomainService.update(expenseAccountDO);
}
/**
* 根据编码查询费用科目信息
*/
@@ -398,7 +427,7 @@ public class ExpenseAccountApplicationService {
setDataPermissionForSearch(searchExpenseAccountDO);
return expenseAccountDomainService.selectOtherExpenseAccount(searchExpenseAccountDO);
}
/**
* 为 SearchExpenseAccountDO 设置数据权限
*/
@@ -408,11 +437,11 @@ public class ExpenseAccountApplicationService {
log.warn("费用科目查询 - 未获取到登录用户信息,跳过数据权限过滤");
return;
}
UserPo userPo = loginUser.getUserPo();
Long loginUserOrganizationId = userPo.getOrganizationId();
Long topOrganizationId = userPo.getTopOrganizationId();
// 数据权限:根据 organizationId 来设置查询权限
// 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己
if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
@@ -101,7 +101,7 @@ public class ExpenseAccountApi extends BaseController{
public AjaxResult selectOtherExpenseAccount(SearchExpenseAccountDTO searchExpenseAccountDTO){
SearchExpenseAccountDO searchExpenseAccountDO = new SearchExpenseAccountDO();
BeanUtils.copyProperties(searchExpenseAccountDTO,searchExpenseAccountDO);
// 数据权限:根据组织ID实现数据隔离
// organizationId=2827(南光)时,查询所有组织的数据;其他组织只查询自己的数据
LoginUser loginUser = SecurityUtils.getLoginUser();
@@ -115,7 +115,7 @@ public class ExpenseAccountApi extends BaseController{
searchExpenseAccountDO.setOrganizationId(loginUserOrganizationId);
}
}
return AjaxResult.success(expenseAccountApplicationService.selectOtherExpenseAccount(searchExpenseAccountDO));
}
@@ -258,7 +258,16 @@ public class ExpenseAccountApi extends BaseController{
return AjaxResult.error(e.getMessage());
}
}
@ApiOperation("修改创建订单默认显示设置")
@PostMapping("/changeFixedOrderDisplay")
public AjaxResult changeFixedOrderDisplay(@RequestBody ExpenseAccountDTO expenseAccountDTO)
{
try {
return toAjax(expenseAccountApplicationService.changeFixedOrderDisplay(expenseAccountDTO));
}catch (Exception e){
return AjaxResult.error(e.getMessage());
}
}
@ApiOperation("根据code获取费用科目")
@GetMapping(value = "/getInfoByCode")