嘗試分解業務

2021-08-08 08:33:52 字數 2482 閱讀 9156

筆者本週遇到了十分棘手的業務需求,在反覆的幾次重構之後,希望能總結一點可以用於下次參考的經驗

bp發起打分時,我需要對 這個考核目標中包含的 績效考核指標 打上具體的完成值,並且通過完成值和這個指標的得分規則 ——-計算出相應的分數,

績效考核的指標有 財務指標,客服指標,主觀指標這三類,考核的週期有月考 ,年考

財務指標和客服指標屬於是客觀性質的指標,所以他們的完成值是其他系統計算的,每個月都有具體的數值,

於是我需要對客觀性質的指標從其他系統對接過來,並且對於年考的指標,需要自己計算一番,

1.主表: examine_goal ——績效考核目標表

包含字段 id ,empcode ,startime, endtime

2.副表: goal_target_info——-考核指標表

id ,eid,   datasource, weight, score_rule, finishedvalue,score,type,
副表: goal_cost_info———-考核成本中心權重表

id ,costcode,weight,
3.對接的資料表:

cost_target_month_data———每月成本中心資料

資料表: customer_target_month_data——–客服指標每月資料

month ,datasource,finishvalue,empcode

首先我們可以把這個業務分解一下,

1. 取出這個考核人的 list《客服指標》 list1;

2. 獲取到客服指標的完成值finishvalue

3. 根據finishvalue+得分規則 獲得 實際得分

1.任何時候動手之前,一定要有乙個清晰的完整的思路,

2.一定不要怕麻煩,最小的細節 比如取名不規範,它會給你以後造成極大的麻煩,

3.將乙個複雜而龐大的功能分解成乙個乙個的小模組去實現,通過事先構想出的思路,將每一步需要完成的點 當成每乙個階段的目標,

4.不要想著一次就能較好的實現乙個複雜的功能,第一次嘗試時,你可以寫的非常複雜,冗餘,不完整,這都不是問題,因為它肯定可以為優化時,提供非常好的思路和 模組思路,讓你更好的去完成抽象和切分,

5.切記不要在乙個serviceimpl類中 寫過多的 private方法,就是要不怕麻煩的把其他service的功能分開,不要出現一層呼叫下一層的,因為日後維護會十分耗費時間,

6.乙個人一天的精力絕對是有限的,當被複雜的業務邏輯整的陷入僵局和死胡同後,就不要再坐著了,需要出去走一走,喝一喝水,頭腦一直緊繃中,會死的很快,會非常容易累

7.當多表鏈結容易讓人迷糊時,你需要的時 適當的分解 複雜度,把你想要的 結果集 封裝入乙個vo類中也是十分有效的方法,

1. 我要獲得 客服指標的完成值, 怎麼查詢到 呢

明顯 乙個 month ,empcode 才是核心

所以 大概的sql 就是

select

sum(finivalue)

from

customer_target_month

where

month 在乙個區間

empcode=乙個值

datasource=乙個值

group

by empcode

那麼我要怎麼怎麼才能獲得 這乙個empcode ,和區間呢

於是我們將上述的三個條件作為 另外乙個sql的結果集,構成組裝成這樣乙個 結果集就行

select 

a.startime,b.endtime

c.empcode, d.datasource,

from

exmain_goal a

left

join goal_target b

on a.id=b.e.id

where b.type='客服指標'

這是 我們 發現 逆向出來的 東西已經滿足了 最終需要的結果的條件,

如果 你不想把這兩個sql 組合在一起,那麼,

你就講 條件 組合成乙個 vo

list voparamlist= new arr…

vo的屬性:

private

string datasource

private

date startime

private

date endtime

private

string empcode

如果你想 組合怎麼辦

select *

from

(target_month 那個結構sql )a,( 查詢出vo的 sql) b

where

複製之前的結構即可

分解模式 按業務領域分解模式劃分微服務

本文說明如何通過業務領域分析和ddd將大型複雜的應用程式劃分為一組微服務。使用微服務架構開發乙個大型複雜的應用程式,我們需要將應用程式細緻,合理地分解為一組鬆散耦合的微服務。微服務架構的目標是通過實現持續交付 部署來加速軟體開發。通過領域驅動設計 ddd 設計與子域相對應的服務。ddd通過分析問題空...

日誌分析 六 業務異常日誌分解

1.初步分離 業務系統在執行期間會丟擲來一些執行期異常日誌,監控這些日誌,過濾多餘其它日誌,然後給予相應owner告警就成為異常監控的目標之一。logstash配置如下 input filter if type exception if multiline not in tags output 刪除...

業務流程為主線的分解結構

業務流程為主線的分解結構 這種結構是以業務流程為主線索的,也就是按 事 的角度進行分解。它對於聯機事務處理系統 管理資訊系統而言是非常適用的方法。程式結構為主線索的分解結構 適用於問題域不複雜,或者系統與問題域關聯性不強的情況下,例如工具軟體 面向裝置的嵌入式系統等 基於場景的分解結構 對於決策支援...