Bpazy / blog

我的博客,欢迎关注和讨论
https://github.com/Bpazy/blog/issues
MIT License
41 stars 2 forks source link

采购dubbo接口反向依赖的接口排查 #276

Open Bpazy opened 1 year ago

Bpazy commented 1 year ago

范围

purchase <-> erp purchase <-> stock

排查结果

红色字体为导致反向依赖的接口。 黄色底为erp接口。 绿色底为stock接口。 灰色底为无需关注的接口。

Dubbo方法 (purchase对外所有接口) 备注 依赖的erp或stock方法 (数字序号为erp或stock方法,字母序号为该方法依赖的purchase方法)
PurchaseApi.addPurchase
fisheye搜索无调用
  1. BaseService.getBillNo(String, String, String)
  2. PartInfoService.getAllPartInfoList(PartInfoSo)
  3. PartInfoService.getViewPartInfo(PartInfoSo)
  4. PrintConfigService.getOpParamConfigByType(String, String)
  5. SupplierService.getSupplierById(String)
  6. StockPartInfoApi.addOrUpdatePartInfoSeat(List, String)
  7. StockPartInfoApi.queryStoragePartInfoListBatch(List)
  8. StorageApi.getStorageList(TbStorageSo) | | PurchaseApi.getSupplierInfoList | 库存使用:
  9. 新跨店调拨导入采购单,备注追加供应商接口 |
  10. SupplierService.getSupplierList(SupplierSo) | | PurchaseApi.quickPurchaseAndStockIn | 库存使用:
  11. 工单领料急采
  12. 调拨急采 |
  13. BaseOrgConfigService.getBaseOrgConfigByOrgId(BaseOrgConfigSo)
  14. BaseService.getBillNo(String, String, String)
  15. OtherPaymentService.addOtherPayment(TfOtherPayment, String)
  16. PartInfoService.editLastPurchasePriceByBatch(List)
  17. PartInfoService.getAllPartInfoList(PartInfoSo)
  18. PartInfoService.getViewPartInfo(PartInfoSo)
  19. PaymentService.payment(String, GatheringVO, String)(运费包装费自动付款,purchase事务提交后异步调用此接口)
    1. PurchasePaymentApi.handlePurchaseAndStockReturn(回写付款信息)
  20. PrintConfigService.getOpParamConfigByType(String, String)
  21. PurchaseService.genPayment(TsPurchase, String)
  22. SupplierService.getSupplierById(String)  (com.air.tqb.service.supplier)
  23. PurchaseStockInApi.handleStockIn(TsStockInVo)
    1. PurchaseApi.queryPurchaseById(String)
    2. PurchaseReturnApi.queryStockReturnById(String)
  24. StockPartInfoApi.addOrUpdatePartInfoSeat(List, String)
  25. StockPartInfoApi.queryStoragePartInfoListBatch(List)
  26. StorageApi.getStorageList(TbStorageSo) | | PurchaseReturnApi.changeStatusWhenStockOut | fisheye搜索无调用 |
  27. PrintConfigService.getCompanyPrintConfigByType(String, String) | | PurchaseApi.getDetailVoListByPkIdList | | 无 | | PurchaseApi.getDetailVoListByPurchaseIdList | fisheye搜索无调用 | 无 | | PurchaseApi.getLastPurchasePrice | | 无 | | PurchaseApi.getPartInfoByPurchaseIdList | | 无 | | PurchaseApi.queryLastPurchasePriceByIdPartList | | 无 | | PurchaseApi.queryPurchase | | 无 | | PurchaseApi.queryPurchaseById | | 无 | | PurchaseApi.queryPurchaseByIds | | 无 | | PurchaseApi.queryPurchaseDetail | | 无 | | PurchaseApi.queryPurchaseDetailsByPkIdList | | 无 | | PurchaseApi.queryPurchaseList | | 无 | | PurchaseApi.queryRelationPurchaseList | | 无 | | PurchaseApi.updatePurchaseStatus | fisheye搜索无调用 | 无 | | PurchasePaymentApi.handlePurchaseAndStockReturn | | 无 | | PurchaseReturnApi.queryStockReturnById | | 无 | | PurchaseReturnApi.queryStockReturnDetailList | | 无 | | PurchaseStockReturnBossReportApi.getPurchaseReport | | 无 | | PurchaseStockReturnBossReportApi.getStockReturnReport | | 无 |

调查方法

  1. 创建 Call hierarchy 的Scope。Name为 f6 ,Pattern为 lib:com.f6car..*||lib:com.air.tqb..*||src:*..* 。
  2. 找到所有Purchase的dubbo接口,并对每一个方法使用 Callee Methods Hierarchy ,Scope选择上一步创建的 f6 ,导出所有展开的结果。
  3. 使用VIM将文本处理为最终结果:
    1. :%s/^\s*//g 使用VIM删除所有行首空白。
    2. :sort u 排序并删除重复的行。
    3. :g!/com\.air\.tqb\.service/d 删除所有不包含com.air.tqb.service的无关行。

通过步骤1、2获得文件列表:all_purchase_dubbo_methods.zip 然后通过步骤3批处理这些文件:

$ cd all_purchase_dubbo_methods && vim

:args *.txt
:set nomore
:argdo %s/^\s*//g | sort u | g!/com\.air\.tqb\.service/d | w!

接着删除空文件:

$ cd all_purchase_dubbo_methods
$ find -size 0 -print0 | xargs -0 rm --
  1. 对筛选出的函数列表,在ERP中从 步骤1 到 步骤3 再走一遍,并将:g!/com\.air\.tqb\.service/d 替换为:g!/com\.f6car\.purchase\.api/d 
  2. 处理完毕。