From 0b48e4d785cfbc58b06963a17bc439f5c33b0ac2 Mon Sep 17 00:00:00 2001 From: yang chen Date: Thu, 11 Dec 2025 10:51:08 +0800 Subject: [PATCH] =?UTF-8?q?feat(bpm):=20=E8=B0=83=E6=95=B4=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=AE=9E=E4=BE=8B=E6=8A=84=E9=80=81=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E6=97=A5=E6=9C=9F=E6=97=B6=E9=97=B4=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入 LocalDateTimeUtil 工具类优化日期处理 - 将 ReceiveCCRequestDTO 和 ReceiveTodoRequestDTO 中的时间字段类型从 LocalDateTime 改为 Date - 添加 JsonFormat 注解以统一前后端日期格式化 - 修正 BpmProcessInstanceCopyServiceImpl 中日期转换逻辑,确保时区一致性 - 在 DemoController 中增加获取当前时间接口用于测试时间序列功能 - 更新相关导入包及调整代码格式提升可读性 --- .../module/biz/controller/DemoController.java | 41 +++++++++---------- .../module/biz/service/IDemoService.java | 3 ++ .../biz/service/impl/DemoServiceImpl.java | 17 +++++++- .../portal/core/dto/ReceiveCCRequestDTO.java | 14 +++++-- .../core/dto/ReceiveTodoRequestDTO.java | 12 ++++-- .../BpmProcessInstanceCopyServiceImpl.java | 7 +++- 6 files changed, 62 insertions(+), 32 deletions(-) diff --git a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/controller/DemoController.java b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/controller/DemoController.java index 4a5314c..2dfd94e 100644 --- a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/controller/DemoController.java +++ b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/controller/DemoController.java @@ -1,18 +1,15 @@ package com.jeelowcode.module.biz.controller; -import com.jeelowcode.core.framework.utils.Func; -import com.jeelowcode.core.framework.utils.FuncWeb; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.jeelowcode.framework.exception.JeeLowCodeException; import com.jeelowcode.framework.global.JeeLowCodeBaseConstant; import com.jeelowcode.framework.tenant.annotation.JeeLowCodeTenantIgnore; +import com.jeelowcode.framework.utils.model.global.BaseWebResult; import com.jeelowcode.module.biz.dto.RequestDTO; import com.jeelowcode.module.biz.service.IDemoService; -import com.jeelowcode.framework.utils.model.global.BaseWebResult; -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.jeelowcode.service.infra.entity.ConfigDO; import com.jeelowcode.service.infra.service.IConfigService; -import com.jeelowcode.tool.framework.common.model.ContentModel; import com.jeelowcode.tool.framework.common.model.PartModel; import com.jeelowcode.tool.framework.common.pojo.CommonResult; import com.jeelowcode.tool.framework.common.util.http.HttpUtils; @@ -23,12 +20,9 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import javax.validation.Valid; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.stream.Collectors; import static com.jeelowcode.tool.framework.common.pojo.CommonResult.error; import static com.jeelowcode.tool.framework.common.pojo.CommonResult.success; @@ -42,15 +36,20 @@ import static com.jeelowcode.tool.framework.common.pojo.CommonResult.success; @Tag(name = "低代码框架 - 个性化接口") @RestController @AllArgsConstructor -@RequestMapping(JeeLowCodeBaseConstant.REQUEST_URL_START +"/demo") +@RequestMapping(JeeLowCodeBaseConstant.REQUEST_URL_START + "/demo") public class DemoController { private final IDemoService demoService; + @Operation(summary = "获取当前时间") + @GetMapping({"/getJsonLocalDateTime"}) + public CommonResult getJsonLocalDateTime() { + return success(demoService.testLocalDateTime()); + } + @Autowired private IConfigService configService; - @GetMapping({"/getData"}) @ApiOperationSupport(order = 2) @Operation(summary = "获取demo数据") @@ -63,18 +62,18 @@ public class DemoController { @ApiOperationSupport(order = 3) @Operation(summary = "取阿里平台Token") public CommonResult getAliToken() { - try{ + try { ConfigDO configUrl = configService.getConfigByKey("aliUrl"); ConfigDO configKey = configService.getConfigByKey("aliAppkey"); ConfigDO configSecret = configService.getConfigByKey("aliAppSecret"); - if(Objects.isNull(configUrl) || Objects.isNull(configKey) || Objects.isNull(configSecret) - || StringUtils.isEmpty(configUrl.getValue()) || StringUtils.isEmpty(configKey.getValue()) || StringUtils.isEmpty(configSecret.getValue())){ + if (Objects.isNull(configUrl) || Objects.isNull(configKey) || Objects.isNull(configSecret) + || StringUtils.isEmpty(configUrl.getValue()) || StringUtils.isEmpty(configKey.getValue()) || StringUtils.isEmpty(configSecret.getValue())) { throw new JeeLowCodeException("缺少阿里平台必要参数配置"); } - String token = HttpUtils.getToken(configUrl.getValue()+"/_campus/open/accessToken.json",configKey.getValue(),configSecret.getValue()); + String token = HttpUtils.getToken(configUrl.getValue() + "/_campus/open/accessToken.json", configKey.getValue(), configSecret.getValue()); return success(token); - }catch (Exception e){ - return error(500,e.getMessage()); + } catch (Exception e) { + return error(500, e.getMessage()); } } @@ -92,7 +91,7 @@ public class DemoController { " }\n" + " ]\n" + "}"; - List contentModels = HttpUtils.getTokenDate(configUrl.getValue()+"/_campus/open/api/invoked.json?access_token="+token,bodyString); + List contentModels = HttpUtils.getTokenDate(configUrl.getValue() + "/_campus/open/api/invoked.json?access_token=" + token, bodyString); return success(contentModels); } @@ -101,11 +100,11 @@ public class DemoController { @ApiOperationSupport(order = 5) @Operation(summary = "取阿里平台通用接口取数") public CommonResult getCustomerInterface(@RequestBody RequestDTO params) { - try{ - String result = HttpUtils.getInterfaceData(params.getUrl(),params.getParams(),params.getBody(),params.getMethod(),params.getAuthorization()); + try { + String result = HttpUtils.getInterfaceData(params.getUrl(), params.getParams(), params.getBody(), params.getMethod(), params.getAuthorization()); return success(result); - }catch (Exception e){ - return error(500,e.getMessage()); + } catch (Exception e) { + return error(500, e.getMessage()); } } } diff --git a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/IDemoService.java b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/IDemoService.java index 7195cf7..8e3f042 100644 --- a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/IDemoService.java +++ b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/IDemoService.java @@ -12,4 +12,7 @@ public interface IDemoService { List> getDemoData(); void testAsync(); + + boolean testLocalDateTime(); + } diff --git a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/impl/DemoServiceImpl.java b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/impl/DemoServiceImpl.java index 8c570d0..6a4571d 100644 --- a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/impl/DemoServiceImpl.java +++ b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/impl/DemoServiceImpl.java @@ -6,11 +6,14 @@ import com.jeelowcode.framework.plus.SqlHelper; import com.jeelowcode.framework.plus.build.buildmodel.wrapper.SqlInfoQueryWrapper; import com.jeelowcode.module.biz.mapper.DemoMapper; import com.jeelowcode.module.biz.service.IDemoService; +import com.jeelowcode.service.bpm.config.framework.portal.core.dto.ReceiveCCRequestDTO; +import com.jeelowcode.tool.framework.common.util.json.JsonUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; import java.util.Map; @@ -30,7 +33,7 @@ public class DemoServiceImpl implements IDemoService { @Override - public List> getDemoData(){ + public List> getDemoData() { SqlInfoQueryWrapper.Wrapper wrapper = SqlHelper.getQueryWrapper(); wrapper.setTableName("tbl_lin_class"); List> dataMapList = sqlService.getDataListByPlus(wrapper); @@ -39,7 +42,17 @@ public class DemoServiceImpl implements IDemoService { @Async("asyncPoolTaskExecutor") @Override - public void testAsync(){ + public void testAsync() { log.info("哈哈哈"); } + + @Override + public boolean testLocalDateTime() { + ReceiveCCRequestDTO request = new ReceiveCCRequestDTO() + .setReceiveDateTime(new Date()) + .setCreateDateTime(new Date()); + log.info("request: {}", JsonUtils.toJsonString(request)); + return true; + } + } diff --git a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/portal/core/dto/ReceiveCCRequestDTO.java b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/portal/core/dto/ReceiveCCRequestDTO.java index 057bb66..ee75028 100644 --- a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/portal/core/dto/ReceiveCCRequestDTO.java +++ b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/portal/core/dto/ReceiveCCRequestDTO.java @@ -1,9 +1,13 @@ package com.jeelowcode.service.bpm.config.framework.portal.core.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; + +import static com.jeelowcode.tool.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; +import static com.jeelowcode.tool.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT; /** * 描述:接收待阅流程请求参数 @@ -54,7 +58,8 @@ public class ReceiveCCRequestDTO { * 创建时间 */ @JsonProperty("createdatetime") - private LocalDateTime createDateTime; + @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT) + private Date createDateTime; /** * 接收人 */ @@ -63,11 +68,12 @@ public class ReceiveCCRequestDTO { * 接收时间 */ @JsonProperty("receivedatetime") - private LocalDateTime receiveDateTime; + @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT) + private Date receiveDateTime; /** * 接收时间戳 */ @JsonProperty("receivets") private Long receiveTs; - + } diff --git a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/portal/core/dto/ReceiveTodoRequestDTO.java b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/portal/core/dto/ReceiveTodoRequestDTO.java index 81a04b8..0a4f654 100644 --- a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/portal/core/dto/ReceiveTodoRequestDTO.java +++ b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/portal/core/dto/ReceiveTodoRequestDTO.java @@ -1,9 +1,13 @@ package com.jeelowcode.service.bpm.config.framework.portal.core.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; -import java.time.LocalDateTime; +import java.util.Date; + +import static com.jeelowcode.tool.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; +import static com.jeelowcode.tool.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT; /** * 描述:接收待办流程请求参数 @@ -56,7 +60,8 @@ public class ReceiveTodoRequestDTO { * 创建时间 */ @JsonProperty("createdatetime") - private LocalDateTime createDateTime; + @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT) + private Date createDateTime; /** * 接收人 */ @@ -65,7 +70,8 @@ public class ReceiveTodoRequestDTO { * 接收时间 */ @JsonProperty("receivedatetime") - private LocalDateTime receiveDateTime; + @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT) + private Date receiveDateTime; /** * 接收时间戳 */ diff --git a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/service/impl/BpmProcessInstanceCopyServiceImpl.java b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/service/impl/BpmProcessInstanceCopyServiceImpl.java index fb8b017..f21256f 100644 --- a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/service/impl/BpmProcessInstanceCopyServiceImpl.java +++ b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/service/impl/BpmProcessInstanceCopyServiceImpl.java @@ -3,6 +3,7 @@ package com.jeelowcode.service.bpm.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.jeelowcode.framework.utils.tool.spring.SpringUtils; @@ -34,7 +35,9 @@ import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.sql.Date; import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -167,9 +170,9 @@ public class BpmProcessInstanceCopyServiceImpl implements IBpmProcessInstanceCop .setNodeName(copy.getTaskName()) .setPcUrl("/process-instance/detail?id=" + copy.getProcessInstanceId()) .setCreator(creatorUser.getUsername()) - .setCreateDateTime(copy.getCreateTime()) + .setCreateDateTime(Date.from(copy.getCreateTime().atZone(ZoneId.systemDefault()).toInstant())) .setReceiver(receiverUser.getUsername()) - .setReceiveDateTime(copy.getCreateTime()) + .setReceiveDateTime(Date.from(copy.getCreateTime().atZone(ZoneId.systemDefault()).toInstant())) .setReceiveTs(System.currentTimeMillis()); } ).forEach(request -> {