ورود

View Full Version : سوال: پیگیری کارهای محول شده به افراد زیرمجموعه طبق چارت سازمانی



ali190
دوشنبه 01 آذر 1389, 22:23 عصر
باسلام و عرض خسته نباشید
دوستان میخواستم در طراحی یک دیتابیس ازتون کمک و همفکری بگیرم


http://barnamenevis.org/forum/attachment.php?attachmentid=60722&stc=1&d=1290452815


در تصویر بالا که نمای یک چارت سازمانی هست ، میخوام در واقع بانکم رو بگونه ای طراحی کنم کنم ابتدا افراد موجود در شرکت در بانک ثبت نام شوند و سپس افرار زیر مجموعه هر فرد (با یک ارتباط یک به چند ) مشخص شوند
هدفم در این برنامه این است که افراد سرمجموعه بتوانند کارهایی رو که قراره توسط افراد زیرمجموعشون انجام بشه رو مشاهده کنند
مشکلم سر اینست که چطور باید این کار رو انجام بدم
مثلاً کارشناس1 در این چارت سرمجموعه متصدی1 و متصدی2 است و به کار این دو اشراف دارد
همچنین مدیر میانی1 سرمجموعه کارشناس 1و2و3 است پسمدیر میانی به طور غیرمستقیم به متصدی1و2 نیز اشراف دارد
همنیطور به ترتیب مدیرعامل به همگی اشراف دارد
من میخوام بعد از اختصاص دادن افراد به سرمجموعه ها ، سرمجموعه ها بتونند کارهای محول شده به افراد زیرمجموعه شون رو فقط ببینند (افرادی که بطور مستقیم یا غیر مستقیم زیرمجموعشون هستند)
دوستان من بیشتر به دنبال یک راه و روش هستم که همیشه جواب بدهد ، چون ساختار چارت ثابت نیست و امکان دارد تغییر کند
ممنون میشم کمکم کنید
یاعلی

wolfstander
سه شنبه 02 آذر 1389, 06:56 صبح
سلام دوست عزیز
این مشکل رو من هم داشتم
در چارت سازمانی ای به همین صورت و به همین ترتیب
من اومدم و یک کد کارمندی تعریف کردم
اصلا ً ولش کن
الان الگوریتمش رو برات مینویسم
خوبه؟


جدول B : نحوه تعيين شناسه پرسنل
1. مديرکل
شناسه ثابت : 9999999999
2. معاون مديرکل
شناسه ثابت: 8888888888
3. مدير مستقل
محاسبه شناسه به صورت زير:
کد واحد ضرب در رقم 10 ميليون ( 000ر000ر10 )
بعلاوه کد زير واحد ضرب در 1000
مثال : مدير مستقل حراست با کد واحد 600 و کد زير واحد 6002
600*10/000/000+6002*1/000 = 6/006/001/000

4. معاون واحد
محاسبه شناسه به صورت زير:
کد واحد ضرب در رقم 10 ميليون ( 000ر000ر10 )
مثال معاون فني با کد واحد 100 = 1/000/000/000

5. مدير زير واحد
محاسبه شناسه به صورت زير:
کد واحد ضرب در رقم 10 ميليون ( 000ر000ر10 )
بعلاوه کد زير واحد ضرب در 1000
مثال: مدير زير واحد فرستنده راديويي(کد 1001) از واحد فني (کد 100):
100*10/000/000+1/001*1/000=1/001/001/000

6. کارمند
محاسبه شناسه به صورت زير:
در هنگام تعريف کارمند جديد، ابتدا واحد و سپس زير واحد را دريافت ميکند.
سپس با محاسبه کد مدير واحد ، يک رقم به آخرين کد تعريف شده اضافه ميکند.
کليه اين محاسبات از ديد کاربر مخفي است.
محاسبه کد تائيد کننده کارمند يا مدير واحد
سيستم پس از تعيين شناسه کاربر، با توجه به اينکه وي در چه رده اي است، کد تائيد کننده را وارد ميکند.
براي کارمند: کد مدير زير واحد
براي مدير زير واحد : کد معاون واحد
براي مدير مستقل : خود فرد
براي قائم مقام مدير کل : خود مدير کل
براي مدير کل : مدير کل



در نهایت امر هم برای گزارش گیری، اول با یه کمبو باکس فرد رو فراخوانی میکردم
بعدش چون کد کارمندیش رو داشتم، با تفکیک اون بر خلاف جهت بالا؛ رده و محل خدمتش رو به دست میاوردم
و فیلتر کوئری ام رو بر اون مبنا انجام میدادم
راه حلی ابتدایی بوده، ولی چنان جواب خوبی داده که نگو
حتی وقتی فردی هم جابجا بشه تو سازمان
کافیه که شما مجددا ً تنظیمش کنی
تو قسمت پرسنلی
همین
کار سختی نیست
راحته دادا

ali190
سه شنبه 02 آذر 1389, 18:13 عصر
باسلام
wolfstander عزیز ممنون از توضیحاتت
از الگوریتمی که نوشتی متاسفانه نتونستم استفاده کنم
برات امکان داره این الگورین=تم رو در قالب یک پروژه نمونه مطرح کنی
ممنون میشم ازت
یاعلی

wolfstander
شنبه 06 آذر 1389, 07:39 صبح
سلام دوست عزیز
چطوری میتونم الگوریتم رو در قالب نمونه بذارم
؟
منظورت اینه که کاری رو که انجام دادم بذارم اینجا؟
:متفکر:

علیرضا مداح
شنبه 06 آذر 1389, 08:16 صبح
سلام،
روش های گوناگونی برای پیاده سازی وجود دارد، اما با ظهور SQL Server 2008 من ترجیح می دهم که از نوع داده ی HierarchyId استفاده کنم، اطلاعات بیشتر (http://www.sqlservercentral.com/articles/SQL+Server+2008/62204/)،/