最近完成的模塊是項目概算表模塊跟基本信息表模塊。數據庫
另外花了時間考察了下excel在線編輯跟文件上傳組件。設計
記錄下關於項目基本表裏解決的一個小問題日誌
項目表只設計了一張基本信息表 project,基礎字段的查詢,列表展現,都用的此表。之前用也沒什麼問題,可是到填項目基本信息表時,出現了一個問題是,操做同一張表,AOP如何攔截記錄審批日誌?設計的審批日誌攔截系統是讀取Controller方法裏第一個參數,判斷類型,而後存到數據庫中。按照以前設計,操做的都是同一張表。那麼記錄的只能是同一個類。這樣審批日誌就沒法區分,到底是總體項目的流程,仍是基本信息表的流程。excel
解決思路1,第一是把項目基本信息單獨放一張表,而後跟主表關聯,主表負責總體。基本信息表負責基本信息表,接下來的問題是,主表用那些字段,子表用哪些字段,若是主表不包含基礎信息,那麼主表在列表展現跟查詢上會麻煩,並且已經寫好的要重構。若是主表包含基礎信息,那麼子表跟主表的信息重複,就要考慮傳值與拷貝,也是增長了麻煩程度。對象
解決思路2,既然沒法區分,那麼基本信息表用一個子類來代替,這樣不改變持久化的數據,只改變參數就好了。感受這種思路可行,就接着寫下去,寫了個ProjectBasic繼承了Project,可是沒有本身的屬性。替換Controller裏的方法,寫的時候又有問題了,數據對象若是綁定的是子類,那麼存儲成父類只要強轉就好了,可是Service中取出來的是父類,不能強制轉換成子類。如何解決?繼承
繞了一些彎路之後,發現解決辦法也不難,就是把Controller裏的方法分紅兩類,一種是涉及到Project信息持久化的,還保留原來的查詢與存儲方法,前臺的對象也綁定到Project上,另一種是設計到流程的,須要進行AOP攔截的,前臺對象綁定到子類上,這樣提交業務流程的時候,只要把子類強制轉換成父類就能夠保存了。文件上傳
總結一下,解決問題的辦法有許多種,多花時間梳理思路,優先選擇改形成本最低的,代碼變更最少的。基礎