ldj/Model/platform/tables/Project.cs

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];
}
}
}