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 f82c812b..486dc742 100644 --- a/service/src/main/java/com/hzya/frame/deletedata/DeleteU8cDataUtil.java +++ b/service/src/main/java/com/hzya/frame/deletedata/DeleteU8cDataUtil.java @@ -17,10 +17,17 @@ import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDetailsDto; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; //import org.junit.jupiter.api.Test; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.ExecutorService; @@ -71,10 +78,12 @@ public class DeleteU8cDataUtil { // cancelSignatureIcGeneralHV2("'0001A110000000001TH6', '0001A1100000000VKCOK'"); //销售出库单签字 已测试 // saleOutSign("'0001A110000000001TH6', '0001A1100000000VKCOK'"); + + cancelSignatureSoSaleReadExcelV2(); } } } - }, "U8C销售订单取消签字 2025-03-04"); + }, "删除销售订单 2025-05-07"); thread.start(); } @@ -231,7 +240,7 @@ public class DeleteU8cDataUtil { queryinfo.setCorp(deleteU8cDataUtilEntity.getUnitcode()); queryinfo.setDate_begin(deleteU8cDataUtilEntity.getDbilldate()); queryinfo.setDate_end(deleteU8cDataUtilEntity.getDbilldate()); - queryinfo.setBillcode(deleteU8cDataUtilEntity.getVbillcode()); +// queryinfo.setBillcode(deleteU8cDataUtilEntity.getVbillcode()); JsonRootBean jsonRootBean = new JsonRootBean(); jsonRootBean.setDeleteInfo(deleteinfo); @@ -319,7 +328,7 @@ public class DeleteU8cDataUtil { queryinfo.setCorp(deleteU8cDataUtilEntity.getUnitcode()); queryinfo.setDate_begin(deleteU8cDataUtilEntity.getDbilldate()); queryinfo.setDate_end(deleteU8cDataUtilEntity.getDbilldate()); - queryinfo.setBillcode(deleteU8cDataUtilEntity.getVbillcode()); +// queryinfo.setBillcode(deleteU8cDataUtilEntity.getVbillcode()); JsonRootBean jsonRootBean = new JsonRootBean(); jsonRootBean.setUnsignInfo(deleteinfo); @@ -459,7 +468,7 @@ public class DeleteU8cDataUtil { queryinfo.setCorp(deleteU8cDataUtilEntity.getUnitcode()); queryinfo.setDate_begin(deleteU8cDataUtilEntity.getDbilldate()); queryinfo.setDate_end(deleteU8cDataUtilEntity.getDbilldate()); - queryinfo.setCode(deleteU8cDataUtilEntity.getVreceiptcode()); +// queryinfo.setCode(deleteU8cDataUtilEntity.getVreceiptcode()); JsonRootBean jsonRootBean = new JsonRootBean(); jsonRootBean.setDeleteinfo(deleteinfo); @@ -750,4 +759,294 @@ public class DeleteU8cDataUtil { // 创建一个固定大小的线程池 // ExecutorService executor = Executors.newFixedThreadPool(MAX_THREADS); + + + /** + * 销售订单取消签字 + */ + public void cancelSignatureSoSaleReadExcel() { + try { + FileInputStream file = new FileInputStream(new File("/Users/liuyang/Desktop/U8C-需要删除的单据-带主键.xlsx")); + Workbook workbook = new XSSFWorkbook(file); + + List data = new ArrayList<>(); + + for (int i = 0; i < 5; i++) { + Sheet sheet = workbook.getSheetAt(i); + for (Row row : sheet) { + String bValue = ""; + String cValue = ""; + String dValue = ""; + if (row.getCell(1) != null) { + bValue = row.getCell(1).getStringCellValue(); + } + if (row.getCell(2) != null) { + cValue = row.getCell(2).getStringCellValue(); + } + if (row.getCell(3) != null) { + dValue = row.getCell(3).getStringCellValue(); + } + data.add(new String[]{bValue, cValue, dValue}); + } + } + + // Print the B and C column data + long saleoutNum = 0; + for (String[] rowData : data) { +// System.out.println("B: " + rowData[0] + ", C: " + rowData[1]); + + //**销售出库单** + try { + //查找销售订单对应的销售出库单 + DeleteIcGeneralHVo deleteIcGeneralHVo = new DeleteIcGeneralHVo(); + deleteIcGeneralHVo.setDataSourceCode("lets_u8c"); + deleteIcGeneralHVo.setCfirstbillhid(rowData[2]); + List soSaleinvoiceEntities = deleteU8cDataUtilDao.queryIcGeneralHByCancelSignatureV2(deleteIcGeneralHVo); +// logger.info("条数:{}", soSaleinvoiceEntities.size()); + if (soSaleinvoiceEntities != null && soSaleinvoiceEntities.size() > 0) { + for (int i = 0; i < soSaleinvoiceEntities.size(); i++) { + DeleteU8cDataUtilEntity deleteU8cDataUtilEntity = soSaleinvoiceEntities.get(i); + + //销售出库单取消签字 + Deleteinfo deleteinfo = new Deleteinfo(); + deleteinfo.setCoperator("tbadmin"); + + Queryinfo queryinfo = new Queryinfo(); + queryinfo.setCorp(deleteU8cDataUtilEntity.getUnitcode()); + queryinfo.setDate_begin(deleteU8cDataUtilEntity.getDbilldate()); + queryinfo.setDate_end(deleteU8cDataUtilEntity.getDbilldate()); +// queryinfo.setBillcode(deleteU8cDataUtilEntity.getVbillcode()); + + JsonRootBean jsonRootBean = new JsonRootBean(); + jsonRootBean.setUnsignInfo(deleteinfo); + jsonRootBean.setQueryInfo(queryinfo); + sendU8C("http://39.170.109.90:8088/u8cloud/api/ic/saleout/unsign", JSON.toJSONString(jsonRootBean), 1); + + //销售出库单删除 + Deleteinfo deleteinfo2 = new Deleteinfo(); + deleteinfo2.setCoperator("tbadmin"); + + Queryinfo queryinfo2 = new Queryinfo(); + queryinfo2.setCorp(deleteU8cDataUtilEntity.getUnitcode()); + queryinfo2.setDate_begin(deleteU8cDataUtilEntity.getDbilldate()); + queryinfo2.setDate_end(deleteU8cDataUtilEntity.getDbilldate()); +// queryinfo2.setBillcode(deleteU8cDataUtilEntity.getVbillcode()); + + JsonRootBean jsonRootBean2 = new JsonRootBean(); + jsonRootBean2.setDeleteInfo(deleteinfo2); + jsonRootBean2.setQueryInfo(queryinfo2); + sendU8C("http://39.170.109.90:8088/u8cloud/api/ic/saleout/delete", JSON.toJSONString(jsonRootBean2), 1); + + saleoutNum++; + System.out.println("处理的销售出库单数量:" + saleoutNum); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + //处理销售订单 + try { + //销售订单取消审核 + List stringList = new ArrayList<>(); + stringList.add(rowData[1]); + + JsonRootBeanCancelSignature jsonRootBeanCancelSignature = new JsonRootBeanCancelSignature(); + + QueryinfoCancelSignature queryinfoCancelSignature = new QueryinfoCancelSignature(); + queryinfoCancelSignature.setDate_begin("2025-04-28"); + queryinfoCancelSignature.setDate_end("2025-04-30"); + queryinfoCancelSignature.setCorp(rowData[0]); + queryinfoCancelSignature.setCode(stringList); + + ApproveinfoCancelSignature approveinfoCancelSignature = new ApproveinfoCancelSignature(); + approveinfoCancelSignature.setApprovid("tbadmin"); + + jsonRootBeanCancelSignature.setApproveinfo(approveinfoCancelSignature); + jsonRootBeanCancelSignature.setQueryinfo(queryinfoCancelSignature); + sendU8C("http://39.170.109.90:8088/u8cloud/api/so/saleorder/unapprove", JSON.toJSONString(jsonRootBeanCancelSignature), 1); + + //销售订单删除 + Deleteinfo deleteinfo = new Deleteinfo(); + deleteinfo.setCoperator("tbadmin"); + + Queryinfo queryinfo = new Queryinfo(); + queryinfo.setCorp(rowData[0]); + queryinfo.setDate_begin("2025-04-28"); + queryinfo.setDate_end("2025-04-30"); +// queryinfo.setCode(rowData[1]); + + JsonRootBean jsonRootBean = new JsonRootBean(); + jsonRootBean.setDeleteinfo(deleteinfo); + jsonRootBean.setQueryinfo(queryinfo); + sendU8C("http://39.170.109.90:8088/u8cloud/api/so/saleorder/delete", JSON.toJSONString(jsonRootBean), 1); + } catch (Exception e) { + e.printStackTrace(); + } + } + workbook.close(); + file.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /** + * 销售出库单、销售订单取消签字+删除 + */ + 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")); + Workbook workbook = new XSSFWorkbook(file); + + List data = new ArrayList<>(); + for (int i = 0; i < 5; i++) { + Sheet sheet = workbook.getSheetAt(i); + for (Row row : sheet) { + String bValue = ""; + String cValue = ""; + String dValue = ""; + if (row.getCell(1) != null) { + bValue = row.getCell(1).getStringCellValue(); + } + if (row.getCell(2) != null) { + cValue = row.getCell(2).getStringCellValue(); + } + if (row.getCell(3) != null) { + dValue = row.getCell(3).getStringCellValue(); + } + data.add(new String[]{bValue, cValue, dValue}); + } + } + + //按100行拆分 + List> lists = SplitListByCountUtil.splitListByCount(data, 100); + for (int i = 0; i < lists.size(); i++) { + List strings = lists.get(i); + //处理销售出库单 + String result = strings.stream().filter(arr -> arr.length > 2) // 确保有第三个元素(索引2) + .map(arr -> arr[2]).filter(Objects::nonNull).map(s -> "'" + s + "'") // 添加单引号包装 + .collect(Collectors.joining(",")); + //根据销售订单主键,查询对应的销售出库单 + DeleteIcGeneralHVo deleteIcGeneralHVo = new DeleteIcGeneralHVo(); + deleteIcGeneralHVo.setDataSourceCode("lets_u8c"); + deleteIcGeneralHVo.setCfirstbillhids(result); + List soSaleinvoiceEntities = deleteU8cDataUtilDao.queryIcGeneralHByCancelSignatureV2(deleteIcGeneralHVo); + Map> stringListMap = groupByDbilldatev2(soSaleinvoiceEntities); + + if (stringListMap.size() > 0) { + for (Map.Entry> entry : stringListMap.entrySet()) { + String key = entry.getKey(); + List valueList = entry.getValue(); + List vreceiptcodeList = valueList.stream().map(DeleteU8cDataUtilEntity::getVbillcode).collect(Collectors.toList()); + + String[] split = key.split("@@@@"); + + //批量销售出库单取消签字 + Deleteinfo deleteinfo = new Deleteinfo(); + deleteinfo.setCoperator("tbadmin"); + + Queryinfo queryinfo = new Queryinfo(); + queryinfo.setCorp(split[1]); + queryinfo.setDate_begin(split[0]); + queryinfo.setDate_end(split[0]); + queryinfo.setBillcode(vreceiptcodeList); + + JsonRootBean jsonRootBean = new JsonRootBean(); + jsonRootBean.setUnsignInfo(deleteinfo); + jsonRootBean.setQueryInfo(queryinfo); + sendU8C("http://39.170.109.90:8088/u8cloud/api/ic/saleout/unsign", JSON.toJSONString(jsonRootBean), vreceiptcodeList.size()); + + //批量销售出库单删除 + Deleteinfo deleteinfo2 = new Deleteinfo(); + deleteinfo2.setCoperator("tbadmin"); + + Queryinfo queryinfo2 = new Queryinfo(); + queryinfo2.setCorp(split[1]); + queryinfo2.setDate_begin(split[0]); + queryinfo2.setDate_end(split[0]); + queryinfo2.setBillcode(vreceiptcodeList); + + JsonRootBean jsonRootBean2 = new JsonRootBean(); + jsonRootBean2.setDeleteInfo(deleteinfo2); + jsonRootBean2.setQueryInfo(queryinfo2); + sendU8C("http://39.170.109.90:8088/u8cloud/api/ic/saleout/delete", JSON.toJSONString(jsonRootBean2), vreceiptcodeList.size()); + } + } + + //处理销售订单 + DeleteSoSaleVo deleteSoSaleVo = new DeleteSoSaleVo(); + deleteSoSaleVo.setDataSourceCode("lets_u8c"); + deleteSoSaleVo.setCsaleids(result); + List deleteU8cDataUtilEntities = deleteU8cDataUtilDao.querySoSaleByDeletev2(deleteSoSaleVo); + Map> deleteU8cDataUtilEntitiesMap = groupByDbilldatev2(deleteU8cDataUtilEntities); + + if (deleteU8cDataUtilEntitiesMap.size() > 0) { + for (Map.Entry> entry : deleteU8cDataUtilEntitiesMap.entrySet()) { + String key = entry.getKey(); + List valueList = entry.getValue(); + List vreceiptcodeList = valueList.stream().map(DeleteU8cDataUtilEntity::getVreceiptcode).collect(Collectors.toList()); + + String[] split = key.split("@@@@"); + + //批量销售订单取消审核 + JsonRootBeanCancelSignature jsonRootBeanCancelSignature = new JsonRootBeanCancelSignature(); + + QueryinfoCancelSignature queryinfoCancelSignature = new QueryinfoCancelSignature(); + queryinfoCancelSignature.setDate_begin(split[0]); + queryinfoCancelSignature.setDate_end(split[0]); + queryinfoCancelSignature.setCorp(split[1]); + queryinfoCancelSignature.setCode(vreceiptcodeList); + + ApproveinfoCancelSignature approveinfoCancelSignature = new ApproveinfoCancelSignature(); + approveinfoCancelSignature.setApprovid("tbadmin"); + + jsonRootBeanCancelSignature.setApproveinfo(approveinfoCancelSignature); + jsonRootBeanCancelSignature.setQueryinfo(queryinfoCancelSignature); + sendU8C("http://39.170.109.90:8088/u8cloud/api/so/saleorder/unapprove", JSON.toJSONString(jsonRootBeanCancelSignature), vreceiptcodeList.size()); + + //批量销售订单删除 + Deleteinfo deleteinfo = new Deleteinfo(); + deleteinfo.setCoperator("tbadmin"); + + Queryinfo queryinfo = new Queryinfo(); + queryinfo.setCorp(split[1]); + queryinfo.setDate_begin(split[0]); + queryinfo.setDate_end(split[0]); + queryinfo.setCode(vreceiptcodeList); + + JsonRootBean jsonRootBean = new JsonRootBean(); + jsonRootBean.setDeleteinfo(deleteinfo); + jsonRootBean.setQueryinfo(queryinfo); + sendU8C("http://39.170.109.90:8088/u8cloud/api/so/saleorder/delete", JSON.toJSONString(jsonRootBean), vreceiptcodeList.size()); + } + } + } + workbook.close(); + file.close(); + } catch (Exception e) { + e.printStackTrace(); + } + + try { + //每10秒重新删除一次 + Thread.sleep(10000); + cancelSignatureSoSaleReadExcelV2(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public Map> groupByDbilldatev2(List soSaleinvoiceEntities) { + Map> resultMap = new HashMap<>(); + for (DeleteU8cDataUtilEntity entity : soSaleinvoiceEntities) { + String dbilldate = entity.getDbilldate(); + String unitcode = entity.getUnitcode(); + // 如果 map 中不包含该日期,则创建一个新的列表 + resultMap.computeIfAbsent(dbilldate + "@@@@" + unitcode, k -> new ArrayList<>()).add(entity); + } + return resultMap; + } } 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 a705c924..5b80b6e7 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 @@ -37,6 +37,13 @@ public interface DeleteU8cDataUtilDao extends IBaseDao queryIcGeneralHByCancelSignature(DeleteIcGeneralHVo deleteIcGeneralHVo) throws Exception; + /** + * 查询需要取消签字的销售出库单 + * + * @author liuyang + */ + List queryIcGeneralHByCancelSignatureV2(DeleteIcGeneralHVo deleteIcGeneralHVo) throws Exception; + /** * 查询需要取消签字的销售出库单 * @@ -51,6 +58,13 @@ public interface DeleteU8cDataUtilDao extends IBaseDao querySoSaleByDelete(DeleteSoSaleVo deleteSoSaleVo) throws Exception; + /** + * 查询需要删除的销售订单 + * + * @author liuyang + */ + List querySoSaleByDeletev2(DeleteSoSaleVo deleteSoSaleVo) throws Exception; + /** * 弃审应收单 * 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 74206150..090cb134 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 @@ -38,6 +38,12 @@ public class DeleteU8cDataUtilDaoImpl extends MybatisGenericDao queryIcGeneralHByCancelSignatureV2(DeleteIcGeneralHVo deleteIcGeneralHVo) throws Exception { + return query("com.hzya.frame.deletedata.dao.impl.DeleteU8cDataUtilDaoImpl.queryIcGeneralHByCancelSignatureV2", deleteIcGeneralHVo); + } + @DS("lets_u8c") @Override public List queryIcGeneralHBySign(DeleteIcGeneralHVo deleteIcGeneralHVo) throws Exception { @@ -51,6 +57,12 @@ public class DeleteU8cDataUtilDaoImpl extends MybatisGenericDao querySoSaleByDeletev2(DeleteSoSaleVo deleteSoSaleVo) throws Exception { + return query("com.hzya.frame.deletedata.dao.impl.DeleteU8cDataUtilDaoImpl.querySoSaleByDeletev2", deleteSoSaleVo); + } + @DS("lets_u8c") @Override public List abandonmentAccountsReceivableDoc(DeleteSoSaleVo deleteSoSaleVo) throws Exception { 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 232fb464..59770a0e 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 @@ -80,6 +80,37 @@ AND dbilldate <= '2025-02-28' + + + + + +