310 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			310 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			C#
		
	
	
	
| 
 | |
| /// <summary>
 | |
| ///INTERFACE CLASS FOR TABLE t_Project
 | |
| ///By wm with codesmith. 
 | |
| ///on 04/18/2017
 | |
| /// </summary>
 | |
| 
 | |
| 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;
 | |
|         /// <summary>
 | |
|         /// 返回某员工的特定年月的所有项目
 | |
|         /// </summary>
 | |
|         /// <param name="emId"></param>
 | |
|         /// <param name="year"></param>
 | |
|         /// <param name="month"></param>
 | |
|         /// <returns></returns>
 | |
|         public DataTable GetProjects(int emId, string year, string month)
 | |
|         {
 | |
|             cmdParameters[0] = emId;
 | |
|             cmdParameters[1] = year;
 | |
|             cmdParameters[2] = month;
 | |
| 
 | |
|             return CustQuery(100).Tables[0];
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 返回某员工的特定年的所有项目
 | |
|         /// </summary>
 | |
|         /// <param name="emId"></param>
 | |
|         /// <param name="year"></param>
 | |
|         /// <returns></returns>
 | |
|         public DataTable GetProjects(int emId, string year)
 | |
|         {
 | |
|             cmdParameters[0] = emId;
 | |
|             cmdParameters[1] = year;
 | |
| 
 | |
|             return CustQuery(300).Tables[0];
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 返回某部门员工的特定年的所有项目
 | |
|         /// </summary>
 | |
|         /// <param name="emId"></param>
 | |
|         /// <param name="year"></param>
 | |
|         /// <returns></returns>
 | |
|         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());
 | |
| 
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// 平衡月度的项目权重
 | |
|         /// </summary>
 | |
|         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];
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         ///按 部门 获得需要其来 审批的项目列表
 | |
|         /// </summary>
 | |
|         /// <param name="deptList"> 部门列表</param>
 | |
|         /// <returns></returns>
 | |
|         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];
 | |
|         }
 | |
|         /// <summary>
 | |
|         ///按 部门 获得需要其来 审批的项目列表
 | |
|         /// </summary>
 | |
|         /// <param name="deptList"> 部门列表</param>
 | |
|         /// <returns></returns>
 | |
|         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];
 | |
|         }
 | |
| 
 | |
|     }
 | |
| }
 |