进一步优化方法入口的多场景判断

This commit is contained in:
liuy 2024-09-09 15:10:07 +08:00
parent 4083c58dda
commit 149b43bdd0
8 changed files with 363 additions and 36 deletions

View File

@ -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);
}
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}
}

View File

@ -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"));//sceneTypestocktran
if (ProfilesActiveConstant.TYPE_VBILLCODE.equals(requestJson.get("type"))) {
//按单号
if (param != null && !"".equals(param)) {
@ -107,14 +113,17 @@ 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)) {
} else {
if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(PROD_FILED)) {
//默认被定时器执行每天晚上凌晨0点5分
//暂定先同步TOC销售库存再推送TOC销售确认收入
List<StartAndEndVo> 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 {
public void splitDateAndPush(String param, String sceneType) throws Exception {
try {
Assert.notNull(param, "param不能为空!");
Assert.state(!"".equals(param), "param不能为空");
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]);
}
}
} catch (Exception e) {
logger.error("记录splitDateAndPush方法抛出的异常", e);
}
}
}

View File

@ -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;
/**
* @Authorliuyang
@ -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<String> stringArrayList = new ArrayList<>();
List<String> 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<String> getDateRange(LocalDate startDate, LocalDate endDate) {
List<String> dateRange = new ArrayList<>();
LocalDate currentDate = startDate;
while (!currentDate.isAfter(endDate)) {
dateRange.add(currentDate.format(DateTimeFormatter.ISO_DATE));
currentDate = currentDate.plusDays(1);
}
return dateRange;
}
}

View File

@ -1,12 +0,0 @@
package com.hzya.frame.plugin.lets.util;
/**
* @Authorliuyang
* @Packagecom.hzya.frame.plugin.lets.util
* @ProjectkangarooDataCenterV3
* @nameOfsStandardUti
* @Date2024/8/22 15:01
* @FilenameOfsStandardUti
*/
public class OfsStandardUti {
}

View File

@ -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");
}
}