From 14cfad6b50c7bf1cbdd27b587c952ab8239a7164 Mon Sep 17 00:00:00 2001 From: hjx <577364224@qq.com> Date: Wed, 14 Jan 2026 15:20:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A7=91=E7=9B=AE=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E8=AE=A2=E5=8D=95=E9=BB=98=E8=AE=A4=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ExpenseAccountApplicationService.java | 61 ++++++++++++++----- .../expenseAccount/ExpenseAccountApi.java | 15 ++++- 2 files changed, 57 insertions(+), 19 deletions(-) diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/expenseAccount/ExpenseAccountApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/expenseAccount/ExpenseAccountApplicationService.java index 4c03b2ab3..86597fdb4 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/expenseAccount/ExpenseAccountApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/expenseAccount/ExpenseAccountApplicationService.java @@ -53,10 +53,10 @@ public class ExpenseAccountApplicationService { */ public List 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 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)) { diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facade/expenseAccount/ExpenseAccountApi.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facade/expenseAccount/ExpenseAccountApi.java index 4b5392583..5a8e0a6d4 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facade/expenseAccount/ExpenseAccountApi.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facade/expenseAccount/ExpenseAccountApi.java @@ -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")