diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dao/IOnlyAfterSalesBDao.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dao/IOnlyAfterSalesBDao.java index 7fe7600f..0ae1a2bb 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dao/IOnlyAfterSalesBDao.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dao/IOnlyAfterSalesBDao.java @@ -25,4 +25,19 @@ public interface IOnlyAfterSalesBDao extends IBaseDao onlyAfterSalesHEntityList) throws Exception; + + /** + * 批量插入或更新,推送状态 + * + * @author liuyang + */ + void entityInsertOrUpdateBatchBySuccessOrFail3(List onlyAfterSalesHEntityList) throws Exception; + + + /** + * 批量插入或更新,推送状态 + * + * @author liuyang + */ + void entityInsertOrUpdateBatchBySuccessOrFail2(List onlyAfterSalesHEntityList) throws Exception; } \ No newline at end of file diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dao/impl/OnlyAfterSalesBDaoImpl.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dao/impl/OnlyAfterSalesBDaoImpl.java index bb6c255c..d027115c 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dao/impl/OnlyAfterSalesBDaoImpl.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/dao/impl/OnlyAfterSalesBDaoImpl.java @@ -24,4 +24,14 @@ public class OnlyAfterSalesBDaoImpl extends MybatisGenericDao onlyAfterSalesHEntityList) throws Exception { insert("com.hzya.frame.plugin.lets.dao.impl.OnlyAfterSalesBDaoImpl.entityInsertOrUpdateBatchBySuccessOrFail", onlyAfterSalesHEntityList); } + + @Override + public void entityInsertOrUpdateBatchBySuccessOrFail3(List onlyAfterSalesHEntityList) throws Exception { + insert("com.hzya.frame.plugin.lets.dao.impl.OnlyAfterSalesBDaoImpl.entityInsertOrUpdateBatchBySuccessOrFail3", onlyAfterSalesHEntityList); + } + + @Override + public void entityInsertOrUpdateBatchBySuccessOrFail2(List onlyAfterSalesHEntityList) throws Exception { + insert("com.hzya.frame.plugin.lets.dao.impl.OnlyAfterSalesBDaoImpl.entityInsertOrUpdateBatchBySuccessOrFail2", onlyAfterSalesHEntityList); + } } \ No newline at end of file diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/entity/OnlyAfterSalesBEntity.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/entity/OnlyAfterSalesBEntity.java index 5ce8c670..a0c57c5e 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/entity/OnlyAfterSalesBEntity.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/entity/OnlyAfterSalesBEntity.java @@ -140,7 +140,7 @@ public class OnlyAfterSalesBEntity extends BaseEntity { //业务类型 private String businessType; - //业务日期-退货完成时间或交易成功时间 + //业务日期-关联时间或交易成功时间 private String transactionDate; //推送时间 @@ -169,5 +169,17 @@ public class OnlyAfterSalesBEntity extends BaseEntity { private String def5; private String def6; + + private String def7; + + private String def8; + + private String def9; + + private String def10; + + private String def11; + + private String def12; } diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/entity/OnlyAfterSalesBEntity.xml b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/entity/OnlyAfterSalesBEntity.xml index ad5e04bb..00f8d8d5 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/entity/OnlyAfterSalesBEntity.xml +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/entity/OnlyAfterSalesBEntity.xml @@ -38,18 +38,24 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -101,6 +107,12 @@ ,def4 ,def5 ,def6 + ,def7 + ,def8 + ,def9 + ,def10 + ,def11 + ,def12 @@ -409,10 +421,10 @@ - insert into only_after_sales_b(hid,ofsid,returnOrderId, returnOrderCode, skuCode, skuName, companyCode, clientCode, storeCode, returnType, refundInd, requestQty, fulfillQty, quantityUM, msrPrice, totalWeight, totalVolume, weightUM, volumeUM, totalAmount, sourceLineNum, sourceOrderCode, sourceDiscountPrice, sourcePayAmount, sourceRequestQty, bomType, originalDetailId, reasonCode, reasonDesc,businessType) + insert into only_after_sales_b(hid,ofsid,returnOrderId, returnOrderCode, skuCode, skuName, companyCode, clientCode, storeCode, returnType, refundInd, requestQty, fulfillQty, quantityUM, msrPrice, totalWeight, totalVolume, weightUM, volumeUM, totalAmount, sourceLineNum, sourceOrderCode, sourceDiscountPrice, sourcePayAmount, sourceRequestQty, bomType, originalDetailId, reasonCode, reasonDesc,businessType,transactionDate) values - (#{entity.hid},#{entity.ofsid},#{entity.returnorderid},#{entity.returnordercode},#{entity.skucode},#{entity.skuname},#{entity.companycode},#{entity.clientcode},#{entity.storecode},#{entity.returntype},#{entity.refundind},#{entity.requestqty},#{entity.fulfillqty},#{entity.quantityum},#{entity.msrprice},#{entity.totalweight},#{entity.totalvolume},#{entity.weightum},#{entity.volumeum},#{entity.totalamount},#{entity.sourcelinenum},#{entity.sourceordercode},#{entity.sourcediscountprice},#{entity.sourcepayamount},#{entity.sourcerequestqty},#{entity.bomtype},#{entity.originaldetailid},#{entity.reasoncode},#{entity.reasondesc},#{entity.businessType}) + (#{entity.hid},#{entity.ofsid},#{entity.returnorderid},#{entity.returnordercode},#{entity.skucode},#{entity.skuname},#{entity.companycode},#{entity.clientcode},#{entity.storecode},#{entity.returntype},#{entity.refundind},#{entity.requestqty},#{entity.fulfillqty},#{entity.quantityum},#{entity.msrprice},#{entity.totalweight},#{entity.totalvolume},#{entity.weightum},#{entity.volumeum},#{entity.totalamount},#{entity.sourcelinenum},#{entity.sourceordercode},#{entity.sourcediscountprice},#{entity.sourcepayamount},#{entity.sourcerequestqty},#{entity.bomtype},#{entity.originaldetailid},#{entity.reasoncode},#{entity.reasondesc},#{entity.businessType},#{entity.transactionDate}) on duplicate key update hid = values(hid), @@ -444,30 +456,83 @@ originalDetailId = values(originalDetailId), reasonCode = values(reasonCode), reasonDesc = values(reasonDesc), - businessType = values(businessType) + businessType = values(businessType), + transactionDate = values(transactionDate) - - - insert into only_after_sales_b(ofsid,newPushDate,newTransmitInfo,newState,newsystemnumber,newsystemprimary,def1,def2,def3,def4,def5,def6) - values - - (#{entity.ofsid},#{entity.newPushDate},#{entity.newTransmitInfo},#{entity.newState},#{entity.newsystemnumber},#{entity.newsystemprimary},#{entity.def1},#{entity.def2},#{entity.def3},#{entity.def4},#{entity.def5},#{entity.def6}) - - on duplicate key update - ofsid = values(ofsid), - newPushDate = values(newPushDate), - newTransmitInfo = values(newTransmitInfo), - newState = values(newState), - newsystemnumber = values(newsystemnumber), - newsystemprimary = values(newsystemprimary), - def1 = values(def1), - def2 = values(def2), - def3 = values(def3), - def4 = values(def4), - def5 = values(def5), - def6 = values(def6) - + + + insert into only_after_sales_b(ofsid,newPushDate,newTransmitInfo,newState,newsystemnumber,newsystemprimary,def1,def2,def3,def4,def5,def6,def7) + values + + (#{entity.ofsid},#{entity.newPushDate},#{entity.newTransmitInfo},#{entity.newState},#{entity.newsystemnumber},#{entity.newsystemprimary},#{entity.def1},#{entity.def2},#{entity.def3},#{entity.def4},#{entity.def5},#{entity.def6},#{entity.def7}) + + on duplicate key update + ofsid = values(ofsid), + + newPushDate = values(newPushDate), + newTransmitInfo = values(newTransmitInfo), + newState = values(newState), + newsystemnumber = values(newsystemnumber), + newsystemprimary = values(newsystemprimary), + + def1 = values(def1), + def2 = values(def2), + def3 = values(def3), + def4 = values(def4), + def5 = values(def5), + def6 = values(def6), + def7 = values(def7) + + + + + insert into only_after_sales_b(ofsid,def1,def2,def3,def4,def5,def6,def7,def8,def9,def10,def11,def12) + values + + (#{entity.ofsid},#{entity.def1},#{entity.def2},#{entity.def3},#{entity.def4},#{entity.def5},#{entity.def6},#{entity.def7},#{entity.def8},#{entity.def9},#{entity.def10},#{entity.def11},#{entity.def12}) + + on duplicate key update + ofsid = values(ofsid), + + def1 = values(def1), + def2 = values(def2), + def3 = values(def3), + def4 = values(def4), + def5 = values(def5), + def6 = values(def6), + def7 = values(def7), + + def8 = values(def8), + def9 = values(def9), + def10 = values(def10), + def11 = values(def11), + def12 = values(def12) + + + + + + insert into only_after_sales_b(ofsid,def8,def9,def10,def11,def12,def1,def2,def3,def4,def5,def6,def7) + values + + (#{entity.ofsid},#{entity.def8},#{entity.def9},#{entity.def10},#{entity.def11},#{entity.def12},#{entity.def1},#{entity.def2},#{entity.def3},#{entity.def4},#{entity.def5},#{entity.def6},#{entity.def7}) + + on duplicate key update + ofsid = values(ofsid), + def8 = values(def8), + def9 = values(def9), + def10 = values(def10), + def11 = values(def11), + def12 = values(def12), + def1 = values(def1), + def2 = values(def2), + def3 = values(def3), + def4 = values(def4), + def5 = values(def5), + def6 = values(def6), + def7 = values(def7) + diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofs/entity/OfsPassiveorderDetailEntity.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofs/entity/OfsPassiveorderDetailEntity.java index b6b985c8..b33d1267 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofs/entity/OfsPassiveorderDetailEntity.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofs/entity/OfsPassiveorderDetailEntity.java @@ -54,7 +54,7 @@ public class OfsPassiveorderDetailEntity extends BaseEntity { */ private String businessdate; /** - * 交易时间 + * 交易时间或者关联时间,哪个晚取哪个 */ private String transactionDate; /** diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToB.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToB.java index a8eebeb9..43cae188 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToB.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToB.java @@ -226,7 +226,7 @@ public class PassiveWarehouseReceiptToB extends PluginBaseEntity { //实时执行,每1分钟调度一次 StartAndEndVo startAndEndVo = offsetTimeTime.getCurrentDateRange(); startImplementByStockTime(startAndEndVo.getStart_time(), startAndEndVo.getEnd_time()); - startImplementByTradeTime(startAndEndVo.getStart_time(), startAndEndVo.getEnd_time()); +// startImplementByTradeTime(startAndEndVo.getStart_time(), startAndEndVo.getEnd_time()); } } } catch (Exception e) { @@ -861,6 +861,10 @@ public class PassiveWarehouseReceiptToB extends PluginBaseEntity { saleorderRequestParentDto.setPk_defdoc16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y主键")); saleorderRequestParentDto.setVdef16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y名称")); + //售后类型标识 + saleorderRequestParentDto.setPk_defdoc8(OverallConstant.getOverAllValue("售后类型标识-TOB无源件-主键")); + saleorderRequestParentDto.setVdef8(OverallConstant.getOverAllValue("售后类型标识-TOB无源件-名称")); + saleorderRequestDto.setParentvo(saleorderRequestParentDto); List saleorderRequestChildrenDtoList = new ArrayList<>(); @@ -1081,7 +1085,7 @@ public class PassiveWarehouseReceiptToB extends PluginBaseEntity { String memberId = header1.getMemberId(); //会员id -// memberId = "GYS00002"; +// memberId = "9001"; Assert.notNull(memberId, "TOB销售订单(OFS)表头会员id不能为空,否则无法匹配U8C客商档案!"); Assert.state(!"".equals(memberId.trim()), "TOB销售订单(OFS)表头会员id不能为空,否则无法匹配U8C客商档案!"); @@ -1676,7 +1680,8 @@ public class PassiveWarehouseReceiptToB extends PluginBaseEntity { private BdBusitypeEntity u8cOperationFlow() throws Exception { //查询业务流程 //2024年8月6日 11:33:07 具体的业务流程名称,还需要实施提供 - String processName = "TOB无源件"; +// String processName = "TOB无源件"; + String processName = "TOB退货"; BdBusitypeEntity bdBusitypeEntity = queryBdBusitypeUtil.queryBdBusitype(processName); Assert.notNull(bdBusitypeEntity, "根据业务流程名称({})没有查询到业务流程", processName); return bdBusitypeEntity; @@ -2020,7 +2025,7 @@ public class PassiveWarehouseReceiptToB extends PluginBaseEntity { details1.setDef1(afterSalesOrder.getTotalAmount());//计算应收 details1.setDef2(calculationFormula.toString());//计算公式 - details1.setRefundedAt(ofsRertunOrder.getHeader().getRefundedAt());//表头对应的退款完成时间 +// details1.setRefundedAt(ofsRertunOrder.getHeader().getRefundedAt());//表头对应的退款完成时间 } SalesInvoiceDto salesInvoiceDto = new SalesInvoiceDto(); salesInvoiceDto.setParentvo(salesInvoiceHeadDto); diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToC.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToC.java index c8f39610..dab2b002 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToC.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToC.java @@ -82,6 +82,8 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { private static final String PROD_FILED = "prod"; + private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; + @Autowired private BalanceUnitPriceUtil balanceUnitPriceUtil; @@ -835,6 +837,10 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { saleorderRequestParentDto.setPk_defdoc16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y主键")); saleorderRequestParentDto.setVdef16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y名称")); + //售后类型标识 + saleorderRequestParentDto.setPk_defdoc8(OverallConstant.getOverAllValue("售后类型标识-TOC无源件-主键")); + saleorderRequestParentDto.setVdef8(OverallConstant.getOverAllValue("售后类型标识-TOC无源件-名称")); + saleorderRequestDto.setParentvo(saleorderRequestParentDto); List saleorderRequestChildrenDtoList = new ArrayList<>(); @@ -1012,8 +1018,11 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { // 分组汇总 String dimension = null; Map> stringListMap = groupSummary2(passiveStorageSonDetailsDto2s, dimension); - // 查询U8C业务流程-红字应收单 - BdBusitypeEntity bdBusitypeEntity = u8cOperationFlowV2(); + // 查询U8C业务流程-红字销售订单 + BdBusitypeEntity bdBusitypeEntity1 = u8cOperationFlowV2(); + // 查询U8C业务流程-蓝字销售订单 + BdBusitypeEntity bdBusitypeEntity2 = u8cOperationFlowV3(); + //初始化所有存货管理档案对应的结存价+采购价 // List mapList = initAllBalancePricePurchasePrice(); //查询「平台运费」、「平台优惠」、「支付优惠」、「达人优惠」存货基本档案(注意没有商家优惠) @@ -1027,7 +1036,7 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { //查询「平台运费」、「平台优惠」、「支付优惠」、「达人优惠」所有公司的存货管理档案 Map stringBdInvmandocEntityMap = queryAdditionUtil.queryInventoryMan(bdInvbasdocEntities); - if (bdBusitypeEntity != null && stringListMap != null) { + if (bdBusitypeEntity1 != null && bdBusitypeEntity2 != null && stringListMap != null) { Iterator>> iterator = stringListMap.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry> next = iterator.next(); @@ -1038,9 +1047,9 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { BdCorpEntity bdCorpEntity = value.get(0).getBdCorpEntity();//表头销售公司 BdCorpEntity deliverGoodsCorp = value.get(0).getDeliverGoodsCorp();//发货公司 BdCalbodyEntity bdCalbodyEntity = value.get(0).getBdCalbodyEntity();//发货仓库组织 -// BdStordocEntity bdStordocEntity = value.get(0).getBdStordocEntity();//发货仓库 + BdStordocEntity bdStordocEntity = value.get(0).getBdStordocEntity();//发货仓库 BdCalbodyEntity bdCalbodyEntity1 = value.get(0).getBdCalbodyEntity1();//收货库存组织 -// BdStordocEntity bdStordocEntity1 = value.get(0).getBdStordocEntity1();//收货仓库 + BdStordocEntity bdStordocEntity1 = value.get(0).getBdStordocEntity1();//收货仓库 BdSalestruEntity bdSalestruEntity = value.get(0).getBdSalestruEntity();//销售组织 BdDeptdocEntity bdDeptdocEntity = value.get(0).getBdDeptdocEntity();//业务部门 BdCumandocEntity bdCumandocEntity = value.get(0).getBdCumandocEntity();//客商管理档案 @@ -1048,58 +1057,60 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { BdDefdocEntity platformArchives = value.get(0).getPlatformArchives();//U8C平台档案 BdDefdocEntity shopArchives = value.get(0).getShopArchives();//U8C店铺档案 BdRdclEntity bdRdclEntity = value.get(0).getBdRdclEntity();//U8C收发类别 + String newState = value.get(0).getNewState();//红字订单推送状态 + String def10 = value.get(0).getDef10();//蓝字订单推送状态 - try { - //生成业务日期 +// try { + //生成业务日期 // String generateBusinessDate = createSuccessFulTradeDate(header); - String generateBusinessDate = value.get(0).getTargetBusinessDate().substring(0, 10); +// String generateBusinessDate = value.get(0).getTargetBusinessDate().substring(0, 10); - //组装应收单表头 - ArapDjzbVO.Parentt parentVo = new ArapDjzbVO.Parentt(); - parentVo.setDjrq(generateBusinessDate);//单据日期 - parentVo.setDwbm(bdCorpEntity.getUnitcode());//公司 - parentVo.setLrr(OverallConstant.getOverAllValue("u8cApiZdrCode"));//录入人 - parentVo.setWldx("0");//往来对象标识 固定为:客户 - parentVo.setDeptid(bdDeptdocEntity.getDeptcode());//部门 - parentVo.setShr(OverallConstant.getOverAllValue("u8cApiZdrCode"));//审批人 - parentVo.setShrq(generateBusinessDate);//审核日期 - parentVo.setDjlxbm("D0");//单据类型编码 - parentVo.setXslxbm(bdBusitypeEntity.getBusicode());//业务流程 - parentVo.setFeinvstatus("0");//开票状态 - parentVo.setHbbm(bdCubasdocEntity.getCustcode());//客商主键 - //店铺档案 - parentVo.setZyx1(shopArchives.getDoccode()); -// parentVo.setDef1(shopArchives.getDocname()); - //来源平台 - parentVo.setZyx2(platformArchives.getDoccode()); -// parentVo.setDef2(platformArchives.getDocname()); - //收发类别 - parentVo.setZyx3(bdRdclEntity.getRdcode()); -// parentVo.setDef3(bdRdclEntity.getRdname()); - //单据红字标识 - parentVo.setZyx16("1"); -// parentVo.setDef16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y名称")); -// parentVo.setZyx19();//自定义项19 OFS单号不传,因为是汇总的 - parentVo.setZyx17(ProfilesActiveConstant.sourceSystem1);//来源系统 - parentVo.setZyx18(key); + //组装应收单表头 +// ArapDjzbVO.Parentt parentVo = new ArapDjzbVO.Parentt(); +// parentVo.setDjrq(generateBusinessDate);//单据日期 +// parentVo.setDwbm(bdCorpEntity.getUnitcode());//公司 +// parentVo.setLrr(OverallConstant.getOverAllValue("u8cApiZdrCode"));//录入人 +// parentVo.setWldx("0");//往来对象标识 固定为:客户 +// parentVo.setDeptid(bdDeptdocEntity.getDeptcode());//部门 +// parentVo.setShr(OverallConstant.getOverAllValue("u8cApiZdrCode"));//审批人 +// parentVo.setShrq(generateBusinessDate);//审核日期 +// parentVo.setDjlxbm("D0");//单据类型编码 +// parentVo.setXslxbm(bdBusitypeEntity.getBusicode());//业务流程 +// parentVo.setFeinvstatus("0");//开票状态 +// parentVo.setHbbm(bdCubasdocEntity.getCustcode());//客商主键 +// //店铺档案 +// parentVo.setZyx1(shopArchives.getDoccode()); +//// parentVo.setDef1(shopArchives.getDocname()); +// //来源平台 +// parentVo.setZyx2(platformArchives.getDoccode()); +//// parentVo.setDef2(platformArchives.getDocname()); +// //收发类别 +// parentVo.setZyx3(bdRdclEntity.getRdcode()); +//// parentVo.setDef3(bdRdclEntity.getRdname()); +// //单据红字标识 +// parentVo.setZyx16("1"); +//// parentVo.setDef16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y名称")); +//// parentVo.setZyx19();//自定义项19 OFS单号不传,因为是汇总的 +// parentVo.setZyx17(ProfilesActiveConstant.sourceSystem1);//来源系统 +// parentVo.setZyx18(key); - //验证是否为指定的店铺,如果为true,则取结存价 - Boolean isCheckShopChoose = balanceUnitPriceUtil.checkOfsShop(header.getStoreCode()); - //把汇总好的出库单明细行合并成一行 - PassiveStorageSonDetailsDto2 passiveStorageSonDetailsDto2 = groupMergeDetailedRows2(value, isCheckShopChoose); - //存货管理档案:取发货公司的存货管理档案 - BdInvmandocEntity bdInvmandocEntity = value.get(0).getBdInvmandocEntity(); - //存货基础档案 - BdInvbasdocEntity bdInvbasdocEntity = value.get(0).getBdInvbasdocEntity(); - //根据存货基础档案编码,查询当前存货的税率 - BdTaxitemsEntity bdTaxitemsEntity1 = value.get(0).getBdTaxitemsEntity(); + //验证是否为指定的店铺,如果为true,则取结存价 +// Boolean isCheckShopChoose = balanceUnitPriceUtil.checkOfsShop(header.getStoreCode()); + //把汇总好的出库单明细行合并成一行 +// PassiveStorageSonDetailsDto2 passiveStorageSonDetailsDto2 = groupMergeDetailedRows2(value, isCheckShopChoose); + //存货管理档案:取发货公司的存货管理档案 +// BdInvmandocEntity bdInvmandocEntity = value.get(0).getBdInvmandocEntity(); + //存货基础档案 +// BdInvbasdocEntity bdInvbasdocEntity = value.get(0).getBdInvbasdocEntity(); + //根据存货基础档案编码,查询当前存货的税率 +// BdTaxitemsEntity bdTaxitemsEntity1 = value.get(0).getBdTaxitemsEntity(); - //如果合并后的金额为0,则不传到U8C - Assert.notNull(passiveStorageSonDetailsDto2.getGroupTotalPayAmount(), "passiveStorageSonDetailsDto.getGroupTotalPayAmount()不能为空!"); - BigDecimal groupTotalPayAmount = passiveStorageSonDetailsDto2.getGroupTotalPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP); - if ("0".equals(groupTotalPayAmount.stripTrailingZeros().toPlainString())) { - continue; - } + //如果合并后的金额为0,则不传到U8C +// Assert.notNull(passiveStorageSonDetailsDto2.getGroupTotalPayAmount(), "passiveStorageSonDetailsDto.getGroupTotalPayAmount()不能为空!"); +// BigDecimal groupTotalPayAmount = passiveStorageSonDetailsDto2.getGroupTotalPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP); +// if ("0".equals(groupTotalPayAmount.stripTrailingZeros().toPlainString())) { +// continue; +// } // String tax = null;//税率 // BigDecimal noriginalcurmny = null;//无税金额 @@ -1113,18 +1124,248 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { // Assert.state(false, "金额计算失败 跑出异常:{}", e.getMessage()); // } - //组装应收单表体 - List pushScenarioType = new ArrayList<>(); - ArapDjzbVO.Childrenn arapDjzbVOChildrenn = new ArapDjzbVO.Childrenn(); - pushScenarioType.add(arapDjzbVOChildrenn); - arapDjzbVOChildrenn.setCinventoryid(bdInvbasdocEntity.getInvcode());//存货管理档案 - arapDjzbVOChildrenn.setJfbbje("-" + groupTotalPayAmount.stripTrailingZeros().toPlainString());//借方本币金额 - arapDjzbVOChildrenn.setJfybje("-" + groupTotalPayAmount.stripTrailingZeros().toPlainString());//借方原币金额 + //组装应收单表体 +// List pushScenarioType = new ArrayList<>(); +// ArapDjzbVO.Childrenn arapDjzbVOChildrenn = new ArapDjzbVO.Childrenn(); +// pushScenarioType.add(arapDjzbVOChildrenn); +// arapDjzbVOChildrenn.setCinventoryid(bdInvbasdocEntity.getInvcode());//存货管理档案 +// arapDjzbVOChildrenn.setJfbbje("-" + groupTotalPayAmount.stripTrailingZeros().toPlainString());//借方本币金额 +// arapDjzbVOChildrenn.setJfybje("-" + groupTotalPayAmount.stripTrailingZeros().toPlainString());//借方原币金额 // arapDjzbVOChildrenn.setJfbbsj("-" + noriginalcurmny.stripTrailingZeros().toPlainString());//借方本币税金 // arapDjzbVOChildrenn.setJfybsj("-" + noriginalcurmny.stripTrailingZeros().toPlainString());//借方原币税金 // arapDjzbVOChildrenn.setWbfbbje("-" + noriginalcurtaxmny.stripTrailingZeros().toPlainString());//借方本币无税金额 // arapDjzbVOChildrenn.setJfybwsje("-" + noriginalcurtaxmny.stripTrailingZeros().toPlainString());//借方原币无税金额 +// //退货没有邮费金额,已经向万万确认 +// //平台优惠 +// if (passiveStorageSonDetailsDto2.getVdef4() != null) { +// BigDecimal vdef4 = passiveStorageSonDetailsDto2.getVdef4(); +// if (vdef4.compareTo(BigDecimal.ZERO) > 0) { +// //发货运费-存货基本档案 +// BdInvbasdocEntity bdInvbasdocEntity1 = mapBdInvbasdocEntity.get("FY01"); +// //存货管理档案 +// BdInvmandocEntity bdInvmandocEntity1 = stringBdInvmandocEntityMap.get(bdInvbasdocEntity1.getInvcode() + deliverGoodsCorp.getPkCorp()); +// //存货对应的税率 +// BdTaxitemsEntity bdTaxitemsEntity = stringBdTaxitemsEntityMap.get("FY01"); +// //补充:平台优惠-存货 +// BigDecimal absAccumulatedPostage = vdef4.abs(); +// BigDecimal negativeValue = absAccumulatedPostage.negate(); +// queryAdditionUtil.additionalV2(pushScenarioType, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, bdTaxitemsEntity); +// } +// } +// //达人优惠 +// if (passiveStorageSonDetailsDto2.getVdef6() != null) { +// BigDecimal vdef6 = passiveStorageSonDetailsDto2.getVdef6(); +// if (vdef6.compareTo(BigDecimal.ZERO) > 0) { +// //发货运费-存货基本档案 +// BdInvbasdocEntity bdInvbasdocEntity1 = mapBdInvbasdocEntity.get("FY02"); +// //存货管理档案 +// BdInvmandocEntity bdInvmandocEntity1 = stringBdInvmandocEntityMap.get(bdInvbasdocEntity1.getInvcode() + deliverGoodsCorp.getPkCorp()); +// //存货对应的税率 +// BdTaxitemsEntity bdTaxitemsEntity = stringBdTaxitemsEntityMap.get("FY02"); +// //补充:达人优惠-存货 +// BigDecimal absAccumulatedPostage = vdef6.abs(); +// BigDecimal negativeValue = absAccumulatedPostage.negate(); +// queryAdditionUtil.additionalV2(pushScenarioType, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, bdTaxitemsEntity); +// } +// } + //支付优惠 +// if (passiveStorageSonDetailsDto2.getVdef5() != null) { +// BigDecimal vdef5 = passiveStorageSonDetailsDto2.getVdef5(); +// if (vdef5.compareTo(BigDecimal.ZERO) > 0) { +// //发货运费-存货基本档案 +// BdInvbasdocEntity bdInvbasdocEntity1 = mapBdInvbasdocEntity.get("FY04"); +// //存货管理档案 +// BdInvmandocEntity bdInvmandocEntity1 = stringBdInvmandocEntityMap.get(bdInvbasdocEntity1.getInvcode() + deliverGoodsCorp.getPkCorp()); +// //存货对应的税率 +// BdTaxitemsEntity bdTaxitemsEntity = stringBdTaxitemsEntityMap.get("FY04"); +// //补充:支付优惠-存货 +// BigDecimal absAccumulatedPostage = vdef5.abs(); +// BigDecimal negativeValue = absAccumulatedPostage.negate(); +// queryAdditionUtil.additionalV2(pushScenarioType, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, bdTaxitemsEntity); +// } +// } + + //推送U8C +// List arapDjzbVOList = new ArrayList<>(); +// ArapDjzbVO arapDjzbVO = new ArapDjzbVO(); +// arapDjzbVO.setParentvo(parentVo); +// arapDjzbVO.setChildren(pushScenarioType); +// arapDjzbVOList.add(arapDjzbVO); +// +// Map> listMap = new HashMap<>(); +// listMap.put("djzbvo", arapDjzbVOList); +// ArapDjzb arapDjzb = sendU8cRedReceivable(JSON.toJSONString(listMap)); +// String djbh = null; +// String dwbm = null; +// String vouchid = null; +// if (arapDjzb != null && arapDjzb.getParentvo() != null) { +// djbh = arapDjzb.getParentvo().getDjbh(); +// dwbm = arapDjzb.getParentvo().getDwbm(); +// vouchid = arapDjzb.getParentvo().getVouchid(); +// } +// logger.info("TOC红字应收单:{} 应收单主键:{} 销售公司:{}", djbh, vouchid, dwbm); + //生成业务日期 + + +// updateSuccessOrFail3(value, "Y", "success", djbh, vouchid); +// } catch (Exception e) { +// logger.error("TOC红字应收单转换成U8C对象过程中、或者单据推送到U8C出现异常!", e); +// //记录失败 +// String message = e.getMessage(); +// if (message == null) { +// message = "未知错误"; +// } +// updateSuccessOrFail3(value, "N", message, null, null); +// } + + try { + String generateBusinessDate = value.get(0).getTargetBusinessDate().substring(0, 10); + + SaleorderRequestDto saleorderRequestDto = new SaleorderRequestDto(); + SaleorderRequestParentDto saleorderRequestParentDto = new SaleorderRequestParentDto(); + saleorderRequestParentDto.setDbilldate(generateBusinessDate);//单据日期 + saleorderRequestParentDto.setBretinvflag("Y");//退货标记 + saleorderRequestParentDto.setCbiztype(bdBusitypeEntity1.getPkBusitype());//业务流程 + saleorderRequestParentDto.setCcalbodyid(bdCalbodyEntity.getPkCalbody());//库存组织 + saleorderRequestParentDto.setCcustomerid(bdCumandocEntity.getPkCumandoc());//客户=开票单位=收货单位=表体收货单位=收货单位 + saleorderRequestParentDto.setCdeptid(bdDeptdocEntity.getPkDeptdoc());//部门 + saleorderRequestParentDto.setCemployeeid(null);//业务员 + saleorderRequestParentDto.setCoperatorid(OverallConstant.getOverAllValue("u8cApiZdrPK"));//制单人 + saleorderRequestParentDto.setCreceiptcorpid(bdCumandocEntity.getPkCumandoc());//开票单位 + saleorderRequestParentDto.setCreceiptcustomerid(bdCumandocEntity.getPkCumandoc());//收货单位 + saleorderRequestParentDto.setCsalecorpid(bdSalestruEntity.getCsalestruid());//销售组织 + saleorderRequestParentDto.setCwarehouseid(bdStordocEntity.getPkStordoc());//仓库 + saleorderRequestParentDto.setDapprovedate(generateBusinessDate);//审核日期 + saleorderRequestParentDto.setNdiscountrate("100.000000");//整单折扣 + saleorderRequestParentDto.setPk_corp(bdCorpEntity.getPkCorp());//公司id + //汇总单号=汇总维度 + saleorderRequestParentDto.setVdef18(key); + //平台 + saleorderRequestParentDto.setPk_defdoc2(platformArchives.getPkDefdoc()); + saleorderRequestParentDto.setVdef2(platformArchives.getDocname()); + saleorderRequestParentDto.setVdef17(ProfilesActiveConstant.sourceSystem1);//来源系统 + + //收发类别 + saleorderRequestParentDto.setPk_defdoc3(bdRdclEntity.getPkRdcl()); + saleorderRequestParentDto.setVdef3(bdRdclEntity.getRdname()); + + //2024年8月8日 17:17:58 店铺档案自定义项1,先不传,后续维护好之后再传! + //店铺 + saleorderRequestParentDto.setPk_defdoc1(shopArchives.getPkDefdoc()); + saleorderRequestParentDto.setVdef1(shopArchives.getDocname()); + + //单据红字标识 + saleorderRequestParentDto.setPk_defdoc16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y主键")); + saleorderRequestParentDto.setVdef16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y名称")); + + //售后类型标识 + saleorderRequestParentDto.setPk_defdoc8(OverallConstant.getOverAllValue("售后类型标识-TOC无源件-主键")); + saleorderRequestParentDto.setVdef8(OverallConstant.getOverAllValue("售后类型标识-TOC无源件-名称")); + + saleorderRequestDto.setParentvo(saleorderRequestParentDto); + + List saleorderRequestChildrenDtoList = new ArrayList<>(); + saleorderRequestDto.setChildrenvo(saleorderRequestChildrenDtoList); + + //验证是否为指定的店铺,如果为true,则取结存价 + Boolean isCheckShopChoose = balanceUnitPriceUtil.checkOfsShop(header.getStoreCode()); + //把汇总好的出库单明细行合并成一行 + PassiveStorageSonDetailsDto2 passiveStorageSonDetailsDto2 = groupMergeDetailedRows2(value, isCheckShopChoose); + + //存货管理档案:取发货公司的存货管理档案 + BdInvmandocEntity bdInvmandocEntity = value.get(0).getBdInvmandocEntity(); + //存货基础档案 + BdInvbasdocEntity bdInvbasdocEntity = value.get(0).getBdInvbasdocEntity(); + //根据存货基础档案编码,查询当前存货的税率 + BdTaxitemsEntity bdTaxitemsEntity1 = value.get(0).getBdTaxitemsEntity(); + //查询收支项目 +// BdInvclEntity bdInvclEntity = queryU8CEntityUtil.queryBdInvbasdocByBdInvcl(bdInvbasdocEntity); +// BdCostsubjEntity bdCostsubjEntity = queryU8CEntityUtil.queryBdCostsubj(bdInvclEntity); + + String tax = new BigDecimal(bdTaxitemsEntity1.getTaxratio()).divide(new BigDecimal(100), 20, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString(); + + BigDecimal noriginalcurprice = null;//无税单价 + BigDecimal noriginalcurmny = null;//无税金额 + BigDecimal noriginalcurtaxprice = null;//含税单价 + BigDecimal noriginalcursummny = null;//价税合计 + BigDecimal noriginalcurtaxmny = null;//税额=价税合计-无税金额 + try { + noriginalcurtaxprice = passiveStorageSonDetailsDto2.getGroupTotalPayAmount().divide(passiveStorageSonDetailsDto2.getGroupShipQty(), 20, BigDecimal.ROUND_HALF_UP).setScale(4, BigDecimal.ROUND_HALF_UP); + noriginalcurprice = noriginalcurtaxprice.divide(new BigDecimal(1).add(new BigDecimal(tax)), 20, BigDecimal.ROUND_HALF_UP).setScale(4, BigDecimal.ROUND_HALF_UP); + noriginalcurmny = noriginalcurprice.multiply(passiveStorageSonDetailsDto2.getGroupShipQty()).setScale(2, BigDecimal.ROUND_HALF_UP); + noriginalcursummny = noriginalcurtaxprice.multiply(passiveStorageSonDetailsDto2.getGroupShipQty()).setScale(2, BigDecimal.ROUND_HALF_UP); + noriginalcurtaxmny = noriginalcursummny.subtract(noriginalcurmny).setScale(2, BigDecimal.ROUND_HALF_UP); + } catch (Exception e) { + logger.error("TOC退货-确认收入,金额计算错误", e); + Assert.state(false, "U8C红字销售订单,金额计算错误,原因:{}", e.getMessage()); + } + +// 判断是否为赠品 + Boolean isblargessflag = false; + if ("0".equals(passiveStorageSonDetailsDto2.getGroupTotalPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString())) { + isblargessflag = true; + } + + SaleorderRequestChildrenDto saleorderRequestChildrenDto = new SaleorderRequestChildrenDto(); + saleorderRequestChildrenDto.setBlargessflag(isblargessflag);//是否赠品 + saleorderRequestChildrenDto.setCadvisecalbodyid(bdCalbodyEntity.getPkCalbody());//发货库存组织 + saleorderRequestChildrenDto.setCbodywarehouseid(bdStordocEntity.getPkStordoc());//发货仓库 + saleorderRequestChildrenDto.setCconsigncorpid(deliverGoodsCorp.getPkCorp());//发货公司 + saleorderRequestChildrenDto.setCcurrencytypeid("00010000000000000001");//币种 + saleorderRequestChildrenDto.setCinventoryid(bdInvmandocEntity.getPkInvmandoc());//存货id + saleorderRequestChildrenDto.setCreceiptcorpid(bdCumandocEntity.getPkCumandoc());//收货单位 + saleorderRequestChildrenDto.setDconsigndate(generateBusinessDate);//计划发货日期 + saleorderRequestChildrenDto.setDdeliverdate(generateBusinessDate);// 要求收货日期 + saleorderRequestChildrenDto.setNexchangeotobrate("1.00000000");//折本汇率 + saleorderRequestChildrenDto.setNitemdiscountrate("100.000000");//单品折扣 + saleorderRequestChildrenDto.setNnumber("-" + passiveStorageSonDetailsDto2.getGroupShipQty().stripTrailingZeros().toPlainString());//数量 + saleorderRequestChildrenDto.setNoriginalcurdiscountmny("0");//折扣额 +// saleorderRequestChildrenDto.setNoriginalcurmny("-" + noriginalcurmny.stripTrailingZeros().toPlainString());//无税金额 +// saleorderRequestChildrenDto.setNoriginalcurnetprice(noriginalcurprice.stripTrailingZeros().toPlainString());//无税净价 +// saleorderRequestChildrenDto.setNoriginalcurprice(noriginalcurprice.stripTrailingZeros().toPlainString());//无税单价 +// saleorderRequestChildrenDto.setNoriginalcursummny("-" + noriginalcursummny.stripTrailingZeros().toPlainString());//价税合计 + if (isblargessflag) { + saleorderRequestChildrenDto.setNoriginalcursummny("0"); + } else { + saleorderRequestChildrenDto.setNoriginalcursummny("-" + passiveStorageSonDetailsDto2.getGroupTotalPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString());//价税合计 + } +// saleorderRequestChildrenDto.setNoriginalcurtaxmny("-" + noriginalcurtaxmny.stripTrailingZeros().toPlainString());//税额 +// saleorderRequestChildrenDto.setNoriginalcurtaxnetprice(noriginalcurtaxprice.stripTrailingZeros().toPlainString());//含税净价 +// saleorderRequestChildrenDto.setNoriginalcurtaxprice(noriginalcurtaxprice.stripTrailingZeros().toPlainString());//含税单价 +// saleorderRequestChildrenDto.setNtaxrate(new BigDecimal(bdTaxitemsEntity1.getTaxratio()).stripTrailingZeros().toPlainString());//税率 +// saleorderRequestChildrenDto.setVdef2(bdCostsubjEntity.getCostname());//收支项目 +// saleorderRequestChildrenDto.setPk_defdoc2(bdCostsubjEntity.getPkCostsubj()); + //如果优惠金额为0,则传0 + if (!"0".equals(passiveStorageSonDetailsDto2.getVdef4().stripTrailingZeros().toPlainString())) { + saleorderRequestChildrenDto.setVdef4("-" + passiveStorageSonDetailsDto2.getVdef4().stripTrailingZeros().toPlainString()); + } else { + saleorderRequestChildrenDto.setVdef4("0"); + } + if (!"0".equals(passiveStorageSonDetailsDto2.getVdef5().stripTrailingZeros().toPlainString())) { + saleorderRequestChildrenDto.setVdef5("-" + passiveStorageSonDetailsDto2.getVdef5().stripTrailingZeros().toPlainString()); + } else { + saleorderRequestChildrenDto.setVdef5("0"); + } + if (!"0".equals(passiveStorageSonDetailsDto2.getVdef6().stripTrailingZeros().toPlainString())) { + saleorderRequestChildrenDto.setVdef6("-" + passiveStorageSonDetailsDto2.getVdef6().stripTrailingZeros().toPlainString()); + } else { + saleorderRequestChildrenDto.setVdef6("0"); + } + if (!"0".equals(passiveStorageSonDetailsDto2.getVdef7().stripTrailingZeros().toPlainString())) { + saleorderRequestChildrenDto.setVdef7("-" + passiveStorageSonDetailsDto2.getVdef7().stripTrailingZeros().toPlainString()); + } else { + saleorderRequestChildrenDto.setVdef7("0"); + } + saleorderRequestChildrenDtoList.add(saleorderRequestChildrenDto); + + //如果合并后的金额为0,则不传到U8C + Assert.notNull(passiveStorageSonDetailsDto2.getGroupTotalPayAmount(), "goodsRertunSonDetailsDto.getGroupTotalPayAmount()不能为空!"); +// BigDecimal groupTotalPayAmount = passiveStorageSonDetailsDto2.getGroupTotalPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP); +// if ("0".equals(groupTotalPayAmount.stripTrailingZeros().toPlainString())) { +// continue; +// } + //退货没有邮费金额,已经向万万确认 //平台优惠 if (passiveStorageSonDetailsDto2.getVdef4() != null) { @@ -1139,7 +1380,7 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { //补充:平台优惠-存货 BigDecimal absAccumulatedPostage = vdef4.abs(); BigDecimal negativeValue = absAccumulatedPostage.negate(); - queryAdditionUtil.additionalV2(pushScenarioType, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, bdTaxitemsEntity); + queryAdditionUtil.additional(saleorderRequestChildrenDtoList, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, "-1", bdTaxitemsEntity); } } //达人优惠 @@ -1155,7 +1396,7 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { //补充:达人优惠-存货 BigDecimal absAccumulatedPostage = vdef6.abs(); BigDecimal negativeValue = absAccumulatedPostage.negate(); - queryAdditionUtil.additionalV2(pushScenarioType, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, bdTaxitemsEntity); + queryAdditionUtil.additional(saleorderRequestChildrenDtoList, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, "-1", bdTaxitemsEntity); } } //支付优惠 @@ -1170,39 +1411,75 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { BdTaxitemsEntity bdTaxitemsEntity = stringBdTaxitemsEntityMap.get("FY04"); //补充:支付优惠-存货 BigDecimal absAccumulatedPostage = vdef5.abs(); - BigDecimal negativeValue = absAccumulatedPostage.negate(); - queryAdditionUtil.additionalV2(pushScenarioType, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, bdTaxitemsEntity); + BigDecimal negativeValue = absAccumulatedPostage.negate();// 符号取反(转为负数) + queryAdditionUtil.additional(saleorderRequestChildrenDtoList, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, "-1", bdTaxitemsEntity); } } - //推送U8C - List arapDjzbVOList = new ArrayList<>(); - ArapDjzbVO arapDjzbVO = new ArapDjzbVO(); - arapDjzbVO.setParentvo(parentVo); - arapDjzbVO.setChildren(pushScenarioType); - arapDjzbVOList.add(arapDjzbVO); + boolean oneSuccess = false; + if (!"Y".equals(newState)) { + //推送U8C红字销售订单,如果推送失败,抛出异常,那么就会外围的try catch捕获,代码不会往下执行 - Map> listMap = new HashMap<>(); - listMap.put("djzbvo", arapDjzbVOList); - ArapDjzb arapDjzb = sendU8cRedReceivable(JSON.toJSONString(listMap)); - String djbh = null; - String dwbm = null; - String vouchid = null; - if (arapDjzb != null && arapDjzb.getParentvo() != null) { - djbh = arapDjzb.getParentvo().getDjbh(); - dwbm = arapDjzb.getParentvo().getDwbm(); - vouchid = arapDjzb.getParentvo().getVouchid(); + List saleorderRequestDtoList = new ArrayList<>(); + saleorderRequestDtoList.add(saleorderRequestDto); + Map> stringStringMap = new HashMap<>(); + stringStringMap.put("saleorder", saleorderRequestDtoList); + SoSaleResultRootDto soSaleResultRootDto = sendU8CTOCOrder(JSON.toJSONString(stringStringMap)); + String vreceiptcode = null; + String pk_corp = null; + String csaleid = null; + if (soSaleResultRootDto != null && soSaleResultRootDto.getParentvo() != null) { + vreceiptcode = soSaleResultRootDto.getParentvo().getVreceiptcode(); + pk_corp = soSaleResultRootDto.getParentvo().getPk_corp(); + csaleid = soSaleResultRootDto.getParentvo().getCsaleid(); + } + logger.info("TOC红字销售订单编号:{} 销售订单主键:{} 销售公司:{}", vreceiptcode, csaleid, pk_corp); + updateSuccessOrFail3(value, "Y", "success", vreceiptcode, csaleid, value.get(0).getStorageTimeStamp()); + oneSuccess = true; + } else { + oneSuccess = true; + } + + //判断关联时间与交易成功时间,推送u8c生成蓝字销售订单,仅满足情况二的条件才生成这张蓝字销售订单 + try { + if (!"Y".equals(def10) && oneSuccess && "2".equals(value.get(0).getStorageTimeStamp())) { + SaleorderRequestDto saleorderRequestDto1 = transformRedSalesOrderToBlueSalesOrder(saleorderRequestDto, bdBusitypeEntity2); + + List saleorderRequestDtoList2 = new ArrayList<>(); + saleorderRequestDtoList2.add(saleorderRequestDto1); + Map> stringStringMap2 = new HashMap<>(); + stringStringMap2.put("saleorder", saleorderRequestDtoList2); + SoSaleResultRootDto soSaleResultRootDto2 = sendU8CTOCOrder(JSON.toJSONString(stringStringMap2)); + + String vreceiptcode2 = null; + String pk_corp2 = null; + String csaleid2 = null; + if (soSaleResultRootDto2 != null && soSaleResultRootDto2.getParentvo() != null) { + vreceiptcode2 = soSaleResultRootDto2.getParentvo().getVreceiptcode(); + pk_corp2 = soSaleResultRootDto2.getParentvo().getPk_corp(); + csaleid2 = soSaleResultRootDto2.getParentvo().getCsaleid(); + } + + logger.info("TOC蓝字销售订单编号:{} 销售订单主键:{} 销售公司:{}", vreceiptcode2, csaleid2, pk_corp2); + updateSuccessOrFail4(value, "Y", "success", vreceiptcode2, csaleid2, value.get(0).getStorageTimeStamp()); + } + } catch (Exception e) { + //记录蓝字销售订单异常失败 + logger.error("推送蓝字销售订单抛出异常!", e); + String message = e.getMessage(); + if (message == null) { + message = "未知错误"; + } + updateSuccessOrFail4(value, "N", message, null, null, value.get(0).getStorageTimeStamp()); } - logger.info("TOC红字应收单:{} 应收单主键:{} 销售公司:{}", djbh, vouchid, dwbm); - updateSuccessOrFail3(value, "Y", "success", djbh, vouchid); } catch (Exception e) { - logger.error("TOC红字应收单转换成U8C对象过程中、或者单据推送到U8C出现异常!", e); - //记录失败 + //记录红字销售订单异常失败 + logger.error("TOC退货业务转换成U8C对象过程中、或者单据推送到U8C出现异常!", e); String message = e.getMessage(); if (message == null) { message = "未知错误"; } - updateSuccessOrFail3(value, "N", message, null, null); + updateSuccessOrFail3(value, "N", message, null, null, value.get(0).getStorageTimeStamp()); } } } else { @@ -1322,15 +1599,18 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { //查询OFS无源入库单对应的售后订单,并关联无源无源入库单对象 List rerturnGoodsOrderSearchData = queryBatchAfterSalesOrder(passiveStorageResponseDataList); findAfterSalesOrder(rerturnGoodsOrderSearchData, passiveStorageResponseDataList); - if ("tran".equals(sceneType)) { - passiveStorageResponseDataList = filterAfterSalesOrder(passiveStorageResponseDataList); - passiveStorageResponseDataList = filterForSale(passiveStorageResponseDataList); - } +// if ("tran".equals(sceneType)) { +// passiveStorageResponseDataList = filterAfterSalesOrder(passiveStorageResponseDataList); +// passiveStorageResponseDataList = filterForSale(passiveStorageResponseDataList); +// } //查询OFS售后订单对应的OFS销售订单 List headerDetailsDtos = queryBatchOfsOrder(passiveStorageResponseDataList); findOfsOrder(headerDetailsDtos, passiveStorageResponseDataList); + //过滤掉不满足时间条件的无源入库单 + passiveStorageResponseDataList = filtrationTransactionSuccessTime(passiveStorageResponseDataList); + //初始化档案缓存 CacheTocMapVoV2 cacheTocMapVoV2 = passiveComponentsArchivesCacheUtil.initCache(passiveStorageResponseDataList); @@ -1529,13 +1809,13 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { //查询OFS无源入库单对应的售后订单,并关联无源无源入库单对象 List rerturnGoodsOrderSearchData = queryBatchAfterSalesOrder(passiveStorageResponseDataList); findAfterSalesOrder(rerturnGoodsOrderSearchData, passiveStorageResponseDataList); - //过滤掉没有退款时间的无源件明细行 - passiveStorageResponseDataList = filterAfterSalesOrder(passiveStorageResponseDataList); //查询OFS售后订单对应的OFS销售订单 List headerDetailsDtos = queryBatchOfsOrder(passiveStorageResponseDataList); findOfsOrder(headerDetailsDtos, passiveStorageResponseDataList); //过滤售中节点 passiveStorageResponseDataList = filterForSale(passiveStorageResponseDataList); + //过滤掉没有退款时间的无源件明细行,以及对应的销售订单没有交易成功时间 + passiveStorageResponseDataList = filterAfterSalesOrder(passiveStorageResponseDataList); // RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData3 = rerturnGoodsOrderSearchData.get(0); // List details1 = rerturnGoodsOrderSearchData3.getDetails(); @@ -1554,12 +1834,19 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { // } // } + //对比关联时间与交易成功时间,标记时间情况类型 + markTimeInMorningEvening(passiveStorageResponseDataList); //从已经完成各类过滤的无源入库单中提取售后订单 List rerturnGoodsOrderSearchDataList = new ArrayList<>(); for (PassiveStorageResponse.Data index : passiveStorageResponseDataList) { PassiveStorageResponse.Header header = index.getHeader(); RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData1 = header.getRerturnGoodsOrderSearchData(); + if (rerturnGoodsOrderSearchData1 != null) { + //2025年8月7日15:41:09 售后订单关联无源入库单,下面有逻辑需要取到对应无源入库单的关联时间 + RerturnGoodsOrderSearchHeader header1 = rerturnGoodsOrderSearchData1.getHeader(); + header1.setPassiveStorageResponseData(index); + } rerturnGoodsOrderSearchDataList.add(rerturnGoodsOrderSearchData1); } @@ -1643,10 +1930,19 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { //发货仓库 //2024年8月5日 15:06:38 仓库O与U两边仓库编码是一致的,和妮姐确认过了 -// String facilityCode = header.getFacilityCode(); -// Assert.notNull(facilityCode, "O仓库编码不能为空"); -// BdStordocEntity bdStordocEntity = cacheTocMapVoV2.getStringBdStordocEntityMap().get(facilityCode.trim() + bdCalbodyEntity.getPkCalbody()); -// Assert.notNull(bdStordocEntity, "没有匹配到发货仓库 O库存地点编码:{} 发货库存组织主键:{} ", facilityCode, bdCalbodyEntity.getPkCalbody()); + BdStordocEntity bdStordocEntity = null; + String facilityCode = header.getFacilityCode(); + if (facilityCode != null) { + bdStordocEntity = cacheTocMapVoV2.getStringBdStordocEntityMap().get(facilityCode.trim() + bdCalbodyEntity.getPkCalbody()); + Assert.notNull(bdStordocEntity, "没有匹配到发货仓库(售后订单) O库存地点编码:{} 发货库存组织主键:{} ", facilityCode, bdCalbodyEntity.getPkCalbody()); + } else { + PassiveStorageResponse.Data passiveStorageResponseData = header.getPassiveStorageResponseData(); + Assert.notNull(passiveStorageResponseData, "售后订单对应的无源入库单为空"); + PassiveStorageResponse.Header header2 = passiveStorageResponseData.getHeader(); + String facilityCode1 = header2.getFacilityCode(); + bdStordocEntity = cacheTocMapVoV2.getStringBdStordocEntityMap().get(facilityCode1.trim() + bdCalbodyEntity.getPkCalbody()); + Assert.notNull(bdStordocEntity, "没有匹配到发货仓库(无源入库单) O库存地点编码:{} 发货库存组织主键:{} ", facilityCode1, bdCalbodyEntity.getPkCalbody()); + } //2024年8月5日 15:25:07 收货库存组织、收货仓库、默认和发货库存组织、发货仓库一致,已经和佳妮确认 //收货库存组织:速网来看收货库存组织对应表头工具 @@ -1719,9 +2015,9 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { goodsRertunSonDetailsDto.setBdCorpEntity(bdCorpEntity); goodsRertunSonDetailsDto.setDeliverGoodsCorp(bdCorpEntity); goodsRertunSonDetailsDto.setBdCalbodyEntity(bdCalbodyEntity); -// goodsRertunSonDetailsDto.setBdStordocEntity(bdStordocEntity); + goodsRertunSonDetailsDto.setBdStordocEntity(bdStordocEntity); goodsRertunSonDetailsDto.setBdCalbodyEntity1(bdCalbodyEntity); -// goodsRertunSonDetailsDto.setBdStordocEntity1(bdStordocEntity); + goodsRertunSonDetailsDto.setBdStordocEntity1(bdStordocEntity); goodsRertunSonDetailsDto.setBdSalestruEntity(bdSalestruEntity); goodsRertunSonDetailsDto.setBdDeptdocEntity(bdDeptdocEntity); goodsRertunSonDetailsDto.setBdCumandocEntity(bdCumandocEntity); @@ -1976,6 +2272,19 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { BdRdclEntity bdRdclEntity = passiveStorageSonDetailsDto2.getBdRdclEntity(); //部门 BdDeptdocEntity bdDeptdocEntity = passiveStorageSonDetailsDto2.getBdDeptdocEntity(); + //入库时间类型标记 + String storageTimeStamp = passiveStorageSonDetailsDto2.getStorageTimeStamp(); + //红推送状态 + String newState = passiveStorageSonDetailsDto2.getNewState(); + //蓝推送状态 + String def10 = passiveStorageSonDetailsDto2.getDef10(); + + if (newState == null || "".equals(newState)) { + newState = "N"; + } + if (def10 == null || "".equals(def10)) { + def10 = "N"; + } StringBuffer summaryDimensionStr = new StringBuffer(); @@ -2029,6 +2338,27 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { } else { summaryDimensionStr.append(NOTHING); } + summaryDimensionStr.append(ADD); + + if (storageTimeStamp != null && !"".equals(storageTimeStamp)) { + summaryDimensionStr.append(storageTimeStamp); + } else { + summaryDimensionStr.append(NOTHING); + } + summaryDimensionStr.append(ADD); + + if (newState != null) { + summaryDimensionStr.append(newState); + } else { + summaryDimensionStr.append(NOTHING); + } + summaryDimensionStr.append(ADD); + + if (def10 != null) { + summaryDimensionStr.append(def10); + } else { + summaryDimensionStr.append(NOTHING); + } passiveStorageSonDetailsDto2.setSummaryDimensionStr(summaryDimensionStr.toString()); } @@ -2089,7 +2419,8 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { public BdBusitypeEntity u8cOperationFlow() throws Exception { //查询业务流程 //2024年8月6日 11:33:07 具体的业务流程名称,还需要实施提供 - String processName = "TOC无源件退货入库"; +// String processName = "TOC无源件退货入库"; + String processName = "TOC销售退货入库"; BdBusitypeEntity bdBusitypeEntity = queryBdBusitypeUtil.queryBdBusitype(processName); Assert.notNull(bdBusitypeEntity, "根据业务流程名称({})没有查询到业务流程", processName); return bdBusitypeEntity; @@ -2103,7 +2434,22 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { private BdBusitypeEntity u8cOperationFlowV2() throws Exception { //查询业务流程 //2024年8月6日 11:33:07 具体的业务流程名称,还需要实施提供 - String processName = "TOC无源件退款"; +// String processName = "TOC无源件退款"; + String processName = "TOC销售退货成本"; + BdBusitypeEntity bdBusitypeEntity = queryBdBusitypeUtil.queryBdBusitype(processName); + Assert.notNull(bdBusitypeEntity, "根据业务流程名称({})没有查询到业务流程", processName); + return bdBusitypeEntity; + } + + /** + * 2024年8月6日 10:59:03 查询U8C业务流程 + * + * @author liuyang + */ + private BdBusitypeEntity u8cOperationFlowV3() throws Exception { + //查询业务流程 + //2024年8月6日 11:33:07 具体的业务流程名称,还需要实施提供 + String processName = "TOC销售退货入库"; BdBusitypeEntity bdBusitypeEntity = queryBdBusitypeUtil.queryBdBusitype(processName); Assert.notNull(bdBusitypeEntity, "根据业务流程名称({})没有查询到业务流程", processName); return bdBusitypeEntity; @@ -2509,18 +2855,26 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { //销售订单-交易成功时间 HeaderDetailsDto headerDetailsDto = stringHeaderDetailsDtoMap.get(header.getRefOrderCode()); + Assert.notNull("无源入库单关联的销售订单不能为空!"); HeaderDto header1 = headerDetailsDto.getHeader(); String tradeSuccessAt = header1.getTradeSuccessAt(); DateTime tradeSuccessAtDate = DateUtil.parse(tradeSuccessAt); + //无源入库单-关联时间 + PassiveStorageResponse.Data passiveStorageResponseData = header.getPassiveStorageResponseData(); + Assert.notNull("售后订单关联的无源入库单不能为空!"); + PassiveStorageResponse.Header header2 = passiveStorageResponseData.getHeader(); + String relatedAt = header2.getRelatedAt(); + DateTime relatedAtDate = DateUtil.parse(relatedAt); + //售后订单-退款时间 - String refundedAt = header.getRefundedAt(); - DateTime refundedAtDate = DateUtil.parse(refundedAt); +// String refundedAt = header.getRefundedAt(); +// DateTime refundedAtDate = DateUtil.parse(refundedAt); //业务日期,如果正向交易时间比退款时间晚,则取正向交易成功时间 - if (tradeSuccessAtDate.after(refundedAtDate)) { + if (tradeSuccessAtDate.after(relatedAtDate)) { ofsPassiveorderDetailEntity.setTransactionDate(tradeSuccessAt); } else { - ofsPassiveorderDetailEntity.setTransactionDate(refundedAt); + ofsPassiveorderDetailEntity.setTransactionDate(relatedAt); } //确定好目标业务时间,方便下游系统获取这个业务时间,用于分组汇总和U8C红字应收单对应的单据日期 rerturnGoodsOrderSearchDetails.setTargetBusinessDate(ofsPassiveorderDetailEntity.getTransactionDate()); @@ -2645,15 +2999,15 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { if (rerturnGoodsOrderSearchData != null) { header.setRerturnGoodsOrderSearchData(rerturnGoodsOrderSearchData); - RerturnGoodsOrderSearchHeader header1 = rerturnGoodsOrderSearchData.getHeader(); - List details1 = rerturnGoodsOrderSearchData.getDetails(); +// RerturnGoodsOrderSearchHeader header1 = rerturnGoodsOrderSearchData.getHeader(); +// List details1 = rerturnGoodsOrderSearchData.getDetails(); - String refundedAt = header1.getRefundedAt(); - if (refundedAt != null) { - for (PassiveStorageResponse.Details passiveStorage : details) { - passiveStorage.setRefundedAt(refundedAt); - } - } +// String refundedAt = header1.getRefundedAt(); +// if (refundedAt != null) { +// for (PassiveStorageResponse.Details passiveStorage : details) { +// passiveStorage.setRefundedAt(refundedAt); +// } +// } } } } @@ -2841,7 +3195,8 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { OfsPassiveorderDetailEntity ofsPassiveorderDetailEntity = new OfsPassiveorderDetailEntity(); ofsPassiveorderDetailEntity.setId(details1.getId()); - ofsPassiveorderDetailEntity.setTransactionDate(details1.getRefundedAt()); + //2025年8月7日15:49:07 这里不保存,保存到mysql底表逻辑会存储该自动 +// ofsPassiveorderDetailEntity.setTransactionDate(details1.getRefundedAt()); if (sceneType.equals("stock")) { ofsPassiveorderDetailEntity.setNewpushdate(newPushDate); ofsPassiveorderDetailEntity.setNewtransmitinfo(newTransmitInfo); @@ -2914,6 +3269,7 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { String newTransmitInfo = errorHeaderDetailsDtoDtoV4.getNewTransmitInfo(); String newsystemnumber = errorHeaderDetailsDtoDtoV4.getNewsystemnumber(); String newsystemprimary = errorHeaderDetailsDtoDtoV4.getNewsystemprimary(); + String storageTimeStamp = header.getStorageTimeStamp(); //如果报错内容太长了,则仅保留400个长度,维护数据库性能,缓解资源公平使用 if (newTransmitInfo != null && !"".equals(newTransmitInfo.trim()) && newTransmitInfo.length() >= 400) { @@ -2925,12 +3281,23 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { OnlyAfterSalesBEntity onlyAfterSalesBEntity = new OnlyAfterSalesBEntity(); onlyAfterSalesBEntity.setOfsid(rerturnGoodsOrderSearchDetails.getId()); - onlyAfterSalesBEntity.setNewPushDate(newPushDate); - onlyAfterSalesBEntity.setNewTransmitInfo(newTransmitInfo); - onlyAfterSalesBEntity.setNewState(newstate); - if (!"N".equals(newstate)) { - onlyAfterSalesBEntity.setNewsystemnumber(newsystemnumber); - onlyAfterSalesBEntity.setNewsystemprimary(newTransmitInfo); + onlyAfterSalesBEntity.setDef7(storageTimeStamp); + if ("Y".equals(rerturnGoodsOrderSearchDetails.getNewState())) { + onlyAfterSalesBEntity.setDef8(newPushDate); + onlyAfterSalesBEntity.setDef9(newTransmitInfo); + onlyAfterSalesBEntity.setDef10(newstate); + if (!"N".equals(newstate)) { + onlyAfterSalesBEntity.setDef11(newsystemnumber); + onlyAfterSalesBEntity.setDef12(newsystemprimary); + } + } else { + onlyAfterSalesBEntity.setNewPushDate(newPushDate); + onlyAfterSalesBEntity.setNewTransmitInfo(newTransmitInfo); + onlyAfterSalesBEntity.setNewState(newstate); + if (!"N".equals(newstate)) { + onlyAfterSalesBEntity.setNewsystemnumber(newsystemnumber); + onlyAfterSalesBEntity.setNewsystemprimary(newsystemprimary); + } } onlyAfterSalesBEntityArrayList.add(onlyAfterSalesBEntity); } @@ -2941,7 +3308,13 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { List> lists = SplitListByCountUtil.splitListByCount(onlyAfterSalesBEntityArrayList, 50); for (int i = 0; i < lists.size(); i++) { List onlyAfterSalesBEntities = lists.get(i); - iOnlyAfterSalesBDao.entityInsertOrUpdateBatchBySuccessOrFail(onlyAfterSalesBEntities); + if (onlyAfterSalesBEntities != null && onlyAfterSalesBEntities.size() > 0) { + if (onlyAfterSalesBEntities.get(0).getDef8() == null) { + iOnlyAfterSalesBDao.entityInsertOrUpdateBatchBySuccessOrFail(onlyAfterSalesBEntities); + } else { + iOnlyAfterSalesBDao.entityInsertOrUpdateBatchBySuccessOrFail3(onlyAfterSalesBEntities); + } + } } } } @@ -2983,7 +3356,8 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { OfsPassiveorderDetailEntity ofsPassiveorderDetailEntity = new OfsPassiveorderDetailEntity(); ofsPassiveorderDetailEntity.setId(passiveStorageSonDetailsDto.getId()); - ofsPassiveorderDetailEntity.setTransactionDate(passiveStorageSonDetailsDto.getRefundedAt()); + //2025年8月7日15:51:21 不需要这个字段,保存原始底表的mysql会处理这个字段 +// ofsPassiveorderDetailEntity.setTransactionDate(passiveStorageSonDetailsDto.getRefundedAt()); ofsPassiveorderDetailEntity.setNewpushdate(getNewDateStr()); ofsPassiveorderDetailEntity.setNewtransmitinfo(finalNewTransmitInfo); ofsPassiveorderDetailEntity.setNewstate(newstate); @@ -3029,62 +3403,62 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { * * @author liuyang */ - private void updateSuccessOrFail2(List value, String newstate, String newTransmitInfo, String newsystemnumber, String newsystemprimary) { - if (newTransmitInfo != null && !"".equals(newTransmitInfo.trim()) && newTransmitInfo.length() >= 400) { - newTransmitInfo = newTransmitInfo.substring(0, 400); - } - - String finalNewTransmitInfo = newTransmitInfo; - Thread thread = new Thread(new Runnable() { - @Override - public void run() { - try { - String successY = "Y"; - if (value != null && value.size() > 0) { - List ofsPassiveorderDetailEntityArrayList = new ArrayList<>(); - for (int i = 0; i < value.size(); i++) { - PassiveStorageSonDetailsDto passiveStorageSonDetailsDto = value.get(i); - - OfsPassiveorderDetailEntity ofsPassiveorderDetailEntity = new OfsPassiveorderDetailEntity(); - ofsPassiveorderDetailEntity.setId(passiveStorageSonDetailsDto.getId()); - ofsPassiveorderDetailEntity.setTransactionDate(passiveStorageSonDetailsDto.getRefundedAt()); - ofsPassiveorderDetailEntity.setNewpushdate2(getNewDateStr()); - ofsPassiveorderDetailEntity.setNewtransmitinfo2(finalNewTransmitInfo); - ofsPassiveorderDetailEntity.setNewstate2(newstate); - if (successY.equals(newstate)) { - ofsPassiveorderDetailEntity.setNewsystemnumber2(newsystemnumber); - ofsPassiveorderDetailEntity.setNewsystemprimary2(newsystemprimary); - } - ofsPassiveorderDetailEntity.setDef1(passiveStorageSonDetailsDto.getCalculateAccountsReceivable()); - ofsPassiveorderDetailEntity.setDef2(passiveStorageSonDetailsDto.getCalculationFormula()); - ofsPassiveorderDetailEntity.setDef3(passiveStorageSonDetailsDto.getPlatformDiscounts()); - ofsPassiveorderDetailEntity.setDef4(passiveStorageSonDetailsDto.getPayDiscounts()); - ofsPassiveorderDetailEntity.setDef5(passiveStorageSonDetailsDto.getExpertDiscounts()); - ofsPassiveorderDetailEntity.setDef6(passiveStorageSonDetailsDto.getMerchantDiscounts()); - ofsPassiveorderDetailEntityArrayList.add(ofsPassiveorderDetailEntity); - } - - //以50行为一个批次,推送到Mysql - if (ofsPassiveorderDetailEntityArrayList.size() > 0) { - List> lists = SplitListByCountUtil.splitListByCount(ofsPassiveorderDetailEntityArrayList, 50); - for (int i = 0; i < lists.size(); i++) { - List ofsPassiveorderDetailEntities = lists.get(i); - iOfsPassiveorderDetailDao.entityInsertOrUpdateBatchByTran(ofsPassiveorderDetailEntities); - } - } - } - } catch (Exception e) { - logger.error("TOC确认收入同步日志,抛出异常", e); - } - } - }); - thread.start(); - try { - thread.join(); - } catch (Exception e) { - logger.error("updateSuccessOrFail1方法现场抛出异常", e); - } - } +// private void updateSuccessOrFail2(List value, String newstate, String newTransmitInfo, String newsystemnumber, String newsystemprimary) { +// if (newTransmitInfo != null && !"".equals(newTransmitInfo.trim()) && newTransmitInfo.length() >= 400) { +// newTransmitInfo = newTransmitInfo.substring(0, 400); +// } +// +// String finalNewTransmitInfo = newTransmitInfo; +// Thread thread = new Thread(new Runnable() { +// @Override +// public void run() { +// try { +// String successY = "Y"; +// if (value != null && value.size() > 0) { +// List ofsPassiveorderDetailEntityArrayList = new ArrayList<>(); +// for (int i = 0; i < value.size(); i++) { +// PassiveStorageSonDetailsDto passiveStorageSonDetailsDto = value.get(i); +// +// OfsPassiveorderDetailEntity ofsPassiveorderDetailEntity = new OfsPassiveorderDetailEntity(); +// ofsPassiveorderDetailEntity.setId(passiveStorageSonDetailsDto.getId()); +// ofsPassiveorderDetailEntity.setTransactionDate(passiveStorageSonDetailsDto.getRefundedAt()); +// ofsPassiveorderDetailEntity.setNewpushdate2(getNewDateStr()); +// ofsPassiveorderDetailEntity.setNewtransmitinfo2(finalNewTransmitInfo); +// ofsPassiveorderDetailEntity.setNewstate2(newstate); +// if (successY.equals(newstate)) { +// ofsPassiveorderDetailEntity.setNewsystemnumber2(newsystemnumber); +// ofsPassiveorderDetailEntity.setNewsystemprimary2(newsystemprimary); +// } +// ofsPassiveorderDetailEntity.setDef1(passiveStorageSonDetailsDto.getCalculateAccountsReceivable()); +// ofsPassiveorderDetailEntity.setDef2(passiveStorageSonDetailsDto.getCalculationFormula()); +// ofsPassiveorderDetailEntity.setDef3(passiveStorageSonDetailsDto.getPlatformDiscounts()); +// ofsPassiveorderDetailEntity.setDef4(passiveStorageSonDetailsDto.getPayDiscounts()); +// ofsPassiveorderDetailEntity.setDef5(passiveStorageSonDetailsDto.getExpertDiscounts()); +// ofsPassiveorderDetailEntity.setDef6(passiveStorageSonDetailsDto.getMerchantDiscounts()); +// ofsPassiveorderDetailEntityArrayList.add(ofsPassiveorderDetailEntity); +// } +// +// //以50行为一个批次,推送到Mysql +// if (ofsPassiveorderDetailEntityArrayList.size() > 0) { +// List> lists = SplitListByCountUtil.splitListByCount(ofsPassiveorderDetailEntityArrayList, 50); +// for (int i = 0; i < lists.size(); i++) { +// List ofsPassiveorderDetailEntities = lists.get(i); +// iOfsPassiveorderDetailDao.entityInsertOrUpdateBatchByTran(ofsPassiveorderDetailEntities); +// } +// } +// } +// } catch (Exception e) { +// logger.error("TOC确认收入同步日志,抛出异常", e); +// } +// } +// }); +// thread.start(); +// try { +// thread.join(); +// } catch (Exception e) { +// logger.error("updateSuccessOrFail1方法现场抛出异常", e); +// } +// } /** * 处理TOC-库存同步的成功、失败错误逻辑 @@ -3095,7 +3469,7 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { * @param newsystemprimary 下游系统主键 * @author liuyang */ - private void updateSuccessOrFail3(List value, String newstate, String newTransmitInfo, String newsystemnumber, String newsystemprimary) { + private void updateSuccessOrFail3(List value, String newstate, String newTransmitInfo, String newsystemnumber, String newsystemprimary, String storageTimeStamp) { if (newTransmitInfo != null && !"".equals(newTransmitInfo.trim()) && newTransmitInfo.length() >= 400) { newTransmitInfo = newTransmitInfo.substring(0, 400); } @@ -3127,6 +3501,7 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { ofsPassiveorderDetailEntity.setDef4(passiveStorageSonDetailsDto2.getPayDiscounts()); ofsPassiveorderDetailEntity.setDef5(passiveStorageSonDetailsDto2.getExpertDiscounts()); ofsPassiveorderDetailEntity.setDef6(passiveStorageSonDetailsDto2.getMerchantDiscounts()); + ofsPassiveorderDetailEntity.setDef7(storageTimeStamp); onlyAfterSalesBEntityArrayList.add(ofsPassiveorderDetailEntity); } @@ -3152,6 +3527,73 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { } } + /** + * 处理TOC-库存同步的成功、失败错误逻辑 + * + * @param newstate 推送状态 + * @param newTransmitInfo 推送信息 + * @param newsystemnumber 下游系统单号 + * @param newsystemprimary 下游系统主键 + * @author liuyang + */ + private void updateSuccessOrFail4(List value, String newstate, String newTransmitInfo, String newsystemnumber, String newsystemprimary, String storageTimeStamp) { + if (newTransmitInfo != null && !"".equals(newTransmitInfo.trim()) && newTransmitInfo.length() >= 400) { + newTransmitInfo = newTransmitInfo.substring(0, 400); + } + + String finalNewTransmitInfo = newTransmitInfo; + Thread thread = new Thread(new Runnable() { + @Override + public void run() { + try { + String successY = "Y"; + if (value != null && value.size() > 0) { + List onlyAfterSalesBEntityArrayList = new ArrayList<>(); + for (int i = 0; i < value.size(); i++) { + PassiveStorageSonDetailsDto2 passiveStorageSonDetailsDto2 = value.get(i); + + OnlyAfterSalesBEntity ofsPassiveorderDetailEntity = new OnlyAfterSalesBEntity(); + ofsPassiveorderDetailEntity.setOfsid(passiveStorageSonDetailsDto2.getId()); + + ofsPassiveorderDetailEntity.setDef8(getNewDateStr()); + ofsPassiveorderDetailEntity.setDef9(finalNewTransmitInfo); + ofsPassiveorderDetailEntity.setDef10(newstate); + if (successY.equals(newstate) || (newsystemnumber != null && newsystemprimary != null)) { + ofsPassiveorderDetailEntity.setDef11(newsystemnumber); + ofsPassiveorderDetailEntity.setDef12(newsystemprimary); + } + ofsPassiveorderDetailEntity.setDef1(passiveStorageSonDetailsDto2.getCalculateAccountsReceivable()); + ofsPassiveorderDetailEntity.setDef2(passiveStorageSonDetailsDto2.getCalculationFormula()); + ofsPassiveorderDetailEntity.setDef3(passiveStorageSonDetailsDto2.getPlatformDiscounts()); + ofsPassiveorderDetailEntity.setDef4(passiveStorageSonDetailsDto2.getPayDiscounts()); + ofsPassiveorderDetailEntity.setDef5(passiveStorageSonDetailsDto2.getExpertDiscounts()); + ofsPassiveorderDetailEntity.setDef6(passiveStorageSonDetailsDto2.getMerchantDiscounts()); + ofsPassiveorderDetailEntity.setDef7(storageTimeStamp); + onlyAfterSalesBEntityArrayList.add(ofsPassiveorderDetailEntity); + } + + //以50行为一个批次,推送到Mysql + if (onlyAfterSalesBEntityArrayList.size() > 0) { + List> lists = SplitListByCountUtil.splitListByCount(onlyAfterSalesBEntityArrayList, 50); + for (int i = 0; i < lists.size(); i++) { + List onlyAfterSalesBEntityList = lists.get(i); + iOnlyAfterSalesBDao.entityInsertOrUpdateBatchBySuccessOrFail2(onlyAfterSalesBEntityList); + } + } + } + } catch (Exception e) { + logger.error("TOC确认收入同步日志,抛出异常", e); + } + } + }); + thread.start(); + try { + thread.join(); + } catch (Exception e) { + logger.error("updateSuccessOrFail1方法现场抛出异常", e); + } + } + /** * 过滤库存同步业务,筛选出未推送、或者失败的数据行,使用批处理并且直接在内存中计算这样比较高效 * @@ -3221,10 +3663,14 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { if (obj.getNewState() == null) { obj.setNewState(""); } + if (obj.getDef10() == null) { + obj.setDef10(""); + } return obj; }).collect(Collectors.toList()); //汇总每个 id 对应的推送状态 - Map no2NameMap = collect.stream().collect(Collectors.toMap(OnlyAfterSalesBEntity::getOfsid, OnlyAfterSalesBEntity::getNewState)); + Map no2NameMap1 = collect.stream().collect(Collectors.toMap(OnlyAfterSalesBEntity::getOfsid, OnlyAfterSalesBEntity::getNewState)); + Map no2NameMap2 = collect.stream().collect(Collectors.toMap(OnlyAfterSalesBEntity::getOfsid, OnlyAfterSalesBEntity::getDef10)); //字段Y(成功)或者为H(待处理)可以视为成功,完成了小段业务闭环的数据行 String succeseeY = "Y"; @@ -3237,13 +3683,33 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { List targetDetails = new ArrayList<>(); for (int j = 0; j < details.size(); j++) { RerturnGoodsOrderSearchDetails rerturnGoodsOrderSearchDetails = details.get(j); - Boolean isSuccess = false; - String newstate = no2NameMap.get(rerturnGoodsOrderSearchDetails.getId()); - if (newstate != null && !"".equals(newstate) && (succeseeY.equals(newstate) || succeseeH.equals(newstate))) { - isSuccess = true; + Boolean isSuccess = false; + String newstate1 = null; + String newstate2 = null; + String storageTimeStamp = rerturnGoodsOrderSearchDetails.getStorageTimeStamp(); + + + if ("2".equals(storageTimeStamp)) { + newstate1 = no2NameMap1.get(rerturnGoodsOrderSearchDetails.getId()); + newstate2 = no2NameMap2.get(rerturnGoodsOrderSearchDetails.getId()); + if (newstate1 != null && !"".equals(newstate1) && (succeseeY.equals(newstate1) || succeseeH.equals(newstate1))) { + if (newstate2 != null && !"".equals(newstate2) && (succeseeY.equals(newstate2) || succeseeH.equals(newstate2))) { + isSuccess = true; + } + } + } else if ("3".equals(storageTimeStamp)) { + newstate1 = no2NameMap1.get(rerturnGoodsOrderSearchDetails.getId()); + if (newstate1 != null && !"".equals(newstate1) && (succeseeY.equals(newstate1) || succeseeH.equals(newstate1))) { + isSuccess = true; + } + } else { + Assert.state(false, "无法识别的时间标识类型 storageTimeStamp:{}", storageTimeStamp); } + if (!isSuccess) { + rerturnGoodsOrderSearchDetails.setNewState(newstate1); + rerturnGoodsOrderSearchDetails.setDef10(newstate2); targetDetails.add(rerturnGoodsOrderSearchDetails); } } @@ -3957,18 +4423,22 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { if (passiveStorageResponseDataList != null && passiveStorageResponseDataList.size() > 0) { filteredList = passiveStorageResponseDataList.stream().filter(stockinOrder -> { PassiveStorageResponse.Header header = stockinOrder.getHeader(); - if (header == null) { - return false; - } - RerturnGoodsOrderSearchData returnData = header.getRerturnGoodsOrderSearchData(); - if (returnData == null) { - return false; - } - RerturnGoodsOrderSearchHeader header1 = returnData.getHeader(); - if (header1 == null) { - return false; - } - if (header1.getRefundedAt() == null) { + + //对应的售后订单,过滤没有退款时间 + //2025年8月7日15:36:21 不限制无源入库单对应的售后订单是否存在退款时间 +// RerturnGoodsOrderSearchData returnData = header.getRerturnGoodsOrderSearchData(); +// Assert.notNull(returnData, "无源入库单对应的售后订单为空 无源入库单号:{}", header.getReceiptCode()); +// RerturnGoodsOrderSearchHeader header1 = returnData.getHeader(); +// if (header1.getRefundedAt() == null) { +// logger.info("售后订单:{} 无退款时间,被过滤", header1.getCode()); +// return false; +// } + + //对应的销售订单,过滤没有交易成功时间 + HeaderDetailsDto headerDetailsDto = header.getHeaderDetailsDto(); + Assert.notNull(headerDetailsDto, "无源入库单对应的销售订单为空 无源入库单号:{}", header.getReceiptCode()); + HeaderDto header2 = headerDetailsDto.getHeader(); + if (header2.getTradeSuccessAt() == null) { return false; } return true; @@ -4151,4 +4621,179 @@ public class PassiveWarehouseReceiptToC extends PluginBaseEntity { } return filterDataRowsAsPushOrFailedStock2(onlyAfterSalesBEntityArrayList, rerturnGoodsOrderSearchDataList); } + + /** + * 如果“无源入库单没有交易成功时间”,或者“无源入库关联时间早于交易成功时间”则保留,满足这两个条件保留,不符合则过滤 + * + * @author liuyang + */ + private List filtrationTransactionSuccessTime(List passiveStorageResponseDataList) throws Exception { + List passiveStorageResponseDataList1 = null; + if (passiveStorageResponseDataList != null && passiveStorageResponseDataList.size() > 0) { + passiveStorageResponseDataList1 = passiveStorageResponseDataList.stream().filter(passiveStorageResponseData -> { + PassiveStorageResponse.Header header = passiveStorageResponseData.getHeader(); + List details = passiveStorageResponseData.getDetails(); + + HeaderDetailsDto headerDetailsDto = header.getHeaderDetailsDto(); + Assert.notNull(headerDetailsDto, "无源入库单对应的销售订单不能为空 单号:{}", header.getReceiptCode()); + HeaderDto header1 = headerDetailsDto.getHeader(); + List details1 = headerDetailsDto.getDetails(); + + String tradeSuccessAt = header1.getTradeSuccessAt(); + String relatedAt = header.getRelatedAt(); + SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); + if (tradeSuccessAt == null) { + return true; + } + + Date relatedDate; + Date tradeSuccessAtDate; + try { + relatedDate = sdf.parse(relatedAt); + tradeSuccessAtDate = sdf.parse(tradeSuccessAt); + } catch (Exception e) { + throw new RuntimeException("字符串转日期失败 错误:" + e.getMessage()); + } + + return (relatedDate.before(tradeSuccessAtDate) || relatedDate.equals(tradeSuccessAtDate)); + }).collect(Collectors.toList()); + } + return passiveStorageResponseDataList1; + } + + /** + * 标记时间类型,这个标记需要打在售后订单,但是需要对比无源入库单的关联事件 + * + * @throws Exception 抛出可能的异常 + * @author liuyang + */ + private void markTimeInMorningEvening(List passiveStorageResponseDataList) throws Exception { + if (passiveStorageResponseDataList != null && passiveStorageResponseDataList.size() > 0) { + for (int i = 0; i < passiveStorageResponseDataList.size(); i++) { + PassiveStorageResponse.Data data = passiveStorageResponseDataList.get(i); + PassiveStorageResponse.Header header = data.getHeader(); + List details = data.getDetails(); + + //销售订单 + HeaderDetailsDto headerDetailsDto = header.getHeaderDetailsDto(); + Assert.notNull(headerDetailsDto, "无源入库单对应的销售订单为空 无源入库单号:{}", header.getReceiptCode()); + HeaderDto header1 = headerDetailsDto.getHeader(); + List details1 = headerDetailsDto.getDetails(); + + //售后订单 + RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData = header.getRerturnGoodsOrderSearchData(); + RerturnGoodsOrderSearchHeader header2 = rerturnGoodsOrderSearchData.getHeader(); + List details2 = rerturnGoodsOrderSearchData.getDetails(); + + //交易成功时间 + String tradeSuccessAt = header1.getTradeSuccessAt(); + //关联时间 + String relatedAt = header.getRelatedAt(); + + String storageTimeStamp = null; + if (tradeSuccessAt != null && !"".equals(tradeSuccessAt)) { + //存在交易成功时间 + Date relatedAtDate; + Date tradeSuccessAtDate; + SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); + try { + relatedAtDate = sdf.parse(relatedAt); + tradeSuccessAtDate = sdf.parse(tradeSuccessAt); + } catch (Exception e) { + throw new RuntimeException("字符串转日期失败 错误:" + e.getMessage()); + } + + if ((relatedAtDate.before(tradeSuccessAtDate) || relatedAtDate.equals(tradeSuccessAtDate))) { + //且关联时间早于交易完成时间 + storageTimeStamp = "2"; + } else { + //且关联时间晚于交易成功时间 + storageTimeStamp = "3"; + } + } else { + storageTimeStamp = "1"; + } + //售后订单表头和明细都存储一份 + header2.setStorageTimeStamp(storageTimeStamp); + for (int j = 0; j < details2.size(); j++) { + RerturnGoodsOrderSearchDetails rerturnGoodsOrderSearchDetails = details2.get(j); + rerturnGoodsOrderSearchDetails.setStorageTimeStamp(storageTimeStamp); + } + } + } + } + + /** + * 改造红字销售订单为蓝字销售订单 + * + * @param saleorderRequestDto 原始红字销售订单入参 + * @param bdBusitypeEntity 蓝字销售订单对应的U8C业务流程 + * @author liuyang + */ + private SaleorderRequestDto transformRedSalesOrderToBlueSalesOrder(SaleorderRequestDto saleorderRequestDto, BdBusitypeEntity bdBusitypeEntity) { + if (saleorderRequestDto != null && bdBusitypeEntity != null) { + SaleorderRequestParentDto parentvo = saleorderRequestDto.getParentvo(); + + //业务流程 +// String processName = "TH1/TOC销售退货入库"; +// BdBusitypeEntity bdBusitypeEntity = queryBdBusitypeUtil.queryBdBusitype(processName); +// Assert.notNull(bdBusitypeEntity, "根据业务流程名称({})没有查询到业务流程", processName); + parentvo.setCbiztype(bdBusitypeEntity.getPkBusitype());//业务流程 + + //是否退货 + parentvo.setBretinvflag("N"); + + //单据红字标识 + parentvo.setPk_defdoc16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-N主键")); + parentvo.setVdef16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-N名称")); + + List childrenvo = saleorderRequestDto.getChildrenvo(); + for (int i = 0; i < childrenvo.size(); i++) { + SaleorderRequestChildrenDto saleorderRequestChildrenDto = childrenvo.get(i); + + //数量 + String nnumberStr = saleorderRequestChildrenDto.getNnumber(); + if (nnumberStr != null) { + BigDecimal nnumberBigDecimal = new BigDecimal(nnumberStr).abs(); + saleorderRequestChildrenDto.setNnumber(nnumberBigDecimal.stripTrailingZeros().toPlainString()); + } + + //价税合计 + String noriginalcursummny = saleorderRequestChildrenDto.getNoriginalcursummny(); + if (noriginalcursummny != null) { + BigDecimal noriginalcursummnyBigDecimal = new BigDecimal(noriginalcursummny).abs(); + saleorderRequestChildrenDto.setNoriginalcursummny(noriginalcursummnyBigDecimal.stripTrailingZeros().toPlainString()); + } + + //vdef4 + String vdef4 = saleorderRequestChildrenDto.getVdef4(); + if (vdef4 != null) { + BigDecimal vdef4BigDecimal = new BigDecimal(vdef4).abs(); + saleorderRequestChildrenDto.setVdef4(vdef4BigDecimal.stripTrailingZeros().toPlainString()); + } + + //vdef5 + String vdef5 = saleorderRequestChildrenDto.getVdef5(); + if (vdef5 != null) { + BigDecimal vdef5BigDecimal = new BigDecimal(vdef5).abs(); + saleorderRequestChildrenDto.setVdef5(vdef5BigDecimal.stripTrailingZeros().toPlainString()); + } + + //vdef6 + String vdef6 = saleorderRequestChildrenDto.getVdef6(); + if (vdef6 != null) { + BigDecimal vdef6BigDecimal = new BigDecimal(vdef6).abs(); + saleorderRequestChildrenDto.setVdef6(vdef6BigDecimal.stripTrailingZeros().toPlainString()); + } + + //vdef7 + String vdef7 = saleorderRequestChildrenDto.getVdef7(); + if (vdef7 != null) { + BigDecimal vdef7BigDecimal = new BigDecimal(vdef7).abs(); + saleorderRequestChildrenDto.setVdef7(vdef7BigDecimal.stripTrailingZeros().toPlainString()); + } + } + } + return saleorderRequestDto; + } } \ No newline at end of file diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToB.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToB.java index 46e51215..fbbbf263 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToB.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToB.java @@ -821,6 +821,10 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity { saleorderRequestParentDto.setPk_defdoc16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y主键")); saleorderRequestParentDto.setVdef16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y名称")); + //售后类型标识 + saleorderRequestParentDto.setPk_defdoc8(OverallConstant.getOverAllValue("售后类型标识-TOB售后-主键")); + saleorderRequestParentDto.setVdef8(OverallConstant.getOverAllValue("售后类型标识-TOB售后-名称")); + saleorderRequestDto.setParentvo(saleorderRequestParentDto); List saleorderRequestChildrenDtoList = new ArrayList<>(); diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToC.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToC.java index 26ce5a52..5d50ce80 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToC.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToC.java @@ -827,6 +827,10 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { saleorderRequestParentDto.setPk_defdoc16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y主键")); saleorderRequestParentDto.setVdef16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y名称")); + //售后类型标识 + saleorderRequestParentDto.setPk_defdoc8(OverallConstant.getOverAllValue("售后类型标识-TOC售后-主键")); + saleorderRequestParentDto.setVdef8(OverallConstant.getOverAllValue("售后类型标识-TOC售后-名称")); + saleorderRequestDto.setParentvo(saleorderRequestParentDto); List saleorderRequestChildrenDtoList = new ArrayList<>(); @@ -1115,6 +1119,10 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { saleorderRequestParentDto.setPk_defdoc16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y主键")); saleorderRequestParentDto.setVdef16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y名称")); + //售后类型标识 + saleorderRequestParentDto.setPk_defdoc8(OverallConstant.getOverAllValue("售后类型标识-TOC售后-主键")); + saleorderRequestParentDto.setVdef8(OverallConstant.getOverAllValue("售后类型标识-TOC售后-名称")); + saleorderRequestDto.setParentvo(saleorderRequestParentDto); //改为红字应收单表头 //组装应收单表头 @@ -1229,10 +1237,10 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { //如果合并后的金额为0,则不传到U8C Assert.notNull(goodsRertunSonDetailsDto.getGroupTotalPayAmount(), "goodsRertunSonDetailsDto.getGroupTotalPayAmount()不能为空!"); - BigDecimal groupTotalPayAmount = goodsRertunSonDetailsDto.getGroupTotalPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP); - if ("0".equals(groupTotalPayAmount.stripTrailingZeros().toPlainString())) { - continue; - } +// BigDecimal groupTotalPayAmount = goodsRertunSonDetailsDto.getGroupTotalPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP); +// if ("0".equals(groupTotalPayAmount.stripTrailingZeros().toPlainString())) { +// continue; +// } //修改为生成红字应收单表体 // List childrennArrayList = new ArrayList<>(); @@ -1247,6 +1255,7 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { // arapDjzbVOChildrenn.setJfybwsje("-" + noriginalcurtaxmny.stripTrailingZeros().toPlainString());//借方原币无税金额 //退货没有邮费金额,已经向万万确认 + //所有业务商家优惠都不传 //平台优惠 if (goodsRertunSonDetailsDto.getVdef4() != null) { BigDecimal vdef4 = goodsRertunSonDetailsDto.getVdef4(); @@ -1540,17 +1549,18 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { //查询OFS售后入库单对应的售后订单 List rerturnGoodsOrderSearchData = queryBatchAfterSalesOrder(returnGoodHeaderDetailsDataDtoList1); findAfterSalesOrder(rerturnGoodsOrderSearchData, returnGoodHeaderDetailsDataDtoList1); - //测试 + // RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData2 = rerturnGoodsOrderSearchData.get(0); // List details2 = rerturnGoodsOrderSearchData2.getDetails(); // for (int i = 0; i < details2.size(); i++) { // RerturnGoodsOrderSearchDetails rerturnGoodsOrderSearchDetails = details2.get(i); // -// rerturnGoodsOrderSearchDetails.setPlatformDiscounts("1"); -// rerturnGoodsOrderSearchDetails.setMerchantDiscounts("1"); -// rerturnGoodsOrderSearchDetails.setExpertDiscounts("1"); -// rerturnGoodsOrderSearchDetails.setPayDiscounts("1"); +// rerturnGoodsOrderSearchDetails.setPlatformDiscounts("1.09"); +// rerturnGoodsOrderSearchDetails.setMerchantDiscounts("2.07"); +// rerturnGoodsOrderSearchDetails.setExpertDiscounts("3.99"); +// rerturnGoodsOrderSearchDetails.setPayDiscounts("888"); // } + //查询OFS售后订单对应的OFS销售订单 List headerDetailsDtos = queryBatchOfsOrder(returnGoodHeaderDetailsDataDtoList1); findOfsOrder(headerDetailsDtos, returnGoodHeaderDetailsDataDtoList1); @@ -3765,9 +3775,8 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader(); //OFS销售订单,当时售后订单对应的销售订单如果不存在,则过滤 com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto = header.getHeaderDetailsDto(); - if (headerDetailsDto == null) { - return false; - } + Assert.notNull(headerDetailsDto, "售后入库单对应的销售订单为空! 售后入库单号:{}", header.getCode()); + //1.OFS售后入库单对应的销售订单,交易成功时间为null com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDto header1 = headerDetailsDto.getHeader(); String tradeSuccessAt = header1.getTradeSuccessAt(); diff --git a/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToBTest.java b/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToBTest.java index affe4956..4b643bdf 100644 --- a/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToBTest.java +++ b/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToBTest.java @@ -36,7 +36,9 @@ public class PassiveWarehouseReceiptToBTest { //TOB 无源入库 // passiveWarehouseReceiptToB.startImplementByStockTime("2025-03-16 20:20:20", "2025-03-16 20:20:20"); //TOB 无源入库退款完成 - passiveWarehouseReceiptToB.startImplementByTradeTime("2025-03-16 20:20:20", "2025-03-16 20:20:20"); +// passiveWarehouseReceiptToB.startImplementByTradeTime("2025-03-16 20:20:20", "2025-03-16 20:20:20"); + + passiveWarehouseReceiptToB.startImplementByCode("RH20250727000282", "stock"); } catch (Exception e) { e.printStackTrace(); } diff --git a/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToCTest.java b/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToCTest.java index 681abd0d..7d1463ec 100644 --- a/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToCTest.java +++ b/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/PassiveWarehouseReceiptToCTest.java @@ -32,7 +32,13 @@ public class PassiveWarehouseReceiptToCTest { //测试O无源生成红字应收 // passiveWarehouseReceiptToC.startImplementStockByTime("2025-04-07 13:10:01", "2025-04-07 13:10:01"); - passiveWarehouseReceiptToC.startImplementByCode("RH20250403000841", "stock"); + //情况一 +// passiveWarehouseReceiptToC.startImplementByCode("RH20250722000231", "stock"); + //情况二 +// passiveWarehouseReceiptToC.startImplementByCode("RH20250731000423", "tran"); + //情况三 + passiveWarehouseReceiptToC.startImplementByCode("RH20250731000613", "tran"); +// passiveWarehouseReceiptToC.startImplementByCode("RH20250723000754", "tran"); } catch (Exception e) { e.printStackTrace(); } diff --git a/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToCTest.java b/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToCTest.java index 2e325af9..aba52399 100644 --- a/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToCTest.java +++ b/buildpackage/src/test/java/com/hzya/frame/plugin/lets/plugin/sales/SoSaleReturnPluginInitializerToCTest.java @@ -69,7 +69,7 @@ public class SoSaleReturnPluginInitializerToCTest { try { // soSaleReturnPluginInitializerToC.startImplementByTradeTime("2025-04-28 00:00:00", "2025-04-28 23:59:59", "0"); - soSaleReturnPluginInitializerToC.startImplementByCode("LETS-RE2025070200000500", "tran"); + soSaleReturnPluginInitializerToC.startImplementByCode("LETS-RE2025072800000594", "tran"); // soSaleReturnPluginInitializerToC.startImplementStockByTime("2025-01-31 00:00:00", "2025-01-31 23:59:59", "0"); diff --git a/service/src/main/java/com/hzya/frame/report/lets/dto/OnlyAfterSalesBDto.java b/service/src/main/java/com/hzya/frame/report/lets/dto/OnlyAfterSalesBDto.java index c9281b70..7472b492 100644 --- a/service/src/main/java/com/hzya/frame/report/lets/dto/OnlyAfterSalesBDto.java +++ b/service/src/main/java/com/hzya/frame/report/lets/dto/OnlyAfterSalesBDto.java @@ -64,29 +64,53 @@ public class OnlyAfterSalesBDto { private String businessType; //业务日期-退货完成时间或交易成功时间 - @ExcelProperty(value = "O业务日期") + @ExcelProperty(value = "O业务日期(关联时间或者交易成功时间,哪个晚取哪个)") private String transactionDate; //推送时间 - @ExcelProperty(value = "O推送时间") + @ExcelProperty(value = "O推送时间-红") private String newPushDate; //报错详情 - @ExcelProperty(value = "O报错详情") + @ExcelProperty(value = "O报错详情-红") private String newTransmitInfo; //推送状态 - @ExcelProperty(value = "O推送状态") + @ExcelProperty(value = "O推送状态-红") private String newState; //下游单号 - @ExcelProperty(value = "O下游单号") + @ExcelProperty(value = "O下游单号-红") private String newsystemnumber; //下游主键 - @ExcelProperty(value = "O下游主键") + @ExcelProperty(value = "O下游主键-红") private String newsystemprimary; + //推送时间 + @ExcelProperty(value = "O推送时间-蓝") + private String def8; + + //报错详情 + @ExcelProperty(value = "O报错详情-蓝") + private String def9; + + //推送状态 + @ExcelProperty(value = "O推送状态-蓝") + private String def10; + + //下游单号 + @ExcelProperty(value = "O下游单号-蓝") + private String def11; + + //下游主键 + @ExcelProperty(value = "O下游主键-蓝") + private String def12; + + //情况类型 + @ExcelProperty(value = "情况类型") + private String def7; + @ExcelProperty(value = "O计算应收") private String def1; diff --git a/service/src/main/java/com/hzya/frame/report/lets/dto/TocofsReturnGoodsDetailedDto.java b/service/src/main/java/com/hzya/frame/report/lets/dto/TocofsReturnGoodsDetailedDto.java index 4b439a2f..fb94d5c4 100644 --- a/service/src/main/java/com/hzya/frame/report/lets/dto/TocofsReturnGoodsDetailedDto.java +++ b/service/src/main/java/com/hzya/frame/report/lets/dto/TocofsReturnGoodsDetailedDto.java @@ -55,16 +55,31 @@ public class TocofsReturnGoodsDetailedDto { //TOC退货-交易成功 开始 @ExcelProperty(value = "O退款完成时间") private String refundedAt; - @ExcelProperty(value = "交易成功-报错详情") + @ExcelProperty(value = "交易成功红-报错详情") private String newTransmitInfo4; - @ExcelProperty(value = "交易成功-推送时间") + @ExcelProperty(value = "交易成功红-推送时间") private String newPushDate4; - @ExcelProperty(value = "交易成功-推送状态") + @ExcelProperty(value = "交易成功红-推送状态") private String newState4; - @ExcelProperty(value = "交易成功-下游单号") + @ExcelProperty(value = "交易成功红-下游单号") private String newSystemNumber4; - @ExcelProperty(value = "交易成功-下游主键") + @ExcelProperty(value = "交易成功红-下游主键") private String newSystemPrimary4; + + @ExcelProperty(value = "交易成功蓝-报错详情") + private String def13; + @ExcelProperty(value = "交易成功蓝-推送时间") + private String def14; + @ExcelProperty(value = "交易成功蓝-推送状态") + private String def15; + @ExcelProperty(value = "交易成功蓝-下游单号") + private String def16; + @ExcelProperty(value = "交易成功蓝-下游主键") + private String def17; + + //情况类型 + @ExcelProperty(value = "情况类型") + private String def24; //TOC退货-交易成功 结束 //应收 开始 diff --git a/service/src/main/java/com/hzya/frame/report/lets/entity/OnlyAfterSalesBEntity.xml b/service/src/main/java/com/hzya/frame/report/lets/entity/OnlyAfterSalesBEntity.xml index 303db9c5..f5c3b5f0 100644 --- a/service/src/main/java/com/hzya/frame/report/lets/entity/OnlyAfterSalesBEntity.xml +++ b/service/src/main/java/com/hzya/frame/report/lets/entity/OnlyAfterSalesBEntity.xml @@ -127,6 +127,12 @@ ,def4 ,def5 ,def6 + ,def7 + ,def8 + ,def9 + ,def10 + ,def11 + ,def12 diff --git a/service/src/main/java/com/hzya/frame/report/lets/entity/TocofsReturngoodsDetailedEntity.xml b/service/src/main/java/com/hzya/frame/report/lets/entity/TocofsReturngoodsDetailedEntity.xml index a66257ba..a87635e0 100644 --- a/service/src/main/java/com/hzya/frame/report/lets/entity/TocofsReturngoodsDetailedEntity.xml +++ b/service/src/main/java/com/hzya/frame/report/lets/entity/TocofsReturngoodsDetailedEntity.xml @@ -473,6 +473,14 @@ + + + + + + + + diff --git a/service/src/main/java/com/hzya/frame/ttxofs/dto/returngoodordersearch/RerturnGoodsOrderSearchDetails.java b/service/src/main/java/com/hzya/frame/ttxofs/dto/returngoodordersearch/RerturnGoodsOrderSearchDetails.java index 3899975c..42c42d56 100755 --- a/service/src/main/java/com/hzya/frame/ttxofs/dto/returngoodordersearch/RerturnGoodsOrderSearchDetails.java +++ b/service/src/main/java/com/hzya/frame/ttxofs/dto/returngoodordersearch/RerturnGoodsOrderSearchDetails.java @@ -77,6 +77,13 @@ public class RerturnGoodsOrderSearchDetails { //售后订单表头 private RerturnGoodsOrderSearchHeader rerturnGoodsOrderSearchHeader; - //目标业务时间 + //目标业务时间:关联时间或者交易成功时间 private String targetBusinessDate; + + //时间类型标记 + private String storageTimeStamp; + + private String newState; + + private String def10; } \ No newline at end of file diff --git a/service/src/main/java/com/hzya/frame/ttxofs/dto/returngoodordersearch/RerturnGoodsOrderSearchHeader.java b/service/src/main/java/com/hzya/frame/ttxofs/dto/returngoodordersearch/RerturnGoodsOrderSearchHeader.java index 3980842e..739c85c3 100755 --- a/service/src/main/java/com/hzya/frame/ttxofs/dto/returngoodordersearch/RerturnGoodsOrderSearchHeader.java +++ b/service/src/main/java/com/hzya/frame/ttxofs/dto/returngoodordersearch/RerturnGoodsOrderSearchHeader.java @@ -1,5 +1,6 @@ package com.hzya.frame.ttxofs.dto.returngoodordersearch; +import com.hzya.frame.ttxofs.dto.passivestorage.PassiveStorageResponse; import lombok.Data; /** @@ -78,4 +79,8 @@ public class RerturnGoodsOrderSearchHeader { private String saleDeptCode; private String saleDeptName; private String saleTradeSuccessAt;//销售订单交易成功时间 + + private String storageTimeStamp;//时间类型标记 + + private PassiveStorageResponse.Data passiveStorageResponseData;//关联的无源入库单对象 } \ No newline at end of file