From f161d26c28acc8a6d6ebaf1d7b2a0bda32d517cb Mon Sep 17 00:00:00 2001 From: yinq Date: Fri, 15 May 2026 17:14:45 +0800 Subject: [PATCH] =?UTF-8?q?1.1.38=20=E5=90=88=E5=90=8C=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E6=98=AF=E6=95=B0=E5=80=BC=E7=9A=84=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=B0=8F=E6=95=B0=E7=82=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TemplateVariableAssignServiceImpl.java | 75 ++++++++++++++++--- .../ErpContractMaterialController.java | 12 +-- .../ErpProjectContractsController.java | 12 +-- 3 files changed, 77 insertions(+), 22 deletions(-) diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/impl/TemplateVariableAssignServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/impl/TemplateVariableAssignServiceImpl.java index 6f70ff6f..c0079c01 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/impl/TemplateVariableAssignServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/impl/TemplateVariableAssignServiceImpl.java @@ -367,28 +367,83 @@ public class TemplateVariableAssignServiceImpl implements ITemplateVariableAssig String varType = variable != null ? variable.getVarType() : null; boolean shouldReturnArray = "4".equals(varType); if (shouldReturnArray) { - // 转换为数组类型 - if (value instanceof List) { - return value; - } else if (value instanceof Collection) { - return new ArrayList<>((Collection) value); + // 转换为数组类型;元素为数值类型(Number/BigDecimal)时去掉小数点后无意义的 0 + final List list; + if (value instanceof List l) { + list = new ArrayList<>(l); + } else if (value instanceof Collection c) { + list = new ArrayList<>(c); } else if (value != null) { - // 单个值,转换为列表 - List arrayValue = new ArrayList<>(); - arrayValue.add(value); - return arrayValue; + list = new ArrayList<>(); + list.add(value); } else { - return new ArrayList<>(); + list = new ArrayList<>(); } + return normalizeArrayElementsNumericStrip(list); } if ("3".equals(varType)) { return formatDateValue(value); } + // 变量类型 2=数值 + if ("2".equals(varType)) { + return formatNumericValue(value); + } + return convertScalarValueToString(value); } + /** + * 数组变量:对 {@link Number} 元素(含 BigDecimal、Integer 等)做去尾零数值展示;非数值保持原样,避免纯数字字符串被改写。 + */ + private List normalizeArrayElementsNumericStrip(List list) { + List out = new ArrayList<>(list.size()); + for (Object item : list) { + if (item == null) { + out.add(""); + } else if (item instanceof Number) { + out.add(formatNumericValue(item)); + } else { + out.add(item); + } + } + return out; + } + + /** + * 数值类型变量:规范为普通数字字符串,去掉末尾多余的 0 与小数点 + */ + private String formatNumericValue(Object value) { + if (value == null) { + return ""; + } + if (value instanceof Collection collection) { + if (collection.isEmpty()) { + return ""; + } + return formatNumericValue(collection.iterator().next()); + } + try { + BigDecimal bd; + if (value instanceof BigDecimal bigDecimal) { + bd = bigDecimal; + } else if (value instanceof Number number) { + bd = new BigDecimal(number.toString()); + } else { + String s = value.toString().trim(); + if (StringUtils.isBlank(s)) { + return ""; + } + bd = new BigDecimal(s); + } + bd = bd.stripTrailingZeros(); + return bd.toPlainString(); + } catch (NumberFormatException ex) { + return value.toString(); + } + } + /** * 将标量值转换为字符串 * diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpContractMaterialController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpContractMaterialController.java index 5c4a9e71..b0f30481 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpContractMaterialController.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpContractMaterialController.java @@ -40,7 +40,7 @@ public class ErpContractMaterialController extends BaseController { /** * 查询合同物料信息列表 */ - @SaCheckPermission("oa/erp:contractMaterial:list") +// @SaCheckPermission("oa/erp:contractMaterial:list") @GetMapping("/list") public TableDataInfo list(ErpContractMaterialBo bo, PageQuery pageQuery) { return erpContractMaterialService.queryPageList(bo, pageQuery); @@ -49,7 +49,7 @@ public class ErpContractMaterialController extends BaseController { /** * 导出合同物料信息列表 */ - @SaCheckPermission("oa/erp:contractMaterial:export") +// @SaCheckPermission("oa/erp:contractMaterial:export") @Log(title = "合同物料信息", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(ErpContractMaterialBo bo, HttpServletResponse response) { @@ -62,7 +62,7 @@ public class ErpContractMaterialController extends BaseController { * * @param contractMaterialId 主键 */ - @SaCheckPermission("oa/erp:contractMaterial:query") +// @SaCheckPermission("oa/erp:contractMaterial:query") @GetMapping("/{contractMaterialId}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable("contractMaterialId") Long contractMaterialId) { @@ -72,7 +72,7 @@ public class ErpContractMaterialController extends BaseController { /** * 新增合同物料信息 */ - @SaCheckPermission("oa/erp:contractMaterial:add") +// @SaCheckPermission("oa/erp:contractMaterial:add") @Log(title = "合同物料信息", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -83,7 +83,7 @@ public class ErpContractMaterialController extends BaseController { /** * 修改合同物料信息 */ - @SaCheckPermission("oa/erp:contractMaterial:edit") +// @SaCheckPermission("oa/erp:contractMaterial:edit") @Log(title = "合同物料信息", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @@ -96,7 +96,7 @@ public class ErpContractMaterialController extends BaseController { * * @param contractMaterialIds 主键串 */ - @SaCheckPermission("oa/erp:contractMaterial:remove") +// @SaCheckPermission("oa/erp:contractMaterial:remove") @Log(title = "合同物料信息", businessType = BusinessType.DELETE) @DeleteMapping("/{contractMaterialIds}") public R remove(@NotEmpty(message = "主键不能为空") diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectContractsController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectContractsController.java index cd107745..cc8445c2 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectContractsController.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpProjectContractsController.java @@ -40,7 +40,7 @@ public class ErpProjectContractsController extends BaseController { /** * 查询项目关联合同列表 */ - @SaCheckPermission("oa/erp:projectContracts:list") +// @SaCheckPermission("oa/erp:projectContracts:list") @GetMapping("/list") public TableDataInfo list(ErpProjectContractsBo bo, PageQuery pageQuery) { return erpProjectContractsService.queryPageList(bo, pageQuery); @@ -49,7 +49,7 @@ public class ErpProjectContractsController extends BaseController { /** * 导出项目关联合同列表 */ - @SaCheckPermission("oa/erp:projectContracts:export") +// @SaCheckPermission("oa/erp:projectContracts:export") @Log(title = "项目关联合同", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(ErpProjectContractsBo bo, HttpServletResponse response) { @@ -62,7 +62,7 @@ public class ErpProjectContractsController extends BaseController { * * @param projectContractsId 主键 */ - @SaCheckPermission("oa/erp:projectContracts:query") +// @SaCheckPermission("oa/erp:projectContracts:query") @GetMapping("/{projectContractsId}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable("projectContractsId") Long projectContractsId) { @@ -72,7 +72,7 @@ public class ErpProjectContractsController extends BaseController { /** * 新增项目关联合同 */ - @SaCheckPermission("oa/erp:projectContracts:add") +// @SaCheckPermission("oa/erp:projectContracts:add") @Log(title = "项目关联合同", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -83,7 +83,7 @@ public class ErpProjectContractsController extends BaseController { /** * 修改项目关联合同 */ - @SaCheckPermission("oa/erp:projectContracts:edit") +// @SaCheckPermission("oa/erp:projectContracts:edit") @Log(title = "项目关联合同", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @@ -96,7 +96,7 @@ public class ErpProjectContractsController extends BaseController { * * @param projectContractsIds 主键串 */ - @SaCheckPermission("oa/erp:projectContracts:remove") +// @SaCheckPermission("oa/erp:projectContracts:remove") @Log(title = "项目关联合同", businessType = BusinessType.DELETE) @DeleteMapping("/{projectContractsIds}") public R remove(@NotEmpty(message = "主键不能为空")