diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/RefundOnlyPluginInitializerToB.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/RefundOnlyPluginInitializerToB.java
new file mode 100644
index 00000000..8681a5bf
--- /dev/null
+++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/RefundOnlyPluginInitializerToB.java
@@ -0,0 +1,811 @@
+package com.hzya.frame.plugin.lets.plugin.sales;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.base.PluginBaseEntity;
+import com.hzya.frame.plugin.lets.constant.OverallConstant;
+import com.hzya.frame.plugin.lets.constant.ProfilesActiveConstant;
+import com.hzya.frame.plugin.lets.dao.IOnlyAfterSalesBDao;
+import com.hzya.frame.plugin.lets.dao.IOnlyAfterSalesHDao;
+import com.hzya.frame.plugin.lets.entity.BdCubasdocEntity;
+import com.hzya.frame.plugin.lets.entity.OnlyAfterSalesBEntity;
+import com.hzya.frame.plugin.lets.entity.OnlyAfterSalesHEntity;
+import com.hzya.frame.plugin.lets.ofsvo.QueryOfsSoSaleOutVo;
+import com.hzya.frame.plugin.lets.ofsvo.QueryReturnOrderRequestVO;
+import com.hzya.frame.plugin.lets.u8cdto.ArapDjzb;
+import com.hzya.frame.plugin.lets.u8cdto.ArapDjzbVO;
+import com.hzya.frame.plugin.lets.u8cdto.ReusltStrDto;
+import com.hzya.frame.plugin.lets.util.OfsOrderAfterSalesAmountAllocationUtil;
+import com.hzya.frame.plugin.lets.util.QueryU8CEntityUtil;
+import com.hzya.frame.plugin.lets.util.SaveOrUpdateBusinessLogUtil;
+import com.hzya.frame.plugin.lets.util.ShopTobOrToCUtil;
+import com.hzya.frame.plugin.lets.util.pushData.Attribute;
+import com.hzya.frame.plugin.lets.util.pushData.PushU8CByApiCode;
+import com.hzya.frame.plugin.lets.util.pushData.ZTResult;
+import com.hzya.frame.sysnew.integtationTaskLivingDetails.dao.IIntegrationTaskLivingDetailsDao;
+import com.hzya.frame.sysnew.integtationTaskLivingDetails.entity.IntegrationTaskLivingDetailsEntity;
+import com.hzya.frame.ttxofs.dto.InterfaceParamDto;
+import com.hzya.frame.ttxofs.dto.ofssalesordersearch.SaleOrderMessageDto;
+import com.hzya.frame.ttxofs.dto.returngoodordersearch.RerturnGoodsOrderSearchData;
+import com.hzya.frame.ttxofs.dto.returngoodordersearch.RerturnGoodsOrderSearchDetails;
+import com.hzya.frame.ttxofs.dto.returngoodordersearch.RerturnGoodsOrderSearchHeader;
+import com.hzya.frame.ttxofs.dto.returngoodordersearch.RerturnGoodsOrderSearchJsonRootBean;
+import com.hzya.frame.ttxofs.service.OfsUnifiedService;
+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;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * add by zyd
+ * O售后订单(ToB仅退款) -> U8C红字应收单
+ *
(取售中售后)
+ * returnType:0 不退货
+ * exchangeType:0 不换货
+ * refundInd:1 退款
+ *
+ * 按天推送
+ *
+ * @Date:2024/9/21 17:19
+ */
+@Service("refundOnlyPluginInitializerToB")
+public class RefundOnlyPluginInitializerToB extends PluginBaseEntity {
+
+ Logger logger = LoggerFactory.getLogger(RefundOnlyPluginInitializerToB.class);
+
+ @Override
+ public void initialize() {
+ logger.info(getPluginLabel() + "執行初始化方法initialize()");
+ }
+
+ @Override
+ public void destroy() {
+ logger.info(getPluginLabel() + "執行銷毀方法destroy()");
+ }
+
+ @Override
+ public String getPluginId() {
+ return "sales.refundOnlyPluginInitializerToB";
+ }
+
+ @Override
+ public String getPluginName() {
+ return "丽知:售后订单(ToB仅退款)--->U8C红字应收单";
+ }
+
+ @Override
+ public String getPluginLabel() {
+ return "丽知:售后订单(ToB仅退款)--->U8C红字应收单";
+ }
+
+ @Override
+ public String getPluginType() {
+ return "3";
+ }
+
+
+ @Autowired
+ private OfsUnifiedService ofsUnifiedService;
+ @Autowired
+ private IIntegrationTaskLivingDetailsDao iIntegrationTaskLivingDetailsDao;
+ @Autowired
+ private PushU8CByApiCode pushU8CByApiCode;
+ @Autowired
+ private SaveOrUpdateBusinessLogUtil saveOrUpdateBusinessLogUtil;
+ @Autowired
+ private QueryU8CEntityUtil queryU8CEntityUtil;
+
+ @Autowired
+ private IOnlyAfterSalesHDao onlyAfterSalesHDao;
+ @Autowired
+ private IOnlyAfterSalesBDao onlyAfterSalesBDao;
+
+ @Autowired
+ private OfsOrderAfterSalesAmountAllocationUtil ofsOrderAfterSalesAmountAllocationUtil;
+
+
+ @Override
+ public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception {
+ try {
+ logger.info("调用:" + getPluginName() + "-插件");
+ String prod = "prod";
+ String param = String.valueOf(requestJson.get("param"));
+ if (requestJson != null && ProfilesActiveConstant.TYPE_DATE.equals(requestJson.get("type"))) {
+ //按日期
+ if (param != null && !"".equals(param)) {
+ String[] split = param.split("/");
+ if (!(split.length == 2)) {
+ Assert.state(false, "时间格式传递不正确");
+ }
+ Assert.notNull(split[0], "开始时间不能为空");
+ Assert.notNull(split[1], "结束时间不能为空");
+ start(split[0], split[1]);
+ }
+ } else if (requestJson != null && ProfilesActiveConstant.TYPE_VBILLCODE.equals(requestJson.get("type"))) {
+ //按单号
+ if (param != null && !"".equals(param)) {
+ start(param);
+ }
+ } else if (ProfilesActiveConstant.TYPE_DETAIL_ERROR.equals(requestJson.get("type"))) {
+ String integrationTaskLivingDetails = (String) requestJson.get("integration_task_living_details_id");
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = saveOrUpdateBusinessLogUtil.queryIntegrationTaskLivingDetailsEntity(integrationTaskLivingDetails);
+ start(integrationTaskLivingDetailsEntity.getRootAppPk());
+ } else if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(prod)) {
+ //默认
+ start();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.error("executeBusiness方法抛出异常", e);
+ }
+ return BaseResult.getSuccessMessageEntity("插件执行成功");
+ }
+
+ public void start() {
+ try {
+
+ // 获取当前日期
+ LocalDate today = LocalDate.now();
+ // 计算前一天的日期
+ String previousDay = today.minusDays(1).toString();
+
+ QueryReturnOrderRequestVO queryReturnOrderRequestVO = new QueryReturnOrderRequestVO();
+ queryReturnOrderRequestVO.setRefundedAt_start(previousDay+" 00:00:00");
+ queryReturnOrderRequestVO.setRefundedAt_end(previousDay+" 23:59:59");
+ List returnGoodsOrders = queryOfsOnlyReturnOrders(queryReturnOrderRequestVO);
+ if (returnGoodsOrders == null || returnGoodsOrders.size() == 0) {
+ return;
+ }
+ //过滤仅退款 returnType:0 不退货、exchangeType:0 不换货、refundInd:1 退款 returnnode:300/200 售后/售中
+ List refundOnlyData = filterRefundOnly(returnGoodsOrders);
+
+ //保存数据
+ saveData(refundOnlyData);
+
+ //过滤日志
+ List filterReturnGoodsOrders = filterData(refundOnlyData);
+ if (filterReturnGoodsOrders == null || filterReturnGoodsOrders.size() == 0) {
+ return;
+ }
+ //推送
+ implement(filterReturnGoodsOrders);
+
+
+ } catch (Exception e) {
+ logger.error("丽知:售后订单(ToB仅退款)--->U8C红字应收单,start()方法报错:" + e);
+ }
+ }
+
+ /**
+ * @param ofsCode 售后订单号
+ */
+ public void start(String ofsCode) {
+ String[] split = ofsCode.split("_");
+ try {
+ QueryReturnOrderRequestVO queryReturnOrderRequestVO = new QueryReturnOrderRequestVO();
+ queryReturnOrderRequestVO.setCode(split[0]);
+ List returnGoodsOrders = queryOfsOnlyReturnOrders(queryReturnOrderRequestVO);
+ if (returnGoodsOrders == null || returnGoodsOrders.size() == 0) {
+ Assert.state(false, "丽知:售后订单(ToB仅退款):{} --->U8C红字应收单,未查询到OFS售后订单(ToB仅退款)", ofsCode);
+ }
+
+ //过滤仅退款 returnType:0 不退货、exchangeType:0 不换货、refundInd:1 退款
+ List refundOnlyData = filterRefundOnly(returnGoodsOrders);
+
+ //保存数据
+ saveData(refundOnlyData);
+
+ //过滤日志
+ List filterReturnGoodsOrders = filterData(refundOnlyData);
+ if (filterReturnGoodsOrders == null || filterReturnGoodsOrders.size() == 0) {
+ Assert.state(false, "丽知:售后订单(ToB仅退款):{} --->U8C红字应收单,该售后订单(ToB仅退款)已被推送成功,请勿重新推送", ofsCode);
+ }
+ //推送
+ implement(filterReturnGoodsOrders);
+
+
+ } catch (Exception e) {
+ logger.error("丽知:售后订单(ToB仅退款)--->U8C红字应收单,start(String ofsCode)方法报错:" + e);
+ }
+ }
+
+ /**
+ * 退款时间区间
+ *
+ * @param startTime
+ * @param endTime
+ */
+ public void start(String startTime, String endTime) {
+ try {
+ Date business_start = DateUtil.parse(startTime);
+ Date business_end = DateUtil.parse(endTime);
+ String start = DateUtil.format(business_start, "yyyy-MM-dd") + " 00:00:00";
+ String end = DateUtil.format(business_end, "yyyy-MM-dd") + " 23:59:59";
+
+ QueryReturnOrderRequestVO queryReturnOrderRequestVO = new QueryReturnOrderRequestVO();
+ queryReturnOrderRequestVO.setRefundedAt_start(start);
+ queryReturnOrderRequestVO.setRefundedAt_end(end);
+ List returnGoodsOrders = queryOfsOnlyReturnOrders(queryReturnOrderRequestVO);
+ if (returnGoodsOrders == null || returnGoodsOrders.size() == 0) {
+ return;
+ }
+ //过滤仅退款 returnType:0 不退货、exchangeType:0 不换货、refundInd:1 退款
+ List refundOnlyData = filterRefundOnly(returnGoodsOrders);
+
+ //保存数据
+ saveData(refundOnlyData);
+
+ //过滤日志
+ List filterReturnGoodsOrders = filterData(refundOnlyData);
+ if (filterReturnGoodsOrders == null || filterReturnGoodsOrders.size() == 0) {
+ return;
+ }
+ //推送
+ implement(filterReturnGoodsOrders);
+
+
+ } catch (Exception e) {
+ logger.error("丽知:售后订单(ToB仅退款)--->U8C红字应收单,start(String startTime, String endTime)方法报错:" + e);
+ }
+ }
+
+ /**
+ * 保存数据
+ */
+ public void saveData(List refundOnlyData) {
+ //过滤原始表
+ List filterOriginalOrders = filterOriginal(refundOnlyData);
+ //底表存数据库
+ if (filterOriginalOrders.size() != 0) {
+ save(filterOriginalOrders);
+ }
+ }
+
+ /**
+ * 过滤元数据底表,只过滤表头
+ *
+ * @param returnGoodsOrders
+ * @return
+ */
+ private List filterOriginal(List returnGoodsOrders) {
+ List filterOriginal = new ArrayList<>();
+ for (RerturnGoodsOrderSearchData goodsOrder : returnGoodsOrders) {
+ OnlyAfterSalesHEntity onlyAfterSalesHEntity = new OnlyAfterSalesHEntity();
+ onlyAfterSalesHEntity.setCode(goodsOrder.getHeader().getCode());
+ List query = onlyAfterSalesHDao.query(onlyAfterSalesHEntity);
+ if (query.size() != 0) {
+ continue;
+ } else {
+ filterOriginal.add(goodsOrder);
+ }
+ }
+ return filterOriginal;
+ }
+
+ /**
+ * returnType:0 不退货、exchangeType:0 不换货、refundInd:1 退款、returnNode:300/200 售后/售中
+ *
+ * @param rerturnGoodsOrderSearchData
+ * @return
+ */
+ public List filterRefundOnly(List rerturnGoodsOrderSearchData) {
+ List filterRefundOnly = new ArrayList<>();
+ for (RerturnGoodsOrderSearchData rerturnGoodsOrderSearchDatum : rerturnGoodsOrderSearchData) {
+ RerturnGoodsOrderSearchHeader header = rerturnGoodsOrderSearchDatum.getHeader();
+ if ("0".equals(header.getReturnType()) && "0".equals(header.getExchangeType()) && "1".equals(header.getRefundInd())&&("300".equals(header.getReturnNode())||"200".equals(header.getReturnNode()))) {
+ filterRefundOnly.add(rerturnGoodsOrderSearchDatum);
+ }
+ }
+ return filterRefundOnly;
+ }
+
+ /**
+ * 单据号+skuCode
+ * 过滤成功日志,并且过滤子表退款金额==0的数据
+ */
+ public List filterData(List returnGoodsOrders) {
+ List filterReturnGoodsOrders = new ArrayList<>();
+ for (RerturnGoodsOrderSearchData returnGoodsOrder : returnGoodsOrders) {
+ RerturnGoodsOrderSearchHeader header = returnGoodsOrder.getHeader();
+
+
+ List filterDetails = new ArrayList<>();
+ List details = returnGoodsOrder.getDetails();
+ for (RerturnGoodsOrderSearchDetails detail : details) {
+ if (detail.getTotalAmount() == null || "0".equals(detail.getTotalAmount()) || 0 == Double.parseDouble(detail.getTotalAmount())) {
+ continue;
+ }
+ String rootAppPk = header.getCode() + "_" + detail.getSkuCode();
+ boolean isExis = true;
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity();
+ integrationTaskLivingDetailsEntity.setRootAppPk(rootAppPk);
+ integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_Y);
+ integrationTaskLivingDetailsEntity.setPluginId(getPluginId());
+ List integrationTaskLivingDetailsEntities = iIntegrationTaskLivingDetailsDao.query(integrationTaskLivingDetailsEntity);
+ if (integrationTaskLivingDetailsEntities == null || integrationTaskLivingDetailsEntities.size() == 0) {
+ isExis = false;
+ }
+ if (!isExis) {
+ filterDetails.add(detail);
+ }
+ }
+ if (filterDetails.size() == 0) {
+ continue;
+ } else {
+ returnGoodsOrder.setDetails(filterDetails);
+ filterReturnGoodsOrders.add(returnGoodsOrder);
+ }
+ }
+ return filterReturnGoodsOrders;
+ }
+
+ /**
+ * 具体实现推送U8C红字应收单
+ *
+ * 公司+店铺+仓库+SKU+收发类别+部门 分组
+ *
+ * 因为优惠金额在表头,先按单据便利一变,具体分摊金额拆到每行,在去汇总
+ */
+ public void implement(List filterReturnGoodsOrders) throws Exception {
+ //分摊分摊后的子表
+ List allDetail = new ArrayList<>();
+ List allHeader = new ArrayList<>();
+ //分摊
+ for (RerturnGoodsOrderSearchData filterReturnGoodsOrder : filterReturnGoodsOrders) {
+// ofsOrderAfterSalesAmountAllocationUtil.tocSalesAmountAllocation(filterReturnGoodsOrder);
+ //查询部门
+ String refOrderCode = filterReturnGoodsOrder.getHeader().getRefOrderCode();
+ SaleOrderMessageDto ofsSaleOrder = getOfsOrder(refOrderCode);
+ String deptCode = "002";
+ if (ofsSaleOrder != null) {
+// Assert.state(false,"根据仅退款:{},查询销售订单:{},失败!未查询到对应销售订单",filterReturnGoodsOrder.getHeader().getCode(),refOrderCode);
+ if (ofsSaleOrder.getData().get(0).getHeader().getDepartmentType() != null && !"".equals((ofsSaleOrder.getData().get(0).getHeader().getDepartmentType()))) {
+ deptCode = ofsSaleOrder.getData().get(0).getHeader().getDepartmentType();
+ }
+ }
+ filterReturnGoodsOrder.getHeader().setSaleDeptCode(deptCode);
+ allHeader.add(filterReturnGoodsOrder.getHeader());
+ allDetail.addAll(filterReturnGoodsOrder.getDetails());
+ }
+
+ //分组:公司+店铺+部门+单据日期(退款日期),仅退款没有仓库,固不去
+ Map> collect = allHeader.stream().collect(Collectors.groupingBy(index -> index.getCompanyCode() + "_" + index.getStoreCode() + "_" + index.getSaleDeptCode() + "_" + index.getRefundedAt().substring(0, 10)));
+
+ for (Map.Entry> entry : collect.entrySet()) {
+ ;
+ String[] split = entry.getKey().split("_");//[0]公司 [1]店铺 [2]部门 [3]单据日期
+ //v:header列表, header.code == details.returnOrderCode
+
+ String mapStr = "";
+ String format = "";//暂时取创建时间,refundAt没返回
+ String response = "";
+// String ofsCode = v.get(0).getCode();
+// String ofsId = v.get(0).getId();
+ //日志记录使用
+ List logDetails = new ArrayList<>();
+ List r1 = new ArrayList<>();
+
+ try {
+ ArapDjzbVO arapDjzbVO = new ArapDjzbVO();
+ //主表 , 在表头先
+ ArapDjzbVO.Parentt parentvo = new ArapDjzbVO.Parentt();
+ //djrq 单据日期
+ format = split[3];//暂时取创建时间,refundAt没返回
+// format = "2024-09-30";
+ parentvo.setDjrq(format);
+ //dwbm 公司
+ String corpCode = queryU8CEntityUtil.queryBdDefDocByPkDefDocList(split[0]);
+ parentvo.setDwbm(corpCode);
+ //lrr 录入人
+ parentvo.setLrr(OverallConstant.getOverAllValue("u8cApiZdrCode"));
+ //wldx 往来对象标识 (0 客户 2部门 3业务员)
+ parentvo.setWldx("0");
+ //hbbm 客商==店铺,根据店铺区分tob、toc,,,编码需要转换,转换称自定义项。
+ BdCubasdocEntity entity = queryU8CEntityUtil.getFuzzyQueryCustomers(split[1]);
+ if(entity==null){
+ Assert.state(false,"根据客商自定义项1:{},未查询到客商基本档案,请假查。",split[1]);
+ }
+ parentvo.setHbbm(entity.getCustcode());
+ //根据店铺区分tob、toc,区分业务流程
+ String s = checkFlow(parentvo, split[1]);
+ if("TOC".equals(s)){
+ continue;
+ }
+ //deptid 部门
+ parentvo.setDeptid(split[2]);
+ //ywybm 业务员编码 ,不传喽
+
+ //shr 审核人
+ parentvo.setShr(OverallConstant.getOverAllValue("u8cApiZdrCode"));
+ //shrq 审核日
+ parentvo.setShrq(format);
+ //scomment 备注 returnNote 客服备注 sellerNote 卖家备注
+ //parentvo.setScomment(header.getReturnNote());
+
+ //djlxbm 单据类型编码(交易类型编码使用此字段,如D0、D1、D2)
+ parentvo.setDjlxbm("D0");
+// //xslxbm 业务流程
+ parentvo.setXslxbm("BJTK");//TOC仅退款:JTK TOB仅退款:BJTK
+ //feinvstatus 开票状态
+ parentvo.setFeinvstatus("0");
+
+
+ //zyx1店铺
+ parentvo.setZyx1(split[1]);
+ //zyx2来源平台
+ parentvo.setZyx2(entry.getValue().get(0).getSourcePlatformCode());
+ //zyx3 收发类别 销售出库,写死:SALES
+ parentvo.setZyx3("SALES");
+ //zyx16 单据红字标识 1Y 2N
+ parentvo.setZyx16("1");
+
+ //子表,需要通过多个主表的id找到多个子表,且退货金额==0的不要
+ List ofsDetails = new ArrayList<>();
+ for (RerturnGoodsOrderSearchHeader rerturnGoodsOrderSearchHeader : entry.getValue()) {
+ allDetail.stream().forEach(index -> {
+ if (rerturnGoodsOrderSearchHeader.getCode().equals(index.getReturnOrderCode()) && index.getTotalAmount() != null && !"0".equals(index.getTotalAmount())) {
+ ofsDetails.add(index);
+ }
+ });
+ }
+ logDetails.addAll(ofsDetails);
+
+
+ //没有sku编码的报错
+ r1.clear();
+ for (RerturnGoodsOrderSearchDetails logDetail : logDetails) {
+ if(logDetail.getSkuCode()==null||"".equals(logDetail.getSkuCode())) {
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity();
+ integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_N);
+ integrationTaskLivingDetailsEntity.setRootAppNewData(null);
+ integrationTaskLivingDetailsEntity.setNewTransmitInfo(logDetail.getReturnOrderCode() + ",没有SKU编码,请检查OFS系统订单");
+ integrationTaskLivingDetailsEntity.setNewPushDate(new Date());
+ integrationTaskLivingDetailsEntity.setBusinessDate(format);
+ integrationTaskLivingDetailsEntity.setRootAppPk(logDetail.getReturnOrderCode() + "_" + logDetail.getSkuCode());
+ integrationTaskLivingDetailsEntity.setRootAppBill(logDetail.getReturnOrderCode());
+ integrationTaskLivingDetailsEntity.setPluginId(getPluginId());
+ saveOrUpdateBusinessLogUtil.saveOrUpdate(integrationTaskLivingDetailsEntity);
+ }else {
+ r1.add(logDetail);
+ }
+ }
+
+ //按sku分组
+ Map> collectSKU = r1.stream().collect(Collectors.groupingBy(index -> index.getSkuCode()));
+
+ List children = new ArrayList<>();
+ Set>> entries = collectSKU.entrySet();
+ for (Map.Entry> entry1 : entries) {
+ children.clear();
+ String kk = entry1.getKey();
+ List vv = entry1.getValue();
+ //kk是sku编码,vv是sku相同的子表
+ try {
+ ArapDjzbVO.Childrenn childrenn = new ArapDjzbVO.Childrenn();
+ //cinventoryid 存货
+ childrenn.setCinventoryid(kk);
+
+ //sum:jfbbje jfybje 借方本币金额/借方原币金额
+ BigDecimal sum_jfbbje = new BigDecimal(0);
+ //sum:jfbbsj jfybsj 借方本币税金/借方原币税金 默认(0.13)
+ BigDecimal sum_jfbbsj = new BigDecimal(0);
+ //sum:wbfbbje jfybwsje 借方本币无税金额/借方原币无税金额
+ BigDecimal sum_wbfbbje = new BigDecimal(0);
+ //sum:zyx4 平台优惠 platformDiscounts
+ BigDecimal sum_zyx4 = new BigDecimal(0);
+ //sum:zyx5 支付优惠 payDiscounts
+ BigDecimal sum_zyx5 = new BigDecimal(0);
+ //sum:zyx6 达人优惠 expertDiscounts
+ BigDecimal sum_zyx6 = new BigDecimal(0);
+ //sum:zyx7 商家优惠
+// BigDecimal sum_zyx7 = new BigDecimal(0);
+
+ //金额计算
+ for (RerturnGoodsOrderSearchDetails detail : vv) {
+ sum_jfbbje = sum_jfbbje.add(new BigDecimal(detail.getTotalAmount()));
+
+ BigDecimal sj = new BigDecimal(detail.getTotalAmount()).multiply(new BigDecimal(0.13)).setScale(2, RoundingMode.FLOOR);
+ sum_jfbbsj = sum_jfbbsj.add(sj);
+
+ BigDecimal ws = new BigDecimal(detail.getTotalAmount()).subtract(sj);
+ sum_wbfbbje = sum_wbfbbje.add(ws);
+
+// if (detail.getShareTargetPlatformDiscounts() != null) {
+// sum_zyx4 = sum_zyx4.add(detail.getShareTargetPlatformDiscounts());
+// }
+// if (detail.getShareTargetMerchantDiscounts() != null) {
+// sum_zyx5 = sum_zyx5.add(detail.getShareTargetMerchantDiscounts());
+// }
+// if (detail.getShareTargetExpertDiscounts() != null) {
+// sum_zyx6 = sum_zyx6.add(detail.getShareTargetExpertDiscounts());
+// }
+// if (detail.getShareTargetPayDiscounts() != null) {
+// sum_zyx7 = sum_zyx7.add(detail.getShareTargetPayDiscounts());
+// }
+
+ if (detail.getPlatformDiscounts() != null) {
+ sum_zyx4 = sum_zyx4.add(new BigDecimal(detail.getPlatformDiscounts()));
+ }
+ if (detail.getPayDiscounts() != null) {
+ sum_zyx5 = sum_zyx5.add(new BigDecimal(detail.getPayDiscounts()));
+ }
+ if (detail.getExpertDiscounts() != null) {
+ sum_zyx6 = sum_zyx6.add(new BigDecimal(detail.getExpertDiscounts()));
+ }
+ }
+ childrenn.setJfbbje("-" + sum_jfbbje);
+ childrenn.setJfybje("-" + sum_jfbbje);
+ childrenn.setJfbbsj("-" + sum_jfbbsj);
+ childrenn.setJfybsj("-" + sum_jfbbsj);
+ childrenn.setWbfbbje("-" + sum_wbfbbje);
+ childrenn.setJfybwsje("-" + sum_wbfbbje);
+ childrenn.setZyx4(String.valueOf(sum_zyx4));
+ childrenn.setZyx5(String.valueOf(sum_zyx5));
+ childrenn.setZyx6(String.valueOf(sum_zyx6));
+ children.add(childrenn);
+
+ //推送
+ arapDjzbVO.setParentvo(parentvo);
+ arapDjzbVO.setChildren(children);
+ mapStr = "{\"djzbvo\":[" + JSONUtil.toJsonStr(arapDjzbVO) + "]}";
+ //推送
+ ZTResult ztResult = pushU8CByApiCode.pushByCode(OverallConstant.getOverAllValue("arapYsInsertApproveCode"), mapStr);
+ //两层判断,一层中台转发,一层u8c返回
+ if ("false".equals(ztResult.getFlag())) {
+ //转发失败
+ response = JSONUtil.toJsonStr(ztResult.getAttribute());
+ Assert.state(false, "丽知:售后订单(ToB仅退款)--->U8C红字应收单,中台转发失败,失败原因:{}", ztResult.getAttribute());
+ }
+ Attribute attribute = ztResult.getAttribute();
+ boolean isSuccess = false;
+ String djbh = "";
+ String vouchid = "";
+ if ("success".equals(attribute.getStatus())) {
+ isSuccess = true;
+ String data = attribute.getData();
+ ArapDjzb arapDj = resultDataHandle(data);
+ djbh = arapDj.getParentvo().getDjbh();
+ vouchid = arapDj.getParentvo().getVouchid();
+ }
+ if (!isSuccess) {
+ Assert.state(false, "推送U8C--> 丽知:售后订单(ToB仅退款)--->U8C红字应收单 失败 接口返回结果:{} 接口入参:{}", response, mapStr);
+ }
+
+ //成功
+ for (RerturnGoodsOrderSearchDetails ofsDetail : vv) {
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity();
+ integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_Y);
+ integrationTaskLivingDetailsEntity.setRootAppNewData(mapStr);
+ integrationTaskLivingDetailsEntity.setNewTransmitInfo(response);
+ integrationTaskLivingDetailsEntity.setNewPushDate(new Date());
+ integrationTaskLivingDetailsEntity.setBusinessDate(format);
+ integrationTaskLivingDetailsEntity.setRootAppPk(ofsDetail.getReturnOrderCode() + "_" + ofsDetail.getSkuCode());
+ integrationTaskLivingDetailsEntity.setRootAppBill(ofsDetail.getReturnOrderCode());//仅退款单号
+ integrationTaskLivingDetailsEntity.setNewSystemNumber(djbh);
+ integrationTaskLivingDetailsEntity.setNewSystemPrimary(vouchid);
+ integrationTaskLivingDetailsEntity.setPluginId(getPluginId());
+ saveOrUpdateBusinessLogUtil.saveOrUpdate(integrationTaskLivingDetailsEntity);
+ }
+ } catch (Exception e) {
+ logger.error("推送U8C,丽知:售后订单(ToB仅退款)--->U8C红字应收单失败,失败原因:" + e);
+ //失败,则该k下的所有子表记录失败
+ ReusltStrDto reusltStrDto = JSON.parseObject(response, ReusltStrDto.class);
+ String ErrMessage = "";
+ if (reusltStrDto != null) {
+ ErrMessage = "推送U8C,丽知:售后订单(ToB仅退款)--->U8C红字应收单失败,失败原因:" + reusltStrDto.getErrormsg();
+ } else {
+ ErrMessage = "推送U8C,丽知:售后订单(ToB仅退款)--->U8C红字应收单失败,失败原因:" + e.getMessage();
+ }
+ //失败 批量新增 ofsDetails
+ for (RerturnGoodsOrderSearchDetails logDetail : vv) {
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity();
+ integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_N);
+ integrationTaskLivingDetailsEntity.setRootAppNewData(mapStr);
+ integrationTaskLivingDetailsEntity.setNewTransmitInfo(ErrMessage);
+ integrationTaskLivingDetailsEntity.setNewPushDate(new Date());
+ integrationTaskLivingDetailsEntity.setBusinessDate(format);
+ integrationTaskLivingDetailsEntity.setRootAppPk(logDetail.getReturnOrderCode() + "_" + logDetail.getSkuCode());
+ integrationTaskLivingDetailsEntity.setRootAppBill(logDetail.getReturnOrderCode());
+ integrationTaskLivingDetailsEntity.setPluginId(getPluginId());
+ saveOrUpdateBusinessLogUtil.saveOrUpdate(integrationTaskLivingDetailsEntity);
+ }
+ }
+
+ }
+ } catch (Exception e) {
+ logger.error("推送U8C,丽知:售后订单(ToB仅退款)--->U8C红字应收单最外层失败,失败原因:" + e);
+ //失败,最外层,则该k下的所有子表记录失败
+ ReusltStrDto reusltStrDto = JSON.parseObject(response, ReusltStrDto.class);
+ String ErrMessage = "";
+ if (reusltStrDto != null) {
+ ErrMessage = "推送U8C,丽知:售后订单(ToB仅退款)--->U8C红字应收单最外层失败,失败原因:" + reusltStrDto.getErrormsg();
+ } else {
+ ErrMessage = "推送U8C,丽知:售后订单(ToB仅退款)--->U8C红字应收单最外层失败,失败原因:" + e.getMessage();
+ }
+ //失败 批量新增 ofsDetails
+ for (RerturnGoodsOrderSearchDetails logDetail : r1) {
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity();
+ integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_N);
+ integrationTaskLivingDetailsEntity.setRootAppNewData(mapStr);
+ integrationTaskLivingDetailsEntity.setNewTransmitInfo(ErrMessage);
+ integrationTaskLivingDetailsEntity.setNewPushDate(new Date());
+ integrationTaskLivingDetailsEntity.setBusinessDate(format);
+ integrationTaskLivingDetailsEntity.setRootAppPk(logDetail.getReturnOrderCode() + "_" + logDetail.getSkuCode());
+ integrationTaskLivingDetailsEntity.setRootAppBill(logDetail.getReturnOrderCode());
+ integrationTaskLivingDetailsEntity.setPluginId(getPluginId());
+ saveOrUpdateBusinessLogUtil.saveOrUpdate(integrationTaskLivingDetailsEntity);
+ }
+ }
+ }
+ }
+
+ /**
+ * 公司转换
+ * @param allHeader
+ */
+ public void transCorp(List allHeader){
+ if(allHeader.size()==0){
+ return;
+ }
+
+
+ }
+
+ /**
+ * 根据店铺区分tob toc业务流程
+ * TOC仅退款:JTK TOB仅退款:BJTK
+ * parentvo.setXslxbm("JTK");
+ * 非b及c
+ * @param parentvo
+ * @param shop
+ */
+ @Autowired
+ private ShopTobOrToCUtil shopTobOrToCUtil;
+ public String checkFlow(ArapDjzbVO.Parentt parentvo,String shop){
+ String tobShop = shopTobOrToCUtil.getCommaShop("TOB");
+ String tocShop = shopTobOrToCUtil.getCommaShop("TOC");
+ System.out.println(tobShop);
+ System.out.println(tocShop);
+ if(tobShop.contains(shop)){
+// parentvo.setXslxbm("BJTK");//TOB
+ return "TOB";
+ }else {
+// parentvo.setXslxbm("JTK");//TOC
+ return "TOC";
+ }
+
+ }
+
+ /**
+ * ofs仅退款数据,存中台mysql数据库
+ * 表头表体分别存,忽略大小写 BeanUtil.copyPropreties(a,b,Copyoptions.create().ignoreCase())
+ *
+ * @param returnGoodsOrders
+ */
+ public void save(List returnGoodsOrders) {
+// List allH=new ArrayList<>();
+// List allB=new ArrayList<>();
+ for (RerturnGoodsOrderSearchData returnGoodsOrder : returnGoodsOrders) {
+ RerturnGoodsOrderSearchHeader header = returnGoodsOrder.getHeader();
+ OnlyAfterSalesHEntity onlyAfterSalesHEntity = new OnlyAfterSalesHEntity();
+ BeanUtil.copyProperties(header, onlyAfterSalesHEntity, CopyOptions.create().ignoreCase());
+// allH.add(onlyAfterSalesHEntity);
+ onlyAfterSalesHEntity.setId(null);
+ onlyAfterSalesHEntity.setOfsid(header.getId());
+ OnlyAfterSalesHEntity save = onlyAfterSalesHDao.save(onlyAfterSalesHEntity);
+ String HId = save.getId();
+
+ List details = returnGoodsOrder.getDetails();
+ for (RerturnGoodsOrderSearchDetails detail : details) {
+ OnlyAfterSalesBEntity onlyAfterSalesBEntity = new OnlyAfterSalesBEntity();
+ BeanUtil.copyProperties(detail, onlyAfterSalesBEntity, CopyOptions.create().ignoreCase());
+// allB.add(onlyAfterSalesBEntity);
+ onlyAfterSalesBEntity.setId(null);
+ onlyAfterSalesBEntity.setHid(HId);
+ onlyAfterSalesBEntity.setOfsid(detail.getId());
+ //四个优惠,platformDiscounts 平台优惠、merchantDiscounts 商家优惠、expertDiscounts 达人优惠、payDiscounts 支付优惠
+ onlyAfterSalesBEntity.setPlatformDiscounts(header.getPlatformDiscounts());
+ onlyAfterSalesBEntity.setMerchantDiscounts(header.getMerchantDiscounts());
+ onlyAfterSalesBEntity.setExpertDiscounts(header.getExpertDiscounts());
+ onlyAfterSalesBEntity.setPayDiscounts(header.getPayDiscounts());
+ onlyAfterSalesBDao.save(onlyAfterSalesBEntity);
+ }
+ }
+ }
+
+
+ /**
+ * 查询OFS销售订单
+ */
+ public SaleOrderMessageDto getOfsOrder(String code) throws Exception {
+ Long pageSize = 200L;
+ Long pageNo = 1L;
+
+ QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
+ queryOfsSoSaleOutVo.setPageNo(pageNo);
+ queryOfsSoSaleOutVo.setPageSize(pageSize);
+ queryOfsSoSaleOutVo.setCode(code);
+
+ InterfaceParamDto interfaceParamDto = new InterfaceParamDto();
+ interfaceParamDto.setApi("ofs.salesOrder.search");
+ interfaceParamDto.setData(JSON.toJSONString(queryOfsSoSaleOutVo));
+ SaleOrderMessageDto saleOrderMessageDto = (SaleOrderMessageDto) ofsUnifiedService.unified(interfaceParamDto);
+ if (saleOrderMessageDto.getData().size() == 0) {
+ return null;
+ }
+ return saleOrderMessageDto;
+ }
+
+
+ /**
+ * 查询ofs仅退款订单 销售退货单查询(ofs.returnOrder. search)
+ *
+ * 查询条件:refundedAt_start、refundedAt_end、code
+ * returnType:0 不退货
+ * exchangeType:0 不换货
+ * refundInd:1 退款
+ */
+ public List queryOfsOnlyReturnOrders(QueryReturnOrderRequestVO queryReturnOrderRequestVO) throws Exception {
+ Long pageNo = 1L;
+
+ List all = new ArrayList<>();
+
+ InterfaceParamDto interfaceParamDto = new InterfaceParamDto();
+ interfaceParamDto.setApi("ofs.returnOrder.search");
+ queryReturnOrderRequestVO.setClientCode("LETS");
+ //100订单池 500待同步 510已同步 900售后成功 400待合单 800已入库 999作废 700收货中 0待完善
+// queryReturnOrderRequestVO.setStatus("900");
+ queryReturnOrderRequestVO.setPageNo(pageNo);
+ queryReturnOrderRequestVO.setPageSize(500L);
+ interfaceParamDto.setData(JSON.toJSONString(queryReturnOrderRequestVO));
+
+ RerturnGoodsOrderSearchJsonRootBean rerturnGoodsOrderSearchJsonRootBean = (RerturnGoodsOrderSearchJsonRootBean) ofsUnifiedService.unified(interfaceParamDto);
+ if (rerturnGoodsOrderSearchJsonRootBean.getData() == null || rerturnGoodsOrderSearchJsonRootBean.getData().size() == 0) {
+ return null;
+ }
+ all.addAll(rerturnGoodsOrderSearchJsonRootBean.getData());
+
+ int count = rerturnGoodsOrderSearchJsonRootBean.getData().size();
+ while (count >= 500) {//>=500,可能还有下一页。
+ //还有下一页
+ pageNo++;
+ queryReturnOrderRequestVO.setPageNo(pageNo);
+ interfaceParamDto.setData(JSON.toJSONString(queryReturnOrderRequestVO));
+ RerturnGoodsOrderSearchJsonRootBean rerturnGoodsOrderSearchJsonRootBean1 = (RerturnGoodsOrderSearchJsonRootBean) ofsUnifiedService.unified(interfaceParamDto);
+ all.addAll(rerturnGoodsOrderSearchJsonRootBean1.getData());
+ count = rerturnGoodsOrderSearchJsonRootBean1.getData().size();
+ }
+ return all;
+ }
+
+ private ArapDjzb resultDataHandle(String resultData) {
+ try {
+ if (resultData != null && !"".equals(resultData)) {
+ if (resultData.contains("[")) {
+ resultData = resultData.substring(1, resultData.length() - 1);
+ }
+ return JSON.parseObject(resultData, ArapDjzb.class);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.error("解析返回参数失败的错误", e);
+ //如果解析失败,记录原因,但是不能影响结果的记录
+ }
+ return null;
+ }
+
+
+}
\ No newline at end of file
diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/RefundOnlyPluginInitializerToC.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/RefundOnlyPluginInitializerToC.java
new file mode 100644
index 00000000..5bbf29fd
--- /dev/null
+++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/RefundOnlyPluginInitializerToC.java
@@ -0,0 +1,813 @@
+package com.hzya.frame.plugin.lets.plugin.sales;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.base.PluginBaseEntity;
+import com.hzya.frame.plugin.lets.constant.OverallConstant;
+import com.hzya.frame.plugin.lets.constant.ProfilesActiveConstant;
+import com.hzya.frame.plugin.lets.dao.IOnlyAfterSalesBDao;
+import com.hzya.frame.plugin.lets.dao.IOnlyAfterSalesHDao;
+import com.hzya.frame.plugin.lets.entity.BdCubasdocEntity;
+import com.hzya.frame.plugin.lets.entity.OnlyAfterSalesBEntity;
+import com.hzya.frame.plugin.lets.entity.OnlyAfterSalesHEntity;
+import com.hzya.frame.plugin.lets.ofsvo.QueryOfsSoSaleOutVo;
+import com.hzya.frame.plugin.lets.ofsvo.QueryReturnOrderRequestVO;
+import com.hzya.frame.plugin.lets.u8cdto.ArapDjzb;
+import com.hzya.frame.plugin.lets.u8cdto.ArapDjzbVO;
+import com.hzya.frame.plugin.lets.u8cdto.ReusltStrDto;
+import com.hzya.frame.plugin.lets.util.OfsOrderAfterSalesAmountAllocationUtil;
+import com.hzya.frame.plugin.lets.util.QueryU8CEntityUtil;
+import com.hzya.frame.plugin.lets.util.SaveOrUpdateBusinessLogUtil;
+import com.hzya.frame.plugin.lets.util.ShopTobOrToCUtil;
+import com.hzya.frame.plugin.lets.util.pushData.Attribute;
+import com.hzya.frame.plugin.lets.util.pushData.PushU8CByApiCode;
+import com.hzya.frame.plugin.lets.util.pushData.ZTResult;
+import com.hzya.frame.sysnew.integtationTaskLivingDetails.dao.IIntegrationTaskLivingDetailsDao;
+import com.hzya.frame.sysnew.integtationTaskLivingDetails.entity.IntegrationTaskLivingDetailsEntity;
+import com.hzya.frame.ttxofs.dto.InterfaceParamDto;
+import com.hzya.frame.ttxofs.dto.ofssalesordersearch.SaleOrderMessageDto;
+import com.hzya.frame.ttxofs.dto.returngoodordersearch.RerturnGoodsOrderSearchData;
+import com.hzya.frame.ttxofs.dto.returngoodordersearch.RerturnGoodsOrderSearchDetails;
+import com.hzya.frame.ttxofs.dto.returngoodordersearch.RerturnGoodsOrderSearchHeader;
+import com.hzya.frame.ttxofs.dto.returngoodordersearch.RerturnGoodsOrderSearchJsonRootBean;
+import com.hzya.frame.ttxofs.service.OfsUnifiedService;
+import com.hzya.frame.web.entity.BaseResult;
+import com.hzya.frame.web.entity.JsonResultEntity;
+import dm.jdbc.d.V;
+import org.checkerframework.checker.units.qual.K;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * add by zyd
+ * O售后订单(ToC仅退款) -> U8C红字应收单
+ * (取售中售后)
+ * returnType:0 不退货
+ * exchangeType:0 不换货
+ * refundInd:1 退款
+ *
+ * 按天推送
+ *
+ * @Date:2024/9/21 17:19
+ */
+@Service("refundOnlyPluginInitializerToC")
+public class RefundOnlyPluginInitializerToC extends PluginBaseEntity {
+
+ Logger logger = LoggerFactory.getLogger(RefundOnlyPluginInitializerToC.class);
+
+ @Override
+ public void initialize() {
+ logger.info(getPluginLabel() + "執行初始化方法initialize()");
+ }
+
+ @Override
+ public void destroy() {
+ logger.info(getPluginLabel() + "執行銷毀方法destroy()");
+ }
+
+ @Override
+ public String getPluginId() {
+ return "sales.RefundOnlyPluginInitializerToC";
+ }
+
+ @Override
+ public String getPluginName() {
+ return "丽知:售后订单(ToC仅退款)--->U8C红字应收单";
+ }
+
+ @Override
+ public String getPluginLabel() {
+ return "丽知:售后订单(ToC仅退款)--->U8C红字应收单";
+ }
+
+ @Override
+ public String getPluginType() {
+ return "3";
+ }
+
+
+ @Autowired
+ private OfsUnifiedService ofsUnifiedService;
+ @Autowired
+ private IIntegrationTaskLivingDetailsDao iIntegrationTaskLivingDetailsDao;
+ @Autowired
+ private PushU8CByApiCode pushU8CByApiCode;
+ @Autowired
+ private SaveOrUpdateBusinessLogUtil saveOrUpdateBusinessLogUtil;
+ @Autowired
+ private QueryU8CEntityUtil queryU8CEntityUtil;
+
+ @Autowired
+ private IOnlyAfterSalesHDao onlyAfterSalesHDao;
+ @Autowired
+ private IOnlyAfterSalesBDao onlyAfterSalesBDao;
+
+ @Autowired
+ private OfsOrderAfterSalesAmountAllocationUtil ofsOrderAfterSalesAmountAllocationUtil;
+
+
+ @Override
+ public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception {
+ try {
+ logger.info("调用:" + getPluginName() + "-插件");
+ String prod = "prod";
+ String param = String.valueOf(requestJson.get("param"));
+ if (requestJson != null && ProfilesActiveConstant.TYPE_DATE.equals(requestJson.get("type"))) {
+ //按日期
+ if (param != null && !"".equals(param)) {
+ String[] split = param.split("/");
+ if (!(split.length == 2)) {
+ Assert.state(false, "时间格式传递不正确");
+ }
+ Assert.notNull(split[0], "开始时间不能为空");
+ Assert.notNull(split[1], "结束时间不能为空");
+ start(split[0], split[1]);
+ }
+ } else if (requestJson != null && ProfilesActiveConstant.TYPE_VBILLCODE.equals(requestJson.get("type"))) {
+ //按单号
+ if (param != null && !"".equals(param)) {
+ start(param);
+ }
+ } else if (ProfilesActiveConstant.TYPE_DETAIL_ERROR.equals(requestJson.get("type"))) {
+ String integrationTaskLivingDetails = (String) requestJson.get("integration_task_living_details_id");
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = saveOrUpdateBusinessLogUtil.queryIntegrationTaskLivingDetailsEntity(integrationTaskLivingDetails);
+ start(integrationTaskLivingDetailsEntity.getRootAppPk());
+ } else if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(prod)) {
+ //默认
+ start();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.error("executeBusiness方法抛出异常", e);
+ }
+ return BaseResult.getSuccessMessageEntity("插件执行成功");
+ }
+
+ public void start() {
+ try {
+
+ // 获取当前日期
+ LocalDate today = LocalDate.now();
+ // 计算前一天的日期
+ String previousDay = today.minusDays(1).toString();
+
+ QueryReturnOrderRequestVO queryReturnOrderRequestVO = new QueryReturnOrderRequestVO();
+ queryReturnOrderRequestVO.setRefundedAt_start(previousDay+" 00:00:00");
+ queryReturnOrderRequestVO.setRefundedAt_end(previousDay+" 23:59:59");
+ List returnGoodsOrders = queryOfsOnlyReturnOrders(queryReturnOrderRequestVO);
+ if (returnGoodsOrders == null || returnGoodsOrders.size() == 0) {
+ return;
+ }
+ //过滤仅退款 returnType:0 不退货、exchangeType:0 不换货、refundInd:1 退款 returnnode:300/200 售后/售中
+ List refundOnlyData = filterRefundOnly(returnGoodsOrders);
+
+ //保存数据
+ saveData(refundOnlyData);
+
+ //过滤日志
+ List filterReturnGoodsOrders = filterData(refundOnlyData);
+ if (filterReturnGoodsOrders == null || filterReturnGoodsOrders.size() == 0) {
+ return;
+ }
+ //推送
+ implement(filterReturnGoodsOrders);
+
+
+ } catch (Exception e) {
+ logger.error("丽知:售后订单(ToC仅退款)--->U8C红字应收单,start()方法报错:" + e);
+ }
+ }
+
+ /**
+ * @param ofsCode 售后订单号
+ */
+ public void start(String ofsCode) {
+ String[] split = ofsCode.split("_");
+ try {
+ QueryReturnOrderRequestVO queryReturnOrderRequestVO = new QueryReturnOrderRequestVO();
+ queryReturnOrderRequestVO.setCode(split[0]);
+ List returnGoodsOrders = queryOfsOnlyReturnOrders(queryReturnOrderRequestVO);
+ if (returnGoodsOrders == null || returnGoodsOrders.size() == 0) {
+ Assert.state(false, "丽知:售后订单(ToC仅退款):{} --->U8C红字应收单,未查询到OFS售后订单(ToC仅退款)", ofsCode);
+ }
+
+ //过滤仅退款 returnType:0 不退货、exchangeType:0 不换货、refundInd:1 退款
+ List refundOnlyData = filterRefundOnly(returnGoodsOrders);
+
+ //保存数据
+ saveData(refundOnlyData);
+
+ //过滤日志
+ List filterReturnGoodsOrders = filterData(refundOnlyData);
+ if (filterReturnGoodsOrders == null || filterReturnGoodsOrders.size() == 0) {
+ Assert.state(false, "丽知:售后订单(ToC仅退款):{} --->U8C红字应收单,该售后订单(ToC仅退款)已被推送成功,请勿重新推送", ofsCode);
+ }
+ //推送
+ implement(filterReturnGoodsOrders);
+
+
+ } catch (Exception e) {
+ logger.error("丽知:售后订单(ToC仅退款)--->U8C红字应收单,start(String ofsCode)方法报错:" + e);
+ }
+ }
+
+ /**
+ * 退款时间区间
+ *
+ * @param startTime
+ * @param endTime
+ */
+ public void start(String startTime, String endTime) {
+ try {
+ Date business_start = DateUtil.parse(startTime);
+ Date business_end = DateUtil.parse(endTime);
+ String start = DateUtil.format(business_start, "yyyy-MM-dd") + " 00:00:00";
+ String end = DateUtil.format(business_end, "yyyy-MM-dd") + " 23:59:59";
+
+ QueryReturnOrderRequestVO queryReturnOrderRequestVO = new QueryReturnOrderRequestVO();
+ queryReturnOrderRequestVO.setRefundedAt_start(start);
+ queryReturnOrderRequestVO.setRefundedAt_end(end);
+ List returnGoodsOrders = queryOfsOnlyReturnOrders(queryReturnOrderRequestVO);
+ if (returnGoodsOrders == null || returnGoodsOrders.size() == 0) {
+ return;
+ }
+ //过滤仅退款 returnType:0 不退货、exchangeType:0 不换货、refundInd:1 退款
+ List refundOnlyData = filterRefundOnly(returnGoodsOrders);
+
+ //保存数据
+ saveData(refundOnlyData);
+
+ //过滤日志
+ List filterReturnGoodsOrders = filterData(refundOnlyData);
+ if (filterReturnGoodsOrders == null || filterReturnGoodsOrders.size() == 0) {
+ return;
+ }
+ //推送
+ implement(filterReturnGoodsOrders);
+
+
+ } catch (Exception e) {
+ logger.error("丽知:售后订单(ToC仅退款)--->U8C红字应收单,start(String startTime, String endTime)方法报错:" + e);
+ }
+ }
+
+ /**
+ * 保存数据
+ */
+ public void saveData(List refundOnlyData) {
+ //过滤原始表
+ List filterOriginalOrders = filterOriginal(refundOnlyData);
+ //底表存数据库
+ if (filterOriginalOrders.size() != 0) {
+ save(filterOriginalOrders);
+ }
+ }
+
+ /**
+ * 过滤元数据底表,只过滤表头
+ *
+ * @param returnGoodsOrders
+ * @return
+ */
+ private List filterOriginal(List returnGoodsOrders) {
+ List filterOriginal = new ArrayList<>();
+ for (RerturnGoodsOrderSearchData goodsOrder : returnGoodsOrders) {
+ OnlyAfterSalesHEntity onlyAfterSalesHEntity = new OnlyAfterSalesHEntity();
+ onlyAfterSalesHEntity.setCode(goodsOrder.getHeader().getCode());
+ List query = onlyAfterSalesHDao.query(onlyAfterSalesHEntity);
+ if (query.size() != 0) {
+ continue;
+ } else {
+ filterOriginal.add(goodsOrder);
+ }
+ }
+ return filterOriginal;
+ }
+
+ /**
+ * returnType:0 不退货、exchangeType:0 不换货、refundInd:1 退款、returnNode:300/200 售后/售中
+ *
+ * @param rerturnGoodsOrderSearchData
+ * @return
+ */
+ public List filterRefundOnly(List rerturnGoodsOrderSearchData) {
+ List filterRefundOnly = new ArrayList<>();
+ for (RerturnGoodsOrderSearchData rerturnGoodsOrderSearchDatum : rerturnGoodsOrderSearchData) {
+ RerturnGoodsOrderSearchHeader header = rerturnGoodsOrderSearchDatum.getHeader();
+ if ("0".equals(header.getReturnType()) && "0".equals(header.getExchangeType()) && "1".equals(header.getRefundInd())&&("300".equals(header.getReturnNode())||"200".equals(header.getReturnNode()))) {
+ filterRefundOnly.add(rerturnGoodsOrderSearchDatum);
+ }
+ }
+ return filterRefundOnly;
+ }
+
+ /**
+ * 单据号+skuCode
+ * 过滤成功日志,并且过滤子表退款金额==0的数据
+ */
+ public List filterData(List returnGoodsOrders) {
+ List filterReturnGoodsOrders = new ArrayList<>();
+ for (RerturnGoodsOrderSearchData returnGoodsOrder : returnGoodsOrders) {
+ RerturnGoodsOrderSearchHeader header = returnGoodsOrder.getHeader();
+
+
+ List filterDetails = new ArrayList<>();
+ List details = returnGoodsOrder.getDetails();
+ for (RerturnGoodsOrderSearchDetails detail : details) {
+ if (detail.getTotalAmount() == null || "0".equals(detail.getTotalAmount()) || 0 == Double.parseDouble(detail.getTotalAmount())) {
+ continue;
+ }
+ String rootAppPk = header.getCode() + "_" + detail.getSkuCode();
+ boolean isExis = true;
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity();
+ integrationTaskLivingDetailsEntity.setRootAppPk(rootAppPk);
+ integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_Y);
+ integrationTaskLivingDetailsEntity.setPluginId(getPluginId());
+ List integrationTaskLivingDetailsEntities = iIntegrationTaskLivingDetailsDao.query(integrationTaskLivingDetailsEntity);
+ if (integrationTaskLivingDetailsEntities == null || integrationTaskLivingDetailsEntities.size() == 0) {
+ isExis = false;
+ }
+ if (!isExis) {
+ filterDetails.add(detail);
+ }
+ }
+ if (filterDetails.size() == 0) {
+ continue;
+ } else {
+ returnGoodsOrder.setDetails(filterDetails);
+ filterReturnGoodsOrders.add(returnGoodsOrder);
+ }
+ }
+ return filterReturnGoodsOrders;
+ }
+
+ /**
+ * 具体实现推送U8C红字应收单
+ *
+ * 公司+店铺+仓库+SKU+收发类别+部门 分组
+ *
+ * 因为优惠金额在表头,先按单据便利一变,具体分摊金额拆到每行,在去汇总
+ */
+ public void implement(List filterReturnGoodsOrders) throws Exception {
+ //分摊分摊后的子表
+ List allDetail = new ArrayList<>();
+ List allHeader = new ArrayList<>();
+ //分摊
+ for (RerturnGoodsOrderSearchData filterReturnGoodsOrder : filterReturnGoodsOrders) {
+// ofsOrderAfterSalesAmountAllocationUtil.tocSalesAmountAllocation(filterReturnGoodsOrder);
+ //查询部门
+ String refOrderCode = filterReturnGoodsOrder.getHeader().getRefOrderCode();
+ SaleOrderMessageDto ofsSaleOrder = getOfsOrder(refOrderCode);
+ String deptCode = "002";
+ if (ofsSaleOrder != null) {
+// Assert.state(false,"根据仅退款:{},查询销售订单:{},失败!未查询到对应销售订单",filterReturnGoodsOrder.getHeader().getCode(),refOrderCode);
+ if (ofsSaleOrder.getData().get(0).getHeader().getDepartmentType() != null && !"".equals((ofsSaleOrder.getData().get(0).getHeader().getDepartmentType()))) {
+ deptCode = ofsSaleOrder.getData().get(0).getHeader().getDepartmentType();
+ }
+ }
+ filterReturnGoodsOrder.getHeader().setSaleDeptCode(deptCode);
+ allHeader.add(filterReturnGoodsOrder.getHeader());
+ allDetail.addAll(filterReturnGoodsOrder.getDetails());
+ }
+
+ //分组:公司+店铺+部门+单据日期(退款日期),仅退款没有仓库,固不去
+ Map> collect = allHeader.stream().collect(Collectors.groupingBy(index -> index.getCompanyCode() + "_" + index.getStoreCode() + "_" + index.getSaleDeptCode() + "_" + index.getRefundedAt().substring(0, 10)));
+
+ for (Map.Entry> entry : collect.entrySet()) {
+ ;
+ String[] split = entry.getKey().split("_");//[0]公司 [1]店铺 [2]部门 [3]单据日期
+ //v:header列表, header.code == details.returnOrderCode
+
+ String mapStr = "";
+ String format = "";//暂时取创建时间,refundAt没返回
+ String response = "";
+// String ofsCode = v.get(0).getCode();
+// String ofsId = v.get(0).getId();
+ //日志记录使用
+ List logDetails = new ArrayList<>();
+ List r1 = new ArrayList<>();
+
+ try {
+ ArapDjzbVO arapDjzbVO = new ArapDjzbVO();
+ //主表 , 在表头先
+ ArapDjzbVO.Parentt parentvo = new ArapDjzbVO.Parentt();
+ //djrq 单据日期
+ format = split[3];//暂时取创建时间,refundAt没返回
+// format = "2024-09-30";
+ parentvo.setDjrq(format);
+ //dwbm 公司
+ String corpCode = queryU8CEntityUtil.queryBdDefDocByPkDefDocList(split[0]);
+ parentvo.setDwbm(corpCode);
+ //lrr 录入人
+ parentvo.setLrr(OverallConstant.getOverAllValue("u8cApiZdrCode"));
+ //wldx 往来对象标识 (0 客户 2部门 3业务员)
+ parentvo.setWldx("0");
+ //hbbm 客商==店铺,根据店铺区分tob、toc,,,编码需要转换,转换称自定义项。
+ BdCubasdocEntity entity = queryU8CEntityUtil.getFuzzyQueryCustomers(split[1]);
+ if(entity==null){
+ Assert.state(false,"根据客商自定义项1:{},未查询到客商基本档案,请假查。",split[1]);
+ }
+ parentvo.setHbbm(entity.getCustcode());
+ //根据店铺区分tob、toc,区分业务流程
+ String s = checkFlow(parentvo, split[1]);
+ if("TOB".equals(s)){
+ continue;
+ }
+ //deptid 部门
+ parentvo.setDeptid(split[2]);
+ //ywybm 业务员编码 ,不传喽
+
+ //shr 审核人
+ parentvo.setShr(OverallConstant.getOverAllValue("u8cApiZdrCode"));
+ //shrq 审核日
+ parentvo.setShrq(format);
+ //scomment 备注 returnNote 客服备注 sellerNote 卖家备注
+ //parentvo.setScomment(header.getReturnNote());
+
+ //djlxbm 单据类型编码(交易类型编码使用此字段,如D0、D1、D2)
+ parentvo.setDjlxbm("D0");
+// //xslxbm 业务流程
+ parentvo.setXslxbm("JTK");//TOC仅退款:JTK TOB仅退款:BJTK
+ //feinvstatus 开票状态
+ parentvo.setFeinvstatus("0");
+
+
+ //zyx1店铺
+ parentvo.setZyx1(split[1]);
+ //zyx2来源平台
+ parentvo.setZyx2(entry.getValue().get(0).getSourcePlatformCode());
+ //zyx3 收发类别 销售出库,写死:SALES
+ parentvo.setZyx3("SALES");
+ //zyx16 单据红字标识 1Y 2N
+ parentvo.setZyx16("1");
+
+ //子表,需要通过多个主表的id找到多个子表,且退货金额==0的不要
+ List ofsDetails = new ArrayList<>();
+ for (RerturnGoodsOrderSearchHeader rerturnGoodsOrderSearchHeader : entry.getValue()) {
+ allDetail.stream().forEach(index -> {
+ if (rerturnGoodsOrderSearchHeader.getCode().equals(index.getReturnOrderCode()) && index.getTotalAmount() != null && !"0".equals(index.getTotalAmount())) {
+ ofsDetails.add(index);
+ }
+ });
+ }
+ logDetails.addAll(ofsDetails);
+
+
+ //没有sku编码的报错
+ r1.clear();
+ for (RerturnGoodsOrderSearchDetails logDetail : logDetails) {
+ if(logDetail.getSkuCode()==null||"".equals(logDetail.getSkuCode())) {
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity();
+ integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_N);
+ integrationTaskLivingDetailsEntity.setRootAppNewData(null);
+ integrationTaskLivingDetailsEntity.setNewTransmitInfo(logDetail.getReturnOrderCode() + ",没有SKU编码,请检查OFS系统订单");
+ integrationTaskLivingDetailsEntity.setNewPushDate(new Date());
+ integrationTaskLivingDetailsEntity.setBusinessDate(format);
+ integrationTaskLivingDetailsEntity.setRootAppPk(logDetail.getReturnOrderCode() + "_" + logDetail.getSkuCode());
+ integrationTaskLivingDetailsEntity.setRootAppBill(logDetail.getReturnOrderCode());
+ integrationTaskLivingDetailsEntity.setPluginId(getPluginId());
+ saveOrUpdateBusinessLogUtil.saveOrUpdate(integrationTaskLivingDetailsEntity);
+ }else {
+ r1.add(logDetail);
+ }
+ }
+
+ //按sku分组
+ Map> collectSKU = r1.stream().collect(Collectors.groupingBy(index -> index.getSkuCode()));
+
+ List children = new ArrayList<>();
+ Set>> entries = collectSKU.entrySet();
+ for (Map.Entry> entry1 : entries) {
+ children.clear();
+ String kk = entry1.getKey();
+ List vv = entry1.getValue();
+ //kk是sku编码,vv是sku相同的子表
+ try {
+ ArapDjzbVO.Childrenn childrenn = new ArapDjzbVO.Childrenn();
+ //cinventoryid 存货
+ childrenn.setCinventoryid(kk);
+
+ //sum:jfbbje jfybje 借方本币金额/借方原币金额
+ BigDecimal sum_jfbbje = new BigDecimal(0);
+ //sum:jfbbsj jfybsj 借方本币税金/借方原币税金 默认(0.13)
+ BigDecimal sum_jfbbsj = new BigDecimal(0);
+ //sum:wbfbbje jfybwsje 借方本币无税金额/借方原币无税金额
+ BigDecimal sum_wbfbbje = new BigDecimal(0);
+ //sum:zyx4 平台优惠 platformDiscounts
+ BigDecimal sum_zyx4 = new BigDecimal(0);
+ //sum:zyx5 支付优惠 payDiscounts
+ BigDecimal sum_zyx5 = new BigDecimal(0);
+ //sum:zyx6 达人优惠 expertDiscounts
+ BigDecimal sum_zyx6 = new BigDecimal(0);
+ //sum:zyx7 商家优惠
+// BigDecimal sum_zyx7 = new BigDecimal(0);
+
+ //金额计算
+ for (RerturnGoodsOrderSearchDetails detail : vv) {
+ sum_jfbbje = sum_jfbbje.add(new BigDecimal(detail.getTotalAmount()));
+
+ BigDecimal sj = new BigDecimal(detail.getTotalAmount()).multiply(new BigDecimal(0.13)).setScale(2, RoundingMode.FLOOR);
+ sum_jfbbsj = sum_jfbbsj.add(sj);
+
+ BigDecimal ws = new BigDecimal(detail.getTotalAmount()).subtract(sj);
+ sum_wbfbbje = sum_wbfbbje.add(ws);
+
+// if (detail.getShareTargetPlatformDiscounts() != null) {
+// sum_zyx4 = sum_zyx4.add(detail.getShareTargetPlatformDiscounts());
+// }
+// if (detail.getShareTargetMerchantDiscounts() != null) {
+// sum_zyx5 = sum_zyx5.add(detail.getShareTargetMerchantDiscounts());
+// }
+// if (detail.getShareTargetExpertDiscounts() != null) {
+// sum_zyx6 = sum_zyx6.add(detail.getShareTargetExpertDiscounts());
+// }
+// if (detail.getShareTargetPayDiscounts() != null) {
+// sum_zyx7 = sum_zyx7.add(detail.getShareTargetPayDiscounts());
+// }
+
+ if (detail.getPlatformDiscounts() != null) {
+ sum_zyx4 = sum_zyx4.add(new BigDecimal(detail.getPlatformDiscounts()));
+ }
+ if (detail.getPayDiscounts() != null) {
+ sum_zyx5 = sum_zyx5.add(new BigDecimal(detail.getPayDiscounts()));
+ }
+ if (detail.getExpertDiscounts() != null) {
+ sum_zyx6 = sum_zyx6.add(new BigDecimal(detail.getExpertDiscounts()));
+ }
+ }
+ childrenn.setJfbbje("-" + sum_jfbbje);
+ childrenn.setJfybje("-" + sum_jfbbje);
+ childrenn.setJfbbsj("-" + sum_jfbbsj);
+ childrenn.setJfybsj("-" + sum_jfbbsj);
+ childrenn.setWbfbbje("-" + sum_wbfbbje);
+ childrenn.setJfybwsje("-" + sum_wbfbbje);
+ childrenn.setZyx4(String.valueOf(sum_zyx4));
+ childrenn.setZyx5(String.valueOf(sum_zyx5));
+ childrenn.setZyx6(String.valueOf(sum_zyx6));
+ children.add(childrenn);
+
+ //推送
+ arapDjzbVO.setParentvo(parentvo);
+ arapDjzbVO.setChildren(children);
+ mapStr = "{\"djzbvo\":[" + JSONUtil.toJsonStr(arapDjzbVO) + "]}";
+ //推送
+ ZTResult ztResult = pushU8CByApiCode.pushByCode(OverallConstant.getOverAllValue("arapYsInsertApproveCode"), mapStr);
+ //两层判断,一层中台转发,一层u8c返回
+ if ("false".equals(ztResult.getFlag())) {
+ //转发失败
+ response = JSONUtil.toJsonStr(ztResult.getAttribute());
+ Assert.state(false, "丽知:售后订单(ToC仅退款)--->U8C红字应收单,中台转发失败,失败原因:{}", ztResult.getAttribute());
+ }
+ Attribute attribute = ztResult.getAttribute();
+ boolean isSuccess = false;
+ String djbh = "";
+ String vouchid = "";
+ if ("success".equals(attribute.getStatus())) {
+ isSuccess = true;
+ String data = attribute.getData();
+ ArapDjzb arapDj = resultDataHandle(data);
+ djbh = arapDj.getParentvo().getDjbh();
+ vouchid = arapDj.getParentvo().getVouchid();
+ }
+ if (!isSuccess) {
+ Assert.state(false, "推送U8C--> 丽知:售后订单(ToC仅退款)--->U8C红字应收单 失败 接口返回结果:{} 接口入参:{}", response, mapStr);
+ }
+
+ //成功
+ for (RerturnGoodsOrderSearchDetails ofsDetail : vv) {
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity();
+ integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_Y);
+ integrationTaskLivingDetailsEntity.setRootAppNewData(mapStr);
+ integrationTaskLivingDetailsEntity.setNewTransmitInfo(response);
+ integrationTaskLivingDetailsEntity.setNewPushDate(new Date());
+ integrationTaskLivingDetailsEntity.setBusinessDate(format);
+ integrationTaskLivingDetailsEntity.setRootAppPk(ofsDetail.getReturnOrderCode() + "_" + ofsDetail.getSkuCode());
+ integrationTaskLivingDetailsEntity.setRootAppBill(ofsDetail.getReturnOrderCode());//仅退款单号
+ integrationTaskLivingDetailsEntity.setNewSystemNumber(djbh);
+ integrationTaskLivingDetailsEntity.setNewSystemPrimary(vouchid);
+ integrationTaskLivingDetailsEntity.setPluginId(getPluginId());
+ saveOrUpdateBusinessLogUtil.saveOrUpdate(integrationTaskLivingDetailsEntity);
+ }
+ } catch (Exception e) {
+ logger.error("推送U8C,丽知:售后订单(ToC仅退款)--->U8C红字应收单失败,失败原因:" + e);
+ //失败,则该k下的所有子表记录失败
+ ReusltStrDto reusltStrDto = JSON.parseObject(response, ReusltStrDto.class);
+ String ErrMessage = "";
+ if (reusltStrDto != null) {
+ ErrMessage = "推送U8C,丽知:售后订单(ToC仅退款)--->U8C红字应收单失败,失败原因:" + reusltStrDto.getErrormsg();
+ } else {
+ ErrMessage = "推送U8C,丽知:售后订单(ToC仅退款)--->U8C红字应收单失败,失败原因:" + e.getMessage();
+ }
+ //失败 批量新增 ofsDetails
+ for (RerturnGoodsOrderSearchDetails logDetail : vv) {
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity();
+ integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_N);
+ integrationTaskLivingDetailsEntity.setRootAppNewData(mapStr);
+ integrationTaskLivingDetailsEntity.setNewTransmitInfo(ErrMessage);
+ integrationTaskLivingDetailsEntity.setNewPushDate(new Date());
+ integrationTaskLivingDetailsEntity.setBusinessDate(format);
+ integrationTaskLivingDetailsEntity.setRootAppPk(logDetail.getReturnOrderCode() + "_" + logDetail.getSkuCode());
+ integrationTaskLivingDetailsEntity.setRootAppBill(logDetail.getReturnOrderCode());
+ integrationTaskLivingDetailsEntity.setPluginId(getPluginId());
+ saveOrUpdateBusinessLogUtil.saveOrUpdate(integrationTaskLivingDetailsEntity);
+ }
+ }
+
+ }
+ } catch (Exception e) {
+ logger.error("推送U8C,丽知:售后订单(ToC仅退款)--->U8C红字应收单最外层失败,失败原因:" + e);
+ //失败,最外层,则该k下的所有子表记录失败
+ ReusltStrDto reusltStrDto = JSON.parseObject(response, ReusltStrDto.class);
+ String ErrMessage = "";
+ if (reusltStrDto != null) {
+ ErrMessage = "推送U8C,丽知:售后订单(ToC仅退款)--->U8C红字应收单最外层失败,失败原因:" + reusltStrDto.getErrormsg();
+ } else {
+ ErrMessage = "推送U8C,丽知:售后订单(ToC仅退款)--->U8C红字应收单最外层失败,失败原因:" + e.getMessage();
+ }
+ //失败 批量新增 ofsDetails
+ for (RerturnGoodsOrderSearchDetails logDetail : r1) {
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity();
+ integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_N);
+ integrationTaskLivingDetailsEntity.setRootAppNewData(mapStr);
+ integrationTaskLivingDetailsEntity.setNewTransmitInfo(ErrMessage);
+ integrationTaskLivingDetailsEntity.setNewPushDate(new Date());
+ integrationTaskLivingDetailsEntity.setBusinessDate(format);
+ integrationTaskLivingDetailsEntity.setRootAppPk(logDetail.getReturnOrderCode() + "_" + logDetail.getSkuCode());
+ integrationTaskLivingDetailsEntity.setRootAppBill(logDetail.getReturnOrderCode());
+ integrationTaskLivingDetailsEntity.setPluginId(getPluginId());
+ saveOrUpdateBusinessLogUtil.saveOrUpdate(integrationTaskLivingDetailsEntity);
+ }
+ }
+ }
+ }
+
+ /**
+ * 公司转换
+ * @param allHeader
+ */
+ public void transCorp(List allHeader){
+ if(allHeader.size()==0){
+ return;
+ }
+
+
+ }
+
+ /**
+ * 根据店铺区分tob toc业务流程
+ * TOC仅退款:JTK TOB仅退款:BJTK
+ * parentvo.setXslxbm("JTK");
+ * 非b及c
+ * @param parentvo
+ * @param shop
+ */
+ @Autowired
+ private ShopTobOrToCUtil shopTobOrToCUtil;
+ public String checkFlow(ArapDjzbVO.Parentt parentvo,String shop){
+ String tobShop = shopTobOrToCUtil.getCommaShop("TOB");
+ String tocShop = shopTobOrToCUtil.getCommaShop("TOC");
+ System.out.println(tobShop);
+ System.out.println(tocShop);
+ if(tobShop.contains(shop)){
+// parentvo.setXslxbm("BJTK");//TOB
+ return "TOB";
+ }else {
+// parentvo.setXslxbm("JTK");//TOC
+ return "TOC";
+ }
+
+ }
+
+ /**
+ * ofs仅退款数据,存中台mysql数据库
+ * 表头表体分别存,忽略大小写 BeanUtil.copyPropreties(a,b,Copyoptions.create().ignoreCase())
+ *
+ * @param returnGoodsOrders
+ */
+ public void save(List returnGoodsOrders) {
+// List allH=new ArrayList<>();
+// List allB=new ArrayList<>();
+ for (RerturnGoodsOrderSearchData returnGoodsOrder : returnGoodsOrders) {
+ RerturnGoodsOrderSearchHeader header = returnGoodsOrder.getHeader();
+ OnlyAfterSalesHEntity onlyAfterSalesHEntity = new OnlyAfterSalesHEntity();
+ BeanUtil.copyProperties(header, onlyAfterSalesHEntity, CopyOptions.create().ignoreCase());
+// allH.add(onlyAfterSalesHEntity);
+ onlyAfterSalesHEntity.setId(null);
+ onlyAfterSalesHEntity.setOfsid(header.getId());
+ OnlyAfterSalesHEntity save = onlyAfterSalesHDao.save(onlyAfterSalesHEntity);
+ String HId = save.getId();
+
+ List details = returnGoodsOrder.getDetails();
+ for (RerturnGoodsOrderSearchDetails detail : details) {
+ OnlyAfterSalesBEntity onlyAfterSalesBEntity = new OnlyAfterSalesBEntity();
+ BeanUtil.copyProperties(detail, onlyAfterSalesBEntity, CopyOptions.create().ignoreCase());
+// allB.add(onlyAfterSalesBEntity);
+ onlyAfterSalesBEntity.setId(null);
+ onlyAfterSalesBEntity.setHid(HId);
+ onlyAfterSalesBEntity.setOfsid(detail.getId());
+ //四个优惠,platformDiscounts 平台优惠、merchantDiscounts 商家优惠、expertDiscounts 达人优惠、payDiscounts 支付优惠
+ onlyAfterSalesBEntity.setPlatformDiscounts(header.getPlatformDiscounts());
+ onlyAfterSalesBEntity.setMerchantDiscounts(header.getMerchantDiscounts());
+ onlyAfterSalesBEntity.setExpertDiscounts(header.getExpertDiscounts());
+ onlyAfterSalesBEntity.setPayDiscounts(header.getPayDiscounts());
+ onlyAfterSalesBDao.save(onlyAfterSalesBEntity);
+ }
+ }
+ }
+
+
+ /**
+ * 查询OFS销售订单
+ */
+ public SaleOrderMessageDto getOfsOrder(String code) throws Exception {
+ Long pageSize = 200L;
+ Long pageNo = 1L;
+
+ QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
+ queryOfsSoSaleOutVo.setPageNo(pageNo);
+ queryOfsSoSaleOutVo.setPageSize(pageSize);
+ queryOfsSoSaleOutVo.setCode(code);
+
+ InterfaceParamDto interfaceParamDto = new InterfaceParamDto();
+ interfaceParamDto.setApi("ofs.salesOrder.search");
+ interfaceParamDto.setData(JSON.toJSONString(queryOfsSoSaleOutVo));
+ SaleOrderMessageDto saleOrderMessageDto = (SaleOrderMessageDto) ofsUnifiedService.unified(interfaceParamDto);
+ if (saleOrderMessageDto.getData().size() == 0) {
+ return null;
+ }
+ return saleOrderMessageDto;
+ }
+
+
+ /**
+ * 查询ofs仅退款订单 销售退货单查询(ofs.returnOrder. search)
+ *
+ * 查询条件:refundedAt_start、refundedAt_end、code
+ * returnType:0 不退货
+ * exchangeType:0 不换货
+ * refundInd:1 退款
+ */
+ public List queryOfsOnlyReturnOrders(QueryReturnOrderRequestVO queryReturnOrderRequestVO) throws Exception {
+ Long pageNo = 1L;
+
+ List all = new ArrayList<>();
+
+ InterfaceParamDto interfaceParamDto = new InterfaceParamDto();
+ interfaceParamDto.setApi("ofs.returnOrder.search");
+ queryReturnOrderRequestVO.setClientCode("LETS");
+ //100订单池 500待同步 510已同步 900售后成功 400待合单 800已入库 999作废 700收货中 0待完善
+// queryReturnOrderRequestVO.setStatus("900");
+ queryReturnOrderRequestVO.setPageNo(pageNo);
+ queryReturnOrderRequestVO.setPageSize(500L);
+ interfaceParamDto.setData(JSON.toJSONString(queryReturnOrderRequestVO));
+
+ RerturnGoodsOrderSearchJsonRootBean rerturnGoodsOrderSearchJsonRootBean = (RerturnGoodsOrderSearchJsonRootBean) ofsUnifiedService.unified(interfaceParamDto);
+ if (rerturnGoodsOrderSearchJsonRootBean.getData() == null || rerturnGoodsOrderSearchJsonRootBean.getData().size() == 0) {
+ return null;
+ }
+ all.addAll(rerturnGoodsOrderSearchJsonRootBean.getData());
+
+ int count = rerturnGoodsOrderSearchJsonRootBean.getData().size();
+ while (count >= 500) {//>=500,可能还有下一页。
+ //还有下一页
+ pageNo++;
+ queryReturnOrderRequestVO.setPageNo(pageNo);
+ interfaceParamDto.setData(JSON.toJSONString(queryReturnOrderRequestVO));
+ RerturnGoodsOrderSearchJsonRootBean rerturnGoodsOrderSearchJsonRootBean1 = (RerturnGoodsOrderSearchJsonRootBean) ofsUnifiedService.unified(interfaceParamDto);
+ all.addAll(rerturnGoodsOrderSearchJsonRootBean1.getData());
+ count = rerturnGoodsOrderSearchJsonRootBean1.getData().size();
+ }
+ return all;
+ }
+
+ private ArapDjzb resultDataHandle(String resultData) {
+ try {
+ if (resultData != null && !"".equals(resultData)) {
+ if (resultData.contains("[")) {
+ resultData = resultData.substring(1, resultData.length() - 1);
+ }
+ return JSON.parseObject(resultData, ArapDjzb.class);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.error("解析返回参数失败的错误", e);
+ //如果解析失败,记录原因,但是不能影响结果的记录
+ }
+ return null;
+ }
+
+
+}
\ No newline at end of file