From 08ced58a54ced8729e07fdd88d4266bf14f123a1 Mon Sep 17 00:00:00 2001 From: juncaiq Date: Fri, 17 Oct 2025 16:55:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../button/CustomButtonCommand.java | 35 ++++++++++ .../receiver/ButtonReceiverCustom.java | 70 +++++++++++++++++++ .../framework/controller/BaseController.java | 20 ++++++ .../framework/controller/ExcelController.java | 13 ++++ 4 files changed, 138 insertions(+) create mode 100644 jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/button/CustomButtonCommand.java create mode 100644 jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/receiver/ButtonReceiverCustom.java diff --git a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/button/CustomButtonCommand.java b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/button/CustomButtonCommand.java new file mode 100644 index 0000000..01e0cb9 --- /dev/null +++ b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/button/CustomButtonCommand.java @@ -0,0 +1,35 @@ + +package com.jeelowcode.core.framework.config.btncommand.button; + +import com.jeelowcode.core.framework.config.btncommand.receiver.IButtonCommandReceiver; +import com.jeelowcode.core.framework.params.model.ExcelModel; +import com.jeelowcode.core.framework.params.model.TableModel; + +/** + * 具体命令-新增按钮命令 + */ +public class CustomButtonCommand implements IButtonCommand { + //命令执行者 + private IButtonCommandReceiver recevier; + + + /** + * 绑定执行者 + * @param recevier 执行者 + */ + public CustomButtonCommand(IButtonCommandReceiver recevier) { + this.recevier = recevier; + } + + /** + * 执行命令 + * @return + */ + @Override + public TableModel execute() { + TableModel receiver = recevier.receiver(); + return receiver; + } + + +} diff --git a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/receiver/ButtonReceiverCustom.java b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/receiver/ButtonReceiverCustom.java new file mode 100644 index 0000000..55c0691 --- /dev/null +++ b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/receiver/ButtonReceiverCustom.java @@ -0,0 +1,70 @@ + +package com.jeelowcode.core.framework.config.btncommand.receiver; + +import cn.hutool.json.JSONObject; +import com.jeelowcode.core.framework.entity.FormEntity; +import com.jeelowcode.core.framework.params.model.TableModel; +import com.jeelowcode.framework.utils.adapter.IJeeLowCodeAdapter; +import com.jeelowcode.framework.utils.model.ResultDataModel; +import com.jeelowcode.framework.utils.tool.CollectionUtil; +import com.jeelowcode.framework.utils.tool.spring.SpringUtils; +import com.jeelowcode.core.framework.config.btncommand.param.ButtonParamExport; +import com.jeelowcode.core.framework.params.model.ExcelModel; +import com.jeelowcode.core.framework.params.vo.role.DbFormRoleFieldVo; +import com.jeelowcode.core.framework.service.IDbFormRoleService; +import com.jeelowcode.core.framework.service.IExcelService; +import com.jeelowcode.core.framework.service.IFormService; +import com.jeelowcode.core.framework.service.IFrameService; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 新增自定义执行者 + */ +public class ButtonReceiverCustom extends ButtonReceiverBase implements IButtonCommandReceiver { + + + private String pluginKey; + + private ButtonParamExport param; + + public ButtonReceiverCustom(ButtonParamExport param) { + this.param = param; + } + + /** + * 执行命令 + * + * @return + */ + @Override + public TableModel receiver() { + IFormService formService = SpringUtils.getBean(IFormService.class); + IFrameService frameService = SpringUtils.getBean(IFrameService.class); + + Long dbFormId = param.getDbFormId(); + Map params = param.getParams(); + + FormEntity formEntity = formService.getFormEntityById(dbFormId); + + //人员信息自定义导出后刷新是否背调状态为是 + if (formEntity.getTableName().toLowerCase().equals("lc_outside_person")) { + ResultDataModel model = frameService.getExportDataList(dbFormId, params); + + List records = model.getRecords().stream() + .map(recordMap -> new JSONObject(recordMap)) + .collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(records)) { + for (JSONObject record : records) { + record.set("isValidate", "是"); + } + frameService.editBatchData(dbFormId, records); + } + } + return new TableModel(formEntity.getTableName(), formEntity.getTableDescribe()); + } + + +} diff --git a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/controller/BaseController.java b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/controller/BaseController.java index 8691f43..8de47d5 100644 --- a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/controller/BaseController.java +++ b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/controller/BaseController.java @@ -15,6 +15,7 @@ import com.jeelowcode.core.framework.entity.FormFieldWebEntity; import com.jeelowcode.core.framework.params.model.ExcelImportResultModel; import com.jeelowcode.core.framework.params.model.ExcelModel; import com.jeelowcode.core.framework.params.model.ExcelTemplateModel; +import com.jeelowcode.core.framework.params.model.TableModel; import com.jeelowcode.core.framework.params.vo.FormEntityPageVo; import com.jeelowcode.core.framework.service.IFormService; import com.jeelowcode.core.framework.utils.Func; @@ -280,6 +281,25 @@ public class BaseController { return excelModel; } + //导出Excel数据后(自定义拓展) + protected void afterExportExcelData(Long dbformId, Map params ){ + //封装参数 + ButtonParamExport buttonParam = new ButtonParamExport(); + buttonParam.setDbFormId(dbformId); + buttonParam.setParams(params); + //执行者绑定参数 + //执行者绑定参数 + IButtonCommandReceiver receiver = new ButtonReceiverCustom(buttonParam); + + //执行者和命令绑定 + CustomButtonCommand command = new CustomButtonCommand(receiver); + + //创建调用者 + ButtonInvoker invoker = new ButtonInvoker(); + invoker.setButtonCommand(command);//调用者设置命令 + invoker.executeCommand();//调用者下发命令 + } + //导入Excel数据 protected ExcelImportResultModel importExcelData(ButtonParamImport buttonParam){ //执行者绑定参数 diff --git a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/controller/ExcelController.java b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/controller/ExcelController.java index d38d6d3..82edf8f 100644 --- a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/controller/ExcelController.java +++ b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/controller/ExcelController.java @@ -87,6 +87,19 @@ public class ExcelController extends BaseController { JeeLowCodeExcelUtils.exportExcel(rsp, excelModel.getSheetName(), excelModel.getHeadTitleMap(), excelModel.getDataMapList()); } + @PreAuthorize("@ss.hasPermission('jeelowcode:dbform-data:export:'+#dbformId)") + @ApiOperationSupport(order = 2) + @Operation(tags = "Excel模块",summary = "导出Excel数据") + @PostMapping({"/exportExcelCustom/{dbformId}"}) + public void exportExcelDataCustom(@PathVariable("dbformId") Long dbformId, HttpServletRequest req, HttpServletResponse rsp) { + Map params = FuncWeb.getParameterBodyMap(req); + ExcelModel excelModel = super.exportExcelData(dbformId, params); + super.afterExportExcelData(dbformId, params); + //导出 + JeeLowCodeExcelUtils.exportExcel(rsp, excelModel.getSheetName(), excelModel.getHeadTitleMap(), excelModel.getDataMapList()); + + } + @PreAuthorize("@ss.hasPermission('jeelowcode:dbform-data:import:'+#dbformId)") @ApiOperationSupport(order = 3) @Operation(tags = "Excel模块",summary = "导入Excel数据")