From ff686e6cbd4619afb61058a7fc9a85d71699f9ae Mon Sep 17 00:00:00 2001
From: yuqh <123456>
Date: Thu, 11 Sep 2025 09:10:07 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=87=E5=90=8C=E6=B5=B7=E5=A4=96=20?=
=?UTF-8?q?=E5=9B=BD=E5=86=85=E8=AE=A2=E5=8D=95=E5=8F=96=E6=95=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../YutGnSaleOrderPluginInitializer.java | 64 ++
.../YutGnSaleSHRecPluginInitializer.java | 64 ++
.../YutGnSaleSZRecPluginInitializer.java | 64 ++
...GnU8CSaleOrderCreatePluginInitializer.java | 63 ++
...utGnU8CSaleRecCreatePluginInitializer.java | 63 ++
.../YutHwSaleOrderToU8cPluginInitializer.java | 63 ++
.../YutHwSaleRrcToU8cPluginInitializer.java | 63 ++
.../src/main/resources/application.yml | 2 +-
.../yut/spring/spring-buildpackage-plugin.xml | 7 +
.../test/java/com/hzya/frame/temButtom.java | 85 +-
.../execsql/service/ExecSqlServiceImpl.java | 5 +-
.../u8c/gnsale/service/IGnSaleService.java | 49 +
.../service/impl/GnSaleServiceImpl.java | 880 ++++++++++++++++--
.../hzya/frame/u8c/gnsale/util/HjyUtil.java | 112 ++-
.../hzya/frame/u8c/hwsale/dao/IHwsaleDao.java | 31 +
.../u8c/hwsale/dao/impl/HwsaleDaoImpl.java | 42 +
.../u8c/hwsale/service/IHwSaleService.java | 23 +
.../service/impl/HwSaleServiceImpl.java | 335 ++++++-
.../hzya/frame/u8c/hwsale/util/HwUtil.java | 10 +-
.../com/hzya/frame/u8c/util/U8cHttpUtil.java | 271 +++++-
pom.xml | 54 +-
21 files changed, 2199 insertions(+), 151 deletions(-)
create mode 100644 base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnSaleOrderPluginInitializer.java
create mode 100644 base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnSaleSHRecPluginInitializer.java
create mode 100644 base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnSaleSZRecPluginInitializer.java
create mode 100644 base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnU8CSaleOrderCreatePluginInitializer.java
create mode 100644 base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnU8CSaleRecCreatePluginInitializer.java
create mode 100644 base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutHwSaleOrderToU8cPluginInitializer.java
create mode 100644 base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutHwSaleRrcToU8cPluginInitializer.java
create mode 100644 fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/dao/IHwsaleDao.java
create mode 100644 fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/dao/impl/HwsaleDaoImpl.java
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnSaleOrderPluginInitializer.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnSaleOrderPluginInitializer.java
new file mode 100644
index 00000000..a04d6db7
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnSaleOrderPluginInitializer.java
@@ -0,0 +1,64 @@
+package com.hzya.frame.plugin.yut.plugin;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.base.PluginBaseEntity;
+import com.hzya.frame.u8c.gnsale.service.IGnSaleService;
+import com.hzya.frame.u8c.hwsale.service.IHwSaleService;
+import com.hzya.frame.web.entity.BaseResult;
+import com.hzya.frame.web.entity.JsonResultEntity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 消息管理日志(SysMessageManageLog)表服务接口
+ *
+ * @author makejava
+ * @since 2024-03-08 10:22:00
+ */
+public class YutGnSaleOrderPluginInitializer extends PluginBaseEntity {
+ Logger logger = LoggerFactory.getLogger(YutGnSaleOrderPluginInitializer.class);
+ @Autowired
+ public IGnSaleService gnSaleService;
+ @Override
+ public void initialize() {
+ logger.info(getPluginLabel() + "執行初始化方法initialize()");
+ }
+
+ @Override
+ public void destroy() {
+ logger.info(getPluginLabel() + "執行銷毀方法destroy()");
+ }
+
+ @Override
+ public String getPluginId() {
+ return "YutGnSaleOrderPluginInitializer";
+ }
+
+ @Override
+ public String getPluginName() {
+ return "抓取慧经营发货明细数据插件";
+ }
+
+ @Override
+ public String getPluginLabel() {
+ return "抓取慧经营发货明细数据插件";
+ }
+ @Override
+ public String getPluginType() {
+ return "1";
+ }
+
+ @Override
+ public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception {
+ logger.info("开始执行"+getPluginName()+requestJson.toString());
+ try {
+ gnSaleService.getGNSaleOrder(requestJson);
+ return BaseResult.getSuccessMessageEntity("执行成功");
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return BaseResult.getSuccessMessageEntity("执行成功");
+ }
+
+}
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnSaleSHRecPluginInitializer.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnSaleSHRecPluginInitializer.java
new file mode 100644
index 00000000..95787a8e
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnSaleSHRecPluginInitializer.java
@@ -0,0 +1,64 @@
+package com.hzya.frame.plugin.yut.plugin;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.base.PluginBaseEntity;
+import com.hzya.frame.u8c.gnsale.service.IGnSaleService;
+import com.hzya.frame.u8c.hwsale.service.IHwSaleService;
+import com.hzya.frame.web.entity.BaseResult;
+import com.hzya.frame.web.entity.JsonResultEntity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 消息管理日志(SysMessageManageLog)表服务接口
+ *
+ * @author makejava
+ * @since 2024-03-08 10:22:00
+ */
+public class YutGnSaleSHRecPluginInitializer extends PluginBaseEntity {
+ Logger logger = LoggerFactory.getLogger(YutGnSaleSHRecPluginInitializer.class);
+ @Autowired
+ public IGnSaleService gnSaleService;
+ @Override
+ public void initialize() {
+ logger.info(getPluginLabel() + "執行初始化方法initialize()");
+ }
+
+ @Override
+ public void destroy() {
+ logger.info(getPluginLabel() + "執行銷毀方法destroy()");
+ }
+
+ @Override
+ public String getPluginId() {
+ return "YutGnSaleSHRecPluginInitializer";
+ }
+
+ @Override
+ public String getPluginName() {
+ return "抓取慧经营售后退货数据插件";
+ }
+
+ @Override
+ public String getPluginLabel() {
+ return "抓取慧经营售后退货数据插件";
+ }
+ @Override
+ public String getPluginType() {
+ return "1";
+ }
+
+ @Override
+ public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception {
+ logger.info("开始执行"+getPluginName()+requestJson.toString());
+ try {
+ gnSaleService.getGnSaleSHRec(requestJson);
+ return BaseResult.getSuccessMessageEntity("执行成功");
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return BaseResult.getSuccessMessageEntity("执行成功");
+ }
+
+}
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnSaleSZRecPluginInitializer.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnSaleSZRecPluginInitializer.java
new file mode 100644
index 00000000..568f6ac9
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnSaleSZRecPluginInitializer.java
@@ -0,0 +1,64 @@
+package com.hzya.frame.plugin.yut.plugin;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.base.PluginBaseEntity;
+import com.hzya.frame.u8c.gnsale.service.IGnSaleService;
+import com.hzya.frame.u8c.hwsale.service.IHwSaleService;
+import com.hzya.frame.web.entity.BaseResult;
+import com.hzya.frame.web.entity.JsonResultEntity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 消息管理日志(SysMessageManageLog)表服务接口
+ *
+ * @author makejava
+ * @since 2024-03-08 10:22:00
+ */
+public class YutGnSaleSZRecPluginInitializer extends PluginBaseEntity {
+ Logger logger = LoggerFactory.getLogger(YutGnSaleSZRecPluginInitializer.class);
+ @Autowired
+ public IGnSaleService gnSaleService;
+ @Override
+ public void initialize() {
+ logger.info(getPluginLabel() + "執行初始化方法initialize()");
+ }
+
+ @Override
+ public void destroy() {
+ logger.info(getPluginLabel() + "執行銷毀方法destroy()");
+ }
+
+ @Override
+ public String getPluginId() {
+ return "YutGnSaleSZRecPluginInitializer";
+ }
+
+ @Override
+ public String getPluginName() {
+ return "抓取慧经营售中退货数据插件";
+ }
+
+ @Override
+ public String getPluginLabel() {
+ return "抓取慧经营售中退货数据插件";
+ }
+ @Override
+ public String getPluginType() {
+ return "1";
+ }
+
+ @Override
+ public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception {
+ logger.info("开始执行"+getPluginName()+requestJson.toString());
+ try {
+ gnSaleService.getGnSaleSZRec(requestJson);
+ return BaseResult.getSuccessMessageEntity("执行成功");
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return BaseResult.getSuccessMessageEntity("执行成功");
+ }
+
+}
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnU8CSaleOrderCreatePluginInitializer.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnU8CSaleOrderCreatePluginInitializer.java
new file mode 100644
index 00000000..d78cc162
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnU8CSaleOrderCreatePluginInitializer.java
@@ -0,0 +1,63 @@
+package com.hzya.frame.plugin.yut.plugin;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.base.PluginBaseEntity;
+import com.hzya.frame.u8c.gnsale.service.IGnSaleService;
+import com.hzya.frame.web.entity.BaseResult;
+import com.hzya.frame.web.entity.JsonResultEntity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 消息管理日志(SysMessageManageLog)表服务接口
+ *
+ * @author makejava
+ * @since 2024-03-08 10:22:00
+ */
+public class YutGnU8CSaleOrderCreatePluginInitializer extends PluginBaseEntity {
+ Logger logger = LoggerFactory.getLogger(YutGnU8CSaleOrderCreatePluginInitializer.class);
+ @Autowired
+ public IGnSaleService gnSaleService;
+ @Override
+ public void initialize() {
+ logger.info(getPluginLabel() + "執行初始化方法initialize()");
+ }
+
+ @Override
+ public void destroy() {
+ logger.info(getPluginLabel() + "執行銷毀方法destroy()");
+ }
+
+ @Override
+ public String getPluginId() {
+ return "YutGnU8CSaleOrderCreatePluginInitializer";
+ }
+
+ @Override
+ public String getPluginName() {
+ return "慧经营发货明细生成蓝字销售订单数据插件";
+ }
+
+ @Override
+ public String getPluginLabel() {
+ return "慧经营发货明细生成蓝字销售订单数据插件";
+ }
+ @Override
+ public String getPluginType() {
+ return "1";
+ }
+
+ @Override
+ public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception {
+ logger.info("开始执行"+getPluginName()+requestJson.toString());
+ try {
+ gnSaleService.sendSaleOrderToU8c(requestJson);
+ return BaseResult.getSuccessMessageEntity("执行成功");
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return BaseResult.getSuccessMessageEntity("执行成功");
+ }
+
+}
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnU8CSaleRecCreatePluginInitializer.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnU8CSaleRecCreatePluginInitializer.java
new file mode 100644
index 00000000..134c2ec5
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutGnU8CSaleRecCreatePluginInitializer.java
@@ -0,0 +1,63 @@
+package com.hzya.frame.plugin.yut.plugin;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.base.PluginBaseEntity;
+import com.hzya.frame.u8c.gnsale.service.IGnSaleService;
+import com.hzya.frame.web.entity.BaseResult;
+import com.hzya.frame.web.entity.JsonResultEntity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 消息管理日志(SysMessageManageLog)表服务接口
+ *
+ * @author makejava
+ * @since 2024-03-08 10:22:00
+ */
+public class YutGnU8CSaleRecCreatePluginInitializer extends PluginBaseEntity {
+ Logger logger = LoggerFactory.getLogger(YutGnU8CSaleRecCreatePluginInitializer.class);
+ @Autowired
+ public IGnSaleService gnSaleService;
+ @Override
+ public void initialize() {
+ logger.info(getPluginLabel() + "執行初始化方法initialize()");
+ }
+
+ @Override
+ public void destroy() {
+ logger.info(getPluginLabel() + "執行銷毀方法destroy()");
+ }
+
+ @Override
+ public String getPluginId() {
+ return "YutGnU8CSaleRecCreatePluginInitializer";
+ }
+
+ @Override
+ public String getPluginName() {
+ return "慧经营销售退货数据插件";
+ }
+
+ @Override
+ public String getPluginLabel() {
+ return "慧经营销售退货数据插件";
+ }
+ @Override
+ public String getPluginType() {
+ return "1";
+ }
+
+ @Override
+ public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception {
+ logger.info("开始执行"+getPluginName()+requestJson.toString());
+ try {
+ gnSaleService.sendSaleRecToU8c(requestJson);
+ return BaseResult.getSuccessMessageEntity("执行成功");
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return BaseResult.getSuccessMessageEntity("执行成功");
+ }
+
+}
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutHwSaleOrderToU8cPluginInitializer.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutHwSaleOrderToU8cPluginInitializer.java
new file mode 100644
index 00000000..1f2ec3c3
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutHwSaleOrderToU8cPluginInitializer.java
@@ -0,0 +1,63 @@
+package com.hzya.frame.plugin.yut.plugin;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.base.PluginBaseEntity;
+import com.hzya.frame.u8c.hwsale.service.IHwSaleService;
+import com.hzya.frame.web.entity.BaseResult;
+import com.hzya.frame.web.entity.JsonResultEntity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 消息管理日志(SysMessageManageLog)表服务接口
+ *
+ * @author makejava
+ * @since 2024-03-08 10:22:00
+ */
+public class YutHwSaleOrderToU8cPluginInitializer extends PluginBaseEntity {
+ Logger logger = LoggerFactory.getLogger(YutHwSaleOrderToU8cPluginInitializer.class);
+ @Autowired
+ public IHwSaleService hwSaleService;
+ @Override
+ public void initialize() {
+ logger.info(getPluginLabel() + "執行初始化方法initialize()");
+ }
+
+ @Override
+ public void destroy() {
+ logger.info(getPluginLabel() + "執行銷毀方法destroy()");
+ }
+
+ @Override
+ public String getPluginId() {
+ return "YutHwSaleOrderToU8cPluginInitializer";
+ }
+
+ @Override
+ public String getPluginName() {
+ return "海外销售订单同步U8C数据插件";
+ }
+
+ @Override
+ public String getPluginLabel() {
+ return "海外销售订单同步U8C数据插件";
+ }
+ @Override
+ public String getPluginType() {
+ return "1";
+ }
+
+ @Override
+ public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception {
+ logger.info("开始执行"+getPluginName()+requestJson.toString());
+ try {
+ hwSaleService.getHwSaleOrderToU8c(requestJson);
+ return BaseResult.getSuccessMessageEntity("执行成功");
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return BaseResult.getSuccessMessageEntity("执行成功");
+ }
+
+}
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutHwSaleRrcToU8cPluginInitializer.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutHwSaleRrcToU8cPluginInitializer.java
new file mode 100644
index 00000000..0ef9c362
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/yut/plugin/YutHwSaleRrcToU8cPluginInitializer.java
@@ -0,0 +1,63 @@
+package com.hzya.frame.plugin.yut.plugin;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.base.PluginBaseEntity;
+import com.hzya.frame.u8c.hwsale.service.IHwSaleService;
+import com.hzya.frame.web.entity.BaseResult;
+import com.hzya.frame.web.entity.JsonResultEntity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 消息管理日志(SysMessageManageLog)表服务接口
+ *
+ * @author makejava
+ * @since 2024-03-08 10:22:00
+ */
+public class YutHwSaleRrcToU8cPluginInitializer extends PluginBaseEntity {
+ Logger logger = LoggerFactory.getLogger(YutHwSaleRrcToU8cPluginInitializer.class);
+ @Autowired
+ public IHwSaleService hwSaleService;
+ @Override
+ public void initialize() {
+ logger.info(getPluginLabel() + "執行初始化方法initialize()");
+ }
+
+ @Override
+ public void destroy() {
+ logger.info(getPluginLabel() + "執行銷毀方法destroy()");
+ }
+
+ @Override
+ public String getPluginId() {
+ return "YutHwSaleRrcToU8cPluginInitializer";
+ }
+
+ @Override
+ public String getPluginName() {
+ return "抓取海外销售退货同步U8C数据插件";
+ }
+
+ @Override
+ public String getPluginLabel() {
+ return "抓取海外销售退货同步U8C数据插件";
+ }
+ @Override
+ public String getPluginType() {
+ return "1";
+ }
+
+ @Override
+ public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception {
+ logger.info("开始执行"+getPluginName()+requestJson.toString());
+ try {
+ hwSaleService.getHwSaleRecToU8c(requestJson);
+ return BaseResult.getSuccessMessageEntity("执行成功");
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return BaseResult.getSuccessMessageEntity("执行成功");
+ }
+
+}
diff --git a/base-buildpackage/src/main/resources/application.yml b/base-buildpackage/src/main/resources/application.yml
index 27405f62..80e286b0 100644
--- a/base-buildpackage/src/main/resources/application.yml
+++ b/base-buildpackage/src/main/resources/application.yml
@@ -1,5 +1,5 @@
server:
- port: 9990
+ port: 9999
servlet:
context-path: /kangarooDataCenterV3
localIP: 127.0.0.1
diff --git a/base-buildpackage/src/main/resources/cfgHome/plugin/yut/spring/spring-buildpackage-plugin.xml b/base-buildpackage/src/main/resources/cfgHome/plugin/yut/spring/spring-buildpackage-plugin.xml
index e8cde403..7c9ebd98 100644
--- a/base-buildpackage/src/main/resources/cfgHome/plugin/yut/spring/spring-buildpackage-plugin.xml
+++ b/base-buildpackage/src/main/resources/cfgHome/plugin/yut/spring/spring-buildpackage-plugin.xml
@@ -3,4 +3,11 @@
+
+
+
+
+
+
+
diff --git a/base-buildpackage/src/test/java/com/hzya/frame/temButtom.java b/base-buildpackage/src/test/java/com/hzya/frame/temButtom.java
index 825925b0..e54df132 100644
--- a/base-buildpackage/src/test/java/com/hzya/frame/temButtom.java
+++ b/base-buildpackage/src/test/java/com/hzya/frame/temButtom.java
@@ -1,8 +1,14 @@
package com.hzya.frame;
import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.mdm.mdmModuleSource.entity.MdmModuleSourceEntity;
+import com.hzya.frame.sysnew.comparison.masterData.dao.impl.MasterDataDaoImpl;
+import com.hzya.frame.sysnew.comparison.service.impl.ComparisonServiceImpl;
import com.hzya.frame.util.AESUtil;
+import com.hzya.frame.web.entity.BaseEntity;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
@@ -15,6 +21,7 @@ import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@@ -23,6 +30,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.logging.Logger;
/**
* @ClassName dsasas
@@ -30,10 +38,13 @@ import java.util.Map;
* @Author llg
* Date 2023/7/16 8:18 上午
*/
-//@RunWith(SpringRunner.class)
-//@SpringBootTest(classes = {WebappApplication.class})
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = {WebappApplication.class})
public class temButtom {
-
+ @Autowired
+ private ComparisonServiceImpl comparisonServiceimpl;
+ @Autowired
+ private MasterDataDaoImpl masterDataDaoImpl;
@Test
public void test01() {
String a = AESUtil.encrypt("hzya@1314");
@@ -142,5 +153,73 @@ public class temButtom {
return body.toString();
}
+@Test
+ public void test03() {
+ MdmModuleSourceEntity entity = new MdmModuleSourceEntity();
+ entity.setDataSourceCode("ZT");
+ String sqlStr = "select a.project_code as data_id,a.* from imp_temp a";
+ List> hashMaps = masterDataDaoImpl.queryArchivesByDataSource(sqlStr,entity);
+ List list = new ArrayList<>();
+ if(CollectionUtils.isNotEmpty(hashMaps)){
+ int i = 0;
+ for (HashMap hashMap : hashMaps) {
+ JSONObject main = new JSONObject();
+ JSONObject mdm_cost_project = new JSONObject();
+ if(null != hashMap){
+ for(String key:hashMap.keySet()) {
+ mdm_cost_project.put(key, hashMap.get(key));
+ }
+ main.put("mdm_cost_project",mdm_cost_project);
+ list.add(main);
+ }
+ }
+ }
+ for(JSONObject item : list){
+ JSONObject jsonStr = new JSONObject();
+ item.put("appName","数智中台");
+ item.put("appCode","800004");
+ item.put("mdmCode", "10009");
+ item.put("optionName", "数智中台");
+ item.put("data_id",item.getString("project_code"));
+ jsonStr.put("jsonStr", item);
+ Object result = comparisonServiceimpl.saveEntity(jsonStr);
+ System.out.println("结果为:"+JSON.toJSONString(result));
+ }
+ }
+
+ @Test
+ public void test04() {
+ MdmModuleSourceEntity entity = new MdmModuleSourceEntity();
+ entity.setDataSourceCode("ZT");
+ String sqlStr = "select a.org_name as data_id,a.* from imp_tempa a";
+ List> hashMaps = masterDataDaoImpl.queryArchivesByDataSource(sqlStr,entity);
+ List list = new ArrayList<>();
+ if(CollectionUtils.isNotEmpty(hashMaps)){
+ int i = 0;
+ for (HashMap hashMap : hashMaps) {
+
+ JSONObject main = new JSONObject();
+ JSONObject mdm_cost_project = new JSONObject();
+ if(null != hashMap){
+ for(String key:hashMap.keySet()) {
+ mdm_cost_project.put(key, hashMap.get(key));
+ }
+ main.put("mdm_orgs",mdm_cost_project);
+ list.add(main);
+ }
+ }
+ }
+ for(JSONObject item : list){
+ JSONObject jsonStr = new JSONObject();
+ item.put("appName","数智中台");
+ item.put("appCode","800004");
+ item.put("mdmCode", "10010");
+ item.put("optionName", "数智中台");
+
+ jsonStr.put("jsonStr", item);
+ Object result = comparisonServiceimpl.saveEntity(jsonStr);
+ System.out.println("结果为:"+JSON.toJSONString(result));
+ }
+ }
}
diff --git a/base-common/src/main/java/com/hzya/frame/execsql/service/ExecSqlServiceImpl.java b/base-common/src/main/java/com/hzya/frame/execsql/service/ExecSqlServiceImpl.java
index ff02bcc4..2fd11958 100644
--- a/base-common/src/main/java/com/hzya/frame/execsql/service/ExecSqlServiceImpl.java
+++ b/base-common/src/main/java/com/hzya/frame/execsql/service/ExecSqlServiceImpl.java
@@ -1,5 +1,6 @@
package com.hzya.frame.execsql.service;
+import cn.hutool.core.util.StrUtil;
import com.hzya.frame.datasource.DataSourceUtil;
import com.hzya.frame.execsql.entity.ExecSqlEntity;
import org.apache.ibatis.session.SqlSession;
@@ -80,14 +81,14 @@ public class ExecSqlServiceImpl implements IExecSqlService {
@Override
public int execUpdateSql(String sql, String data_source_code) throws Exception {
logger.info("=============进入execUpdateSql方法============");
- if (ObjectUtils.isEmpty(sql)) {
+ if (StrUtil.isNotEmpty(sql)) {
if (sql.contains("where") || sql.contains("WHERE")) {
// SqlSession sqlSession = getSqlSession(data_source_code);
// SqlSession sqlSession = new DataSourceUtil().getDefaultSqlSession();
logger.info("=============execUpdateSql方法要执行的sql:============" + sql);
ExecSqlEntity entity = new ExecSqlEntity();
entity.setSql(sql);
- int result = sqlSession.update("com.hzya.frame.sysnew.execsql.entity.ExecSqlEntity.ExecSqlEntity_execsql_update", entity);
+ int result = sqlSession.update("com.hzya.frame.execsql.entity.ExecSqlEntity.ExecSqlEntity_execsql_update", entity);
logger.info("update受影响行数:" + result);
//sqlSession.close();
return result;
diff --git a/fw-u8c/src/main/java/com/hzya/frame/u8c/gnsale/service/IGnSaleService.java b/fw-u8c/src/main/java/com/hzya/frame/u8c/gnsale/service/IGnSaleService.java
index 93dfeece..f434c670 100644
--- a/fw-u8c/src/main/java/com/hzya/frame/u8c/gnsale/service/IGnSaleService.java
+++ b/fw-u8c/src/main/java/com/hzya/frame/u8c/gnsale/service/IGnSaleService.java
@@ -11,5 +11,54 @@ import com.hzya.frame.web.entity.BaseEntity;
* @since 2023-08-25 11:21:44
*/
public interface IGnSaleService extends IBaseService {
+/**
+ *
+ * @content 获取慧经营发货明细
+ * @className: Administrator
+ * @author laborer
+ * @date 2025-08-28 9:07
+ *
+ */
+ void getGNSaleOrder(JSONObject requestJson);
+/**
+ *
+ * @content 获取慧经营售后数据
+ * @className: Administrator
+ * @author laborer
+ * @date 2025-08-28 10:42
+ *
+ */
+
+ void getGnSaleSHRec(JSONObject requestJson);
+ /**
+ *
+ * @content 获取慧经营售中数据
+ * @className: Administrator
+ * @author laborer
+ * @date 2025-08-28 10:42
+ *
+ */
+ void getGnSaleSZRec(JSONObject requestJson);
+/**
+ *
+ * @content 发送发货明细数据到U8C
+ * so08一推到底
+ * @className: Administrator
+ * @author laborer
+ * @date 2025-09-03 9:04
+ *
+ */
+
+ void sendSaleOrderToU8c(JSONObject requestJson);
+/**
+ *
+ * @content 销售退货生成U8C数据
+ * @className: Administrator
+ * @author laborer
+ * @date 2025-09-04 16:50
+ *
+ */
+
+ void sendSaleRecToU8c(JSONObject requestJson);
}
diff --git a/fw-u8c/src/main/java/com/hzya/frame/u8c/gnsale/service/impl/GnSaleServiceImpl.java b/fw-u8c/src/main/java/com/hzya/frame/u8c/gnsale/service/impl/GnSaleServiceImpl.java
index c91b7c44..e5c85c4c 100644
--- a/fw-u8c/src/main/java/com/hzya/frame/u8c/gnsale/service/impl/GnSaleServiceImpl.java
+++ b/fw-u8c/src/main/java/com/hzya/frame/u8c/gnsale/service/impl/GnSaleServiceImpl.java
@@ -1,17 +1,34 @@
package com.hzya.frame.u8c.gnsale.service.impl;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.basedao.service.impl.BaseService;
import com.hzya.frame.sysnew.comparison.service.impl.ComparisonServiceImpl;
import com.hzya.frame.u8c.gnsale.service.IGnSaleService;
+import com.hzya.frame.u8c.gnsale.util.HjyUtil;
+import com.hzya.frame.u8c.hwsale.dao.IHwsaleDao;
+import com.hzya.frame.u8c.util.U8cHttpUtil;
import com.hzya.frame.web.entity.BaseEntity;
+import com.qimencloud.api.DefaultQimenCloudClient;
+import com.qimencloud.api.QimenCloudRequest;
+import com.qimencloud.api.QimenCloudResponse;
+import com.taobao.api.ApiException;
+import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import java.util.Map;
-import java.util.TreeMap;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+import static com.hzya.frame.u8c.gnsale.util.HjyUtil.sign;
+import static com.hzya.frame.u8c.hwsale.util.HwUtil.sid;
/**
* (BdInvmandoc)表服务实现类
@@ -23,15 +40,17 @@ import java.util.TreeMap;
public class GnSaleServiceImpl extends BaseService implements IGnSaleService {
@Autowired
private ComparisonServiceImpl comparisonServiceimpl;
+ @Autowired
+ private IHwsaleDao hwsaleDao;
private JSONObject bdGnDispatch(Object item) {
JSONObject data = (JSONObject) item;
//组装表头参数
- JSONArray orders = data.getJSONArray("orders");
+// JSONArray orders = data.getJSONArray("orders");
JSONObject jsonObjectUser = new JSONObject();
JSONObject jsonStr = new JSONObject();
- jsonObjectUser.put("data_id", data.get("data_id"));
+ jsonObjectUser.put("data_id", data.get("detailId"));
jsonObjectUser.put("mdmCode", "10001");
jsonStr.put("jsonStr", jsonObjectUser);
//先查询编码和名称查询是否存在
@@ -45,47 +64,35 @@ public class GnSaleServiceImpl extends BaseService implement
mainObject.put("mdmCode", "10004");
mainObject.put("optionName", "数智中台");
JSONObject gn_dispatch = new JSONObject();
- gn_dispatch.put("data_id", data.getString("detailId"));//明细唯一id
- gn_dispatch.put("detail_id", data.getString("detailId"));//明细唯一id
- gn_dispatch.put("shop_no", data.getString("shopNo"));//店铺编码
- gn_dispatch.put("shop_name", data.getString("shopName"));//店铺名称
- gn_dispatch.put("spec_no", data.getString("specNo"));//商品编码
- gn_dispatch.put("reco_status", data.getString("recoStatus"));//对账状态(对账成功/对账失败)
- gn_dispatch.put("warehouse_no", data.getString("warehouseNo"));//仓库编码
- gn_dispatch.put("warehouse_name", data.getString("warehouseName"));//仓库名称
- gn_dispatch.put("business_time", data.getString("businessTime"));//业务日期,发货口径对账则为发货日期,收货口径对账则为完成日期
- gn_dispatch.put("period_start_date", data.getString("periodStartDate"));//账期开始日期
- gn_dispatch.put("period_end_date", data.getString("periodEndDate"));//账期结束日期
- gn_dispatch.put("summary_no", data.getString("summaryNo"));//汇总单号
- gn_dispatch.put("plat_order_no", data.getString("platOrderNo"));//平台订单号
- gn_dispatch.put("plat_sub_no", data.getString("platSubNo"));//平台子订单号
- gn_dispatch.put("sys_order_no", data.getString("sysOrderNo"));//系统订单号
- gn_dispatch.put("oms_stockout_no", data.getString("omsStockoutNo"));//销售出库单号
- gn_dispatch.put("oms_refund_no", data.getString("omsRefundNo"));//退单号
- gn_dispatch.put("original_order_no", data.getString("originalOrderNo"));//平台订单号[未处理](对于手工订单/退单,慧经营会默认截取单号后缀,如7198371239874-1,截取后订单号为7198371239874,此列展示7198371239874-1)
- gn_dispatch.put("reco_time", data.getString("recoTime"));//对账时间,对账执行时间
- gn_dispatch.put("salesman_name", data.getString("salesmanName"));//业务员名称
- gn_dispatch.put("fenxiao_nick", data.getString("fenxiaoNick"));//分销商昵称
- gn_dispatch.put("goods_no", data.getString("goodsNo"));//货品编码
- gn_dispatch.put("goods_name", data.getString("goodsName"));//货品名称
- gn_dispatch.put("goods_batch_no", data.getString("goodsBatchNo"));//货品批次号
- gn_dispatch.put("gift_type", data.getString("giftType"));//赠品(是/否)
- gn_dispatch.put("erp_order_type", data.getString("erpOrderType"));//订单类型(网店销售、线下零售、售后换货、批发业务、保修换新、保修完成、订单补发、供销补发、自定义类型1-6、自定义属性7-8等)
- gn_dispatch.put("delivery_amount", data.getString("deliveryAmount"));//发货金额
- gn_dispatch.put("sqt_amount", data.getString("sqtAmount"));//售前退款金额,发货前退款金额
- gn_dispatch.put("szt_amount", data.getString("sztAmount"));//售中退款金额,发货后确认收货前退款金额
- gn_dispatch.put("sz_refund_only_amount", data.getString("szRefundOnlyAmount"));//售中仅退款金额
- gn_dispatch.put("sz_refund_return_amount", data.getString("szRefundReturnAmount"));//售中退货退款金额
- gn_dispatch.put("adjust_amount", data.getString("adjustAmount"));//调整单金额
- gn_dispatch.put("collection_amount", data.getString("collectionAmount"));//收款金额,最终账单实际收款金额
- gn_dispatch.put("diff_amount", data.getString("diffAmount"));//差异金额,计算公式:发货金额-售中退款金额+调整单金额-收款金额
- gn_dispatch.put("delivery_qty", data.getString("deliveryQty"));//发货数量
- gn_dispatch.put("refund_qty", data.getString("refundQty"));//售中预计退款数量
- gn_dispatch.put("return_qty", data.getString("returnQty"));//售中退货入库数量
- gn_dispatch.put("expect_qty", data.getString("expectQty"));//实际数量,计算公式:发货数量-售中退货入库数量
- gn_dispatch.put("share_post_amount", data.getString("sharePostAmount"));//邮费收入
- gn_dispatch.put("author_name", data.getString("authorName"));//达人名称
- gn_dispatch.put("sign_status", data.getString("signStatus"));//签收状态(已签收等)
+ gn_dispatch.put ("data_id", data.getString ("detailId"));// 明细唯一 id
+ gn_dispatch.put ("detail_id", data.getString ("detailId"));// 明细唯一 id
+ gn_dispatch.put ("shop_no", data.getString ("shopNo"));// 店铺编码
+ gn_dispatch.put ("shop_name", data.getString ("shopName"));// 店铺名称
+ gn_dispatch.put ("spec_no", data.getString ("specNo"));// 商品编码
+ gn_dispatch.put ("warehouse_no", data.getString ("warehouseNo"));// 仓库编码
+ gn_dispatch.put ("warehouse_name", data.getString ("warehouseName"));// 仓库名称
+ gn_dispatch.put ("business_time", data.getString ("businessTime"));// 业务日期,发货口径对账则为发货日期,收货口径对账则为完成日期
+ gn_dispatch.put ("summary_no", data.getString ("summaryNo"));// 汇总单号
+ gn_dispatch.put ("plat_order_no", data.getString ("platOrderNo"));// 平台订单号
+ gn_dispatch.put ("plat_sub_no", data.getString ("platSubNo"));// 平台子订单号
+ gn_dispatch.put ("oms_order_no", data.getString ("omsOrderNo"));// 系统订单号
+ gn_dispatch.put ("oms_stockout_no", data.getString ("omsStockoutNo"));// 出库单号
+ gn_dispatch.put ("original_order_no", data.getString ("originalOrderNo"));// 平台订单号 [未处理],手工订单 / 退单默认截取单号后缀(如 7198371239874-1 展示原单号)
+ gn_dispatch.put ("author_name", data.getString ("authorName"));// 达人名称
+ gn_dispatch.put ("salesman_name", data.getString ("salesmanName"));// 业务员名称
+ gn_dispatch.put ("fenxiao_nick", data.getString ("fenxiaoNick"));// 分销商昵称
+ gn_dispatch.put ("trade_label", data.getString ("tradeLabel"));// 订单标签
+ gn_dispatch.put ("cs_remark", data.getString ("csRemark"));// 客服备注
+ gn_dispatch.put ("goods_no", data.getString ("goodsNo"));// 货品编码
+ gn_dispatch.put ("goods_name", data.getString ("goodsName"));// 货品名称
+ gn_dispatch.put ("goods_batch_no", data.getString ("goodsBatchNo"));// 货品批次号
+ gn_dispatch.put ("gift_type", data.getString ("giftType"));// 赠品
+ gn_dispatch.put ("erp_order_type", data.getString ("erpOrderType"));// 订单类型,可选值:网店销售、线下零售、售后换货、批发业务、保修换新、保修完成、订单补发、供销补发、自定义类型 1-6、自定义属性 7-8
+ gn_dispatch.put ("delivery_amount", data.getString ("deliveryAmount"));// 发货金额
+ gn_dispatch.put ("share_post_amount", data.getString ("sharePostAmount"));// 邮费
+ gn_dispatch.put ("commission", data.getString ("commission"));// 佣金
+ gn_dispatch.put ("cost_price", data.getString ("costPrice"));// 总成本
+ gn_dispatch.put ("delivery_qty", data.getString ("deliveryQty"));// 发货数量
mainObject.put("gn_dispatch",gn_dispatch);
jsonStr.put("jsonStr",mainObject);
@@ -100,7 +107,7 @@ public class GnSaleServiceImpl extends BaseService implement
JSONArray orders = data.getJSONArray("orders");
JSONObject jsonObjectUser = new JSONObject();
JSONObject jsonStr = new JSONObject();
- jsonObjectUser.put("data_id", data.get("data_id"));
+ jsonObjectUser.put("data_id", data.get("summaryNo"));
jsonObjectUser.put("mdmCode", "10001");
jsonStr.put("jsonStr", jsonObjectUser);
//先查询编码和名称查询是否存在
@@ -140,7 +147,7 @@ public class GnSaleServiceImpl extends BaseService implement
JSONArray orders = data.getJSONArray("orders");
JSONObject jsonObjectUser = new JSONObject();
JSONObject jsonStr = new JSONObject();
- jsonObjectUser.put("data_id", data.get("data_id"));
+ jsonObjectUser.put("data_id", data.get("summaryNo"));
jsonObjectUser.put("mdmCode", "10001");
jsonStr.put("jsonStr", jsonObjectUser);
//先查询编码和名称查询是否存在
@@ -184,14 +191,14 @@ public class GnSaleServiceImpl extends BaseService implement
- private JSONObject bdGnReceipt(Object item) {
+ private JSONObject bdGnReceipt(Object item,String type) {
JSONObject data = (JSONObject) item;
//组装表头参数
JSONArray orders = data.getJSONArray("orders");
JSONObject jsonObjectUser = new JSONObject();
JSONObject jsonStr = new JSONObject();
- jsonObjectUser.put("data_id", data.get("data_id"));
- jsonObjectUser.put("mdmCode", "10001");
+ jsonObjectUser.put("data_id", data.get("detailId"));
+ jsonObjectUser.put("mdmCode", "10003");
jsonStr.put("jsonStr", jsonObjectUser);
//先查询编码和名称查询是否存在
Object attribute = comparisonServiceimpl.queryEntityPage(jsonStr);
@@ -201,9 +208,10 @@ public class GnSaleServiceImpl extends BaseService implement
JSONObject mainObject = new JSONObject();
mainObject.put("appName","数智中台");
mainObject.put("appCode","800004");
- mainObject.put("mdmCode", "10005");
+ mainObject.put("mdmCode", "10003");
mainObject.put("optionName", "数智中台");
JSONObject gn_receipt = new JSONObject();
+ gn_receipt.put("data_id", data.getString("detailId"));//明细唯一id
gn_receipt.put("detail_id", data.getString("detailId"));//明细唯一id
gn_receipt.put("shop_no", data.getString("shopNo"));//店铺编码
gn_receipt.put("shop_name", data.getString("shopName"));//店铺名称
@@ -230,7 +238,7 @@ public class GnSaleServiceImpl extends BaseService implement
gn_receipt.put("return_qty", data.getString("returnQty"));//退货入库数量,实际退货入库数量
gn_receipt.put("cost_price", data.getString("costPrice"));//总成本
gn_receipt.put("refund_qty", data.getString("refundQty"));//退款数量,申请退款数量
-
+ gn_receipt.put ("rec_type", type);// 退货类型
mainObject.put("gn_receipt",gn_receipt);
jsonStr.put("jsonStr",mainObject);
Object result = comparisonServiceimpl.saveEntity(jsonStr);
@@ -238,4 +246,772 @@ public class GnSaleServiceImpl extends BaseService implement
}
return data;
}
+ /**
+ *
+ * @content 获取慧经营发货明细
+ * @className: Administrator
+ * @author laborer
+ * @date 2025-08-28 9:08
+ *
+ */
+
+ @Override
+ public void getGNSaleOrder(JSONObject requestJson) {
+ String startDate = U8cHttpUtil.formatStartDate();
+ String endDate = U8cHttpUtil.formatEndDate();
+
+ JSONArray dataArr = new JSONArray();
+ String nextRequestId = "";
+ Map map = new HashMap<>();
+ QimenCloudRequest request = new QimenCloudRequest();
+ map.put("appId", HjyUtil.appId);
+ map.put("sid", HjyUtil.sid);
+ request.setApiMethodName(HjyUtil.deliveryApiName);
+ request.setTargetAppKey(HjyUtil.targetAppkey);
+ request.addQueryParam("appId", HjyUtil.appId);
+ request.addQueryParam("sid", HjyUtil.sid);
+
+ while (true){
+ map.put("startBusinessTime", startDate);
+ map.put("endBusinessTime", endDate);
+ if(StrUtil.isNotEmpty(nextRequestId)){
+ map.put("nextRequestId", nextRequestId);
+ }
+ String sign = "";
+ try {
+ sign = sign(map, HjyUtil.hjyAppKey);
+ boolean flag = HjyUtil.checkSign(map, HjyUtil.hjyAppKey, sign);
+ if (!flag) {
+ System.out.println("error");
+ } else {
+ System.out.println("ok");
+ }
+ request.addQueryParam("hjySign", sign);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ DefaultQimenCloudClient client = new DefaultQimenCloudClient(HjyUtil.baseUrl, HjyUtil.appKey, HjyUtil.appSecret, HjyUtil.format);
+
+ request.addQueryParam("startBusinessTime", startDate);
+ request.addQueryParam("endBusinessTime", endDate);
+ if(StrUtil.isNotEmpty(nextRequestId)){
+ request.addQueryParam("nextRequestId",nextRequestId);
+ }
+ QimenCloudResponse response = null;
+ try {
+ logger.info("发货明细请求参数"+JSON.toJSONString(request));
+ response = client.execute(request);
+// logger.info("发货明细返回数据数量"+JSON.toJSONString(response.getBody().length()));
+ //
+ JSONObject jsonObject = JSONObject.parseObject(response.getBody());
+ JSONObject responseObj = jsonObject.getJSONObject("response");
+ String resultCode = responseObj.getString("resultCode");
+ if("200".equals(resultCode)){
+ dataArr.addAll(responseObj.getJSONArray("data"));
+ nextRequestId = responseObj.getString("nextRequestId");
+ if("false".equals(nextRequestId)){
+ break;
+ }
+ }else {
+ logger.info("发货明细查询失败");
+ break;
+ }
+ } catch (ApiException e) {
+ e.printStackTrace();
+ break;
+ }
+ }
+ //如果数组不为空,将数据写入中台业务中心,先查询在写入,如果数据已经存在则直接跳过,反正写入中台业务中心
+// if(dataArr.size() >0){
+// dataArr.forEach(item -> {
+// JSONObject dataItem = bdGnDispatch(item);
+// });
+// }
+ //如果数组不为空,将数据写入中台业务中心,先查询在写入,如果数据已经存在则直接跳过,反正写入中台业务中心
+ if(dataArr.size() >0){
+// dataArr.forEach(item -> {
+// JSONObject dataItem = bdHwSaleParm(item);
+// });
+ if(dataArr.size()>500){
+ // 拆分为每批500条
+ List batches = U8cHttpUtil.splitIntoBatches(dataArr, 500);
+
+// 创建线程池,核心线程数根据CPU核心数设定,这里使用Runtime.getRuntime().availableProcessors()
+// 也可以根据实际情况调整,比如设置为固定数量如10
+ ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
+
+ // 提交所有批次任务到线程池
+ batches.forEach(batch -> {
+ executor.submit(() -> {
+ // 每个批次在单独的线程中处理
+ batch.forEach(item -> {
+ JSONObject dataItem = bdGnDispatch(item);
+ // 这里可以添加对dataItem的后续处理逻辑
+ });
+ return null;
+ });
+ });
+
+ // 关闭线程池,不再接受新任务
+ executor.shutdown();
+
+ try {
+ // 等待所有任务完成,设置超时时间防止无限等待
+ if (!executor.awaitTermination(60, TimeUnit.MINUTES)) {
+ // 超时后强制关闭
+ executor.shutdownNow();
+ }
+ } catch (InterruptedException e) {
+ executor.shutdownNow();
+ }
+ }else{
+ dataArr.forEach(item -> {
+ JSONObject dataItem = bdGnDispatch(item);
+ });
+ }
+ }
+ }
+/**
+ *
+ * @content 售后
+ * @className: Administrator
+ * @author laborer
+ * @date 2025-08-28 10:43
+ *
+ */
+
+ @Override
+ public void getGnSaleSHRec(JSONObject requestJson) {
+ String startDate = U8cHttpUtil.formatStartDate();
+ String endDate = U8cHttpUtil.formatEndDate();
+
+ JSONArray dataArr = new JSONArray();
+ String nextRequestId = "";
+ Map map = new HashMap<>();
+ QimenCloudRequest request = new QimenCloudRequest();
+ map.put("appId", HjyUtil.appId);
+ map.put("sid", HjyUtil.sid);
+ request.setApiMethodName(HjyUtil.shthApiName);
+ request.setTargetAppKey(HjyUtil.targetAppkey);
+ request.addQueryParam("appId", HjyUtil.appId);
+ request.addQueryParam("sid", HjyUtil.sid);
+
+ while (true){
+ map.put("startBusinessTime", startDate);
+ map.put("endBusinessTime", endDate);
+ if(StrUtil.isNotEmpty(nextRequestId)){
+ map.put("nextRequestId", nextRequestId);
+ }
+ String sign = "";
+ try {
+ sign = sign(map, HjyUtil.hjyAppKey);
+ boolean flag = HjyUtil.checkSign(map, HjyUtil.hjyAppKey, sign);
+ if (!flag) {
+ System.out.println("error");
+ } else {
+ System.out.println("ok");
+ }
+ request.addQueryParam("hjySign", sign);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ DefaultQimenCloudClient client = new DefaultQimenCloudClient(HjyUtil.baseUrl, HjyUtil.appKey, HjyUtil.appSecret, HjyUtil.format);
+
+ request.addQueryParam("startBusinessTime", startDate);
+ request.addQueryParam("endBusinessTime", endDate);
+ if(StrUtil.isNotEmpty(nextRequestId)){
+ request.addQueryParam("nextRequestId",nextRequestId);
+ }
+ QimenCloudResponse response = null;
+ try {
+ logger.info("售后退货请求"+JSON.toJSONString(request));
+ response = client.execute(request);
+// logger.info("发货明细返回数据数量"+JSON.toJSONString(response.getBody().length()));
+ //
+ JSONObject jsonObject = JSONObject.parseObject(response.getBody());
+ JSONObject responseObj = jsonObject.getJSONObject("response");
+ String resultCode = responseObj.getString("resultCode");
+ if("200".equals(resultCode)){
+ dataArr.addAll(responseObj.getJSONArray("data"));
+ nextRequestId = responseObj.getString("nextRequestId");
+ if("false".equals(nextRequestId)){
+ break;
+ }
+ }else {
+ logger.info("售后查询失败");
+ }
+ } catch (ApiException e) {
+ e.printStackTrace();
+ break;
+ }
+ }
+// //如果数组不为空,将数据写入中台业务中心,先查询在写入,如果数据已经存在则直接跳过,反正写入中台业务中心
+// if(dataArr.size() >0){
+// dataArr.forEach(item -> {
+// JSONObject dataItem = bdGnReceipt(item,"售后");
+// });
+// }
+ //如果数组不为空,将数据写入中台业务中心,先查询在写入,如果数据已经存在则直接跳过,反正写入中台业务中心
+ if(dataArr.size() >0){
+// dataArr.forEach(item -> {
+// JSONObject dataItem = bdHwSaleParm(item);
+// });
+ if(dataArr.size()>500){
+
+ // 拆分为每批500条
+ List batches = U8cHttpUtil.splitIntoBatches(dataArr, 500);
+
+// 创建线程池,核心线程数根据CPU核心数设定,这里使用Runtime.getRuntime().availableProcessors()
+// 也可以根据实际情况调整,比如设置为固定数量如10
+ ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
+
+ // 提交所有批次任务到线程池
+ batches.forEach(batch -> {
+ executor.submit(() -> {
+ // 每个批次在单独的线程中处理
+ batch.forEach(item -> {
+ JSONObject dataItem = bdGnReceipt(item,"售后");
+ // 这里可以添加对dataItem的后续处理逻辑
+ });
+ return null;
+ });
+ });
+
+ // 关闭线程池,不再接受新任务
+ executor.shutdown();
+
+ try {
+ // 等待所有任务完成,设置超时时间防止无限等待
+ if (!executor.awaitTermination(60, TimeUnit.MINUTES)) {
+ // 超时后强制关闭
+ executor.shutdownNow();
+ }
+ } catch (InterruptedException e) {
+ executor.shutdownNow();
+ }
+ }else{
+ dataArr.forEach(item -> {
+ JSONObject dataItem =bdGnReceipt(item,"售后");
+ });
+ }
+ }
+ }
+/**
+ *
+ * @content 售中
+ * @className: Administrator
+ * @author laborer
+ * @date 2025-08-28 10:43
+ *
+ */
+
+ @Override
+ public void getGnSaleSZRec(JSONObject requestJson) {
+ String startDate = U8cHttpUtil.formatStartDate();
+ String endDate = U8cHttpUtil.formatEndDate();
+
+ JSONArray dataArr = new JSONArray();
+ String nextRequestId = "";
+ Map map = new HashMap<>();
+ QimenCloudRequest request = new QimenCloudRequest();
+ map.put("appId", HjyUtil.appId);
+ map.put("sid", HjyUtil.sid);
+ request.setApiMethodName(HjyUtil.szthApiName);
+ request.setTargetAppKey(HjyUtil.targetAppkey);
+ request.addQueryParam("appId", HjyUtil.appId);
+ request.addQueryParam("sid", HjyUtil.sid);
+
+ while (true){
+ map.put("startBusinessTime", startDate);
+ map.put("endBusinessTime", endDate);
+ if(StrUtil.isNotEmpty(nextRequestId)){
+ map.put("nextRequestId", nextRequestId);
+ }
+ String sign = "";
+ try {
+ sign = sign(map, HjyUtil.hjyAppKey);
+ boolean flag = HjyUtil.checkSign(map, HjyUtil.hjyAppKey, sign);
+ if (!flag) {
+ System.out.println("error");
+ } else {
+ System.out.println("ok");
+ }
+ request.addQueryParam("hjySign", sign);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ DefaultQimenCloudClient client = new DefaultQimenCloudClient(HjyUtil.baseUrl, HjyUtil.appKey, HjyUtil.appSecret, HjyUtil.format);
+
+ request.addQueryParam("startBusinessTime", startDate);
+ request.addQueryParam("endBusinessTime", endDate);
+ if(StrUtil.isNotEmpty(nextRequestId)){
+ request.addQueryParam("nextRequestId",nextRequestId);
+ }
+ QimenCloudResponse response = null;
+ try {
+ logger.info("售中请求参数"+JSON.toJSONString(request));
+ response = client.execute(request);
+// logger.info("发货明细返回数据数量"+JSON.toJSONString(response.getBody().length()));
+ //
+ JSONObject jsonObject = JSONObject.parseObject(response.getBody());
+ JSONObject responseObj = jsonObject.getJSONObject("response");
+ String resultCode = responseObj.getString("resultCode");
+ if("200".equals(resultCode)){
+ dataArr.addAll(responseObj.getJSONArray("data"));
+ nextRequestId = responseObj.getString("nextRequestId");
+ if("false".equals(nextRequestId)){
+ break;
+ }
+ }else {
+ logger.info("售中查询失败");
+ }
+ } catch (ApiException e) {
+ e.printStackTrace();
+ break;
+ }
+ }
+// //如果数组不为空,将数据写入中台业务中心,先查询在写入,如果数据已经存在则直接跳过,反正写入中台业务中心
+// if(dataArr.size() >0){
+// dataArr.forEach(item -> {
+// JSONObject dataItem = bdGnReceipt(item,"售中");
+// });
+// }
+ //如果数组不为空,将数据写入中台业务中心,先查询在写入,如果数据已经存在则直接跳过,反正写入中台业务中心
+ if(dataArr.size() >0){
+// dataArr.forEach(item -> {
+// JSONObject dataItem = bdHwSaleParm(item);
+// });
+ if(dataArr.size()>500){
+
+ // 拆分为每批500条
+ List batches = U8cHttpUtil.splitIntoBatches(dataArr, 500);
+
+// 创建线程池,核心线程数根据CPU核心数设定,这里使用Runtime.getRuntime().availableProcessors()
+// 也可以根据实际情况调整,比如设置为固定数量如10
+ ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
+
+ // 提交所有批次任务到线程池
+ batches.forEach(batch -> {
+ executor.submit(() -> {
+ // 每个批次在单独的线程中处理
+ batch.forEach(item -> {
+ JSONObject dataItem = bdGnReceipt(item,"售中");
+ // 这里可以添加对dataItem的后续处理逻辑
+ });
+ return null;
+ });
+ });
+
+ // 关闭线程池,不再接受新任务
+ executor.shutdown();
+
+ try {
+ // 等待所有任务完成,设置超时时间防止无限等待
+ if (!executor.awaitTermination(60, TimeUnit.MINUTES)) {
+ // 超时后强制关闭
+ executor.shutdownNow();
+ }
+ } catch (InterruptedException e) {
+ executor.shutdownNow();
+ }
+ }else{
+ dataArr.forEach(item -> {
+ JSONObject dataItem =bdGnReceipt(item,"售中");
+ });
+ }
+ }
+ }
+
+ @Override
+ public void sendSaleOrderToU8c(JSONObject requestJson) {
+ BaseEntity entity = new BaseEntity();
+// entity.setDataSourceCode("ZT");
+ StringBuffer mainSql = new StringBuffer();
+ mainSql.append("select c.ntaxrate,a.erp_order_type,a.shop_no, a.shop_name, warehouse_no, ");
+ mainSql.append("b.project_code,b.project_name,b.project_type,b.project_acc,b.brand_code,b.brand_name,b.platform_code,b.platform_name,b.org_code,b.org_name,b.po_org_code,b.po_org_name ");
+ mainSql.append("from gn_dispatch a ");
+ mainSql.append("left join mdm_cost_project b on a.shop_no = b.shop_no ");
+ mainSql.append("left join mdm_orgs c on b.org_name = c.org_name ");
+ mainSql.append("where 1=1 and a.send_state is null and b.org_code is not null and erp_order_type in ('1','22','32') ");
+ mainSql.append("and b.project_code is not null and a.shop_no is not null and warehouse_no is not null and b.po_org_name is not null ");
+// mainSql.append("and b.org_code = 'SH010002' ");
+ mainSql.append("group by a.shop_no, a.shop_name,c.ntaxrate,a.erp_order_type,warehouse_no,b.project_code,b.project_name,b.project_type,b.project_acc,b.brand_code,b.brand_name,b.platform_code,b.platform_name,b.org_code,b.org_name,b.po_org_code,b.po_org_name ");
+ mainSql.append("limit 1 ");
+ try {
+ List> hashMaps = hwsaleDao.execSelectSql(mainSql.toString(),entity);
+ if(CollectionUtils.isNotEmpty(hashMaps)){
+
+ for (HashMap item : hashMaps) {
+// item.put("org_code", "SH010002");
+ //通过订单类型、店铺编码、仓库编码、项目编码、品牌编码、平台编码、销售主体编码、采购主体编码查询需要汇总的明细信息
+ StringBuffer detailSql = new StringBuffer();
+ detailSql.append("select * from ( ");
+ detailSql.append("select c.ntaxrate,a.erp_order_type,sum(a.delivery_amount) as delivery_amount,a.shop_no, a.shop_name, a.spec_no, a.goods_no, a.goods_name, sum(a.delivery_qty) as delivery_qty,warehouse_no, ");
+ detailSql.append("b.project_code,b.project_name,b.project_type,b.project_acc,b.brand_code,b.brand_name,b.platform_code,b.platform_name,b.org_code,b.org_name,b.shop_no as shop_no_new,b.shop_name as shop_name_new,b.po_org_code,b.po_org_name ");
+ detailSql.append("from gn_dispatch a ");
+ detailSql.append("left join mdm_cost_project b on a.shop_no = b.shop_no ");
+ detailSql.append("left join mdm_orgs c on b.org_name = c.org_name ");
+ detailSql.append("where 1=1 and a.send_state is null and b.org_code is not null ");
+ detailSql.append("group by c.ntaxrate,a.erp_order_type,a.shop_no, a.shop_name, a.spec_no, a.goods_no, a.goods_name, ");
+ detailSql.append("warehouse_no,b.project_code,b.project_name,b.project_type,b.project_acc,b.brand_code,b.brand_name,b.platform_code,b.platform_name,b.org_code,b.org_name,b.shop_no,b.shop_name,b.po_org_code,b.po_org_name ");
+ detailSql.append(")m1 ");
+ detailSql.append("where shop_no = '"+item.get("shop_no")+"' ");
+ detailSql.append("and erp_order_type = '"+item.get("erp_order_type")+"' ");
+ detailSql.append("and warehouse_no = '"+item.get("warehouse_no")+"' ");
+ detailSql.append("and project_code = '"+item.get("project_code")+"' ");
+ if(StrUtil.isNotEmpty(String.valueOf(item.get("brand_code")))){
+ detailSql.append("and brand_code = '"+item.get("brand_code")+"' ");
+ }
+ if(StrUtil.isNotEmpty(String.valueOf(item.get("platform_code")))) {
+ detailSql.append("and platform_code = '"+item.get("platform_code")+"' ");
+ }
+ detailSql.append("and org_code = '"+item.get("org_code")+"' ");
+ detailSql.append("and po_org_code = '"+item.get("po_org_code")+"' ");
+ List> detailsHashMaps = hwsaleDao.execSelectSql(detailSql.toString(),entity);
+ //map转json
+ JSONObject jsonObject = new JSONObject(item);
+ if(CollectionUtils.isNotEmpty(detailsHashMaps)){
+ jsonObject.put("orders",detailsHashMaps);
+ }else{
+ continue;
+ }
+ jsonObject.put("org_code", "SH010002");
+ //根据订单类型走不同的业务逻辑
+ String erpOrderType = String.valueOf(item.get("erp_order_type"));
+
+
+ StringBuffer errorMsg = new StringBuffer();
+ //猜测 1是正常订单2是补发订单3是换货订单
+ boolean flag = true;
+ String billNo = "";
+ switch (erpOrderType){
+ case "1":
+ billNo = saleOrder(jsonObject);
+ break;
+ case "2":
+ billNo = reissueOrder(jsonObject);
+ break;
+ case "3":
+ billNo = exchangeOrder(jsonObject);
+ break;
+ default:
+ break;
+ }
+
+ String sendState = "";
+ if(StrUtil.isNotEmpty(billNo)){
+ sendState = "Y";
+ }else{
+ sendState = "N";
+ }
+ String updateSql = "update gn_dispatch set send_state = '"+sendState+"' ,u8c_bill_no = '"+billNo+"'"+
+ "where shop_no = '"+item.get("shop_no")+"' " +
+ "and erp_order_type = '"+item.get("erp_order_type")+"' " +
+ "and warehouse_no = '"+item.get("warehouse_no")+"' " ;
+// "and spec_no = '"+item.get("spec_no")+"' " ;
+ try {
+ hwsaleDao.execUpdateSql(updateSql,new BaseEntity());
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public void sendSaleRecToU8c(JSONObject requestJson) {
+ BaseEntity entity = new BaseEntity();
+// entity.setDataSourceCode("ZT");
+ StringBuffer stringBuffer = new StringBuffer();
+ stringBuffer.append("select a.shop_no,a.shop_name,a.warehouse_no,a.warehouse_name,a.refund_type,a.erp_order_type,sum(a.refundable_amount)as refundable_amount,sum(a.refund_qty)as refund_qty , ");
+ stringBuffer.append("b.project_code,b.project_name,b.project_type,b.project_acc,b.brand_code,b.brand_name,b.platform_code,b.platform_name,b.org_code,b.org_name,b.shop_no as shop_no_new,b.shop_name as shop_name_new,b.po_org_code,b.po_org_name ");
+ stringBuffer.append("from gn_receipt a ");
+ stringBuffer.append("left join mdm_cost_project b on a.shop_no = b.shop_no ");
+ stringBuffer.append("left join mdm_orgs c on b.org_name = c.org_name ");
+ stringBuffer.append("where a.erp_order_type ='1' and b.org_code is not null and a.send_state is null ");
+ stringBuffer.append("and refund_type = '退货退款' ");
+ stringBuffer.append("GROUP BY a.shop_no,a.shop_name,a.warehouse_no,a.warehouse_name,a.refund_type,a.erp_order_type, ");
+ stringBuffer.append("b.project_code,b.project_name,b.project_type,b.project_acc,b.brand_code,b.brand_name,b.platform_code,b.platform_name,b.org_code,b.org_name,b.shop_no ,b.shop_name ,b.po_org_code,b.po_org_name ");
+ stringBuffer.append("limit 1 ");
+ try {
+ List> hashMaps = hwsaleDao.execSelectSql(stringBuffer.toString(),entity);
+ if(CollectionUtils.isNotEmpty(hashMaps)){
+
+ for (HashMap item : hashMaps) {
+//
+ //通过订单类型、店铺编码、仓库编码、项目编码、品牌编码、平台编码、销售主体编码、采购主体编码查询需要汇总的明细信息
+ StringBuffer detailSql = new StringBuffer();
+ detailSql.append("select * from ( ");
+ detailSql.append("select a.shop_no,a.shop_name,a.spec_no,a.warehouse_no,a.warehouse_name,a.refund_type,a.goods_no,a.goods_name,a.erp_order_type,sum(a.refundable_amount)as delivery_amount,sum(a.refund_qty)as delivery_qty , ");
+ detailSql.append("b.project_code,b.project_name,b.project_type,b.project_acc,b.brand_code,b.brand_name,b.platform_code,b.platform_name,b.org_code,b.org_name,b.shop_no as shop_no_new,b.shop_name as shop_name_new,b.po_org_code,b.po_org_name ");
+ detailSql.append("from gn_receipt a ");
+ detailSql.append("left join mdm_cost_project b on a.shop_no = b.shop_no ");
+ detailSql.append("left join mdm_orgs c on b.org_name = c.org_name ");
+ detailSql.append("where a.erp_order_type ='1' and b.org_code is not null and a.send_state is null ");
+ detailSql.append("GROUP BY a.shop_no,a.shop_name,a.spec_no,a.warehouse_no,a.warehouse_name,a.refund_type,a.goods_no,a.goods_name,a.erp_order_type, ");
+ detailSql.append("b.project_code,b.project_name,b.project_type,b.project_acc,b.brand_code,b.brand_name,b.platform_code,b.platform_name,b.org_code,b.org_name,b.shop_no ,b.shop_name ,b.po_org_code,b.po_org_name ");
+ detailSql.append(")m1 ");
+ detailSql.append("where shop_no = '"+item.get("shop_no")+"' ");
+ detailSql.append("and erp_order_type = '"+item.get("erp_order_type")+"' ");
+ detailSql.append("and warehouse_no = '"+item.get("warehouse_no")+"' ");
+ detailSql.append("and project_code = '"+item.get("project_code")+"' ");
+ if(StrUtil.isNotEmpty(String.valueOf(item.get("brand_code")))){
+ detailSql.append("and brand_code = '"+item.get("brand_code")+"' ");
+ }
+ if(StrUtil.isNotEmpty(String.valueOf(item.get("platform_code")))) {
+ detailSql.append("and platform_code = '"+item.get("platform_code")+"' ");
+ }
+ detailSql.append("and org_code = '"+item.get("org_code")+"' ");
+ detailSql.append("and po_org_code = '"+item.get("po_org_code")+"' ");
+ detailSql.append("and refund_type = '"+item.get("refund_type")+"' ");
+ List> detailsHashMaps = hwsaleDao.execSelectSql(detailSql.toString(),entity);
+ //map转json
+ JSONObject jsonObject = new JSONObject(item);
+ if(CollectionUtils.isNotEmpty(detailsHashMaps)){
+ jsonObject.put("orders",detailsHashMaps);
+ }else{
+ continue;
+ }
+ item.put("org_code", "SH010002");
+ //根据退款类型走不同的业务逻辑
+ String refund_type = String.valueOf(item.get("refund_type"));
+
+
+ StringBuffer errorMsg = new StringBuffer();
+ //退货退款 先走红字收款 再走红字订单
+ boolean flag = true;
+ String billNo = "";
+ billNo = refund(item,refund_type);
+ String sendState = "";
+ if(StrUtil.isNotEmpty(billNo)){
+ sendState = "Y";
+ }else{
+ sendState = "N";
+ }
+ String updateSql = "update gn_receipt set send_state = '"+sendState+"' ,u8c_bill_no = '"+billNo+"'"+
+ "where shop_no = '"+item.get("shop_no")+"' " +
+ "and erp_order_type = '"+item.get("erp_order_type")+"' " +
+ "and warehouse_no = '"+item.get("warehouse_no")+"' " +
+ "and refund_type = '"+item.get("refund_type")+"' " ;
+ try {
+ hwsaleDao.execUpdateSql(updateSql,new BaseEntity());
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private String refund(HashMap item,String recTpye) {
+ String billNo = "";
+ boolean flag = true;
+ String refundable_amount = String.valueOf(item.get("refundable_amount"));
+ String refund_qty = String.valueOf(item.get("refund_qty"));
+ BigDecimal delivery_amount_bd = new BigDecimal(refundable_amount).divide(new BigDecimal(refund_qty),2, BigDecimal.ROUND_HALF_UP);
+ item.put("delivery_amount_bd",delivery_amount_bd);
+ item.put("delivery_qty",refund_qty);
+ JSONObject jsonObject = new JSONObject(item);
+ JSONObject resultSaleTc = bdU8cSaleRecParm(jsonObject,"8000050001","2");
+ String status = resultSaleTc.getString("status");
+ if("success".equals(status)){
+ JSONArray dataArr = resultSaleTc.getJSONArray("data");
+ JSONObject data = dataArr.getJSONObject(0);
+ JSONObject parentvo = data.getJSONObject("parentvo");
+ billNo = parentvo.getString("djbh");
+ //判断,如果是退货退款 在生产红字收款单的同时 在生成红字销售单
+ if("退货退款".equals(recTpye)){
+ JSONObject resultSaleTb = U8cHttpUtil.bdU8cBlueSaleOrderParm(jsonObject,"8000050000","1","1","1");
+ status = resultSaleTb.getString("status");
+ if(!"success".equals(status)){
+ flag = false;
+ }else{
+ JSONArray dataArra = resultSaleTb.getJSONArray("data");
+ JSONObject dataa = dataArra.getJSONObject(0);
+ JSONObject parentvoa = dataa.getJSONObject("parentvo");
+ billNo += parentvoa.getString("vreceiptcode");
+
+ }
+ }
+ }
+ return billNo;
+ }
+/**
+ *
+ * @content单据类型 1蓝字 2红字
+ * @className: Administrator
+ * @author laborer
+ * @date 2025-09-05 13:59
+ *
+ */
+
+ private JSONObject bdU8cSaleRecParm(JSONObject jsonObject, String apiCode, String billType) {
+ JSONObject main = new JSONObject();
+ JSONObject billvo = new JSONObject();
+ JSONObject parentvo = new JSONObject();
+ JSONArray childrenvo = new JSONArray();
+
+ parentvo.put("djrq", DateUtil.format(new Date(),"yyyy-MM-dd"));//单据日期
+ parentvo.put("dwbm",jsonObject.get("org_code"));//单位编码
+ parentvo.put("hbbm",jsonObject.get("project_code"));//客商
+ parentvo.put("lrr","17633965916");//录入人
+ parentvo.put("shr","17633965916");//审核人
+ parentvo.put("shrq",DateUtil.format(new Date(),"yyyy-MM-dd"));//审核日期
+ JSONArray orders = jsonObject.getJSONArray("orders");
+ for(Object order : orders) {
+ String dataStr = JSON.toJSONString(order);
+ JSONObject data = JSONObject.parseObject(dataStr);
+ JSONObject item = new JSONObject();
+ if("2".equals(billType)){
+ item.put("dfybje",data.getBigDecimal("delivery_amount").subtract(data.getBigDecimal("delivery_amount").add(data.getBigDecimal("delivery_amount"))));//原币金额
+ }
+
+ item.put("wldx","0");//往来对象标识(0 客户 1供应商 2部门 3业务员 )
+ childrenvo.add( item);
+ }
+
+ billvo.put("children",childrenvo);
+ billvo.put("parentvo",parentvo);
+ main.put("billvo",billvo);
+ logger.info("开始执行收款单请求参数"+main.toJSONString());
+ return U8cHttpUtil.sendDataTOU8CEsb(main.toJSONString(),apiCode);
+ }
+
+ private String exchangeOrder(JSONObject item) {
+ //todo 售后换货需要先生成红字销售订单在生成蓝字销售订单
+ //先生成红字销售订单
+ String billNo = "";
+ boolean flag = true;
+
+ JSONObject resultSaleTc = U8cHttpUtil.bdU8cBlueSaleOrderParm(item,"8000050000","1","4","1");
+ String status = resultSaleTc.getString("status");
+ if(!"success".equals(status)){
+ flag = false;
+ }else{
+ JSONArray dataArr = resultSaleTc.getJSONArray("data");
+ JSONObject data = dataArr.getJSONObject(0);
+ JSONObject parentvo = data.getJSONObject("parentvo");
+ billNo = parentvo.getString("vreceiptcode");
+
+ }
+ //在生成蓝字销售订单
+ if(flag) {
+ JSONObject resultSaleTb = U8cHttpUtil.bdU8cBlueSaleOrderParm(item,"8000050000","1","1","1");
+ status = resultSaleTb.getString("status");
+ if(!"success".equals(status)){
+ flag = false;
+ }else{
+ JSONArray dataArr = resultSaleTb.getJSONArray("data");
+ JSONObject data = dataArr.getJSONObject(0);
+ JSONObject parentvo = data.getJSONObject("parentvo");
+ billNo += parentvo.getString("vreceiptcode");
+
+ }
+ }
+ return billNo;
+ }
+
+ private String reissueOrder(JSONObject item) {
+ //补发订单生成赠品销售订单
+ String billNo = "";
+ boolean flag = true;
+ JSONObject resultSaleTc = U8cHttpUtil.bdU8cBlueSaleOrderParm(item,"8000050000","1","2","1");
+ String status = resultSaleTc.getString("status");
+ if("success".equals(status)){
+ JSONArray dataArr = resultSaleTc.getJSONArray("data");
+ JSONObject data = dataArr.getJSONObject(0);
+ JSONObject parentvo = data.getJSONObject("parentvo");
+ billNo = parentvo.getString("vreceiptcode");
+ }
+
+ //在生成销售公司向库存公司的采购订单
+ if(flag){
+ JSONObject resultPoTb = U8cHttpUtil.bdU8cBluePoOrderParm(item,"8000050004","2");
+ status = resultPoTb.getString("status");
+ if(!"success".equals(status)){
+ flag = false;
+ }else{
+ JSONArray dataArr = resultPoTb.getJSONArray("data");
+ JSONObject data = dataArr.getJSONObject(0);
+ JSONObject parentvo = data.getJSONObject("parentvo");
+ billNo += parentvo.getString("vordercode");
+
+ }
+ }
+
+ //在生成库存公司向销售公司的销售订单
+ if(flag) {
+ JSONObject resultSaleTb = U8cHttpUtil.bdU8cBlueSaleOrderParm(item,"8000050000","3","1","");
+ status = resultSaleTb.getString("status");
+ if(!"success".equals(status)){
+ flag = false;
+ }else{
+ JSONArray dataArr = resultSaleTb.getJSONArray("data");
+ JSONObject data = dataArr.getJSONObject(0);
+ JSONObject parentvo = data.getJSONObject("parentvo");
+ billNo += parentvo.getString("vreceiptcode");
+
+ }
+ }
+ return billNo;
+ }
+
+ private String saleOrder(JSONObject item) {
+ //todo 因为涉及到公司内部交易,需要生成不同的单据 销售公司的销售订单,销售公司向生产公司的采购订单、生成公司向销售公司的销售订单
+ //先生成销售公司的销售订单
+ String billNo = "";
+ boolean flag = true;
+
+ JSONObject resultSaleTc = U8cHttpUtil.bdU8cBlueSaleOrderParm(item,"8000050000","1","1","");
+ String status = resultSaleTc.getString("status");
+ if(!"success".equals(status)){
+ flag = false;
+ }else{
+ JSONArray dataArr = resultSaleTc.getJSONArray("data");
+ JSONObject data = dataArr.getJSONObject(0);
+ JSONObject parentvo = data.getJSONObject("parentvo");
+ billNo += parentvo.getString("vreceiptcode");
+
+ }
+
+ //在生成销售公司向库存公司的采购订单
+ if(flag){
+ JSONObject resultPoTb = U8cHttpUtil.bdU8cBluePoOrderParm(item,"8000050004","2");
+ status = resultPoTb.getString("status");
+ if(!"success".equals(status)){
+ flag = false;
+ }else{
+ JSONArray dataArr = resultPoTb.getJSONArray("data");
+ JSONObject data = dataArr.getJSONObject(0);
+ JSONObject parentvo = data.getJSONObject("parentvo");
+ billNo += parentvo.getString("vordercode");
+
+ }
+ }
+
+ //在生成库存公司向销售公司的销售订单
+ if(flag) {
+ JSONObject resultSaleTb = U8cHttpUtil.bdU8cBlueSaleOrderParm(item,"8000050000","3","1","");
+ status = resultSaleTb.getString("status");
+ if(!"success".equals(status)){
+ flag = false;
+ }else{
+ JSONArray dataArr = resultSaleTb.getJSONArray("data");
+ JSONObject data = dataArr.getJSONObject(0);
+ JSONObject parentvo = data.getJSONObject("parentvo");
+ billNo += parentvo.getString("vreceiptcode");
+
+ }
+ }
+ return billNo;
+ }
+
+
+
+
}
diff --git a/fw-u8c/src/main/java/com/hzya/frame/u8c/gnsale/util/HjyUtil.java b/fw-u8c/src/main/java/com/hzya/frame/u8c/gnsale/util/HjyUtil.java
index a3379f38..e80499ee 100644
--- a/fw-u8c/src/main/java/com/hzya/frame/u8c/gnsale/util/HjyUtil.java
+++ b/fw-u8c/src/main/java/com/hzya/frame/u8c/gnsale/util/HjyUtil.java
@@ -2,6 +2,11 @@ package com.hzya.frame.u8c.gnsale.util;
import cn.hutool.http.HttpRequest;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Arrays;
import java.util.Map;
/**
@@ -12,35 +17,86 @@ import java.util.Map;
*/
public class HjyUtil {
- public static final String baseUrl = "https://openapi.qizhishangke.com";
- public static final String appkey = "2aa6ce6a155fdceebec72edec9c7abf8";
- /**
- *
- * @content 参数加密
- * @className: Administrator
- * @author laborer
- * @date 2025-08-14 13:25
- *
- */
+ public static final String baseUrl = "http://332wh0cyoi.api.taobao.com/router/qm";
+ public static String slipt = ":";
+ public static String link = "&";
+ public static String appKey = "34176866";
+ public static String hjyAppKey = "5eff199a9de8e25b4968c7219e6c13b5bc558d2b";
+ public static String appSecret = "c44b90d3ba99d6d88df095f231d45fbe";
+ public static String appId = "04c6d000efc84a10bf442236fdec291f";
+ public static String sid = "jss3";
+ public static String targetAppkey = "21363512";
+ public static String format = "JSON";
+ //发货明细接口
+ public static String deliveryApiName = "wdt.hjy.recon.delivery.detail.query";
+ //售中
+ public static String szthApiName = "wdt.hjy.recon.sztdetail.query";
+ //售后
+ public static String shthApiName = "wdt.hjy.recon.shtdetail.query";
- public static String linkParams(Map map, String secret) {
- StringBuilder sb = new StringBuilder();
- sb.append(secret);
- for (Map.Entry item : map.entrySet())
- {
- if (item.getKey().equals("sign"))
- continue;
- sb.append(item.getKey());
- sb.append(item.getValue());
- }
- sb.append(secret);
- return sb.toString();
+ /**
+ * 获取签名-慧经营开发平台
+ *
+ * @param params
+ * @param appKey
+ * @return
+ * @throws IOException
+ */
+ public static String sign(Map params, String appKey) throws IOException {
+ StringBuilder sb = new StringBuilder(getParamStrFromMap(params));
+ sb.append(appKey);
+ String sbStr = sb.toString().replace("\"", "");
+ sbStr = sbStr.replace(" ", "");
+ String md5 = md5Hex(sbStr);
+ System.out.println("带验签的参数 sbT:"+sbStr);
+ return md5.toLowerCase();
}
- public static String doPost(String parm,String url){
- String result = HttpRequest.post(url)
- .body(parm)//表单内容
- .timeout(20000)//超时,毫秒
- .execute().body();
- return result;
+ private static String getParamStrFromMap(Map params) {
+ StringBuilder sb = new StringBuilder();
+ if (params != null && !params.isEmpty()) {
+ String[] keys = params.keySet().toArray(new String[0]);
+ Arrays.sort(keys);
+ for (int i = 0; i < keys.length; ++i) {
+ String name = keys[i];
+ sb.append(name);
+ sb.append(slipt);
+ sb.append(params.get(name));
+ sb.append(link);
+ }
+ }
+ String substring = sb.substring(0, sb.length() - 1);
+ return substring;
+ }
+ public static String md5Hex(String message) {
+ try {
+ MessageDigest md = MessageDigest.getInstance("MD5");
+ return hex(md.digest(message.getBytes("UTF-8")));
+ } catch (NoSuchAlgorithmException var2) {
+ } catch (UnsupportedEncodingException var3) {
+ }
+ return null;
+ }
+ public static String hex(byte[] array) {
+ StringBuffer sb = new StringBuffer();
+
+ for (int i = 0; i < array.length; ++i) {
+ sb.append(Integer.toHexString(array[i] & 255 | 256).substring(1, 3));
+ }
+
+ return sb.toString();
+ }
+ public static boolean checkSign(Map params, String appKey, String remoteSign) {
+ try {
+ params.remove("sign");
+ params.remove("hjySign");
+ String localSign = sign(params, appKey);
+ System.out.println("根据远程调用的请求参数生成的签名:"+localSign);
+ if (localSign.equals(remoteSign)) {
+ return true;
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return false;
}
}
diff --git a/fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/dao/IHwsaleDao.java b/fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/dao/IHwsaleDao.java
new file mode 100644
index 00000000..ffbef3e6
--- /dev/null
+++ b/fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/dao/IHwsaleDao.java
@@ -0,0 +1,31 @@
+package com.hzya.frame.u8c.hwsale.dao;
+
+import com.hzya.frame.basedao.dao.IBaseDao;
+import com.hzya.frame.web.entity.BaseEntity;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ *
+ * @content 销售发票
+ * @className: Administrator
+ * @author laborer
+ * @date 2024-10-18 9:27
+ *
+ */
+public interface IHwsaleDao extends IBaseDao {
+
+
+ /**
+ *
+ * @content 通用获取OA数据接口
+ * @author laborer
+ * @date 2024/7/10 0010 16:06
+ *
+ */
+
+ List> execSelectSql(String str , BaseEntity entity)throws Exception;
+ int execUpdateSql(String str , BaseEntity entity)throws Exception;
+ int execInsertSql(String str , BaseEntity entity)throws Exception;
+}
diff --git a/fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/dao/impl/HwsaleDaoImpl.java b/fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/dao/impl/HwsaleDaoImpl.java
new file mode 100644
index 00000000..5b3b0730
--- /dev/null
+++ b/fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/dao/impl/HwsaleDaoImpl.java
@@ -0,0 +1,42 @@
+package com.hzya.frame.u8c.hwsale.dao.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.hzya.frame.basedao.dao.MybatisGenericDao;
+import com.hzya.frame.execsql.service.IExecSqlService;
+import com.hzya.frame.u8c.hwsale.dao.IHwsaleDao;
+import com.hzya.frame.web.entity.BaseEntity;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ *
+ * @content 销售发票
+ * @className: Administrator
+ * @author laborer
+ * @date 2024-10-18 9:27
+ *
+ */
+@Repository(value = "SaleInvDaoImpl")
+public class HwsaleDaoImpl extends MybatisGenericDao implements IHwsaleDao {
+ @Autowired
+ private IExecSqlService execSqlService;
+
+ @DS("#entity.dataSourceCode")
+ @Override
+ public List> execSelectSql(String str, BaseEntity entity)throws Exception {
+ return execSqlService.execSelectSql(str, entity.getDataSourceCode());
+ }
+ @DS("#entity.dataSourceCode")
+ @Override
+ public int execUpdateSql(String str, BaseEntity entity) throws Exception {
+ return execSqlService.execUpdateSql(str, entity.getDataSourceCode());
+ }
+ @DS("#entity.dataSourceCode")
+ @Override
+ public int execInsertSql(String str, BaseEntity entity) throws Exception {
+ return execSqlService.execInsertSql(str, entity.getDataSourceCode());
+ }
+}
diff --git a/fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/service/IHwSaleService.java b/fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/service/IHwSaleService.java
index cad1f32d..5ab8c20c 100644
--- a/fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/service/IHwSaleService.java
+++ b/fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/service/IHwSaleService.java
@@ -2,9 +2,13 @@ package com.hzya.frame.u8c.hwsale.service;
import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.basedao.service.IBaseService;
+import com.hzya.frame.mdm.mdmModuleSource.entity.MdmModuleSourceEntity;
import com.hzya.frame.u8c.Invmandoc.entity.BdInvmandocEntity;
import com.hzya.frame.web.entity.BaseEntity;
+import java.util.HashMap;
+import java.util.List;
+
/**
* (BdInvmandoc)表服务接口
*
@@ -26,4 +30,23 @@ public interface IHwSaleService extends IBaseService {
* @return 实例对象
*/
void getHwSaleRec(JSONObject requestJson);
+/**
+ *
+ * @content 抓取海外订单数据推送U8C
+ * @className: Administrator
+ * @author laborer
+ * @date 2025-08-26 11:17
+ *
+ */
+
+ void getHwSaleOrderToU8c(JSONObject requestJson);
+ /**
+ *
+ * @content 抓取海外销售退货数据推送U8C
+ * @className: Administrator
+ * @author laborer
+ * @date 2025-08-26 11:17
+ *
+ */
+ void getHwSaleRecToU8c(JSONObject requestJson)throws Exception;
}
diff --git a/fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/service/impl/HwSaleServiceImpl.java b/fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/service/impl/HwSaleServiceImpl.java
index db5b2394..3f81f3c3 100644
--- a/fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/service/impl/HwSaleServiceImpl.java
+++ b/fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/service/impl/HwSaleServiceImpl.java
@@ -1,25 +1,37 @@
package com.hzya.frame.u8c.hwsale.service.impl;
+import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.UUID;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
+import com.baomidou.dynamic.datasource.annotation.DS;
import com.hzya.frame.basedao.service.impl.BaseService;
+import com.hzya.frame.execsql.entity.ExecSqlEntity;
+import com.hzya.frame.execsql.service.IExecSqlService;
+import com.hzya.frame.mdm.mdmModuleSource.entity.MdmModuleSourceEntity;
import com.hzya.frame.sysnew.comparison.service.impl.ComparisonServiceImpl;
import com.hzya.frame.u8c.Invmandoc.dao.IBdInvmandocDao;
import com.hzya.frame.u8c.Invmandoc.entity.BdInvmandocEntity;
import com.hzya.frame.u8c.Invmandoc.service.IBdInvmandocService;
+import com.hzya.frame.u8c.hwsale.dao.IHwsaleDao;
import com.hzya.frame.u8c.hwsale.service.IHwSaleService;
import com.hzya.frame.u8c.hwsale.util.HwUtil;
+import com.hzya.frame.u8c.util.U8cHttpUtil;
import com.hzya.frame.web.entity.BaseEntity;
+import org.apache.commons.collections.CollectionUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
-import java.util.Map;
-import java.util.TreeMap;
+import java.time.LocalDate;
+import java.util.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
/**
* (BdInvmandoc)表服务实现类
@@ -31,6 +43,9 @@ import java.util.TreeMap;
public class HwSaleServiceImpl extends BaseService implements IHwSaleService {
@Autowired
private ComparisonServiceImpl comparisonServiceimpl;
+
+ @Autowired
+ private IHwsaleDao hwsaleDao ;
/**
*
* @content 获取电商海外数据
@@ -42,17 +57,21 @@ public class HwSaleServiceImpl extends BaseService implement
@Override
public void getHwSaleOrder(JSONObject requestJson) {
+ String startDate = U8cHttpUtil.formatStartDateHW();
+ String endDate = U8cHttpUtil.formatEndDateHW();
+
+
JSONArray dataArr = new JSONArray();
StringBuffer url = new StringBuffer();
url.append(HwUtil.baseUrl + "/api/openservices/trade/v1/getSalesTradeList");
String timestamp = String.valueOf(System.currentTimeMillis());
Map map = new TreeMap<>();
- map.put("sid", "sales");
- map.put("appName", "sales");
+ map.put("sid", HwUtil.sid);
+ map.put("appName", HwUtil.appName);
map.put("timestamp",timestamp );
JSONObject parmetersMap = new JSONObject();
- parmetersMap.put("createTimeBegin", "2025-05-10 00:00:00");
- parmetersMap.put("createTimeEnd", "2025-08-01 15:00:00");
+ parmetersMap.put("createTimeBegin", startDate);
+ parmetersMap.put("createTimeEnd", endDate);
int i = 0;
while (true){
i++;
@@ -61,8 +80,9 @@ public class HwSaleServiceImpl extends BaseService implement
map.put("body",parmetersMap.toJSONString());
String sign = SecureUtil.md5(HwUtil.linkParams(map,HwUtil.appkey));
logger.info("获取跨境电商销售订单数据,请求参数"+parmetersMap.toJSONString());
- url.append("?sid=sales&appName=sales×tamp="+timestamp+"&sign="+sign);
+ url.append("?sid="+HwUtil.sid+"&appName="+HwUtil.appName+"×tamp="+timestamp+"&sign="+sign);
String result = HwUtil.doPost(parmetersMap.toString(),url.toString());
+ logger.info("获取跨境电商销售订单数据,返回参数"+result);
if(StrUtil.isEmpty(result)){
throw new RuntimeException("获取跨境电商销售订单数据失败");
}
@@ -75,22 +95,84 @@ public class HwSaleServiceImpl extends BaseService implement
JSONArray datas = dataObj.getJSONArray("data");
//获取订单明细数据,如果有数据递归向下查,反之跳出循环
if(datas.size() >0){
- datas.forEach(item -> {
- JSONObject data = getOrders(timestamp, item);
+ JSONArray dataArrs = new JSONArray();
+ for(Object item :datas){
+ JSONObject data = (JSONObject) item;
+ dataArrs.add( data.getString("tradeId"));
+ }
+ //这是所有的明细数据
+ JSONArray reList = getOrders(timestamp,dataArrs);
+ //循环数组 将明细放到各自的主表下面
+ for(Object main :datas){
+ JSONObject data = (JSONObject) main;
+ JSONArray detailsArr = new JSONArray();
+ String tradeId = data.getString("tradeId");
+ for(Object item :reList){
+ JSONObject body = (JSONObject) item;
+ String tradeIds = body.getString("tradeId");
+ if(tradeId.equals(tradeIds)){
+ detailsArr.add( body);
+ }
+ }
+ data.put("orders",detailsArr);
dataArr.add(data);
- });
+ }
+
}else{
break;
}
}
+
//如果数组不为空,将数据写入中台业务中心,先查询在写入,如果数据已经存在则直接跳过,反正写入中台业务中心
if(dataArr.size() >0){
- dataArr.forEach(item -> {
+// dataArr.forEach(item -> {
+// JSONObject dataItem = bdHwSaleParm(item);
+// });
+ if(dataArr.size()>500){
+
+ // 拆分为每批500条
+ List batches = U8cHttpUtil.splitIntoBatches(dataArr, 500);
+
+ // 创建线程池,核心线程数根据CPU核心数设定,这里使用Runtime.getRuntime().availableProcessors()
+ // 也可以根据实际情况调整,比如设置为固定数量如10
+ ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
+
+ // 提交所有批次任务到线程池
+ batches.forEach(batch -> {
+ executor.submit(() -> {
+ // 每个批次在单独的线程中处理
+ batch.forEach(item -> {
+ JSONObject dataItem = bdHwSaleParm(item);
+ // 这里可以添加对dataItem的后续处理逻辑
+ });
+ return null;
+ });
+ });
+
+ // 关闭线程池,不再接受新任务
+ executor.shutdown();
+
+ try {
+ // 等待所有任务完成,设置超时时间防止无限等待
+ if (!executor.awaitTermination(60, TimeUnit.MINUTES)) {
+ // 超时后强制关闭
+ executor.shutdownNow();
+ }
+ } catch (InterruptedException e) {
+ executor.shutdownNow();
+ }
+ }else{
+ dataArr.forEach(item -> {
JSONObject dataItem = bdHwSaleParm(item);
});
+ }
}
-
}
+
+
+
+
+
/**
* 获取电商海外退货数据
*
@@ -99,19 +181,21 @@ public class HwSaleServiceImpl extends BaseService implement
*/
@Override
public void getHwSaleRec(JSONObject requestJson) {
+
JSONArray dataArr = new JSONArray();
StringBuffer url = new StringBuffer();
url.append(HwUtil.baseUrl + "/api/openservices/trade/v1/getSalesRefundList");
String timestamp = String.valueOf(System.currentTimeMillis());
Map map = new TreeMap<>();
- map.put("sid", "sales");
- map.put("appName", "sales");
+ map.put("sid", HwUtil.sid);
+ map.put("appName", HwUtil.appName);
+ map.put("timestamp",timestamp );
map.put("timestamp",timestamp );
JSONObject parmetersMap = new JSONObject();
- parmetersMap.put("createTimeBegin", "2025-05-10 00:00:00");
- parmetersMap.put("createTimeEnd", "2025-08-01 15:00:00");
+ parmetersMap.put("createTimeBegin", "2025-08-27 00:00:00");
+ parmetersMap.put("createTimeEnd", "2025-09-09 23:59:59");
String []typeArr = new String[]{"1","2","3","4","5"};
- parmetersMap.put("typeList",typeArr);
+// parmetersMap.put("typeList",typeArr);
int i = 0;
while (true){
i++;
@@ -120,7 +204,7 @@ public class HwSaleServiceImpl extends BaseService implement
map.put("body",parmetersMap.toJSONString());
String sign = SecureUtil.md5(HwUtil.linkParams(map,HwUtil.appkey));
logger.info("获取跨境电商销售退货数据,请求参数"+parmetersMap.toJSONString());
- url.append("?sid=sales&appName=sales×tamp="+timestamp+"&sign="+sign);
+ url.append("?sid="+HwUtil.sid+"&appName="+HwUtil.appName+"×tamp="+timestamp+"&sign="+sign);
String result = HwUtil.doPost(parmetersMap.toString(),url.toString());
if(StrUtil.isEmpty(result)){
throw new RuntimeException("获取跨境电商销售退货数据失败");
@@ -139,12 +223,197 @@ public class HwSaleServiceImpl extends BaseService implement
break;
}
}
+
//如果数组不为空,将数据写入中台业务中心,先查询在写入,如果数据已经存在则直接跳过,反正写入中台业务中心
if(dataArr.size() >0){
- dataArr.forEach(item -> {
- JSONObject dataItem = bdHwSaleRecParm(item);
- });
+// dataArr.forEach(item -> {
+// JSONObject dataItem = bdHwSaleParm(item);
+// });
+ if(dataArr.size()>500){
+ // 拆分为每批500条
+ List batches = U8cHttpUtil.splitIntoBatches(dataArr, 500);
+ batches.forEach(batch -> {
+ // 批量处理每个批次
+ batch.forEach(item -> {
+ JSONObject dataItem = bdHwSaleRecParm(item);
+ });
+ });
+ System.out.println(batches);
+ }else{
+ dataArr.forEach(item -> {
+ JSONObject dataItem = bdHwSaleRecParm(item);
+ });
+ }
}
+
+ }
+
+ @Override
+ public void getHwSaleOrderToU8c(JSONObject requestJson) {
+ BaseEntity entity = new BaseEntity();
+// entity.setDataSourceCode("ZT");
+ StringBuffer stringBuffer = new StringBuffer();
+ stringBuffer.append("select c.ntaxrate,sum(aa.sku_amount) as delivery_amount,b.shop_no as shop_no, a.shop_text, sum(aa.num) as delivery_qty,warehouse_no, ");
+ stringBuffer.append("b.project_code,b.project_name,b.project_type,b.project_acc,b.brand_code,b.brand_name,b.platform_code,b.platform_name,b.org_code,b.org_name,b.shop_no as shop_no_new,b.shop_name as shop_name_new,b.po_org_code,b.po_org_name \n ");
+ stringBuffer.append("from hw_sale_order a ");
+ stringBuffer.append("left join hw_sale_orders aa on a.trade_id = aa.trade_id ");
+ stringBuffer.append("left join mdm_cost_project b on a.shop_text = b.project_name ");
+ stringBuffer.append("left join mdm_orgs c on b.org_name = c.org_name ");
+ stringBuffer.append("where 1=1 and a.send_state is null and b.org_code is not null and a.refund_status = '0' ");
+ stringBuffer.append("group by c.ntaxrate,a.shop_no, a.shop_text, ");
+ stringBuffer.append("warehouse_no,b.project_code,b.project_name,b.project_type,b.project_acc,b.brand_code,b.brand_name,b.platform_code,b.platform_name,b.org_code,b.org_name,b.shop_no,b.shop_name,b.po_org_code,b.po_org_name ");
+ stringBuffer.append("limit 1 ");
+ try {
+ List> hashMaps = hwsaleDao.execSelectSql(stringBuffer.toString(),entity);
+ if(CollectionUtils.isNotEmpty(hashMaps)){
+
+ for (HashMap item : hashMaps) {
+ //通过订单类型、店铺编码、仓库编码、项目编码、品牌编码、平台编码、销售主体编码、采购主体编码查询需要汇总的明细信息
+ StringBuffer detailSql = new StringBuffer();
+ detailSql.append("select * from ( ");
+ detailSql.append("select c.ntaxrate,sum(aa.sku_amount) as delivery_amount,b.shop_no as shop_no, a.shop_text, aa.sku_no as spec_no, aa.spu_no as goods_no, aa.spu_name as goods_name, sum(aa.num) as delivery_qty,warehouse_no, ");
+ detailSql.append("b.project_code,b.project_name,b.project_type,b.project_acc,b.brand_code,b.brand_name,b.platform_code,b.platform_name,b.org_code,b.org_name,b.shop_no as shop_no_new,b.shop_name as shop_name_new,b.po_org_code,b.po_org_name ");
+ detailSql.append("from hw_sale_order a ");
+ detailSql.append("left join hw_sale_orders aa on a.trade_id = aa.trade_id ");
+ detailSql.append("left join mdm_cost_project b on a.shop_text = b.project_name ");
+ detailSql.append("left join mdm_orgs c on b.org_name = c.org_name ");
+ detailSql.append("where 1=1 and a.send_state is null and b.org_code is not null and a.refund_status = '0' ");
+ detailSql.append("group by c.ntaxrate,a.shop_no, a.shop_text, aa.sku_no, aa.spu_no, aa.spu_name, ");
+ detailSql.append("warehouse_no,b.project_code,b.project_name,b.project_type,b.project_acc,b.brand_code,b.brand_name,b.platform_code,b.platform_name,b.org_code,b.org_name,b.shop_no,b.shop_name,b.po_org_code,b.po_org_name ");
+
+ detailSql.append(")m1 ");
+ detailSql.append("where shop_no = '"+item.get("shop_no")+"' ");
+ detailSql.append("and warehouse_no = '"+item.get("warehouse_no")+"' ");
+ detailSql.append("and project_code = '"+item.get("project_code")+"' ");
+ if(StrUtil.isNotEmpty(String.valueOf(item.get("brand_code")))){
+ detailSql.append("and brand_code = '"+item.get("brand_code")+"' ");
+ }
+ if(StrUtil.isNotEmpty(String.valueOf(item.get("platform_code")))) {
+ detailSql.append("and platform_code = '"+item.get("platform_code")+"' ");
+ }
+ detailSql.append("and org_code = '"+item.get("org_code")+"' ");
+ detailSql.append("and po_org_code = '"+item.get("po_org_code")+"' ");
+// detailSql.append("and a.refund_type = '"+item.get("refund_type")+"' ");
+ List> detailsHashMaps = hwsaleDao.execSelectSql(detailSql.toString(),entity);
+ //map转json
+ JSONObject jsonObject = new JSONObject(item);
+ if(CollectionUtils.isNotEmpty(detailsHashMaps)){
+ jsonObject.put("orders",detailsHashMaps);
+ }else{
+ continue;
+ }
+ jsonObject.put("org_code", "SH010002");
+ boolean flag = true;
+ String billNo = "";
+ billNo = saleOrder(jsonObject);
+
+ String sendState = "";
+ if(StrUtil.isNotEmpty(billNo)){
+ sendState = "Y";
+ }else{
+ sendState = "N";
+ }
+ String updateSql = "update hw_sale_order set send_state = '"+sendState+"' ,u8c_bill_no = '"+billNo+"'"+
+ "where shop_text = '"+item.get("shop_text")+"' " +
+ "and warehouse_no = '"+item.get("warehouse_no")+"' ";
+ try {
+ hwsaleDao.execUpdateSql(updateSql,new BaseEntity());
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private String saleOrder(JSONObject item) {
+ //todo 因为涉及到公司内部交易,需要生成不同的单据 销售公司的销售订单,销售公司向生产公司的采购订单、生成公司向销售公司的销售订单
+ //先生成销售公司的销售订单
+ String billNo = "";
+ boolean flag = true;
+
+ JSONObject resultSaleTc = U8cHttpUtil.bdU8cBlueSaleOrderParm(item,"8000050000","1","1","");
+ String status = resultSaleTc.getString("status");
+ if(!"success".equals(status)){
+ flag = false;
+ }else{
+ JSONArray dataArr = resultSaleTc.getJSONArray("data");
+ JSONObject data = dataArr.getJSONObject(0);
+ JSONObject parentvo = data.getJSONObject("parentvo");
+ billNo += parentvo.getString("vreceiptcode");
+
+ }
+
+ //在生成销售公司向库存公司的采购订单
+ if(flag){
+ JSONObject resultPoTb = U8cHttpUtil.bdU8cBluePoOrderParm(item,"8000050004","2");
+ status = resultPoTb.getString("status");
+ if(!"success".equals(status)){
+ flag = false;
+ }else{
+ JSONArray dataArr = resultPoTb.getJSONArray("data");
+ JSONObject data = dataArr.getJSONObject(0);
+ JSONObject parentvo = data.getJSONObject("parentvo");
+ billNo += parentvo.getString("vordercode");
+
+ }
+ }
+
+ //在生成库存公司向销售公司的销售订单
+ if(flag) {
+ JSONObject resultSaleTb = U8cHttpUtil.bdU8cBlueSaleOrderParm(item,"8000050000","3","1","");
+ status = resultSaleTb.getString("status");
+ if(!"success".equals(status)){
+ flag = false;
+ }else{
+ JSONArray dataArr = resultSaleTb.getJSONArray("data");
+ JSONObject data = dataArr.getJSONObject(0);
+ JSONObject parentvo = data.getJSONObject("parentvo");
+ billNo += parentvo.getString("vreceiptcode");
+
+ }
+ }
+ return billNo;
+ }
+
+ private JSONObject bdU8SaleParm(HashMap item) {
+ JSONObject jsonObject = new JSONObject();
+ JSONObject saleorder = new JSONObject();
+ JSONObject data = JSON.parseObject(JSON.toJSONString(item));
+ JSONObject parentvo = new JSONObject();
+ JSONArray childrenvo = new JSONArray();
+ // 组装表头信息 (parentvo)
+ parentvo.put("cbiztype", "so08"); // 业务流程
+ parentvo.put("ccalbodyid", "SH010002"); // 库存组织
+ parentvo.put("ccustomerid", "SH02011565"); // 客户
+ parentvo.put("cdeptid", "8888"); // 部门
+ parentvo.put("coperatorid", "17633965916"); // 操作人
+ parentvo.put("csalecorpid", "SH010002"); // 销售公司
+ parentvo.put("cwarehouseid", "test0715"); // 仓库
+ parentvo.put("pk_corp", "SH010002"); // 公司
+ // 组装表体信息 (childrenvo)
+ JSONArray orders = data.getJSONArray("orders");
+ if (orders != null && !orders.isEmpty()) {
+ for (int i = 0; i < orders.size(); i++) {
+ JSONObject order = orders.getJSONObject(i);
+ JSONObject child = new JSONObject();
+ child.put("cinventoryid", order.getString("sku_no")); // 存货ID(SKU编码)
+ child.put("nnumber", order.getString("num")); // 数量
+ child.put("noriginalcurprice", order.getString("price")); // 原币单价
+ childrenvo.add(child);
+ }
+ }
+ saleorder.put("parentvo",parentvo);
+ saleorder.put("childrenvo",childrenvo);
+ jsonObject.put("saleorder",saleorder);
+ return jsonObject;
+ }
+
+ @Override
+ public void getHwSaleRecToU8c(JSONObject requestJson) {
+
}
private JSONObject bdHwSaleRecParm(Object item) {
@@ -153,7 +422,7 @@ public class HwSaleServiceImpl extends BaseService implement
JSONArray orders = data.getJSONArray("skuSpuInfoList");
JSONObject jsonObjectUser = new JSONObject();
JSONObject jsonStr = new JSONObject();
- jsonObjectUser.put("data_id", data.get("data_id"));
+ jsonObjectUser.put("data_id", data.get("returnNo"));
jsonObjectUser.put("mdmCode", "10001");
jsonStr.put("jsonStr", jsonObjectUser);
//先查询编码和名称查询是否存在
@@ -227,7 +496,7 @@ public class HwSaleServiceImpl extends BaseService implement
JSONArray orders = data.getJSONArray("orders");
JSONObject jsonObjectUser = new JSONObject();
JSONObject jsonStr = new JSONObject();
- jsonObjectUser.put("data_id", data.get("data_id"));
+ jsonObjectUser.put("data_id", data.get("tradeId"));
jsonObjectUser.put("mdmCode", "10001");
jsonStr.put("jsonStr", jsonObjectUser);
//先查询编码和名称查询是否存在
@@ -356,33 +625,35 @@ public class HwSaleServiceImpl extends BaseService implement
}
@NotNull
- private JSONObject getOrders(String timestamp, Object item) {
- JSONObject data = (JSONObject) item;
+ private JSONArray getOrders(String timestamp, JSONArray tradeIds) {
+// JSONObject data = (JSONObject) item;
//获取订单明细数据
- JSONArray tradeIds = new JSONArray();
- tradeIds.add(data.getString("tradeId"));
+// JSONArray tradeIds = new JSONArray();
+// tradeIds.add(data.getString("tradeId"));
StringBuffer bUrl = new StringBuffer();
bUrl.append(HwUtil.baseUrl + "/api/openservices/trade/v1/getSalesTradeOrderList");
Map bMap = new TreeMap<>();
- bMap.put("sid", "sales");
- bMap.put("appName", "sales");
+ bMap.put("sid", HwUtil.sid);
+ bMap.put("appName", HwUtil.appName);
bMap.put("timestamp", timestamp);
JSONObject bParmetersMap = new JSONObject();
bParmetersMap.put("tradeIds",tradeIds);
bMap.put("body",bParmetersMap.toJSONString());
String bSign = SecureUtil.md5(HwUtil.linkParams(bMap,HwUtil.appkey));
- bUrl.append("?sid=sales&appName=sales×tamp="+ timestamp +"&sign="+bSign);
+ bUrl.append("?sid="+HwUtil.sid+"&appName="+HwUtil.appName+"×tamp="+ timestamp +"&sign="+bSign);
String bResult = HwUtil.doPost(bParmetersMap.toString(),bUrl.toString());
if(StrUtil.isEmpty(bResult)){
throw new RuntimeException("获取跨境电商销售订单数据失败");
}
JSONObject bResultObj = JSONObject.parseObject(bResult);
+ logger.info("获取跨境电商销售订单数据结果为:{}", JSON.toJSONString(bResultObj));
boolean bOk = bResultObj.getBoolean("ok");
if(!bOk){
logger.info("获取跨境电商销售订单明细数据失败");
}
JSONArray bDataarr = bResultObj.getJSONArray("data");
- data.put("orders",bDataarr);
- return data;
+// data.put("orders",bDataarr);
+ return bDataarr;
}
+
}
diff --git a/fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/util/HwUtil.java b/fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/util/HwUtil.java
index 861ce056..cdf2fa02 100644
--- a/fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/util/HwUtil.java
+++ b/fw-u8c/src/main/java/com/hzya/frame/u8c/hwsale/util/HwUtil.java
@@ -1,7 +1,11 @@
package com.hzya.frame.u8c.hwsale.util;
import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
/**
@@ -13,7 +17,9 @@ import java.util.Map;
public class HwUtil {
public static final String baseUrl = "https://openapi.qizhishangke.com";
- public static final String appkey = "2aa6ce6a155fdceebec72edec9c7abf8";
+ public static final String appkey = "d754a2f4a3c7fcbf92c77cbb17cb330c";
+ public static final String sid = "jss3";
+ public static final String appName = "jss3";
/**
*
* @content 参数加密
@@ -43,4 +49,6 @@ public class HwUtil {
.execute().body();
return result;
}
+
+
}
diff --git a/fw-u8c/src/main/java/com/hzya/frame/u8c/util/U8cHttpUtil.java b/fw-u8c/src/main/java/com/hzya/frame/u8c/util/U8cHttpUtil.java
index 7ca02d42..b51631e1 100644
--- a/fw-u8c/src/main/java/com/hzya/frame/u8c/util/U8cHttpUtil.java
+++ b/fw-u8c/src/main/java/com/hzya/frame/u8c/util/U8cHttpUtil.java
@@ -3,7 +3,16 @@ package com.hzya.frame.u8c.util;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
/**
* com.hzya.frame.u8c.util
@@ -13,15 +22,16 @@ import com.alibaba.fastjson.JSONObject;
*/
public class U8cHttpUtil {
+ protected Logger logger = LogManager.getLogger(super.getClass());
public static String baseUrl = "127.0.0.1:9999/kangarooDataCenterV3/entranceController/externalCallInterface";
- public static JSONObject sendOATOU8CEsb(String parm, String apiCode){
+ public static JSONObject sendDataTOU8CEsb(String parm, String apiCode){
String result = HttpRequest.post(baseUrl)
- .header("usercode", "admin")//头信息,多个头信息多次调用此方法即可
+ .header("usercode", "U8CLOUD")//头信息,多个头信息多次调用此方法即可
// .header("needStackTrace", "Y")//头信息,多个头信息多次调用此方法即可
- .header("password", "eddea5c9f7fab1a9d18410cda784c224")//头信息,多个头信息多次调用此方法即可
- .header("trantype", "PK")//头信息,多个头信息多次调用此方法即可
- .header("system", "sowow")//头信息,多个头信息多次调用此方法即可
+ .header("password", "f37aa888e10dbf1046421f5d09df7646")//头信息,多个头信息多次调用此方法即可
+ .header("trantype", "code")//头信息,多个头信息多次调用此方法即可
+ .header("system", "U8CLOUD")//头信息,多个头信息多次调用此方法即可
.header("appId", "800005")//头信息,多个头信息多次调用此方法即可
.header("apiCode", apiCode)//头信息,多个头信息多次调用此方法即可
.header("publicKey", "ZJYAWb7lhAUTYqekPkU+uHJv1/ObJxb7dT7sD8HPRDGAgyhCe7eDIk+3zDUT+v578prj")//头信息,多个头信息多次调用此方法即可
@@ -42,6 +52,257 @@ public class U8cHttpUtil {
JSONObject attributeObj = JSON.parseObject(attribute);
return attributeObj;
}
+ if("500".equals(status)){
+ String attribute = main.getString("attribute");
+ JSONObject attributeObj = JSON.parseObject(attribute);
+ return attributeObj;
+ }
return null;
}
+
+ /**
+ * 将大型JSONArray拆分为固定大小的批次
+ * @param largeJsonArray 原始大型JSONArray
+ * @param batchSize 每批的大小(如500)
+ * @return 包含多个子JSONArray的列表
+ */
+ public static List splitIntoBatches(JSONArray largeJsonArray, int batchSize) {
+ List batches = new ArrayList<>();
+ int totalSize = largeJsonArray.size();
+
+ // 计算总批次(向上取整,避免遗漏最后不足一批的数据)
+ int totalBatches = (totalSize + batchSize - 1) / batchSize;
+
+ for (int i = 0; i < totalBatches; i++) {
+ // 计算当前批次的起始索引和结束索引
+ int startIndex = i * batchSize;
+ int endIndex = Math.min(startIndex + batchSize, totalSize);
+
+ // 创建子JSONArray并添加当前批次的数据
+ JSONArray batch = new JSONArray();
+ for (int j = startIndex; j < endIndex; j++) {
+ JSONObject item = largeJsonArray.getJSONObject(j);
+ batch.add(item);
+ }
+
+ batches.add(batch);
+ }
+
+ return batches;
+ }
+
+
+
+
+ /**
+ *
+ * @content billType类型
+ * 1正常销售一推到底so08
+ * 2内部交易采购ZDCG
+ * 3内部交易销售ZDXS
+ * @className: Administrator
+ * @author laborer
+ * @date 2025-09-03 10:37
+ *
+ */
+
+ public static JSONObject bdU8cBlueSaleOrderParm(JSONObject jsonObject,String apiCode,String billType,String orderType,String type) {
+ JSONObject main = new JSONObject();
+ JSONObject saleorder = new JSONObject();
+ JSONObject parentvo = new JSONObject();
+ JSONArray childrenvo = new JSONArray();
+ //根据不同的接口判断业务流程
+ String cbiztype = "";
+ switch (billType){
+ case "1":
+ cbiztype = "so08";
+ parentvo.put("ccustomerid",jsonObject.get("project_code"));//客户
+ parentvo.put("pk_corp",jsonObject.get("org_code"));//所属公司
+ parentvo.put("csalecorpid",jsonObject.get("org_code"));//销售组织
+ parentvo.put("ccalbodyid",jsonObject.get("org_code"));//库存组织 后面调整先默认
+ break;
+ case "3":
+ cbiztype = "ZDXS";
+ parentvo.put("ccustomerid",jsonObject.get("org_code"));//客户
+ parentvo.put("pk_corp",jsonObject.get("po_org_code"));//所属公司
+ parentvo.put("csalecorpid",jsonObject.get("po_org_code"));//销售组织
+ parentvo.put("ccalbodyid",jsonObject.get("po_org_code"));//库存组织 后面调整先默认
+ break;
+ default:
+ break;
+ }
+ parentvo.put("cbiztype",cbiztype);//业务流程 默认so08一推到底
+ parentvo.put("cdeptid","8888");//部门
+ parentvo.put("coperatorid","17633965916");//制单人
+ parentvo.put("cwarehouseid",jsonObject.get("warehouse_no"));//仓库
+ JSONArray orders = jsonObject.getJSONArray("orders");
+ for(Object order : orders){
+ String dataStr = JSON.toJSONString(order);
+ JSONObject data = JSONObject.parseObject(dataStr);
+ BigDecimal delivery_amount = data.getBigDecimal("delivery_amount");
+ BigDecimal delivery_qty = data.getBigDecimal("delivery_qty");
+ BigDecimal delivery_amount_bd = delivery_amount.divide(delivery_qty,2, BigDecimal.ROUND_HALF_UP);
+// item.put("delivery_amount_bd",delivery_amount_bd);
+ JSONObject item = new JSONObject();
+ item.put("cinventoryid",data.get("spec_no"));//商品编码
+ item.put("nnumber",data.get("delivery_qty"));//数量
+ item.put("noriginalcurprice",delivery_amount_bd);//无税单价
+ item.put("pk_defdoc16",data.get("brand_code"));//品牌
+ item.put("pk_defdoc17",data.get("shop_no"));//店铺
+ item.put("pk_defdoc18",data.get("platform_code"));//平台
+ item.put("cprojectid",data.get("project_code"));//平台
+ item.put("ntaxrate,",data.get("ntaxrate"));//数量
+ //如果订单类型是2 需要生成赠品订单
+// if("1".equals(type)){
+ boolean isZero1 = delivery_amount_bd.compareTo(BigDecimal.ZERO) == 0;
+ if(isZero1){
+ item.put("blargessflag",true);//是否赠品
+ }
+
+
+// }
+ //如果订单类型是4 需要生成红字订单
+ if("4".equals(orderType)){
+ parentvo.put("bretinvflag",'Y');//退货标记(Y / N)
+ // 处理数量(nnumber):转为负数
+// BigDecimal qtyObj = data.getBigDecimal("delivery_qty");
+ item.put("nnumber", data.getBigDecimal("delivery_qty").subtract(data.getBigDecimal("delivery_qty").add(data.getBigDecimal("delivery_qty"))));
+ }
+ childrenvo.add( item);
+ }
+
+
+ saleorder.put("parentvo",parentvo);
+ saleorder.put("childrenvo",childrenvo);
+ main.put("saleorder",saleorder);
+ System.out.println(main.toJSONString());
+ return U8cHttpUtil.sendDataTOU8CEsb(main.toJSONString(),apiCode);
+
+ }
+
+
+
+ /**
+ *
+ * @content billType类型
+ * 1正常销售一推到底so08
+ * 2内部交易采购ZDCG
+ * 3内部交易销售ZDXS
+ * @className: Administrator
+ * @author laborer
+ * @date 2025-09-03 10:37
+ *
+ */
+ public static JSONObject bdU8cBluePoOrderParm(JSONObject jsonObject, String apiCode, String billType) {
+ JSONObject main = new JSONObject();
+ JSONObject puordervo = new JSONObject();
+ JSONObject parentvo = new JSONObject();
+ JSONArray childrenvo = new JSONArray();
+ //根据不同的接口判断业务流程
+ String cbiztype = "";
+ switch (billType){
+ case "2":
+ cbiztype = "ZDCG";
+ break;
+ default:
+ break;
+ }
+ parentvo.put("cbiztype",cbiztype);//业务流程
+ parentvo.put("cdeptid","9999");//采购部门
+ parentvo.put("coperator","17633965916");//制单人
+ parentvo.put("cpurorganization",jsonObject.get("org_code"));//采购组织
+ parentvo.put("cvendormangid",jsonObject.get("po_org_code"));//供应商、默认库存组织
+ parentvo.put("pk_corp",jsonObject.get("org_code"));//采购组织
+ JSONArray orders = jsonObject.getJSONArray("orders");
+ for(Object order:orders){
+ String dataStr = JSON.toJSONString(order);
+ JSONObject forson = JSONObject.parseObject(dataStr);
+ JSONObject item = new JSONObject();
+ item.put("cmangid",forson.get("spec_no"));//商品编码
+ item.put("cwarehouseid",forson.get("warehouse_no"));//仓库
+ item.put("nordernum",forson.get("delivery_qty"));//数量
+ item.put("ntaxrate,",forson.get("ntaxrate"));//数量
+ BigDecimal delivery_amount = forson.getBigDecimal("delivery_amount");
+ BigDecimal delivery_qty = forson.getBigDecimal("delivery_qty");
+ BigDecimal delivery_amount_bd = delivery_amount.divide(delivery_qty,2, BigDecimal.ROUND_HALF_UP);
+
+ item.put("noriginalcurprice",delivery_amount_bd);//无税单价
+ boolean isZero1 = delivery_amount_bd.compareTo(BigDecimal.ZERO) == 0;
+ if(isZero1){
+ item.put("blargess",true);//是否赠品
+ }
+ childrenvo.add( item);
+ }
+
+ puordervo.put("childrenvo",childrenvo);
+ puordervo.put("parentvo",parentvo);
+ main.put("puordervo",puordervo);
+// logger.info("U8C接口参数:{}",main.toJSONString());
+ return U8cHttpUtil.sendDataTOU8CEsb(main.toJSONString(),apiCode);
+ }
+
+ //格式化开始日期日期
+ public static String formatStartDateHW() {
+ LocalDateTime now = LocalDateTime.now();
+
+ // 2. 向前偏移2天,然后设置时分秒为23:59:00
+ LocalDateTime result = now
+ .minusDays(2) // 日期减2天
+ .withHour(23) // 设置小时为23
+ .withMinute(59) // 设置分钟为59
+ .withSecond(0) // 设置秒为0
+ .withNano(0); // 清除纳秒(可选)
+ return result.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+ }
+
+
+
+ //格式化结束日期日期
+ public static String formatEndDateHW() {
+ // 1. 获取当前日期,并设置时间为00:02:00
+ LocalDateTime todayEarlyMorning = LocalDateTime.now()
+ .withHour(0) // 小时设为0点
+ .withMinute(2) // 分钟设为2分
+ .withSecond(0) // 秒设为0
+ .withNano(0); // 纳秒设为0(可选)
+
+ // 2. 定义日期时间格式化器(根据需要调整格式)
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+ // 3. 格式化并输出
+ return todayEarlyMorning.format(formatter);
+ }
+
+
+
+ //格式化开始日期日期
+ public static String formatStartDate() {
+ LocalDateTime now = LocalDateTime.now();
+
+ // 2. 向前偏移2天,然后设置时分秒为23:59:00
+ LocalDateTime result = now
+ .minusDays(2) // 日期减1天
+ .withHour(0) // 设置小时为23
+ .withMinute(0) // 设置分钟为59
+ .withSecond(0) // 设置秒为0
+ .withNano(0); // 清除纳秒(可选)
+ return result.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+ }
+
+
+
+ //格式化结束日期日期
+ public static String formatEndDate() {
+ // 1. 获取当前日期,并设置时间为00:02:00
+ LocalDateTime todayLastMoment = LocalDateTime.now()
+ .minusDays(2) // 日期减1天
+ .withHour(23) // 小时设为23点
+ .withMinute(59) // 分钟设为59分
+ .withSecond(59) // 秒设为59秒
+ .withNano(0); // 纳秒设为999,000,000(对应999毫秒)
+
+ // 2. 定义日期时间格式化器(根据需要调整格式)
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+ // 3. 格式化并输出
+ return todayLastMoment.format(formatter);
+ }
}
diff --git a/pom.xml b/pom.xml
index 6f605744..13e18b60 100644
--- a/pom.xml
+++ b/pom.xml
@@ -471,33 +471,33 @@
maven-war-plugin
-
- ${basedir}/../base-service/src/main/webapp/WEB-INF/lib
- WEB-INF/lib/
- false
-
-
- **/*.jar
-
-
-
- ${basedir}/../fw-bip/src/main/webapp/WEB-INF/lib
- WEB-INF/lib/
- false
-
-
- **/*.jar
-
-
-
- ${basedir}/../fw-ningbobank/src/main/webapp/WEB-INF/lib
- WEB-INF/lib/
- false
-
-
- **/*.jar
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+