一次excel業務擴充套件的沉澱

2021-10-09 10:07:05 字數 1842 閱讀 9151

最近公司有個業務需要做excel的匯入匯出

最開始是只有乙個excel匯入匯出的 所以就按部就班的寫了如下**。

工具用的阿里的easyexcel

匯出

@apioperation

("匯出模版"

//用goodspricingexceldescription.class樣式執行匯出

excelutils.

exportexcel

(response, goodspricingexceldescription.

class

, goodspricingexceldescriptions)

;return jsonresult.

ofsuccess()

;}

但是後來業務複雜多變 單單乙個匯出介面就需要根據場景有不同的四種匯出方案。如果寫那麼多if/else 就會讓**變得難以維護。

於是在思考過後。想出了另外一種可以擴充套件的寫法思路

在此記錄下來

@apioperation

("根據場景匯出模版"

packagedo是乙個大物件 包含了所有excel的字段。用它來做第一步的引數接收。

然後根據入參,進行場景識別

/**

* todo 匯出場景

*/public

static map

export_template=

newhashmap

<

>()

;static

//識別匯出場景

public

static exporttemplate identifyexporttemplate

(exportscene exportscene)

map中的value exporttemplate是乙個介面。用來定義乙個匯出方法。

public

inte***ce

exporttemplate

匯入介面邏輯太多了就不一一贅述了,思想同理 介面如下

public

inte***ce

calculatetemplate

這樣我們通過多型的方案。每次識別的匯出場景都會不同。具體的匯出邏輯都在介面exporttemplate的實現類的doexport方法中。達到了去if/else , 主鏈路**清爽整潔。並且功能也十分有擴充套件性。多少樣式的excel匯出都可以不改變主鏈路的**了?

一次後台擴充套件的經歷

任務 新增乙個merchant表,然後要對你增刪改查.實施步驟 1.資料準備 生成sql語句到資料庫,並加入測試資料。2.使http magen host manager merchant進入merchant管理介面,預設顯示merchant列表。1 建立merchantcontroller.php...

記一次linux lvm的擴充套件

事情是這個樣子的,突然有一天,公司的某台email伺服器不能傳送email了!開始響起。經過一系列的前期檢測,發現硬碟空間用光了。還好發現原來的系統有用lvm。先在自己的虛擬機器上測試之後,然後在伺服器上折騰。大概過程就是這樣子的。1.先新增一塊硬碟到你的系統中。一般來說都會在你的 dev目錄下多乙...

一次訂單業務問題的排查

前些天遇到乙個切換資料來源的問題,分析了下給大家分享下 l 問題 1.問題背景 提單資料是分庫儲存的,分庫意味著資料需要根據特定的路由規則路由到不同的庫,切換資料來源不可避免 2.問題描述 優化版本單品單結,使用者訂單不能按照路由規則,儲存到特定的資料庫,而是儲存在預設的資料庫中,持久層 如圖 l ...