diff --git a/service/src/main/java/com/hzya/frame/deletedata/DeleteU8cDataUtil.java b/service/src/main/java/com/hzya/frame/deletedata/DeleteU8cDataUtil.java index 898eb3a2..b10c166d 100644 --- a/service/src/main/java/com/hzya/frame/deletedata/DeleteU8cDataUtil.java +++ b/service/src/main/java/com/hzya/frame/deletedata/DeleteU8cDataUtil.java @@ -30,6 +30,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.stream.Collectors; @@ -60,39 +61,65 @@ public class DeleteU8cDataUtil { private static Integer MARK2 = 0; + CountDownLatch latch = new CountDownLatch(2); + @PostConstruct public void init() { deleteTargetU8cData(); } public void deleteTargetU8cData() { - Thread thread = new Thread(new Runnable() { + Thread thread000 = new Thread(new Runnable() { @Override public void run() { - synchronized (LOCK_OBJECT) { - if (MARK == 0) { - MARK = 1; - //删除销售出库单 - cancelSignatureSoSaleReadExcel20250528V2(); + Thread thread = new Thread(new Runnable() { + @Override + public void run() { + synchronized (LOCK_OBJECT) { + if (MARK == 0) { + MARK = 1; + //删除销售出库单 +// cancelSignatureSoSaleReadExcel20250528V2(); + //反审核销售订单 + cancelSignatureSoSaleReadExcel2505282140V2(); + } + } + latch.countDown(); } - } - } - }, "删除销售出库单 2025-05-29"); - thread.start(); + }, "反审核销售订单 2025-05-30"); + thread.start(); - Thread thread2 = new Thread(new Runnable() { - @Override - public void run() { - synchronized (LOCK_OBJECT2) { - if (MARK2 == 0) { - MARK2 = 1; - //删除销售发票 - abandonmentReviewSoSaleinvoice2505282107(); + Thread thread2 = new Thread(new Runnable() { + @Override + public void run() { + synchronized (LOCK_OBJECT2) { + if (MARK2 == 0) { + MARK2 = 1; + //删除销售发票 + abandonmentReviewSoSaleinvoice2505282107(); + } + } + latch.countDown(); } + }, "删除销售发票 2025-05-30"); + thread2.start(); + + try { + //等待两个线程都完成 + latch.await(); + //在两个线程都完成后执行反审核销售订单方法 +// cancelSignatureSoSaleReadExcel2505282140V2(); + //修复销售订单部门字段错误问题 + repairSoSaleDepartment(); + //销售订单审核 + salesOrderReviewV2(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new RuntimeException("等待线程完成时中断", e); } } - }, "删除销售发票 2025-05-29"); - thread2.start(); + }, "U8C单据逻辑处理"); + thread000.start(); } /** @@ -545,6 +572,8 @@ public class DeleteU8cDataUtil { } } + private Object lockObject = new Object(); + /** * 2024年8月8日 10:54:48 * 推送U8C销售订单方法 @@ -552,17 +581,19 @@ public class DeleteU8cDataUtil { * @author liuyang */ public void sendU8C(String url, String param, Integer number) throws Exception { - logger.info("入参:" + param); - long l = System.currentTimeMillis(); - String result = HttpRequest.post(url).header("usercode", "admin1").header("password", "f7fcde654e968541cc803c4b08c30abb").header("system", "lz1").header("trantype", "code").body(param)//表单内容 + synchronized (lockObject) { + logger.info("入参:" + param); + long l = System.currentTimeMillis(); + String result = HttpRequest.post(url).header("usercode", "admin1").header("password", "f7fcde654e968541cc803c4b08c30abb").header("system", "lz1").header("trantype", "code").body(param)//表单内容 // .timeout(900000000)//超时,毫秒,超时时间调整为1个小时 - .timeout(3600000).execute().body(); - long l1 = System.currentTimeMillis(); - long timeConsuming = l1 - l; - logger.info("\n回参:" + result + " \n执行耗时:" + timeConsuming + "\n条数:" + number + " 每单耗时:" + (timeConsuming / 1000 / number)); + .timeout(3600000).execute().body(); + long l1 = System.currentTimeMillis(); + long timeConsuming = l1 - l; + logger.info("\n回参:" + result + " \n执行耗时:" + timeConsuming + "\n条数:" + number + " 每单耗时:" + (timeConsuming / 1000 / number)); // JSONObject jsonObject = JSON.parseObject(result); // result = String.valueOf(jsonObject.get("attribute")); // System.out.println(result); + } } /** @@ -1116,7 +1147,7 @@ public class DeleteU8cDataUtil { List soSaleinvoiceEntities2 = deleteU8cDataUtilDao.queryIcGeneralHByCancelSignatureV2(deleteIcGeneralHVo2); Map> stringListMap2 = groupByDbilldatev2(soSaleinvoiceEntities2); if (stringListMap2.size() > 0) { - for (Map.Entry> entry : stringListMap.entrySet()) { + for (Map.Entry> entry : stringListMap2.entrySet()) { String key = entry.getKey(); List valueList = entry.getValue(); List vreceiptcodeList = valueList.stream().map(DeleteU8cDataUtilEntity::getVbillcode).collect(Collectors.toList()); @@ -1170,7 +1201,7 @@ public class DeleteU8cDataUtil { try { //确定销售订单范围、19648 List deleteU8cDataUtilEntities = deleteU8cDataUtilDao.cancelSignatureSoSaleReadExcel20250528V2(); - List> lists = SplitListByCountUtil.splitListByCount(deleteU8cDataUtilEntities, 100); + List> lists = SplitListByCountUtil.splitListByCount(deleteU8cDataUtilEntities, 500); if (lists.size() > 0) { for (int i = 0; i < lists.size(); i++) { List deleteU8cDataUtilEntities1 = lists.get(i); @@ -1266,16 +1297,15 @@ public class DeleteU8cDataUtil { } } - /** - * 销售订单取消签字+删除 + * 销售订单取消签字 */ public void cancelSignatureSoSaleReadExcel2505282140V2() { try { //确定销售订单范围、19648 List deleteU8cDataUtilEntities = deleteU8cDataUtilDao.cancelSignatureSoSaleReadExcel20250528V2(); if (deleteU8cDataUtilEntities.size() > 0) { - List> lists = SplitListByCountUtil.splitListByCount(deleteU8cDataUtilEntities, 100); + List> lists = SplitListByCountUtil.splitListByCount(deleteU8cDataUtilEntities, 500); for (int i = 0; i < lists.size(); i++) { List deleteU8cDataUtilEntities1 = lists.get(i); String concatenatedIds = deleteU8cDataUtilEntities1.stream().map(DeleteU8cDataUtilEntity::getCsaleid).map(csaleid -> "'" + csaleid + "'").collect(Collectors.joining(",")); @@ -1370,6 +1400,12 @@ public class DeleteU8cDataUtil { deleteU8cDataUtilDao.updateCdeptid(updateSoSaleCdeptId); } } + + List deleteU8cDataUtilEntities2 = deleteU8cDataUtilDao.cancelSignatureSoSaleReadExcel20250528V2(); + if (deleteU8cDataUtilEntities2 != null && deleteU8cDataUtilEntities2.size() > 0) { + //还存在部门字段错误的数据行,重新执行修复,确保目标数据被完全修复! + repairSoSaleDepartment(); + } } catch (Exception e) { e.printStackTrace(); } @@ -1381,7 +1417,8 @@ public class DeleteU8cDataUtil { public void salesOrderReviewV2() { try { //确定销售订单范围、19648 - List deleteU8cDataUtilEntities = deleteU8cDataUtilDao.cancelSignatureSoSaleReadExcel20250528V2(); + //注意⚠️这里只能审核已经修复完毕的销售订单!并且处理自由状态 + List deleteU8cDataUtilEntities = deleteU8cDataUtilDao.cancelSignatureSoSaleReadExcel20250528V3(); if (deleteU8cDataUtilEntities.size() > 0) { List> lists = SplitListByCountUtil.splitListByCount(deleteU8cDataUtilEntities, 100); for (int i = 0; i < lists.size(); i++) { @@ -1391,7 +1428,7 @@ public class DeleteU8cDataUtil { DeleteSoSaleVo deleteSoSaleVo = new DeleteSoSaleVo(); deleteSoSaleVo.setDataSourceCode("lets_u8c"); deleteSoSaleVo.setCsaleids(concatenatedIds); - deleteSoSaleVo.setFstatus("1"); + deleteSoSaleVo.setFstatus("1");//自由状态 List deleteU8cDataUtilEntities2 = deleteU8cDataUtilDao.querySoSaleByDeletev2(deleteSoSaleVo); Map> deleteU8cDataUtilEntitiesMap = groupByDbilldatev2(deleteU8cDataUtilEntities2); if (deleteU8cDataUtilEntitiesMap.size() > 0) { @@ -1422,10 +1459,11 @@ public class DeleteU8cDataUtil { } } + //再次确认是否存在已经修复完毕,但未审核的销售订单 List deleteU8cDataUtilEntities22All = new ArrayList<>(); - List deleteU8cDataUtilEntities2 = deleteU8cDataUtilDao.cancelSignatureSoSaleReadExcel20250528V2(); + List deleteU8cDataUtilEntities2 = deleteU8cDataUtilDao.cancelSignatureSoSaleReadExcel20250528V3(); if (deleteU8cDataUtilEntities2 != null) { - List> lists = SplitListByCountUtil.splitListByCount(deleteU8cDataUtilEntities, 999); + List> lists = SplitListByCountUtil.splitListByCount(deleteU8cDataUtilEntities2, 999); for (int i = 0; i < lists.size(); i++) { List deleteU8cDataUtilEntities1 = lists.get(i); String concatenatedIds = deleteU8cDataUtilEntities1.stream().map(DeleteU8cDataUtilEntity::getCsaleid).map(csaleid -> "'" + csaleid + "'").collect(Collectors.joining(",")); diff --git a/service/src/main/java/com/hzya/frame/deletedata/dao/DeleteU8cDataUtilDao.java b/service/src/main/java/com/hzya/frame/deletedata/dao/DeleteU8cDataUtilDao.java index c16d97d3..012e9fac 100644 --- a/service/src/main/java/com/hzya/frame/deletedata/dao/DeleteU8cDataUtilDao.java +++ b/service/src/main/java/com/hzya/frame/deletedata/dao/DeleteU8cDataUtilDao.java @@ -121,4 +121,11 @@ public interface DeleteU8cDataUtilDao extends IBaseDao abandonmentAccountsReceivableDocV2(DeleteSoSaleVo deleteSoSaleVo) throws Exception; + + /** + * 查询已经修复完毕的销售订单 + * + * @author liuyang + */ + List cancelSignatureSoSaleReadExcel20250528V3() throws Exception; } \ No newline at end of file diff --git a/service/src/main/java/com/hzya/frame/deletedata/dao/impl/DeleteU8cDataUtilDaoImpl.java b/service/src/main/java/com/hzya/frame/deletedata/dao/impl/DeleteU8cDataUtilDaoImpl.java index 4141d0af..1cede6a9 100644 --- a/service/src/main/java/com/hzya/frame/deletedata/dao/impl/DeleteU8cDataUtilDaoImpl.java +++ b/service/src/main/java/com/hzya/frame/deletedata/dao/impl/DeleteU8cDataUtilDaoImpl.java @@ -108,5 +108,9 @@ public class DeleteU8cDataUtilDaoImpl extends MybatisGenericDao abandonmentAccountsReceivableDocV2(DeleteSoSaleVo deleteSoSaleVo) throws Exception { return (List) selectList("com.hzya.frame.deletedata.dao.impl.DeleteU8cDataUtilDaoImpl.abandonmentAccountsReceivableDocV2", deleteSoSaleVo); } -} + @Override + public List cancelSignatureSoSaleReadExcel20250528V3() throws Exception { + return query("com.hzya.frame.deletedata.dao.impl.DeleteU8cDataUtilDaoImpl.cancelSignatureSoSaleReadExcel20250528V3", new DeleteU8cDataUtilEntity()); + } +} \ No newline at end of file diff --git a/service/src/main/java/com/hzya/frame/deletedata/entity/DeleteU8cDataUtilEntity.xml b/service/src/main/java/com/hzya/frame/deletedata/entity/DeleteU8cDataUtilEntity.xml index 36f72e38..a13de414 100644 --- a/service/src/main/java/com/hzya/frame/deletedata/entity/DeleteU8cDataUtilEntity.xml +++ b/service/src/main/java/com/hzya/frame/deletedata/entity/DeleteU8cDataUtilEntity.xml @@ -431,5 +431,51 @@ + + +