社保名單核對的難題

來源:互聯網
上載者:User
  
      看了“XXX地方稅務局社會保險費報表採集系統”,僅僅是一些簡易功能,並不是站在使用者的角度去考慮問題;也許是項目發包方本身不是使用者的原因造成。一個核心功能盡然沒有:名單核對!不經感慨:有技術實力的接不到單子,這是一個值得思考的問題。
    如果換成我來架構:我只要使用者輸入一個“在職員工”的Excel檔案,即可自動完成核對、申報功能!
(現在的做法是開發一個傳統型程式用戶端,讓使用者輸入,再通過Web服務申報)

  以上是一些背景話和囉嗦,下述當然是“在現有的情況下努力去做”如何做的概述(思路),應該有一些參考價值。

第一步: 建立一個Access資料庫(公司只有近萬人)

第二步:從As400資料庫匯出“在職人員名單”,包括姓名、身份證;並存入Access資料庫

第三步:找到“XXX地方稅務局社會保險費報表採集系統”的Access資料庫,將其中的表“STAFF_INFO”中的姓名、身份證匯入到相同的資料庫中

第四步:將上述有關的身份證全部轉換為15位(15位和18位混存時代)

     難就難在兩個表的身份證都有可能不是正確的(事實也是如此)--題外:為何當初(15位)的身份證沒有校證碼?現在有了,不知大家有沒有在使用者輸入有關身份證的地方進行驗證(應該可能將輸錯降到最低)。

第五步:使用“身份證”欄位,通過Left Join和Right Join分別得到“未投保名單”和“已離職的投保名單”(使用Is Null進行判斷)--因為存在身份證出錯的問題,所以,得到的兩份名單可靠度較低(同一個人同時存在於兩張名單中)

第六步:將上述兩個名單產生暫存資料表(暫存資料表能有效提高使用Join 和 Left、Right及欄位包括函數的查詢效率)

第七步:使用“姓名”欄位,再次對兩個名單進行Left Join和Right Join;得到“待投保名單”和“待除名名單”及“身份證不一致名單”。

此時名單的準確率已經很高,但還是有可能出錯,即若存在同名,且公司和社保的身份證不一致時,就會同時出現在兩份名單中

 

後記:

     平時,可能很多人會假設“姓名”和“身份證”是完全正確的,未考慮這種假設不成立時如何處理。所以,架構時要特別注意作了哪些假設、什麼條件下成立和不成立如何處理等等。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.