From 149b43bdd0cbf093047a296976c85bea0ecc9d89 Mon Sep 17 00:00:00 2001 From: liuy <37787198+LiuyCodes@users.noreply.github.com> Date: Mon, 9 Sep 2024 15:10:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E4=B8=80=E6=AD=A5=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E5=85=A5=E5=8F=A3=E7=9A=84=E5=A4=9A=E5=9C=BA?= =?UTF-8?q?=E6=99=AF=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/outsourc/ConsignmachiningIn.java | 62 ++++++++++++++++ .../outsourc/ConsignmachiningInReturn.java | 63 +++++++++++++++++ .../plugin/purchase/ProxyPurchaseReturn.java | 67 +++++++++++++++++- .../purchase/ProxyPurchaseWarehous.java | 62 ++++++++++++++++ .../sales/SoSaleOutPluginInitializerToC.java | 70 +++++++++++++------ .../plugin/lets/util/OffsetTimeTime.java | 60 ++++++++++++++++ .../plugin/lets/util/OfsStandardUti.java | 12 ---- .../SoSaleOutPluginInitializerToCTest.java | 3 +- 8 files changed, 363 insertions(+), 36 deletions(-) delete mode 100644 buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/OfsStandardUti.java diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/outsourc/ConsignmachiningIn.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/outsourc/ConsignmachiningIn.java index 106e8466..eda13b83 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/outsourc/ConsignmachiningIn.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/outsourc/ConsignmachiningIn.java @@ -13,6 +13,7 @@ import com.hzya.frame.plugin.lets.dao.*; import com.hzya.frame.plugin.lets.entity.*; import com.hzya.frame.plugin.lets.ofsvo.QueryOfsSoSaleOutVo; import com.hzya.frame.plugin.lets.queryvo.QueryIntegrationTaskLivingDetails; +import com.hzya.frame.plugin.lets.queryvo.StartAndEndVo; import com.hzya.frame.plugin.lets.u8cdto.*; import com.hzya.frame.plugin.lets.util.*; import com.hzya.frame.split.SplitListByCountUtil; @@ -98,6 +99,11 @@ public class ConsignmachiningIn extends PluginBaseEntity { @Autowired private IntegrationTaskLivingDetailsUtil integrationTaskLivingDetailsUtil; + @Autowired + private OffsetTimeTime offsetTimeTime; + + private static final String PROD_FILED = "prod"; + @Override public void initialize() { logger.info(getPluginLabel() + "執行初始化方法initialize()"); @@ -130,6 +136,34 @@ public class ConsignmachiningIn extends PluginBaseEntity { @Override public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception { + long startMillis = System.currentTimeMillis(); + logger.info("executeBusiness方法调用开始:" + getPluginName() + "-插件"); + + try { + String param = String.valueOf(requestJson.get("param")); + if (ProfilesActiveConstant.TYPE_VBILLCODE.equals(requestJson.get("type"))) { + //按单号推送 + if (param != null && !"".equals(param)) { + startImplement(param); + } + } else if (ProfilesActiveConstant.TYPE_TIME_FRAME.equals(requestJson.get("type"))) { + //前台页面功能日期推送,或者接口调用也行 + String craeteDateStr = offsetTimeTime.computingTime(param); + if (craeteDateStr != null && !"".equals(craeteDateStr)) { + splitDateAndPush(craeteDateStr); + } + } else { + if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(PROD_FILED)) { + //默认被定时器执行,实时执行,计算时间偏移量 + StartAndEndVo startAndEndVo = offsetTimeTime.offsetTime(); + startImplement(startAndEndVo.getStart_time(), startAndEndVo.getEnd_time()); + } + } + } catch (Exception e) { + logger.error("executeBusiness方法异常", e); + } + long endMillis = System.currentTimeMillis(); + logger.info("executeBusiness方法调用结束:" + getPluginName() + "-插件 执行耗时:{}", (endMillis - startMillis)); return null; } @@ -941,4 +975,32 @@ public class ConsignmachiningIn extends PluginBaseEntity { } return bdInvbasdocEntity2.get(0); } + + /** + * 分割日期之后,再进行推送 + * + * @author liuyang + */ + private void splitDateAndPush(String param) throws Exception { + try { + Assert.notNull(param, "param不能为空!"); + Assert.state(!"".equals(param), "param不能为空!"); + + if (param.contains("*")) { + String[] params = param.split("\\*"); + if (params.length > 0) { + for (int i = 0; i < params.length; i++) { + String indexStr = params[i]; + String[] split = indexStr.split(","); + startImplement(split[0], split[1]); + } + } + } else { + String[] split = param.split(","); + startImplement(split[0], split[1]); + } + } catch (Exception e) { + logger.error("记录splitDateAndPush方法抛出的异常", e); + } + } } \ No newline at end of file diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/outsourc/ConsignmachiningInReturn.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/outsourc/ConsignmachiningInReturn.java index 7319df2c..a639b7e6 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/outsourc/ConsignmachiningInReturn.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/outsourc/ConsignmachiningInReturn.java @@ -13,6 +13,7 @@ import com.hzya.frame.plugin.lets.dao.*; import com.hzya.frame.plugin.lets.entity.*; import com.hzya.frame.plugin.lets.ofsvo.QueryOfsSoSaleOutVo; import com.hzya.frame.plugin.lets.queryvo.QueryIntegrationTaskLivingDetails; +import com.hzya.frame.plugin.lets.queryvo.StartAndEndVo; import com.hzya.frame.plugin.lets.u8cdto.*; import com.hzya.frame.plugin.lets.util.*; import com.hzya.frame.split.SplitListByCountUtil; @@ -94,6 +95,11 @@ public class ConsignmachiningInReturn extends PluginBaseEntity { @Autowired private IntegrationTaskLivingDetailsUtil integrationTaskLivingDetailsUtil; + @Autowired + private OffsetTimeTime offsetTimeTime; + + private static final String PROD_FILED = "prod"; + @Override public void initialize() { logger.info(getPluginLabel() + "執行初始化方法initialize()"); @@ -126,6 +132,34 @@ public class ConsignmachiningInReturn extends PluginBaseEntity { @Override public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception { + long startMillis = System.currentTimeMillis(); + logger.info("executeBusiness方法调用开始:" + getPluginName() + "-插件"); + + try { + String param = String.valueOf(requestJson.get("param")); + if (ProfilesActiveConstant.TYPE_VBILLCODE.equals(requestJson.get("type"))) { + //按单号推送 + if (param != null && !"".equals(param)) { + startImplement(param); + } + } else if (ProfilesActiveConstant.TYPE_TIME_FRAME.equals(requestJson.get("type"))) { + //前台页面功能日期推送,或者接口调用也行 + String craeteDateStr = offsetTimeTime.computingTime(param); + if (craeteDateStr != null && !"".equals(craeteDateStr)) { + splitDateAndPush(craeteDateStr); + } + } else { + if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(PROD_FILED)) { + //默认被定时器执行,实时执行,计算时间偏移量 + StartAndEndVo startAndEndVo = offsetTimeTime.offsetTime(); + startImplementByTime(startAndEndVo.getStart_time(), startAndEndVo.getEnd_time()); + } + } + } catch (Exception e) { + logger.error("executeBusiness方法异常", e); + } + long endMillis = System.currentTimeMillis(); + logger.info("executeBusiness方法调用结束:" + getPluginName() + "-插件 执行耗时:{}", (endMillis - startMillis)); return null; } @@ -1075,4 +1109,33 @@ public class ConsignmachiningInReturn extends PluginBaseEntity { Assert.state(false, "通过OFS采退出库单,无法匹配到OFS采退订单明细行! 目标主键:{}", detailsDto.getRefOrderDetailId()); return null; } + + + /** + * 分割日期之后,再进行推送 + * + * @author liuyang + */ + private void splitDateAndPush(String param) throws Exception { + try { + Assert.notNull(param, "param不能为空!"); + Assert.state(!"".equals(param), "param不能为空!"); + + if (param.contains("*")) { + String[] params = param.split("\\*"); + if (params.length > 0) { + for (int i = 0; i < params.length; i++) { + String indexStr = params[i]; + String[] split = indexStr.split(","); + startImplementByTime(split[0], split[1]); + } + } + } else { + String[] split = param.split(","); + startImplementByTime(split[0], split[1]); + } + } catch (Exception e) { + logger.error("记录splitDateAndPush方法抛出的异常", e); + } + } } \ No newline at end of file diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/purchase/ProxyPurchaseReturn.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/purchase/ProxyPurchaseReturn.java index 6b56a620..a0bb1d77 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/purchase/ProxyPurchaseReturn.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/purchase/ProxyPurchaseReturn.java @@ -12,6 +12,7 @@ import com.hzya.frame.plugin.lets.constant.ProfilesActiveConstant; import com.hzya.frame.plugin.lets.dao.*; import com.hzya.frame.plugin.lets.entity.*; import com.hzya.frame.plugin.lets.ofsvo.QueryOfsSoSaleOutVo; +import com.hzya.frame.plugin.lets.queryvo.StartAndEndVo; import com.hzya.frame.plugin.lets.u8cdto.*; import com.hzya.frame.plugin.lets.util.*; import com.hzya.frame.split.SplitListByCountUtil; @@ -28,12 +29,15 @@ import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDto; import com.hzya.frame.ttxofs.dto.stock.StockinOrderSearchResponse; import com.hzya.frame.ttxofs.service.OfsUnifiedService; import com.hzya.frame.web.entity.JsonResultEntity; +import com.hzya.frame.web.exception.BaseSystemException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import java.math.BigDecimal; +import java.time.LocalDate; import java.util.*; +import java.util.stream.Collectors; /** * 代理品牌采购退货业务:(代理品牌采购退货)OFS销退出库单生成U8C红字采购订单 @@ -94,6 +98,11 @@ public class ProxyPurchaseReturn extends PluginBaseEntity { @Autowired private IntegrationTaskLivingDetailsUtil integrationTaskLivingDetailsUtil; + private static final String PROD_FILED = "prod"; + + @Autowired + private OffsetTimeTime offsetTimeTime; + @Override public void initialize() { logger.info(getPluginLabel() + "執行初始化方法initialize()"); @@ -126,11 +135,39 @@ public class ProxyPurchaseReturn extends PluginBaseEntity { @Override public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception { + long startMillis = System.currentTimeMillis(); + logger.info("executeBusiness方法调用开始:" + getPluginName() + "-插件"); + + try { + String param = String.valueOf(requestJson.get("param")); + if (ProfilesActiveConstant.TYPE_VBILLCODE.equals(requestJson.get("type"))) { + //按单号推送 + if (param != null && !"".equals(param)) { + startImplement(param); + } + } else if (ProfilesActiveConstant.TYPE_TIME_FRAME.equals(requestJson.get("type"))) { + //前台页面功能日期推送,或者接口调用也行 + String craeteDateStr = offsetTimeTime.computingTime(param); + if (craeteDateStr != null && !"".equals(craeteDateStr)) { + splitDateAndPush(craeteDateStr); + } + } else { + if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(PROD_FILED)) { + //默认被定时器执行,实时执行,计算时间偏移量 + StartAndEndVo startAndEndVo = offsetTimeTime.offsetTime(); + startImplement(startAndEndVo.getStart_time(), startAndEndVo.getEnd_time()); + } + } + } catch (Exception e) { + logger.error("executeBusiness方法异常", e); + } + long endMillis = System.currentTimeMillis(); + logger.info("executeBusiness方法调用结束:" + getPluginName() + "-插件 执行耗时:{}", (endMillis - startMillis)); return null; } /** - * 根据单号查询 + * 根据时间范围查询 * * @author liuyang */ @@ -913,4 +950,32 @@ public class ProxyPurchaseReturn extends PluginBaseEntity { // } // return headerDetailsDtos; // } + + /** + * 分割日期之后,再进行推送 + * + * @author liuyang + */ + private void splitDateAndPush(String param) throws Exception { + try { + Assert.notNull(param, "param不能为空!"); + Assert.state(!"".equals(param), "param不能为空!"); + + if (param.contains("*")) { + String[] params = param.split("\\*"); + if (params.length > 0) { + for (int i = 0; i < params.length; i++) { + String indexStr = params[i]; + String[] split = indexStr.split(","); + startImplement(split[0], split[1]); + } + } + } else { + String[] split = param.split(","); + startImplement(split[0], split[1]); + } + } catch (Exception e) { + logger.info("记录splitDateAndPush方法抛出的异常", e); + } + } } \ No newline at end of file diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/purchase/ProxyPurchaseWarehous.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/purchase/ProxyPurchaseWarehous.java index 345260cd..e317ec9f 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/purchase/ProxyPurchaseWarehous.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/purchase/ProxyPurchaseWarehous.java @@ -12,6 +12,7 @@ import com.hzya.frame.plugin.lets.constant.ProfilesActiveConstant; import com.hzya.frame.plugin.lets.dao.*; import com.hzya.frame.plugin.lets.entity.*; import com.hzya.frame.plugin.lets.ofsvo.QueryOfsSoSaleOutVo; +import com.hzya.frame.plugin.lets.queryvo.StartAndEndVo; import com.hzya.frame.plugin.lets.u8cdto.*; import com.hzya.frame.plugin.lets.util.*; import com.hzya.frame.split.SplitListByCountUtil; @@ -92,6 +93,11 @@ public class ProxyPurchaseWarehous extends PluginBaseEntity { @Autowired private IntegrationTaskLivingDetailsUtil integrationTaskLivingDetailsUtil; + @Autowired + private OffsetTimeTime offsetTimeTime; + + private static final String PROD_FILED = "prod"; + @Override public void initialize() { logger.info(getPluginLabel() + "執行初始化方法initialize()"); @@ -124,6 +130,34 @@ public class ProxyPurchaseWarehous extends PluginBaseEntity { @Override public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception { + long startMillis = System.currentTimeMillis(); + logger.info("executeBusiness方法调用开始:" + getPluginName() + "-插件"); + + try { + String param = String.valueOf(requestJson.get("param")); + if (ProfilesActiveConstant.TYPE_VBILLCODE.equals(requestJson.get("type"))) { + //按单号推送 + if (param != null && !"".equals(param)) { + startImplement(param); + } + } else if (ProfilesActiveConstant.TYPE_TIME_FRAME.equals(requestJson.get("type"))) { + //前台页面功能日期推送,或者接口调用也行 + String craeteDateStr = offsetTimeTime.computingTime(param); + if (craeteDateStr != null && !"".equals(craeteDateStr)) { + splitDateAndPush(craeteDateStr); + } + } else { + if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(PROD_FILED)) { + //默认被定时器执行,实时执行,计算时间偏移量 + StartAndEndVo startAndEndVo = offsetTimeTime.offsetTime(); + startImplement(startAndEndVo.getStart_time(), startAndEndVo.getEnd_time()); + } + } + } catch (Exception e) { + logger.error("executeBusiness方法异常", e); + } + long endMillis = System.currentTimeMillis(); + logger.info("executeBusiness方法调用结束:" + getPluginName() + "-插件 执行耗时:{}", (endMillis - startMillis)); return null; } @@ -840,4 +874,32 @@ public class ProxyPurchaseWarehous extends PluginBaseEntity { } return null; } + + /** + * 分割日期之后,再进行推送 + * + * @author liuyang + */ + private void splitDateAndPush(String param) throws Exception { + try { + Assert.notNull(param, "param不能为空!"); + Assert.state(!"".equals(param), "param不能为空!"); + + if (param.contains("*")) { + String[] params = param.split("\\*"); + if (params.length > 0) { + for (int i = 0; i < params.length; i++) { + String indexStr = params[i]; + String[] split = indexStr.split(","); + startImplement(split[0], split[1]); + } + } + } else { + String[] split = param.split(","); + startImplement(split[0], split[1]); + } + } catch (Exception e) { + logger.info("记录splitDateAndPush方法抛出的异常", e); + } + } } \ No newline at end of file diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToC.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToC.java index 92d99b8b..af49c5f8 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToC.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToC.java @@ -29,6 +29,7 @@ import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDetailsDto; import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDto; import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.SaleOutReturnMessageDto; import com.hzya.frame.ttxofs.service.OfsUnifiedService; +import com.hzya.frame.u8c.ax.entity.Ass; import com.hzya.frame.web.entity.JsonResultEntity; import com.hzya.frame.web.exception.BaseSystemException; import org.slf4j.Logger; @@ -87,17 +88,22 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity { return "3"; } + private static final String STOCK = "stock"; + + private static final String TRAN = "tran"; + @Override public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception { long startMillis = System.currentTimeMillis(); logger.info("executeBusiness方法调用开始:" + getPluginName() + "-插件"); - if (ProfilesActiveConstant.TYPE_DETAIL_ERROR.equals(requestJson.get("type"))) { - throw new BaseSystemException("TOC退货业务,无法按单行推送!需要根据天的维度推送"); - } - +// if (ProfilesActiveConstant.TYPE_DETAIL_ERROR.equals(requestJson.get("type"))) { +// throw new BaseSystemException("TOC退货业务,无法按单行推送!需要根据天的维度推送"); +// } + try { String param = String.valueOf(requestJson.get("param")); + String sceneType = String.valueOf(requestJson.get("sceneType"));//sceneType:stock、tran if (ProfilesActiveConstant.TYPE_VBILLCODE.equals(requestJson.get("type"))) { //按单号 if (param != null && !"".equals(param)) { @@ -107,13 +113,16 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity { //前台页面功能日期推送,或者接口调用也行 String craeteDateStr = computingTime(param); if (craeteDateStr != null && !"".equals(craeteDateStr)) { - splitDateAndPush(craeteDateStr); + splitDateAndPush(craeteDateStr, sceneType); + } + } else { + if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(PROD_FILED)) { + //默认被定时器执行,每天晚上凌晨0点5分 + //暂定先同步TOC销售库存、再推送TOC销售确认收入 + List startAndEndVos = calculateCalculateEntireDayPeriod(null); + startImplementStockByTime(startAndEndVos.get(0).getStart_time(), startAndEndVos.get(0).getEnd_time()); + startImplementTranByTime(startAndEndVos.get(0).getStart_time(), startAndEndVos.get(0).getEnd_time()); } - } else if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(PROD_FILED)) { - //默认被定时器执行,每天晚上凌晨0点5分 - List startAndEndVos = calculateCalculateEntireDayPeriod(null); - startImplementStockByTime(startAndEndVos.get(0).getStart_time(), startAndEndVos.get(0).getEnd_time()); - startImplementTranByTime(startAndEndVos.get(0).getStart_time(), startAndEndVos.get(0).getEnd_time()); } } catch (Exception e) { logger.error("executeBusiness方法异常", e); @@ -2106,22 +2115,39 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity { * * @author liuyang */ - private void splitDateAndPush(String param) throws Exception { - Assert.notNull(param, "param不能为空!"); - Assert.state(!"".equals(param), "param不能为空!"); + public void splitDateAndPush(String param, String sceneType) throws Exception { + try { + Assert.notNull(param, "param不能为空!"); + Assert.state(!"".equals(param), "param不能为空!"); - if (param.contains("*")) { - String[] params = param.split("\\*"); - if (params.length > 0) { - for (int i = 0; i < params.length; i++) { - String indexStr = params[i]; - String[] split = indexStr.split(","); + Assert.notNull(sceneType, "sceneType不能为空!"); + Assert.state(!"".equals(sceneType), "sceneType不能为空!"); + + if (param.contains("*")) { + String[] params = param.split("\\*"); + if (params.length > 0) { + for (int i = 0; i < params.length; i++) { + String indexStr = params[i]; + String[] split = indexStr.split(","); + logger.info("splitDateAndPush方法正在执行主要的逻辑 开始时间:{} 结束时间:{}", split[0], split[1]); + if (sceneType.equals(STOCK)) { + startImplementStockByTime(split[0], split[1]); + } else if (sceneType.equals(TRAN)) { + startImplementTranByTime(split[0], split[1]); + } + } + } + } else { + String[] split = param.split(","); + logger.info("splitDateAndPush方法正在执行主要的逻辑 开始时间:{} 结束时间:{}", split[0], split[1]); + if (sceneType.equals(STOCK)) { startImplementStockByTime(split[0], split[1]); + } else if (sceneType.equals(TRAN)) { + startImplementTranByTime(split[0], split[1]); } } - } else { - String[] split = param.split(","); - startImplementStockByTime(split[0], split[1]); + } catch (Exception e) { + logger.error("记录splitDateAndPush方法抛出的异常", e); } } } \ No newline at end of file diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/OffsetTimeTime.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/OffsetTimeTime.java index dda7f9a6..dd3e37b0 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/OffsetTimeTime.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/OffsetTimeTime.java @@ -2,10 +2,18 @@ package com.hzya.frame.plugin.lets.util; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; import com.hzya.frame.plugin.lets.queryvo.StartAndEndVo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; /** * @Author:liuyang @@ -17,6 +25,9 @@ import java.util.Date; */ @Component public class OffsetTimeTime { + + Logger logger = LoggerFactory.getLogger(OffsetTimeTime.class); + /** * 实时执行,计算时间 * @@ -36,4 +47,53 @@ public class OffsetTimeTime { return startAndEndVo; } + + /** + * 计算时间间隔 + * + * @author liuyang + */ + public String computingTime(String param) { + if (param != null && !"".equals(param)) { + String[] split = param.split("/"); + if (!(split.length == 2)) { + Assert.state(false, "传递的日期格式不完整 格式参考:2024-04-01/2024-04-30"); + } + + LocalDate startDate = LocalDate.parse(split[0]); + LocalDate endDate = LocalDate.parse(split[1]); + + List stringArrayList = new ArrayList<>(); + List dateRange = getDateRange(startDate, endDate); + if (dateRange != null && dateRange.size() > 0) { + for (int i = 0; i < dateRange.size(); i++) { + String dateStr = dateRange.get(i); + StringBuffer stringBuffer = new StringBuffer(); + stringBuffer.append(dateStr); + stringBuffer.append(" 00:00:00"); + stringBuffer.append(","); + stringBuffer.append(dateStr); + stringBuffer.append(" 23:59:59"); + stringArrayList.add(stringBuffer.toString()); + } + } + String collectDateStr = stringArrayList.stream().collect(Collectors.joining("*")); + logger.info("类型:time_frame 生成的日期范围:" + collectDateStr); + return collectDateStr; + } + return null; + } + + /** + * 生成范围 + */ + private List getDateRange(LocalDate startDate, LocalDate endDate) { + List dateRange = new ArrayList<>(); + LocalDate currentDate = startDate; + while (!currentDate.isAfter(endDate)) { + dateRange.add(currentDate.format(DateTimeFormatter.ISO_DATE)); + currentDate = currentDate.plusDays(1); + } + return dateRange; + } } diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/OfsStandardUti.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/OfsStandardUti.java deleted file mode 100644 index 4589c550..00000000 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/OfsStandardUti.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.hzya.frame.plugin.lets.util; - -/** - * @Author:liuyang - * @Package:com.hzya.frame.plugin.lets.util - * @Project:kangarooDataCenterV3 - * @name:OfsStandardUti - * @Date:2024/8/22 15:01 - * @Filename:OfsStandardUti - */ -public class OfsStandardUti { -} diff --git a/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToCTest.java b/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToCTest.java index 49783c00..1b319e21 100644 --- a/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToCTest.java +++ b/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleOutPluginInitializerToCTest.java @@ -74,6 +74,7 @@ class SoSaleOutPluginInitializerToCTest { // System.out.println(aaa.length()); - soSaleOutPluginInitializerToC.computingTime("2024-01-01/2024-01-25"); + String computingTime = soSaleOutPluginInitializerToC.computingTime("2024-01-01/2024-01-01"); + soSaleOutPluginInitializerToC.splitDateAndPush(computingTime, "tran"); } } \ No newline at end of file