diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofs/dao/ITocofsReturngoodsDetailedDao.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofs/dao/ITocofsReturngoodsDetailedDao.java index 70e17763..d5268789 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofs/dao/ITocofsReturngoodsDetailedDao.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofs/dao/ITocofsReturngoodsDetailedDao.java @@ -33,6 +33,20 @@ public interface ITocofsReturngoodsDetailedDao extends IBaseDao tocofsReturngoodsDetailedEntityList) throws Exception; + /** + * 批量新增或者修改,TOC退货-确认收入 + * + * @author liuyang + */ +// void entityInsertOrUpdateBatchByTocRerturnTranBlueLog(List tocofsReturngoodsDetailedEntityList) throws Exception; + + /** + * 批量新增或者修改,TOC退货-确认收入 + * + * @author liuyang + */ + void entityInsertOrUpdateBatchByTocRerturnTranBlue(List tocofsReturngoodsDetailedEntityList) throws Exception; + /** * 批量新增或者修改,TOB退货-库存 * diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofs/dao/impl/TocofsReturngoodsDetailedDaoImpl.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofs/dao/impl/TocofsReturngoodsDetailedDaoImpl.java index b51f1a87..5b1de653 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofs/dao/impl/TocofsReturngoodsDetailedDaoImpl.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofs/dao/impl/TocofsReturngoodsDetailedDaoImpl.java @@ -30,6 +30,16 @@ public class TocofsReturngoodsDetailedDaoImpl extends MybatisGenericDao tocofsReturngoodsDetailedEntityList) throws Exception { +// insert("com.hzya.frame.plugin.lets.ofs.dao.impl.TocofsReturngoodsDetailedDaoImpl.entityInsertOrUpdateBatchByTocRerturnTranBlueLog", tocofsReturngoodsDetailedEntityList); +// } + + @Override + public void entityInsertOrUpdateBatchByTocRerturnTranBlue(List tocofsReturngoodsDetailedEntityList) throws Exception { + insert("com.hzya.frame.plugin.lets.ofs.dao.impl.TocofsReturngoodsDetailedDaoImpl.entityInsertOrUpdateBatchByTocRerturnTranBlue", tocofsReturngoodsDetailedEntityList); + } + @Override public void entityInsertOrUpdateBatchByTobRerturnStock(List tocofsReturngoodsDetailedEntityList) throws Exception { insert("com.hzya.frame.plugin.lets.ofs.dao.impl.TocofsReturngoodsDetailedDaoImpl.entityInsertOrUpdateBatchByTobRerturnStock", tocofsReturngoodsDetailedEntityList); diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofs/entity/TocofsReturngoodsDetailedEntity.xml b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofs/entity/TocofsReturngoodsDetailedEntity.xml index 865c254f..4e6b0c6c 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofs/entity/TocofsReturngoodsDetailedEntity.xml +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofs/entity/TocofsReturngoodsDetailedEntity.xml @@ -891,10 +891,10 @@ - insert into tocofs_returngoods_detailed(id,newPushDate3,newTransmitInfo3,newState3,newSystemNumber3,newSystemPrimary3,def7,def8,def9,def10,def11,def12) + insert into tocofs_returngoods_detailed(id,newPushDate3,newTransmitInfo3,newState3,newSystemNumber3,newSystemPrimary3,def7,def8,def9,def10,def11,def12,def24) values - (#{entity.id},#{entity.newpushdate3},#{entity.newtransmitinfo3},#{entity.newstate3},#{entity.newsystemnumber3},#{entity.newsystemprimary3},#{entity.def7},#{entity.def8},#{entity.def9},#{entity.def10},#{entity.def11},#{entity.def12}) + (#{entity.id},#{entity.newpushdate3},#{entity.newtransmitinfo3},#{entity.newstate3},#{entity.newsystemnumber3},#{entity.newsystemprimary3},#{entity.def7},#{entity.def8},#{entity.def9},#{entity.def10},#{entity.def11},#{entity.def12},#{entity.def24}) on duplicate key update id = values(id), @@ -908,30 +908,80 @@ def9 = values(def9), def10 = values(def10), def11 = values(def11), - def12 = values(def12) + def12 = values(def12), + def24 = values(def24) - - - insert into tocofs_returngoods_detailed(id,newPushDate4,newTransmitInfo4,newState4,newSystemNumber4,newSystemPrimary4,def7,def8,def9,def10,def11,def12) - values - - (#{entity.id},#{entity.newpushdate4},#{entity.newtransmitinfo4},#{entity.newstate4},#{entity.newsystemnumber4},#{entity.newsystemprimary4},#{entity.def7},#{entity.def8},#{entity.def9},#{entity.def10},#{entity.def11},#{entity.def12}) - - on duplicate key update - id = values(id), - newPushDate4 = values(newPushDate4), - newTransmitInfo4 = values(newTransmitInfo4), - newState4 = values(newState4), - newSystemNumber4 = values(newSystemNumber4), - newSystemPrimary4 = values(newSystemPrimary4), - def7 = values(def7), - def8 = values(def8), - def9 = values(def9), - def10 = values(def10), - def11 = values(def11), - def12 = values(def12) - + + + insert into tocofs_returngoods_detailed(id,newPushDate4,newTransmitInfo4,newState4,newSystemNumber4,newSystemPrimary4,def7,def8,def9,def10,def11,def12,def24) + values + + (#{entity.id},#{entity.newpushdate4},#{entity.newtransmitinfo4},#{entity.newstate4},#{entity.newsystemnumber4},#{entity.newsystemprimary4},#{entity.def7},#{entity.def8},#{entity.def9},#{entity.def10},#{entity.def11},#{entity.def12},#{entity.def24}) + + on duplicate key update + id = values(id), + newPushDate4 = values(newPushDate4), + newTransmitInfo4 = values(newTransmitInfo4), + newState4 = values(newState4), + newSystemNumber4 = values(newSystemNumber4), + newSystemPrimary4 = values(newSystemPrimary4), + def7 = values(def7), + def8 = values(def8), + def9 = values(def9), + def10 = values(def10), + def11 = values(def11), + def12 = values(def12), + def24 = values(def24) + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into tocofs_returngoods_detailed(id,def13,def14,def15,def16,def17,def7,def8,def9,def10,def11,def12,def24) + values + + (#{entity.id},#{entity.def13},#{entity.def14},#{entity.def15},#{entity.def16},#{entity.def17},#{entity.def7},#{entity.def8},#{entity.def9},#{entity.def10},#{entity.def11},#{entity.def12},#{entity.def24}) + + on duplicate key update + id = values(id), + def13 = values(def13), + def14 = values(def14), + def15 = values(def15), + def16 = values(def16), + def17 = values(def17), + + def7 = values(def7), + def8 = values(def8), + def9 = values(def9), + def10 = values(def10), + def11 = values(def11), + def12 = values(def12), + + def24 = values(def24) + 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 6bc78245..26ce5a52 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 @@ -80,6 +80,8 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { @Autowired private QueryAdditionUtil queryAdditionUtil; + private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; + @Override public void initialize() { logger.info(getPluginLabel() + "執行初始化方法initialize()"); @@ -370,16 +372,26 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { // StartAndEndVo startAndEndVo = offsetTimeTime.offsetTime(); //2024年8月19日 15:47:51 查询出U8C里标记的店铺TOB属性 String tocShop = shopTobOrToCUtil.getCommaShop("TOC"); +// QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo(); +// queryOfsSoSaleOutVo.setRefundedAt_start(startTime); +// queryOfsSoSaleOutVo.setRefundedAt_end(endTime); +// queryOfsSoSaleOutVo.setClientCode("LETS"); +// queryOfsSoSaleOutVo.setPageNo(1L); +// queryOfsSoSaleOutVo.setPageSize(50L); +// queryOfsSoSaleOutVo.setStoreCode(tocShop); +// queryOfsSoSaleOutVo.setInternalInstructionType("RETURN"); +// queryOfsSoSaleOutVo.setRefundStatus("900"); +// queryOfsSoSaleOutVo.setCode("LETS-RE2024081900000001"); + QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo(); - queryOfsSoSaleOutVo.setRefundedAt_start(startTime); - queryOfsSoSaleOutVo.setRefundedAt_end(endTime); + queryOfsSoSaleOutVo.setClosedAt_start(startTime); + queryOfsSoSaleOutVo.setClosedAt_end(endTime); queryOfsSoSaleOutVo.setClientCode("LETS"); + queryOfsSoSaleOutVo.setStatus(900L); queryOfsSoSaleOutVo.setPageNo(1L); queryOfsSoSaleOutVo.setPageSize(50L); queryOfsSoSaleOutVo.setStoreCode(tocShop); queryOfsSoSaleOutVo.setInternalInstructionType("RETURN"); - queryOfsSoSaleOutVo.setRefundStatus("900"); -// queryOfsSoSaleOutVo.setCode("LETS-RE2024081900000001"); ofsStandardUtil.queryOfsReturnGoods(queryOfsSoSaleOutVo, returnGoodHeaderDetailsDataDtoArrayList, 1L, "ofs.receipt.search"); } else if (ProfilesActiveConstant.PUSH_SCENE_TYPE_1.equals(pushScenarioType)) { TocofsReturngoodsDetailedEntity tocofsReturngoodsDetailedEntity = new TocofsReturngoodsDetailedEntity(); @@ -467,13 +479,15 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { LOCK2.lock(); try { //过滤成功的数据 - List stockinOrderList = filterDataTran(returnGoodHeaderDetailsDataDtoArrayList); + //2025年8月5日10:26:59 不能放在此处过滤,因为没有售后入库单对应的售后订单以及销售订单,没有办法知道对应的状态值条件判断 + //移动到档案查询时发生过滤 +// List stockinOrderList = filterDataTran(returnGoodHeaderDetailsDataDtoArrayList); //保存到mysql if (!ProfilesActiveConstant.PUSH_SCENE_TYPE_1.equals(pushScenarioType)) { - batchInsert(stockinOrderList); + batchInsert(returnGoodHeaderDetailsDataDtoArrayList); } //执行推送主逻辑 - implementTran(stockinOrderList, pushScenarioType); + implementTran(returnGoodHeaderDetailsDataDtoArrayList, pushScenarioType); } catch (Exception e) { logger.error("TOC退货-确认收入:getSetTran方法抛出异常", e); } finally { @@ -724,7 +738,7 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { // 分组汇总 String dimension = null; // dimension = "1001&dy-intoyou&B2CHA20240033&6973391733588&SALES&002"; - Map> summaryDimensionMap = groupSummary(goodsRertunSonDetailsDtos, dimension); + Map> summaryDimensionMap = groupSummary(goodsRertunSonDetailsDtos, dimension, sceneType); // 查询U8C业务流程 BdBusitypeEntity bdBusitypeEntity = u8cOperationFlow(); // 查询销售收发类别 @@ -954,7 +968,7 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { } } if (ProfilesActiveConstant.PUSH_SCENE_TYPE_1.equals(pushScenarioType) || ProfilesActiveConstant.PUSH_SCENE_TYPE_2.equals(pushScenarioType)) { - //推送u8c + //推送u8c生成红字销售订单 List saleorderRequestDtoList = new ArrayList<>(); saleorderRequestDtoList.add(saleorderRequestDto); Map> stringStringMap = new HashMap<>(); @@ -1017,9 +1031,11 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { List goodsRertunSonDetailsDtos = queryBasicArchivesStock(returnGoodHeaderDetailsDataDtoList1, sceneType); // 分组汇总 String dimension = null; - Map> summaryDimensionMap = groupSummary(goodsRertunSonDetailsDtos, dimension); - // 查询U8C业务流程 - BdBusitypeEntity bdBusitypeEntity = u8cOperationFlowV2(); + Map> summaryDimensionMap = groupSummary(goodsRertunSonDetailsDtos, dimension, sceneType); + // 查询U8C业务流程-TOC销售退货成本-红 + BdBusitypeEntity bdBusitypeEntity1 = u8cOperationFlowV2(); + // 查询U8C业务流程-TOC销售退货入库-蓝 + BdBusitypeEntity bdBusitypeEntity2 = u8cOperationFlow(); //初始化所有存货管理档案对应的结存价+采购价 // List mapList = initAllBalancePricePurchasePrice(); //查询「平台运费」、「平台优惠」、「支付优惠」、「达人优惠」存货基本档案(注意没有商家优惠) @@ -1033,7 +1049,7 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { //查询「平台运费」、「平台优惠」、「支付优惠」、「达人优惠」所有公司的存货管理档案 Map stringBdInvmandocEntityMap = queryAdditionUtil.queryInventoryMan(bdInvbasdocEntities); - if (bdBusitypeEntity != null && summaryDimensionMap != null) { + if (bdBusitypeEntity1 != null && bdBusitypeEntity2 != null && summaryDimensionMap != null) { Iterator>> iterator = summaryDimensionMap.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry> entry = iterator.next(); @@ -1054,6 +1070,8 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { BdDefdocEntity platformArchives = oldValue.get(0).getPlatformArchives();//U8C平台档案 BdDefdocEntity shopArchives = oldValue.get(0).getShopArchives();//U8C店铺档案 BdRdclEntity bdRdclEntity = oldValue.get(0).getBdRdclEntity();//U8C收发类别 + String newstate4 = oldValue.get(0).getNewstate4(); + String def15 = oldValue.get(0).getDef15(); try { // checkArchives(oldValue.get(0)); @@ -1061,66 +1079,66 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { String generateBusinessDate = createSuccessFulTradeDate(header); SaleorderRequestDto saleorderRequestDto = new SaleorderRequestDto(); -// SaleorderRequestParentDto saleorderRequestParentDto = new SaleorderRequestParentDto(); -// saleorderRequestParentDto.setDbilldate(generateBusinessDate);//单据日期 -// saleorderRequestParentDto.setBretinvflag("Y");//退货标记 -// saleorderRequestParentDto.setCbiztype(bdBusitypeEntity.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(keyGroup); -// //平台 -// 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名称")); -// -// saleorderRequestDto.setParentvo(saleorderRequestParentDto); + 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(keyGroup); + //平台 + 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名称")); + + saleorderRequestDto.setParentvo(saleorderRequestParentDto); //改为红字应收单表头 //组装应收单表头 - 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.setZyx2(platformArchives.getDoccode());//来源平台 - parentVo.setZyx3(bdRdclEntity.getRdcode());//收发类别 - parentVo.setZyx16("1");//单据红字标识 - parentVo.setZyx17(ProfilesActiveConstant.sourceSystem1);//来源系统 - parentVo.setZyx18(keyGroup);//汇总维度 +// 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.setZyx2(platformArchives.getDoccode());//来源平台 +// parentVo.setZyx3(bdRdclEntity.getRdcode());//收发类别 +// parentVo.setZyx16("1");//单据红字标识 +// parentVo.setZyx17(ProfilesActiveConstant.sourceSystem1);//来源系统 +// parentVo.setZyx18(keyGroup);//汇总维度 -// List saleorderRequestChildrenDtoList = new ArrayList<>(); -// saleorderRequestDto.setChildrenvo(saleorderRequestChildrenDtoList); + List saleorderRequestChildrenDtoList = new ArrayList<>(); + saleorderRequestDto.setChildrenvo(saleorderRequestChildrenDtoList); //验证是否为指定的店铺,如果为true,则取结存价 Boolean isCheckShopChoose = balanceUnitPriceUtil.checkOfsShop(header.getStoreCode()); @@ -1137,77 +1155,77 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { // 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 = goodsRertunSonDetailsDto.getGroupTotalPayAmount().divide(goodsRertunSonDetailsDto.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(goodsRertunSonDetailsDto.getGroupShipQty()).setScale(2, BigDecimal.ROUND_HALF_UP); -// noriginalcursummny = noriginalcurtaxprice.multiply(goodsRertunSonDetailsDto.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()); -// } + String tax = new BigDecimal(bdTaxitemsEntity1.getTaxratio()).divide(new BigDecimal(100), 20, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString(); - //判断是否为赠品 -// Boolean isblargessflag = false; -// if ("0".equals(goodsRertunSonDetailsDto.getGroupTotalPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString())) { -// isblargessflag = true; -// } + BigDecimal noriginalcurprice = null;//无税单价 + BigDecimal noriginalcurmny = null;//无税金额 + BigDecimal noriginalcurtaxprice = null;//含税单价 + BigDecimal noriginalcursummny = null;//价税合计 + BigDecimal noriginalcurtaxmny = null;//税额=价税合计-无税金额 + try { + noriginalcurtaxprice = goodsRertunSonDetailsDto.getGroupTotalPayAmount().divide(goodsRertunSonDetailsDto.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(goodsRertunSonDetailsDto.getGroupShipQty()).setScale(2, BigDecimal.ROUND_HALF_UP); + noriginalcursummny = noriginalcurtaxprice.multiply(goodsRertunSonDetailsDto.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()); + } -// 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("-" + goodsRertunSonDetailsDto.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());//价税合计 -// saleorderRequestChildrenDto.setNoriginalcursummny("-" + goodsRertunSonDetailsDto.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(goodsRertunSonDetailsDto.getVdef4().stripTrailingZeros().toPlainString())) { -// saleorderRequestChildrenDto.setVdef4("-" + goodsRertunSonDetailsDto.getVdef4().stripTrailingZeros().toPlainString()); -// } else { -// saleorderRequestChildrenDto.setVdef4("0"); -// } -// if (!"0".equals(goodsRertunSonDetailsDto.getVdef5().stripTrailingZeros().toPlainString())) { -// saleorderRequestChildrenDto.setVdef5("-" + goodsRertunSonDetailsDto.getVdef5().stripTrailingZeros().toPlainString()); -// } else { -// saleorderRequestChildrenDto.setVdef5("0"); -// } -// if (!"0".equals(goodsRertunSonDetailsDto.getVdef6().stripTrailingZeros().toPlainString())) { -// saleorderRequestChildrenDto.setVdef6("-" + goodsRertunSonDetailsDto.getVdef6().stripTrailingZeros().toPlainString()); -// } else { -// saleorderRequestChildrenDto.setVdef6("0"); -// } -// if (!"0".equals(goodsRertunSonDetailsDto.getVdef7().stripTrailingZeros().toPlainString())) { -// saleorderRequestChildrenDto.setVdef7("-" + goodsRertunSonDetailsDto.getVdef7().stripTrailingZeros().toPlainString()); -// } else { -// saleorderRequestChildrenDto.setVdef7("0"); -// } -// saleorderRequestChildrenDtoList.add(saleorderRequestChildrenDto); +// 判断是否为赠品 + Boolean isblargessflag = false; + if ("0".equals(goodsRertunSonDetailsDto.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("-" + goodsRertunSonDetailsDto.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());//价税合计 + saleorderRequestChildrenDto.setNoriginalcursummny("-" + goodsRertunSonDetailsDto.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(goodsRertunSonDetailsDto.getVdef4().stripTrailingZeros().toPlainString())) { + saleorderRequestChildrenDto.setVdef4("-" + goodsRertunSonDetailsDto.getVdef4().stripTrailingZeros().toPlainString()); + } else { + saleorderRequestChildrenDto.setVdef4("0"); + } + if (!"0".equals(goodsRertunSonDetailsDto.getVdef5().stripTrailingZeros().toPlainString())) { + saleorderRequestChildrenDto.setVdef5("-" + goodsRertunSonDetailsDto.getVdef5().stripTrailingZeros().toPlainString()); + } else { + saleorderRequestChildrenDto.setVdef5("0"); + } + if (!"0".equals(goodsRertunSonDetailsDto.getVdef6().stripTrailingZeros().toPlainString())) { + saleorderRequestChildrenDto.setVdef6("-" + goodsRertunSonDetailsDto.getVdef6().stripTrailingZeros().toPlainString()); + } else { + saleorderRequestChildrenDto.setVdef6("0"); + } + if (!"0".equals(goodsRertunSonDetailsDto.getVdef7().stripTrailingZeros().toPlainString())) { + saleorderRequestChildrenDto.setVdef7("-" + goodsRertunSonDetailsDto.getVdef7().stripTrailingZeros().toPlainString()); + } else { + saleorderRequestChildrenDto.setVdef7("0"); + } + saleorderRequestChildrenDtoList.add(saleorderRequestChildrenDto); //如果合并后的金额为0,则不传到U8C Assert.notNull(goodsRertunSonDetailsDto.getGroupTotalPayAmount(), "goodsRertunSonDetailsDto.getGroupTotalPayAmount()不能为空!"); @@ -1217,12 +1235,12 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { } //修改为生成红字应收单表体 - List childrennArrayList = new ArrayList<>(); - ArapDjzbVO.Childrenn arapDjzbVOChildrenn = new ArapDjzbVO.Childrenn(); - childrennArrayList.add(arapDjzbVOChildrenn); - arapDjzbVOChildrenn.setCinventoryid(bdInvbasdocEntity.getInvcode());//存货管理档案 - arapDjzbVOChildrenn.setJfbbje("-" + groupTotalPayAmount.stripTrailingZeros().toPlainString());//借方本币金额 - arapDjzbVOChildrenn.setJfybje("-" + groupTotalPayAmount.stripTrailingZeros().toPlainString());//借方原币金额 +// List childrennArrayList = new ArrayList<>(); +// ArapDjzbVO.Childrenn arapDjzbVOChildrenn = new ArapDjzbVO.Childrenn(); +// childrennArrayList.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());//借方本币无税金额 @@ -1242,8 +1260,8 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { //补充:平台优惠-存货 BigDecimal absAccumulatedPostage = vdef4.abs(); BigDecimal negativeValue = absAccumulatedPostage.negate(); -// queryAdditionUtil.additional(saleorderRequestChildrenDtoList, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, "-1", bdTaxitemsEntity); - queryAdditionUtil.additionalV3(childrennArrayList, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, bdTaxitemsEntity); + queryAdditionUtil.additional(saleorderRequestChildrenDtoList, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, "-1", bdTaxitemsEntity); +// queryAdditionUtil.additionalV3(childrennArrayList, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, bdTaxitemsEntity); } } //达人优惠 @@ -1259,8 +1277,8 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { //补充:达人优惠-存货 BigDecimal absAccumulatedPostage = vdef6.abs(); BigDecimal negativeValue = absAccumulatedPostage.negate(); -// queryAdditionUtil.additional(saleorderRequestChildrenDtoList, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, "-1", bdTaxitemsEntity); - queryAdditionUtil.additionalV3(childrennArrayList, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, bdTaxitemsEntity); + queryAdditionUtil.additional(saleorderRequestChildrenDtoList, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, "-1", bdTaxitemsEntity); +// queryAdditionUtil.additionalV3(childrennArrayList, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, bdTaxitemsEntity); } } //支付优惠 @@ -1275,67 +1293,121 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { BdTaxitemsEntity bdTaxitemsEntity = stringBdTaxitemsEntityMap.get("FY04"); //补充:支付优惠-存货 BigDecimal absAccumulatedPostage = vdef5.abs(); - BigDecimal negativeValue = absAccumulatedPostage.negate(); -// queryAdditionUtil.additional(saleorderRequestChildrenDtoList, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, "-1", bdTaxitemsEntity); - queryAdditionUtil.additionalV3(childrennArrayList, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, bdTaxitemsEntity); + BigDecimal negativeValue = absAccumulatedPostage.negate();// 符号取反(转为负数) + queryAdditionUtil.additional(saleorderRequestChildrenDtoList, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, "-1", bdTaxitemsEntity); +// queryAdditionUtil.additionalV3(childrennArrayList, bdInvmandocEntity1, bdInvbasdocEntity1, negativeValue, bdTaxitemsEntity); } } - if (ProfilesActiveConstant.PUSH_SCENE_TYPE_1.equals(pushScenarioType) || ProfilesActiveConstant.PUSH_SCENE_TYPE_2.equals(pushScenarioType)) { - //推送U8C生成红字应收单 -// 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(); + boolean oneSuccess = false; + if (!"Y".equals(newstate4)) { + if (ProfilesActiveConstant.PUSH_SCENE_TYPE_1.equals(pushScenarioType) || ProfilesActiveConstant.PUSH_SCENE_TYPE_2.equals(pushScenarioType)) { + //推送U8C红字销售订单,如果推送失败,抛出异常,那么就会外围的try catch捕获,代码不会往下执行 + 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); + updateSuccessOrFail2(oldValue, "Y", "success", vreceiptcode, csaleid, oldValue.get(0).getStorageTimeStamp()); + oneSuccess = true; + + //推送第一笔红字销售订单 +// List arapDjzbVOList = new ArrayList<>(); +// ArapDjzbVO arapDjzbVO = new ArapDjzbVO(); +// arapDjzbVO.setParentvo(parentVo); +// arapDjzbVO.setChildren(childrennArrayList); +// 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销售订单编号:{} 销售订单主键:{} 销售公司:{}", vreceiptcode, csaleid, pk_corp); - List arapDjzbVOList = new ArrayList<>(); - ArapDjzbVO arapDjzbVO = new ArapDjzbVO(); - arapDjzbVO.setParentvo(parentVo); - arapDjzbVO.setChildren(childrennArrayList); - 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); + } else if (ProfilesActiveConstant.PUSH_SCENE_TYPE_0.equals(pushScenarioType)) { + //不推送U8C,单据暂存 + String vreceiptcode = "暂存"; + String csaleid = "暂存"; + String newstate = "S"; + String newTransmitInfo = "暂存"; + updateSuccessOrFail2(oldValue, newstate, newTransmitInfo, vreceiptcode, csaleid, oldValue.get(0).getStorageTimeStamp()); + oneSuccess = true; + } else { + Assert.state(false, "未知的场景类型 pushScenarioType={}", pushScenarioType); } - logger.info("TOC红字应收单:{} 销售订单主键:{} 销售公司:{}", djbh, vouchid, dwbm); - - updateSuccessOrFail2(oldValue, "Y", "success", djbh, vouchid); - } else if (ProfilesActiveConstant.PUSH_SCENE_TYPE_0.equals(pushScenarioType)) { - //不推送U8C,单据暂存 - String vreceiptcode = "暂存"; - String csaleid = "暂存"; - String newstate = "S"; - String newTransmitInfo = "暂存"; - updateSuccessOrFail2(oldValue, newstate, newTransmitInfo, vreceiptcode, csaleid); } else { - Assert.state(false, "未知的场景类型 pushScenarioType={}", pushScenarioType); + oneSuccess = true; + } + + //判断入库时间(关单时间)与交易成功时间,推送u8c生成蓝字销售订单,仅满足情况二的条件才生成这张蓝字销售订单 + try { + if (!"Y".equals(def15) && oneSuccess && "2".equals(oldValue.get(0).getStorageTimeStamp())) { + if (ProfilesActiveConstant.PUSH_SCENE_TYPE_1.equals(pushScenarioType) || ProfilesActiveConstant.PUSH_SCENE_TYPE_2.equals(pushScenarioType)) { + if ("2".equals(oldValue.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); + updateSuccessOrFail3(oldValue, "Y", "success", vreceiptcode2, csaleid2, oldValue.get(0).getStorageTimeStamp()); + } + } else if (ProfilesActiveConstant.PUSH_SCENE_TYPE_0.equals(pushScenarioType)) { + //不推送U8C,单据暂存 + String vreceiptcode = "暂存"; + String csaleid = "暂存"; + String newstate = "S"; + String newTransmitInfo = "暂存"; + updateSuccessOrFail3(oldValue, newstate, newTransmitInfo, vreceiptcode, csaleid, oldValue.get(0).getStorageTimeStamp()); + } else { + Assert.state(false, "未知的场景类型 pushScenarioType={}", pushScenarioType); + } + } + } catch (Exception e) { + //记录蓝字销售订单异常失败 + logger.error("推送蓝字销售订单抛出异常!", e); + String message = e.getMessage(); + if (message == null) { + message = "未知错误"; + } + updateSuccessOrFail3(oldValue, "N", message, null, null, oldValue.get(0).getStorageTimeStamp()); } } catch (Exception e) { + //记录红字销售订单异常失败 logger.error("TOC退货业务转换成U8C对象过程中、或者单据推送到U8C出现异常!", e); - //记录失败 String message = e.getMessage(); if (message == null) { message = "未知错误"; } - updateSuccessOrFail2(oldValue, "N", message, null, null); + updateSuccessOrFail2(oldValue, "N", message, null, null, oldValue.get(0).getStorageTimeStamp()); } } } else { @@ -1387,12 +1459,16 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { * @author liuyang */ private String createSuccessFulTradeDate(StockinOrderSearchResponse.StockinOrder.StockinH stockinH) { + //如果是情况二,:且退货入库时间早于交易完成时间,取交易成功时间 + //如果是情况三:且退货入库时间晚于交易成功时间,取退货入库库时间 + String code = null; if (stockinH != null && stockinH.getCode() != null) { code = stockinH.getCode(); } - if (stockinH != null && stockinH.getRefundedAt() != null) { - String refundedAt = stockinH.getRefundedAt(); + if (stockinH != null && stockinH.getClosedAt() != null) { +// String refundedAt = stockinH.getRefundedAt(); + String closedAt = stockinH.getClosedAt(); com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto = stockinH.getHeaderDetailsDto(); com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDto header = headerDetailsDto.getHeader(); @@ -1400,20 +1476,21 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { String businessFormat = null; try { //2025年1月22日 17:44:55 先暂时还是使用旧逻辑 - Date refundedAtDate = DateUtil.parse(refundedAt); - DateTime tradeSuccessAtDate = DateUtil.parse(header.getTradeSuccessAt()); - Date effectiveDate = refundedAtDate.compareTo(tradeSuccessAtDate) > 0 ? refundedAtDate : tradeSuccessAtDate; +// Date refundedAtDate = DateUtil.parse(refundedAt);//退款完成时间 + Date closedAtDate = DateUtil.parse(closedAt);//入库时间(关单时间) + DateTime tradeSuccessAtDate = DateUtil.parse(header.getTradeSuccessAt());//交易成功时间 + Date effectiveDate = closedAtDate.compareTo(tradeSuccessAtDate) > 0 ? closedAtDate : tradeSuccessAtDate; // Date dbill = DateUtil.parse(timeJudgment(stockinH)); businessFormat = DateUtil.format(effectiveDate, "yyyy-MM-dd"); } catch (Exception e) { - logger.error("业务日期生成失败refundedAt(O退款完成时间)解析异常:{} O售后入库单编码:{}", e.getMessage(), code); - Assert.state(false, "业务日期生成失败refundedAt(O退款完成时间)解析异常:{} O售后入库单编码:{}", e.getMessage(), code); + logger.error("业务日期生成失败closedAt(O退货入库时间)解析异常:{} O售后入库单编码:{}", e.getMessage(), code); + Assert.state(false, "业务日期生成失败closedAt(O退货入库时间)解析异常:{} O售后入库单编码:{}", e.getMessage(), code); } return businessFormat; } else { - logger.error("业务日期生成失败refundedAt(O退款完成时间)不能为空! O售后入库单编码:{}", code); - Assert.state(false, "业务日期生成失败refundedAt(O退款完成时间)不能为空! O售后入库单编码:{}", code); + logger.error("业务日期生成失败closedAt(O退货入库时间)不能为空! O售后入库单编码:{}", code); + Assert.state(false, "业务日期生成失败closedAt(O退货入库时间)不能为空! O售后入库单编码:{}", code); return null; } } @@ -1421,31 +1498,32 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { /** * 先退款后退货场景时间判断 */ - public String timeJudgment(StockinOrderSearchResponse.StockinOrder.StockinH stockinH) throws Exception { - Assert.notNull(stockinH, "stockinH不能为空!"); - Assert.notNull(stockinH.getRefundedAt(), "退款完成时间不能为空 O售后入库单号:{}", stockinH.getCode()); - Assert.notNull(stockinH.getClosedAt(), "入库完成时间(关单时间)不能为空 O售后入库单号:{}", stockinH.getCode()); - //退款完成时间 - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - Date refundedAtDate = sdf.parse(stockinH.getRefundedAt()); - - //入库完成时间 - SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - Date closedAtDate = sdf2.parse(stockinH.getClosedAt()); - - if (refundedAtDate.before(closedAtDate)) { - logger.info("O售后入库单:{} 入库时间:{} 退款完成时间:{} 「先退款」后退货", stockinH.getCode(), stockinH.getClosedAt(), stockinH.getRefundedAt()); - return stockinH.getClosedAt(); - } else { - logger.info("O售后入库单:{} 入库时间:{} 退款完成时间:{} 「先退货」后退款", stockinH.getCode(), stockinH.getClosedAt(), stockinH.getRefundedAt()); - return stockinH.getRefundedAt(); - } - } +// public String timeJudgment(StockinOrderSearchResponse.StockinOrder.StockinH stockinH) throws Exception { +// Assert.notNull(stockinH, "stockinH不能为空!"); +// Assert.notNull(stockinH.getRefundedAt(), "退款完成时间不能为空 O售后入库单号:{}", stockinH.getCode()); +// Assert.notNull(stockinH.getClosedAt(), "入库完成时间(关单时间)不能为空 O售后入库单号:{}", stockinH.getCode()); +// //退款完成时间 +// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// Date refundedAtDate = sdf.parse(stockinH.getRefundedAt()); +// +// //入库完成时间 +// SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// Date closedAtDate = sdf2.parse(stockinH.getClosedAt()); +// +// if (refundedAtDate.before(closedAtDate)) { +// logger.info("O售后入库单:{} 入库时间:{} 退款完成时间:{} 「先退款」后退货", stockinH.getCode(), stockinH.getClosedAt(), stockinH.getRefundedAt()); +// return stockinH.getClosedAt(); +// } else { +// logger.info("O售后入库单:{} 入库时间:{} 退款完成时间:{} 「先退货」后退款", stockinH.getCode(), stockinH.getClosedAt(), stockinH.getRefundedAt()); +// return stockinH.getRefundedAt(); +// } +// } /** * 档案转换(OFS->U8C) * * @param returnGoodHeaderDetailsDataDtoList1 OFS售后入库单对象 + * @param sceneType 业务场景类型 * @author liuyang */ private List queryBasicArchivesStock(List returnGoodHeaderDetailsDataDtoList1, String sceneType) { @@ -1462,9 +1540,6 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { //查询OFS售后入库单对应的售后订单 List rerturnGoodsOrderSearchData = queryBatchAfterSalesOrder(returnGoodHeaderDetailsDataDtoList1); findAfterSalesOrder(rerturnGoodsOrderSearchData, returnGoodHeaderDetailsDataDtoList1); - if ("tran".equals(sceneType)) { - returnGoodHeaderDetailsDataDtoList1 = filterForSale(returnGoodHeaderDetailsDataDtoList1); - } //测试 // RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData2 = rerturnGoodsOrderSearchData.get(0); // List details2 = rerturnGoodsOrderSearchData2.getDetails(); @@ -1491,6 +1566,15 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { // StockinOrderSearchResponse.StockinOrder.StockinB stockinB = details2.get(i); // stockinB.setReceivedQty(stockinB.getRequestQty()); // } + markTimeInMorningEvening(returnGoodHeaderDetailsDataDtoList1); + if ("stock".equals(sceneType)) { + returnGoodHeaderDetailsDataDtoList1 = filtrationTransactionSuccessTime(returnGoodHeaderDetailsDataDtoList1); + } + if ("tran".equals(sceneType)) { + returnGoodHeaderDetailsDataDtoList1 = filterForSale(returnGoodHeaderDetailsDataDtoList1); + //2025年8月5日10:30:14 过滤掉推送成功的售后入库单 + returnGoodHeaderDetailsDataDtoList1 = filterDataTran(returnGoodHeaderDetailsDataDtoList1); + } for (int i = 0; i < returnGoodHeaderDetailsDataDtoList1.size(); i++) { StockinOrderSearchResponse.StockinOrder stockinOrder = returnGoodHeaderDetailsDataDtoList1.get(i); @@ -1708,7 +1792,7 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { * * @author liuyang */ - private Map> groupSummary(List goodsRertunSonDetailsDtos, String dimension) { + private Map> groupSummary(List goodsRertunSonDetailsDtos, String dimension, String sceneType) { if (goodsRertunSonDetailsDtos != null && goodsRertunSonDetailsDtos.size() > 0) { for (int i = 0; i < goodsRertunSonDetailsDtos.size(); i++) { GoodsRertunSonDetailsDto goodsRertunSonDetailsDto = goodsRertunSonDetailsDtos.get(i); @@ -1731,6 +1815,18 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { BdRdclEntity bdRdclEntity = goodsRertunSonDetailsDto.getBdRdclEntity(); //部门 BdDeptdocEntity bdDeptdocEntity = goodsRertunSonDetailsDto.getBdDeptdocEntity(); + //入库时间类型标记 + String storageTimeStamp = goodsRertunSonDetailsDto.getStorageTimeStamp(); + //红推送状态 + String newstate4 = goodsRertunSonDetailsDto.getNewstate4(); + //蓝推送状态 + String def15 = goodsRertunSonDetailsDto.getDef15(); + if (newstate4 == null || "".equals(newstate4)) { + newstate4 = "N"; + } + if (def15 == null || "".equals(def15)) { + def15 = "N"; + } StringBuffer summaryDimensionStr = new StringBuffer(); if (bdCorpEntity != null && bdCorpEntity.getPkCorp() != null) { @@ -1780,6 +1876,31 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { summaryDimensionStr.append(NOTHING); } + //如果为退款业务,则增加入库时间类型标记、推送状态的维度 + if ("tran".equals(sceneType)) { + summaryDimensionStr.append(ADD); + + if (storageTimeStamp != null) { + summaryDimensionStr.append(storageTimeStamp); + } else { + summaryDimensionStr.append(NOTHING); + } + summaryDimensionStr.append(ADD); + + if (newstate4 != null) { + summaryDimensionStr.append(newstate4); + } else { + summaryDimensionStr.append(NOTHING); + } + summaryDimensionStr.append(ADD); + + if (def15 != null) { + summaryDimensionStr.append(def15); + } else { + summaryDimensionStr.append(NOTHING); + } + } + goodsRertunSonDetailsDto.setSummaryDimensionStr(summaryDimensionStr.toString()); } logger.info("TOC:{} 个出库单对象需要汇总", goodsRertunSonDetailsDtos.size()); @@ -1828,7 +1949,8 @@ public class SoSaleReturnPluginInitializerToC 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; @@ -1843,12 +1965,30 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { //查询业务流程 //2024年8月6日 11:33:07 具体的业务流程名称,还需要实施提供 // String processName = "TOC售后完成"; - 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售后完成"; +//// String processName = "TOC销售退款"; +//// String processName = "TOC销售退货成本"; +// String processName = "TOC销售退货入库"; +// BdBusitypeEntity bdBusitypeEntity = queryBdBusitypeUtil.queryBdBusitype(processName); +// Assert.notNull(bdBusitypeEntity, "根据业务流程名称({})没有查询到业务流程", processName); +// return bdBusitypeEntity; +// } + /** * 检查参数是否为空 * 2024年8月6日 11:40:19 保险的做法,最好还是验证一下 @@ -2431,6 +2571,9 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { TocofsReturngoodsDetailedEntity tocofsReturngoodsDetailedEntity = new TocofsReturngoodsDetailedEntity(); tocofsReturngoodsDetailedEntity.setId(stockinB.getId()); + + Assert.notNull(stockinB.getStorageTimeStamp(), "入库时间标记不能为空!"); + tocofsReturngoodsDetailedEntity.setDef24(stockinB.getStorageTimeStamp()); if (sceneType.equals("stock")) { tocofsReturngoodsDetailedEntity.setNewpushdate3(newPushDate); tocofsReturngoodsDetailedEntity.setNewtransmitinfo3(newTransmitInfo); @@ -2438,11 +2581,20 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { tocofsReturngoodsDetailedEntity.setNewsystemnumber3(null); tocofsReturngoodsDetailedEntity.setNewsystemprimary3(null); } else if (sceneType.equals("tran")) { - tocofsReturngoodsDetailedEntity.setNewpushdate4(newPushDate); - tocofsReturngoodsDetailedEntity.setNewtransmitinfo4(newTransmitInfo); - tocofsReturngoodsDetailedEntity.setNewstate4(newstate); - tocofsReturngoodsDetailedEntity.setNewsystemnumber4(null); - tocofsReturngoodsDetailedEntity.setNewsystemprimary4(null); + //如果红字成功就记录到蓝字错误字段 + if ("Y".equals(stockinB.getNewstate4())) { + tocofsReturngoodsDetailedEntity.setDef13(newPushDate); + tocofsReturngoodsDetailedEntity.setDef14(newTransmitInfo); + tocofsReturngoodsDetailedEntity.setDef15(newstate); + tocofsReturngoodsDetailedEntity.setDef16(null); + tocofsReturngoodsDetailedEntity.setDef17(null); + } else { + tocofsReturngoodsDetailedEntity.setNewpushdate4(newPushDate); + tocofsReturngoodsDetailedEntity.setNewtransmitinfo4(newTransmitInfo); + tocofsReturngoodsDetailedEntity.setNewstate4(newstate); + tocofsReturngoodsDetailedEntity.setNewsystemnumber4(null); + tocofsReturngoodsDetailedEntity.setNewsystemprimary4(null); + } } tocofsSaleoutDetailedEntityList.add(tocofsReturngoodsDetailedEntity); } @@ -2453,12 +2605,20 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { List> splitListByCount = SplitListByCountUtil.splitListByCount(tocofsSaleoutDetailedEntityList, 50); for (int i = 0; i < splitListByCount.size(); i++) { List tocofsReturngoodsDetailedEntities = splitListByCount.get(i); - if (sceneType.equals("stock")) { - //库存 - iTocofsReturngoodsDetailedDao.entityInsertOrUpdateBatchByTocRerturnStock(tocofsReturngoodsDetailedEntities); - } else if (sceneType.equals("tran")) { - //确认收入 - iTocofsReturngoodsDetailedDao.entityInsertOrUpdateBatchByTocRerturnTran(tocofsReturngoodsDetailedEntities); + if (tocofsReturngoodsDetailedEntities.size() > 0) { + if (sceneType.equals("stock")) { + //入库 + iTocofsReturngoodsDetailedDao.entityInsertOrUpdateBatchByTocRerturnStock(tocofsReturngoodsDetailedEntities); + } else if (sceneType.equals("tran")) { + //确认收入 + if (tocofsReturngoodsDetailedEntities.get(0).getDef13() == null) { + //红字销售订单日志错误记录 + iTocofsReturngoodsDetailedDao.entityInsertOrUpdateBatchByTocRerturnTran(tocofsReturngoodsDetailedEntities); + } else { + //蓝字销售订单日志错误记录 + iTocofsReturngoodsDetailedDao.entityInsertOrUpdateBatchByTocRerturnTranBlue(tocofsReturngoodsDetailedEntities); + } + } } } } @@ -2538,11 +2698,11 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { } /** - * 处理TOC-库存同步的成功、失败错误逻辑 + * 处理TOC退款完成-红字销售订单 * * @author liuyang */ - private void updateSuccessOrFail2(List sonDetailsDtoList, String newstate, String newTransmitInfo, String newsystemnumber, String newsystemprimary) { + private void updateSuccessOrFail2(List sonDetailsDtoList, String newstate, String newTransmitInfo, String newsystemnumber, String newsystemprimary, String storageTimeStamp) { if (newTransmitInfo != null && !"".equals(newTransmitInfo.trim()) && newTransmitInfo.length() >= 400) { newTransmitInfo = newTransmitInfo.substring(0, 400); } @@ -2573,6 +2733,7 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { tocofsReturngoodsDetailedEntity.setNewsystemnumber4(newsystemnumber); tocofsReturngoodsDetailedEntity.setNewsystemprimary4(newsystemprimary); } + tocofsReturngoodsDetailedEntity.setDef24(storageTimeStamp); tocofsReturngoodsDetailedEntityArrayList.add(tocofsReturngoodsDetailedEntity); } @@ -2598,6 +2759,69 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { } } + /** + * 处理TOC退款完成-蓝字销售订单 + * + * @author liuyang + */ + private void updateSuccessOrFail3(List sonDetailsDtoList, 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 (sonDetailsDtoList != null && sonDetailsDtoList.size() > 0) { + List tocofsReturngoodsDetailedEntityArrayList = new ArrayList<>(); + for (int i = 0; i < sonDetailsDtoList.size(); i++) { + GoodsRertunSonDetailsDto goodsRertunSonDetailsDto = sonDetailsDtoList.get(i); + + TocofsReturngoodsDetailedEntity tocofsReturngoodsDetailedEntity = new TocofsReturngoodsDetailedEntity(); + tocofsReturngoodsDetailedEntity.setId(goodsRertunSonDetailsDto.getId()); + tocofsReturngoodsDetailedEntity.setDef13(getNewDateStr()); + tocofsReturngoodsDetailedEntity.setDef14(finalNewTransmitInfo); + tocofsReturngoodsDetailedEntity.setDef15(newstate); + + tocofsReturngoodsDetailedEntity.setDef7(goodsRertunSonDetailsDto.getCalculateAccountsReceivable()); + tocofsReturngoodsDetailedEntity.setDef8(goodsRertunSonDetailsDto.getCalculationFormula()); + tocofsReturngoodsDetailedEntity.setDef9(goodsRertunSonDetailsDto.getPlatformDiscounts()); + tocofsReturngoodsDetailedEntity.setDef10(goodsRertunSonDetailsDto.getPayDiscounts()); + tocofsReturngoodsDetailedEntity.setDef11(goodsRertunSonDetailsDto.getExpertDiscounts()); + tocofsReturngoodsDetailedEntity.setDef12(goodsRertunSonDetailsDto.getMerchantDiscounts()); + tocofsReturngoodsDetailedEntity.setDef24(storageTimeStamp); + if (successY.equals(newstate)) { + tocofsReturngoodsDetailedEntity.setDef16(newsystemnumber); + tocofsReturngoodsDetailedEntity.setDef17(newsystemprimary); + } + tocofsReturngoodsDetailedEntityArrayList.add(tocofsReturngoodsDetailedEntity); + } + + //以50行为一个批次,推送到Mysql + if (tocofsReturngoodsDetailedEntityArrayList.size() > 0) { + List> splitListByCount = SplitListByCountUtil.splitListByCount(tocofsReturngoodsDetailedEntityArrayList, 200); + for (int i = 0; i < splitListByCount.size(); i++) { + List tocofsReturngoodsDetailedEntities = splitListByCount.get(i); + iTocofsReturngoodsDetailedDao.entityInsertOrUpdateBatchByTocRerturnTranBlue(tocofsReturngoodsDetailedEntities); + } + } + } + } catch (Exception e) { + logger.error("TOC确认收入同步日志,抛出异常", e); + } + } + }); + thread.start(); + try { + thread.join(); + } catch (Exception e) { + logger.error("updateSuccessOrFail1方法现场抛出异常", e); + } + } + /** * 筛选出未推送、或者失败的数据行,过滤库存同步业务 * @@ -2677,9 +2901,13 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { if (obj.getNewstate4() == null) { obj.setNewstate4(""); } + if (obj.getDef15() == null) { + obj.setDef15(""); + } return obj; }).collect(Collectors.toList()); Map no2NameMap2 = collect.stream().collect(Collectors.toMap(TocofsReturngoodsDetailedEntity::getId, TocofsReturngoodsDetailedEntity::getNewstate4)); + Map no2NameMap3 = collect.stream().collect(Collectors.toMap(TocofsReturngoodsDetailedEntity::getId, TocofsReturngoodsDetailedEntity::getDef15)); //字段Y(成功)或者为H(待处理)可以视为成功,完成了小段业务闭环的数据行 String succeseeY = "Y"; @@ -2692,8 +2920,11 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { List targetDetails = new ArrayList<>(); for (int j = 0; j < details.size(); j++) { StockinOrderSearchResponse.StockinOrder.StockinB stockinB = details.get(j); + + Boolean isSuccess = false; String newstate = null; + String newstate2 = null; // for (int k = 0; k < tocofsReturngoodsDetailedEntityList.size(); k++) { // TocofsReturngoodsDetailedEntity tocofsReturngoodsDetailedEntity = tocofsReturngoodsDetailedEntityList.get(k); // if (tocofsReturngoodsDetailedEntity.getId().equals(stockinB.getId())) { @@ -2703,13 +2934,30 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { // } // } // } - newstate = no2NameMap2.get(stockinB.getId()); - if (newstate != null && !"".equals(newstate) && (succeseeY.equals(newstate) || succeseeH.equals(newstate))) { - isSuccess = true; + + //这里不可能是1,退款业务只可能是2、3 + if ("2".equals(stockinB.getStorageTimeStamp())) { + //如果是2同时判断两个状态为Y,则过滤 + newstate = no2NameMap2.get(stockinB.getId()); + newstate2 = no2NameMap3.get(stockinB.getId()); + if (newstate != null && !"".equals(newstate) && (succeseeY.equals(newstate) || succeseeH.equals(newstate))) { + if (newstate2 != null && !"".equals(newstate2) && (succeseeY.equals(newstate2) || succeseeH.equals(newstate2))) { + isSuccess = true; + } + } + } else if ("3".equals(stockinB.getStorageTimeStamp())) { + //如果是3仅判断一个状态为Y + newstate = no2NameMap2.get(stockinB.getId()); + if (newstate != null && !"".equals(newstate) && (succeseeY.equals(newstate) || succeseeH.equals(newstate))) { + isSuccess = true; + } + } else { + Assert.state(false, "无法识别的StorageTimeStamp:{}", stockinB.getStorageTimeStamp()); } if (!isSuccess) { stockinB.setNewstate4(newstate); + stockinB.setDef15(newstate2); targetDetails.add(stockinB); } } @@ -3504,4 +3752,170 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity { private void filterReceivedQtyZero(List goodsRertunSonDetailsDtoList) { goodsRertunSonDetailsDtoList.removeIf(dto -> dto != null && ("0".equals(dto.getReceivedQty()) || dto.getReceivedQty() == null)); } + + /** + * 如果“售后入库单没有交易成功时间”,或者“退货入库时间早于交易成功时间”则保留,满足这两个条件保留,不符合则过滤 + * + * @author liuyang + */ + public List filtrationTransactionSuccessTime(List returnGoodHeaderDetailsDataDtoList1) { + List filteredList = null; + if (returnGoodHeaderDetailsDataDtoList1 != null && returnGoodHeaderDetailsDataDtoList1.size() > 0) { + filteredList = returnGoodHeaderDetailsDataDtoList1.stream().filter(stockinOrder -> { + StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader(); + //OFS销售订单,当时售后订单对应的销售订单如果不存在,则过滤 + com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto = header.getHeaderDetailsDto(); + if (headerDetailsDto == null) { + return false; + } + //1.OFS售后入库单对应的销售订单,交易成功时间为null + com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDto header1 = headerDetailsDto.getHeader(); + String tradeSuccessAt = header1.getTradeSuccessAt(); + if (tradeSuccessAt == null) { + return true; + } + //2.退货入库时间早于交易成功时间 + String closedAt = header.getClosedAt(); + SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); + + Date closedAtDate; + Date tradeSuccessAtDate; + try { + closedAtDate = sdf.parse(closedAt); + tradeSuccessAtDate = sdf.parse(tradeSuccessAt); + } catch (Exception e) { + throw new RuntimeException("字符串转日期失败 错误:" + e.getMessage()); + } + return (closedAtDate.before(tradeSuccessAtDate) || closedAtDate.equals(tradeSuccessAtDate)); + }).collect(Collectors.toList()); + } + return filteredList; + } + + + /** + * 判断时间早晚,生成1、2、3类型标记 + * + * @author liuyang + */ + public List markTimeInMorningEvening(List returnGoodHeaderDetailsDataDtoList1) { + List filteredList = null; + if (returnGoodHeaderDetailsDataDtoList1 != null && returnGoodHeaderDetailsDataDtoList1.size() > 0) { + for (int i = 0; i < returnGoodHeaderDetailsDataDtoList1.size(); i++) { + StockinOrderSearchResponse.StockinOrder stockinOrder = returnGoodHeaderDetailsDataDtoList1.get(i); + StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader(); + List details = stockinOrder.getDetails(); + com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto = header.getHeaderDetailsDto(); + com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDto header1 = headerDetailsDto.getHeader(); + + String closedAt = header.getClosedAt(); + String tradeSuccessAt = header1.getTradeSuccessAt(); + Assert.notNull(closedAt, "关单时间不能为空!"); + + //存在交易成功时间 + String storageTimeStamp = null; + if (tradeSuccessAt != null && !"".equals(tradeSuccessAt)) { + Date closedAtDate; + Date tradeSuccessAtDate; + SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); + try { + closedAtDate = sdf.parse(closedAt); + tradeSuccessAtDate = sdf.parse(tradeSuccessAt); + } catch (Exception e) { + throw new RuntimeException("字符串转日期失败 错误:" + e.getMessage()); + } + + //2.有交易成功时间,且退货入库时间早于交易完成时间(⚠️这里是正向的交易完成时间) + if ((closedAtDate.before(tradeSuccessAtDate) || closedAtDate.equals(tradeSuccessAtDate))) { + storageTimeStamp = "2"; + } else { + //3.有交易成功时间,且退货入库时间晚于交易成功时间 + storageTimeStamp = "3"; + } + } else { + storageTimeStamp = "1"; + } + header.setStorageTimeStamp(storageTimeStamp); + for (int j = 0; j < details.size(); j++) { + StockinOrderSearchResponse.StockinOrder.StockinB stockinB = details.get(j); + stockinB.setStorageTimeStamp(storageTimeStamp); + } + } + } + return filteredList; + } + + /** + * 改造红字销售订单为蓝字销售订单 + * + * @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/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 ffd9a100..2e325af9 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 @@ -14,7 +14,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -67,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-RE2025062600002819", "stock"); + soSaleReturnPluginInitializerToC.startImplementByCode("LETS-RE2025070200000500", "tran"); // soSaleReturnPluginInitializerToC.startImplementStockByTime("2025-01-31 00:00:00", "2025-01-31 23:59:59", "0"); @@ -105,5 +107,20 @@ public class SoSaleReturnPluginInitializerToCTest { // BdBusitypeEntity bdBusitypeEntity4 = queryBdBusitypeUtil.queryBdBusitype("TOC售后完成"); // System.out.println("TOC售后完成:" + bdBusitypeEntity4.getPkBusitype()); + + +// try { +// String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; +// SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); +// +// String closedAt = "2025-01-01 12:01:00"; +// String tradeSuccessAt = "2025-01-02 17:00:00"; +// Date closedAtDate = sdf.parse(closedAt); +// Date tradeSuccessAtDate = sdf.parse(tradeSuccessAt); +// +// System.out.println(closedAtDate.before(tradeSuccessAtDate)); +// } catch (Exception e) { +// e.printStackTrace(); +// } } } \ No newline at end of file diff --git a/buildpackage/src/test/java/com/hzya/frame/temButtom.java b/buildpackage/src/test/java/com/hzya/frame/temButtom.java index 56715658..56dae01b 100644 --- a/buildpackage/src/test/java/com/hzya/frame/temButtom.java +++ b/buildpackage/src/test/java/com/hzya/frame/temButtom.java @@ -167,7 +167,7 @@ public class temButtom { @Test public void test01() { - String a = AESUtil.encrypt("hzya1314"); + String a = AESUtil.encrypt("Aa123!"); System.out.println(a); String b = AESUtil.decrypt("62e4295b615a30dbf3b8ee96f41c820b"); System.out.println(b); diff --git a/service/src/main/java/com/hzya/frame/ttxofs/dto/stock/StockinOrderSearchResponse.java b/service/src/main/java/com/hzya/frame/ttxofs/dto/stock/StockinOrderSearchResponse.java index 3f1fd797..a0f16bce 100644 --- a/service/src/main/java/com/hzya/frame/ttxofs/dto/stock/StockinOrderSearchResponse.java +++ b/service/src/main/java/com/hzya/frame/ttxofs/dto/stock/StockinOrderSearchResponse.java @@ -80,6 +80,10 @@ public class StockinOrderSearchResponse extends ReturnMessageBasics { private String shipFromMobile; private String returnWaybillCode; private String returnCarrier; + //入库时间标记: + //1.情况2:有交易成功时间,且退货入库时间早于交易完成时间(⚠️这里是正向的交易完成时间) + //2.有交易成功时间,且退货入库时间晚于交易成功时间 + private String storageTimeStamp; } @Data @@ -129,6 +133,14 @@ public class StockinOrderSearchResponse extends ReturnMessageBasics { private String sourceOrderCode; private String sourceLineNum; + + //入库时间标记: + //1.情况2:有交易成功时间,且退货入库时间早于交易完成时间(⚠️这里是正向的交易完成时间) + //2.有交易成功时间,且退货入库时间晚于交易成功时间 + private String storageTimeStamp; + + + private String def15; } } }