Compare commits

..

3 Commits

Author SHA1 Message Date
liuy a8e0d79bc4 fix(sales): 修复红字销售订单和发票推送逻辑
- 在 SoSaleOutPluginInitializerToB 和 SoSaleReturnPluginInitializerToB 中增加 SKU 编码空格处理
- 在 ProxyPurchaseWarehousWarehouse 和 SoSaleReturnPluginInitializerToB 中增加实收/实退数量为 0 时的过滤逻辑
- 优化红字销售订单和发票的推送逻辑,避免重复推送
- 调整测试用例执行方式
2025-05-22 16:38:38 +08:00
liuy 1e18edd0a4 refactor(buildpackage): 优化代码结构和日志记录
- 在 ConsignmachiningCinfurmIn 和 ConsignmachiningInReturn 中添加了对关键字段的验证- 在 SoSaleOutPluginInitializerToC 中添加了日志记录和调试信息
- 优化了测试用例的执行逻辑
- 删除了不必要的注释和调试代码
2025-05-22 16:30:08 +08:00
liuy 2270112c44 refactor(service): 注释掉不必要的代码并更新文件路径
- 注释掉了 deleteData 方法中不必要的调用 cancelSignatureSoSaleReadExcelV2
- 更新了 cancelSignatureSoSaleReadExcelV2 方法中的文件路径
- 注释掉了该方法中不再使用的线程休眠和递归调用代码
2025-05-22 16:30:08 +08:00
15 changed files with 131 additions and 69 deletions

View File

@ -32,6 +32,7 @@
,shortname
,ts
</sql>
<!-- 查询 采用==查询 -->
<select id="entity_list_base" resultMap="get-BdDefdocEntity-result" parameterType = "com.hzya.frame.plugin.lets.entity.BdDefdocEntity">
select

View File

@ -178,6 +178,7 @@
and sts='Y'
</trim>
</update>
<!--通过主键删除-->
<delete id="entity_delete">
delete

View File

@ -510,6 +510,9 @@ public class ConsignmachiningCinfurmIn extends PluginBaseEntity {
ConsignmachiningInBodyDto consignmachiningInBodyDto = new ConsignmachiningInBodyDto();
consignmachiningInBodyDto.setCinventoryid(bdInvmandocEntity.getPkInvmandoc());//存货主键
// if ("40756".equals(new BigDecimal(receivedQty).stripTrailingZeros().toPlainString())) {
// System.out.println("111");
// }
consignmachiningInBodyDto.setNinnum(new BigDecimal(receivedQty).stripTrailingZeros().toPlainString());//实收数量
consignmachiningInBodyDto.setNprice(noriginalcurprice.stripTrailingZeros().toPlainString());//单价含税单价
consignmachiningInBodyDto.setCsourcetype("61");//来源单据类型
@ -531,6 +534,20 @@ public class ConsignmachiningCinfurmIn extends PluginBaseEntity {
consignmachiningInBodyDtoArrayList.add(consignmachiningInBodyDto);
}
//加个小验证,如果CfirstbillbidCfirstbillhidCfirsttype其中之一没有传则抛出异常
for (int j = 0; j < consignmachiningInBodyDtoArrayList.size(); j++) {
ConsignmachiningInBodyDto consignmachiningInBodyDto = consignmachiningInBodyDtoArrayList.get(j);
if (consignmachiningInBodyDto.getCfirstbillbid() == null || "".equals(consignmachiningInBodyDto.getCfirstbillbid())) {
Assert.state(false, "cfirstbillbid不能为空");
}
if (consignmachiningInBodyDto.getCfirstbillhid() == null || "".equals(consignmachiningInBodyDto.getCfirstbillhid())) {
Assert.state(false, "cfirstbillhid不能为空");
}
if (consignmachiningInBodyDto.getCfirsttype() == null || "".equals(consignmachiningInBodyDto.getCfirsttype())) {
Assert.state(false, "cfirsttype不能为空");
}
}
List<ConsignmachiningInHeadBodyDto> consignmachiningInHeadBodyDtoArrayList = new ArrayList<>();
ConsignmachiningInHeadBodyDto consignmachiningInHeadBodyDto = new ConsignmachiningInHeadBodyDto();
consignmachiningInHeadBodyDto.setParentvo(poOrderParentDto);
@ -542,7 +559,10 @@ public class ConsignmachiningCinfurmIn extends PluginBaseEntity {
//2024年8月26日 14:41:46 委外入库核销方式传不了已经提交总部2024年8月30日 14:05:25 已经解决和妮姐确认不用填写
//2024年8月26日 14:42:19 无法超委外订单数量入库已经提交给总部
//2024年9月3日 18:28:24 退货不会出现超订单出库的情况
IcGeneralHResultDto icGeneralHResultDto = sendU8cConsignmachiningIn(JSON.toJSONString(stringStringMap));
//2025-05-15 15:51:04 记录日志信息
String interfaceInputParameters = JSON.toJSONString(stringStringMap);
logger.info("O采购入库确认单(委外加工类型)生成U8C委外入库单(关联原单) 接口入参:{}", interfaceInputParameters);
IcGeneralHResultDto icGeneralHResultDto = sendU8cConsignmachiningIn(interfaceInputParameters);
String cgeneralhid = null;
String vbillcode = null;

View File

@ -520,6 +520,20 @@ public class ConsignmachiningInReturn extends PluginBaseEntity {
consignmachiningInBodyDtoArrayList.add(consignmachiningInBodyDto);
}
//加个小验证,如果CfirstbillbidCfirstbillhidCfirsttype其中之一没有传则抛出异常
for (int j = 0; j < consignmachiningInBodyDtoArrayList.size(); j++) {
ConsignmachiningInBodyDto consignmachiningInBodyDto = consignmachiningInBodyDtoArrayList.get(j);
if (consignmachiningInBodyDto.getCfirstbillbid() == null || "".equals(consignmachiningInBodyDto.getCfirstbillbid())) {
Assert.state(false, "cfirstbillbid不能为空");
}
if (consignmachiningInBodyDto.getCfirstbillhid() == null || "".equals(consignmachiningInBodyDto.getCfirstbillhid())) {
Assert.state(false, "cfirstbillhid不能为空");
}
if (consignmachiningInBodyDto.getCfirsttype() == null || "".equals(consignmachiningInBodyDto.getCfirsttype())) {
Assert.state(false, "cfirsttype不能为空");
}
}
List<ConsignmachiningInHeadBodyDto> consignmachiningInHeadBodyDtoArrayList = new ArrayList<>();
ConsignmachiningInHeadBodyDto consignmachiningInHeadBodyDto = new ConsignmachiningInHeadBodyDto();
consignmachiningInHeadBodyDto.setParentvo(poOrderParentDto);
@ -531,7 +545,9 @@ public class ConsignmachiningInReturn extends PluginBaseEntity {
//2024年8月26日 14:41:46 委外入库核销方式传不了已经提交总部2024年8月30日 14:05:25 已经解决和妮姐确认不用填写
//2024年8月26日 14:42:19 无法超委外订单数量入库已经提交给总部
//2024年9月3日 18:28:24 退货不会出现超订单出库的情况
IcGeneralHResultDto icGeneralHResultDto = sendU8cConsignmachiningIn(JSON.toJSONString(stringStringMap));
String interfaceInputParameters = JSON.toJSONString(stringStringMap);
logger.info("OFS采退出库单生成U8C红字委外入库单(关联原委外订单) 接口入参:{}", interfaceInputParameters);
IcGeneralHResultDto icGeneralHResultDto = sendU8cConsignmachiningIn(interfaceInputParameters);
String cgeneralhid = null;
String vbillcode = null;

View File

@ -1376,7 +1376,7 @@ public class SoSaleOutPluginInitializerToB extends PluginBaseEntity {
Assert.notNull(pkCorp, "发货公司主键不能为空");
BdInvmandocEntity bdInvmandocEntity = new BdInvmandocEntity();
bdInvmandocEntity.setInvcode(detailsDto.getSkuCode());
bdInvmandocEntity.setInvcode(detailsDto.getSkuCode().trim());
bdInvmandocEntity.setPkCorp(pkCorp);
List<BdInvmandocEntity> bdInvmandocEntity2 = iBdInvmandocDao.queryBdInvmandocByInvcodeList(bdInvmandocEntity);
if (bdInvmandocEntity2.size() == 0) {

View File

@ -2180,9 +2180,13 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
String sceneType = "tran";
List<SonDetailsDto> sonDetailsDtoList = queryBasicArchivesStock(headerDetailsDtos, sceneType);
//分组汇总红蓝
Map<String, List<SonDetailsDto>> summaryDimensionMap = groupSummaryStock(sonDetailsDtoList, null);
// String dimension = "1001&tm-intoyou&intoyou-tmdg&6973391732529&SALES&002";
String dimension = null;
Map<String, List<SonDetailsDto>> summaryDimensionMap = groupSummaryStock(sonDetailsDtoList, dimension);
//分组汇总
// Map<String, List<SonDetailsDto>> summaryDimensionMap2 = groupSummaryStock(sonDetailsDtoList, "2");
// String names = summaryDimensionMap.get(dimension).stream().map(SonDetailsDto::getId).collect(Collectors.joining(","));
// System.out.println(names);
//TOC业务流程-TOC冲回发出商品
BdBusitypeEntity bdBusitypeEntity = u8cOperationFlowV2();

View File

@ -835,6 +835,11 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
// BdInvclEntity bdInvclEntity = queryU8CEntityUtil.queryBdInvbasdocByBdInvcl(bdInvbasdocEntity);
// BdCostsubjEntity bdCostsubjEntity = queryU8CEntityUtil.queryBdCostsubj(bdInvclEntity);
//如果实退数量=0则过滤掉不增加到明细列表中
if ("0".equals(new BigDecimal(stockinB.getReceivedQty()).stripTrailingZeros().toPlainString())) {
continue;
}
// 如果是海外的店铺则税率为零
String exportVaue = ExportConstant.exportConstant.get(header.getStoreCode());
if (exportVaue != null) {
@ -912,6 +917,7 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
saleorderRequestDtoList.add(saleorderRequestDto);
synchronized (PUSH_LOCK1) {
if (saleorderRequestChildrenDtoList.size() > 0) {
Boolean aBoolean = checkTobOrder(header.getId(), header.getCode());
if (!aBoolean) {
logger.error("经过SQL查询判断在U8C(红字)销售订单不存在OFS入库单号为{} OFS入库主键为{}的单据将调用U8C接口执行推送", header.getCode(), header.getId());
@ -935,6 +941,7 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
logger.error("经过SQL查询判断在U8C(红字)销售订单存在OFS入库单号为{} OFS入库主键为{}的单据为了避免造成单据重复不推送到U8C", header.getCode(), header.getId());
}
}
}
} catch (Exception e) {
logger.error("TOB售后收入推送U8C失败", e);
//记录失败
@ -1643,7 +1650,7 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
Assert.notNull(pkCorp, "发货公司主键不能为空");
BdInvmandocEntity bdInvmandocEntity = new BdInvmandocEntity();
bdInvmandocEntity.setInvcode(detailsDto.getSkuCode());
bdInvmandocEntity.setInvcode(detailsDto.getSkuCode().trim());
bdInvmandocEntity.setPkCorp(pkCorp);
List<BdInvmandocEntity> bdInvmandocEntity2 = iBdInvmandocDao.queryBdInvmandocByInvcodeList(bdInvmandocEntity);
if (bdInvmandocEntity2.size() == 0) {
@ -1924,6 +1931,11 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
// BdInvclEntity bdInvclEntity = queryU8CEntityUtil.queryBdInvbasdocByBdInvcl(bdInvbasdocEntity);
// BdCostsubjEntity bdCostsubjEntity = queryU8CEntityUtil.queryBdCostsubj(bdInvclEntity);
//如果实入数量为0则过滤掉
if ("0".equals(new BigDecimal(stockinB.getReceivedQty()).stripTrailingZeros().toPlainString())) {
continue;
}
//计算公式
StringBuffer calculationFormula = new StringBuffer();
// calculationFormula.append("O实退金额");
@ -1980,6 +1992,7 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
//推送到U8C生成销售发票
synchronized (PUSH_LOCK2) {
if (salesInvoiceBodyDtoList.size() > 0) {
Boolean aBoolean = checkTobSalesInvoice(header.getId(), header.getCode());
if (!aBoolean) {
logger.error("经过SQL查询判断在U8C红字销售发票中不存在OFS入库单号为{} OFS入库主键为{}的单据将调用U8C接口执行推送", header.getCode(), header.getId());
@ -2001,6 +2014,7 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
logger.error("经过SQL查询判断在U8C红字销售发票中已经存在OFS入库单号为{} OFS入库主键为{}的单据为了避免造成单据重复不推送到U8C", header.getCode(), header.getId());
}
}
}
} catch (Exception e) {
logger.error("TOB售后到账完成推送U8C抛出异常", e);
// 记录失败

View File

@ -30,14 +30,14 @@ public class ConsignmachiningCinfurmInTest {
// consignmachiningCinfurmIn.startImplementByTime("2024-01-02 00:00:00", "2024-01-02 23:59:59");
// String code = "LETS-RE2024111400002771-confirm";
// String code = "LETS-RE2024112900000538-confirm";
// consignmachiningCinfurmIn.startImplementByCode(code);
String code = "LETS-RE2025040700001976-confirm";
consignmachiningCinfurmIn.startImplementByCode(code);
if ("HZYX,YD,NMNS,YX,KS,YNS,HJ".contains("121212")) {
System.out.println("存在");
} else {
System.out.println("不存在");
}
// if ("HZYX,YD,NMNS,YX,KS,YNS,HJ".contains("121212")) {
// System.out.println("存在");
// } else {
// System.out.println("不存在");
// }
} catch (Exception e) {
e.printStackTrace();
}

View File

@ -99,7 +99,7 @@ class SoSaleOutPluginInitializerToCTest {
// String s = "LETS-SH2025032200027982";
// soSaleOutPluginInitializerToC.startImplementStockByCode(s, "stock");
// soSaleOutPluginInitializerToC.startImplementStockByTime("2024-09-24 16:35:43","2024-09-24 16:35:45");
soSaleOutPluginInitializerToC.startImplementTranByTime("2025-05-08 00:00:00", "2025-05-08 23:59:59", "2");
// List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> headerDetailsDtoArrayList = new ArrayList<>();
// QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
@ -111,7 +111,7 @@ class SoSaleOutPluginInitializerToCTest {
// soSaleOutPluginInitializerToC.startImplementStockByCode(s, "tran");
try {
soSaleOutPluginInitializerToC.startImplementStockByTime("2025-02-18 11:54:18", "2025-02-18 11:54:18", "0");
// soSaleOutPluginInitializerToC.startImplementStockByTime("2025-02-18 11:54:18", "2025-02-18 11:54:18", "0");
// String code = "LETS-SH2024052100015139";
// soSaleOutPluginInitializerToC.startImplementStockByCode(code, "tran");

View File

@ -37,7 +37,9 @@ public class SoSaleReturnPluginInitializerToBTest {
// soSaleReturnPluginInitializerToB.startImplementByCode("LETS-RE2024112200000301", "tran");
soSaleReturnPluginInitializerToB.startImplementByStockTime("2024-11-29 00:00:00", "2024-11-30 23:59:59");
// soSaleReturnPluginInitializerToB.startImplementByStockTime("2024-11-29 00:00:00", "2024-11-30 23:59:59");
soSaleReturnPluginInitializerToB.startImplementByCode("LETS-RE2025042200001200", "stock");
} catch (Exception e) {
e.printStackTrace();
}

View File

@ -43,8 +43,8 @@ public class SoSaleReturnPluginInitializerToCTest {
// soSaleReturnPluginInitializerToC.startImplement(null, null);
try {
//带优惠金额场景
String code = "LETS-RE2025042100000200";
soSaleReturnPluginInitializerToC.startImplementByCode(code, "stock");
// String code = "LETS-RE2025042100000200";
// soSaleReturnPluginInitializerToC.startImplementByCode(code, "stock");
//无优惠金额场景
// String code = "LETS-RE2025031900000002";
@ -65,7 +65,7 @@ public class SoSaleReturnPluginInitializerToCTest {
// soSaleReturnPluginInitializerToC.startImplementStockByTime(startAndEndVos.get(0).getStart_time(), startAndEndVos.get(0).getEnd_time());
try {
// soSaleReturnPluginInitializerToC.startImplementByTradeTime("2024-12-23 23:05:34", "2024-12-23 23:05:34", "2");
soSaleReturnPluginInitializerToC.startImplementByTradeTime("2025-04-28 00:00:00", "2025-04-28 23:59:59", "2");
// soSaleReturnPluginInitializerToC.startImplementByCode("LETS-RE2025010900002384", "tran");

View File

@ -57,11 +57,13 @@ public class DeleteU8cDataUtilTest {
// deleteU8cDataUtil.cancelSignatureIcGeneralHV2("0001A110000000001TH6");
//删除销售出库单 *
// deleteU8cDataUtil.deleteIcGeneralH();
deleteU8cDataUtil.deleteIcGeneralHV2();
// deleteU8cDataUtil.deleteIcGeneralHV2();
//取消签字销售订单 *
// deleteU8cDataUtil.cancelSignatureSoSale();
// deleteU8cDataUtil.cancelSignatureSoSaleV2();
deleteU8cDataUtil.cancelSignatureSoSaleReadExcel();
} catch (Exception e) {
e.printStackTrace();
}

View File

@ -58,6 +58,8 @@ public class DeleteU8cDataUtilTest2 {
//取消签字销售订单
// deleteU8cDataUtil.cancelSignatureSoSale();
//批量取消签字并删除销售出库单
deleteU8cDataUtil.cancelSignatureSoSaleReadExcelV2();
} catch (Exception e) {
e.printStackTrace();
}

View File

@ -79,7 +79,7 @@ public class DeleteU8cDataUtil {
//销售出库单签字 已测试
// saleOutSign("'0001A110000000001TH6', '0001A1100000000VKCOK'");
cancelSignatureSoSaleReadExcelV2();
// cancelSignatureSoSaleReadExcelV2();
}
}
}
@ -897,8 +897,8 @@ public class DeleteU8cDataUtil {
*/
public void cancelSignatureSoSaleReadExcelV2() {
try {
FileInputStream file = new FileInputStream(new File("D:\\server\\软件包\\U8C-需要删除的单据-带主键.xlsx"));
// FileInputStream file = new FileInputStream(new File("/Users/liuyang/Desktop/U8C-需要删除的单据-带主键.xlsx"));
// FileInputStream file = new FileInputStream(new File("D:\\server\\软件包\\U8C-需要删除的单据-带主键.xlsx"));
FileInputStream file = new FileInputStream(new File("/Users/liuyang/Desktop/U8C-需要删除的单据-带主键.xlsx"));
Workbook workbook = new XSSFWorkbook(file);
List<String[]> data = new ArrayList<>();
@ -1030,13 +1030,13 @@ public class DeleteU8cDataUtil {
e.printStackTrace();
}
try {
//每10秒重新删除一次
Thread.sleep(10000);
cancelSignatureSoSaleReadExcelV2();
} catch (Exception e) {
e.printStackTrace();
}
// try {
// //每10秒重新删除一次
// Thread.sleep(10000);
// cancelSignatureSoSaleReadExcelV2();
// } catch (Exception e) {
// e.printStackTrace();
// }
}
public Map<String, List<DeleteU8cDataUtilEntity>> groupByDbilldatev2(List<DeleteU8cDataUtilEntity> soSaleinvoiceEntities) {