/// ///INTERFACE CLASS FOR TABLE t_Project ///By wm with codesmith. ///on 04/18/2017 /// using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Collections; using DeiNiu.Utils; namespace DeiNiu.wms.Data.Model { [Serializable] public class Project : Project_base { public Project() { } public Project(int id): base(id) { } protected override void getImp() { model_imp = new Project_Imp(); } private Employee _prjMaster; protected internal string _prjMasterName = string.Empty; /// /// 返回某员工的特定年月的所有项目 /// /// /// /// /// public DataTable GetProjects(int emId, string year, string month) { cmdParameters[0] = emId; cmdParameters[1] = year; cmdParameters[2] = month; return CustQuery(100).Tables[0]; } /// /// 返回某员工的特定年的所有项目 /// /// /// /// public DataTable GetProjects(int emId, string year) { cmdParameters[0] = emId; cmdParameters[1] = year; return CustQuery(300).Tables[0]; } /// /// 返回某部门员工的特定年的所有项目 /// /// /// /// public DataTable GetProjectsByDept(int deptID, string year) { cmdParameters[0] = deptID; cmdParameters[1] = year; return CustQuery(400).Tables[0]; } public string PrjMasterName { get { return _prjMasterName; } } public Employee PrjMaster { get { return _prjMaster; } } public new int Add() { base.Add(); // _id = Convert.ToInt32(CustQuery(200).Tables[0].Rows[0][0].ToString()); return _id; } public void balanceThePercent() { DateTime dt1 = Convert.ToDateTime(_pj_planStartDate); balanceThePercent(pj_master, dt1.Year.ToString(), dt1.Month.ToString()); } /// /// 平衡月度的项目权重 /// public void balanceThePercent(int emId, string year, string month) { DataView dv = GetProjects(emId, year, month).DefaultView; // string rowfilter = "pj_status in('" + ProjectStatus.新增审核通过 + "','" + ProjectStatus.项目完成 + "','" + ProjectStatus.项目已分配 + "','"+ ProjectStatus.项目解冻 + "','"+ // ProjectStatus.删减审核通过 + "')" ; string rowfilter = "pj_status in('" + ProjectStatus.新增审核通过 + "','" + ProjectStatus.项目完成 + "','" + ProjectStatus.项目已分配 + "','" + ProjectStatus.项目解冻 + "')"; dv.RowFilter = rowfilter; decimal totalPercent = 0; //总分数 for (int i = 0; i < dv.Count; i++) { try { // totalPercent += Convert.ToDecimal(dv.Table.Rows[i]["pj_percent"].ToString()); totalPercent += Convert.ToDecimal(dv[i]["pj_percent"].ToString()); } catch (Exception) { continue; } } Project tmpPrj; // for (int i = 0; i < dv.Count; i++) { decimal oldPercent; decimal newPercent; try { if (totalPercent.Equals(new decimal(0))) //总计0 { newPercent = 100 / dv.Count; } else { oldPercent = Convert.ToDecimal(dv[i]["pj_percent"].ToString()); newPercent = oldPercent / totalPercent * 100; } tmpPrj = new Project(Convert.ToInt32(dv[i]["pk_t_project"].ToString())); tmpPrj.pj_percent = Convert.ToInt32(newPercent); if (tmpPrj.pj_score > 0) tmpPrj.pj_score = tmpPrj.pj_percent * tmpPrj.pj_progress / 100; tmpPrj.Update(); } catch (Exception) { continue; } } refineThePercent(emId, year, month); } public void refineThePercent(int emId, string year, string month) { DataView dv = GetProjects(emId, year, month).DefaultView; string rowfilter = "pj_status in('" + ProjectStatus.新增审核通过 + "','" + ProjectStatus.项目完成 + "','" + ProjectStatus.项目已分配 + "','" + ProjectStatus.项目解冻 + "','" + ProjectStatus.删减审核通过 + "')"; dv.RowFilter = rowfilter; decimal totalPercent = 0; decimal refinePercent; //总分数 for (int i = 0; i < dv.Count; i++) { try { totalPercent += Convert.ToDecimal(dv[i]["pj_percent"].ToString()); } catch (Exception er) { continue; } } if (totalPercent == 100) return; refinePercent = totalPercent - 100; Project tmpPrj; // for (int i = 0; i < dv.Count; i++) { decimal oldPercent; decimal newPercent = 0; try { oldPercent = Convert.ToDecimal(dv[i]["pj_percent"].ToString()); newPercent = oldPercent - refinePercent; if (newPercent <= 0) continue; tmpPrj = new Project(Convert.ToInt32(dv[i]["pk_t_project"].ToString())); tmpPrj.pj_percent = Convert.ToInt32(newPercent); if (tmpPrj.pj_score > 0) tmpPrj.pj_score = tmpPrj.pj_percent * tmpPrj.pj_progress / 100; tmpPrj.Update(); break; } catch (Exception) { continue; } } } public DataTable GetProjectsByYearMonth(string year, string month) { cmdParameters[0] = year; cmdParameters[1] = month; return CustQuery(500).Tables[0]; } public DataTable GetKaoHeHistoryProjectsByYearMonth(string year, string month) { cmdParameters[0] = year; cmdParameters[1] = month; return CustQuery(501).Tables[0]; } public DataTable GetKaoHeHistoryProjectsByYear(string year) { cmdParameters[0] = year; return CustQuery(502).Tables[0]; } public DataTable GetProjectsByYear(string year) { cmdParameters[0] = year; return CustQuery(600).Tables[0]; } /// ///按 部门 获得需要其来 审批的项目列表 /// /// 部门列表 /// public DataTable Get4ApproveListYear(ArrayList deptList, string year) { if (deptList.Count == 0) return new DataTable(); cmdParameters[0] = Utils.Util.buildWhereIntIn(deptList); cmdParameters[1] = year; return CustQuery(700).Tables[0]; } /// ///按 部门 获得需要其来 审批的项目列表 /// /// 部门列表 /// public DataTable Get4ApproveListYearMonth(ArrayList deptList, string year, string month) { if (deptList.Count == 0) return new DataTable(); cmdParameters[0] = Utils.Util.buildWhereIntIn(deptList); cmdParameters[1] = year; cmdParameters[2] = month; return CustQuery(800).Tables[0]; } public DataTable GetSumProjectsByYearMonth(string year, string month) { cmdParameters[0] = year; cmdParameters[1] = month; return CustQuery(900).Tables[0]; } public DataTable GetSumProjectsByYear(string year) { cmdParameters[0] = year; return CustQuery(1000).Tables[0]; } } }