最近公司有個業務需要做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 ...