ChengDa_English/SGGL/BLL/JDGL/WBS/WbsDetailService.cs

252 lines
10 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Linq;
using System.Data.Linq;
using System.Web.Security;
using System.Web.UI.WebControls;
using Model;
using BLL;
using System.Collections.Generic;
namespace BLL
{
public static class WbsDetailService
{
/// <summary>
/// 根据Id获取一个WBS明细信息
/// </summary>
/// <param name="wbsDetailId">WBS明细Id</param>
public static Model.WbsDetail GetWbsDetailByWbsDetailId(string wbsDetailId)
{
return Funs.DB.WbsDetail.FirstOrDefault(e => e.WbsDetailId == wbsDetailId);
}
/// <summary>
/// 根据ToWbs判断是否存在WBS明细信息
/// </summary>
/// <param name="toWbs">toWbs</param>
public static bool IsExitWbsDetailByToWbs(string toWbs)
{
return (from x in Funs.DB.WbsDetail where x.ToWbs == toWbs select x).Count() > 0;
}
/// <summary>
/// 根据toWbs和toFlag和年及月获取对应WBS明细信息
/// </summary>
/// <param name="toWbs">对应wbsId</param>
/// <param name="toFlag">对应标志</param>
/// <param name="years">年</param>
/// <param name="months">月</param>
public static Model.WbsDetail GetWbsDetailByWbsFlagYearMonth(string toWbs, int toFlag, DateTime months)
{
return (from x in Funs.DB.WbsDetail where x.ToWbs == toWbs && x.ToFlag == toFlag && x.Months == months select x).FirstOrDefault();
}
public static Model.WbsDetail GetWbsDetailByToWbsFlag(string toWbs, int toFlag)
{
return (from x in Funs.DB.WbsDetail where x.ToWbs == toWbs && x.ToFlag == toFlag select x).FirstOrDefault();
}
/// <summary>
/// 根据ToWbs和月份判断是否存在未审核WBS明细信息
/// </summary>
/// <param name="toWbs">toWbs</param>
public static bool IsExitNoCompleteApproveWbsDetailByToWbs(string toWbs, int toFlag, DateTime months)
{
bool result;
var q = Funs.DB.WbsDetail.FirstOrDefault(e => e.ToWbs == toWbs && e.ToFlag == toFlag && e.Months == months);
if (q != null)
{
if (q.IsCompleteApprove == null && (q.CompleteValue != null || q.RealValue != null))
{
result = true;
}
else
{
result = false;
}
}
else
{
result = false;
}
return result;
}
/// <summary>
///
/// </summary>
/// <param name="toWbs"></param>
/// <param name="toFlag"></param>
/// <param name="months"></param>
/// <returns></returns>
public static bool IsExitWbsDetailByToWbsOrMonth(string toWbs, int toFlag, DateTime months)
{
bool result = false;
var q = Funs.DB.WbsDetail.FirstOrDefault(e => e.ToWbs == toWbs && e.ToFlag == toFlag && e.Months == months);
if (q != null)
{
result = true;
}
return result;
}
/// <summary>
/// 根据年及月获取之前月份的对应WBS明细信息集合含当月
/// </summary>
/// <param name="years">年</param>
/// <param name="months">月</param>
public static List<Model.WbsDetail> GetTotalWbsDetailsByYearMonth2(string toWbs, DateTime months)
{
return (from x in Funs.DB.WbsDetail where x.ToWbs == toWbs && x.Months <= months select x).ToList();
}
/// <summary>
/// 根据ToWbs月获取所有月份的对应WBS明细信息集合
/// </summary>
/// <param name="toWbs">toWbs</param>
public static List<Model.WbsDetail> GetTotalWbsDetailsByToWbs(string toWbs)
{
return (from x in Funs.DB.WbsDetail where x.ToWbs == toWbs orderby x.Months select x).ToList();
}
/// <summary>
/// 根据年及月获取之前月份的对应WBS明细信息集合含当月
/// </summary>
/// <param name="years">年</param>
/// <param name="months">月</param>
public static List<Model.WbsDetail> GetTotalWbsDetailsByYearMonth(string toWbs, int toFlag, DateTime months)
{
return (from x in Funs.DB.WbsDetail where x.ToWbs == toWbs && x.ToFlag == toFlag && x.Months <= months select x).ToList();
}
/// <summary>
/// 增加WBS明细
/// </summary>
/// <param name="user">WBS明细</param>
public static void AddWbsDetail(Model.WbsDetail wbsDetail)
{
Model.SGGLDB db = Funs.DB;
Model.WbsDetail newWbsDetail = new Model.WbsDetail();
newWbsDetail.WbsDetailId = wbsDetail.WbsDetailId;
newWbsDetail.ToWbs = wbsDetail.ToWbs;
newWbsDetail.ToFlag = wbsDetail.ToFlag;
newWbsDetail.Way = wbsDetail.Way;
newWbsDetail.Months = wbsDetail.Months;
newWbsDetail.EngineeringQuantity = wbsDetail.EngineeringQuantity;
newWbsDetail.PlanValue = wbsDetail.PlanValue;
newWbsDetail.PlanValueRate = wbsDetail.PlanValueRate;
newWbsDetail.CompleteValue = wbsDetail.CompleteValue;
newWbsDetail.CompleteValueRate = wbsDetail.CompleteValueRate;
newWbsDetail.RealValue = wbsDetail.RealValue;
newWbsDetail.RealValueRate = wbsDetail.RealValueRate;
db.WbsDetail.InsertOnSubmit(newWbsDetail);
db.SubmitChanges();
}
/// <summary>
/// 修改WBS明细
/// </summary>
/// <param name="user">WBS明细</param>
public static void UpdateWbsDetail(Model.WbsDetail wbsDetail)
{
Model.SGGLDB db = Funs.DB;
Model.WbsDetail newWbsDetail = db.WbsDetail.First(e => e.WbsDetailId == wbsDetail.WbsDetailId);
newWbsDetail.EngineeringQuantity = wbsDetail.EngineeringQuantity;
newWbsDetail.PlanValue = wbsDetail.PlanValue;
newWbsDetail.PlanValueRate = wbsDetail.PlanValueRate;
newWbsDetail.CompleteValue = wbsDetail.CompleteValue;
newWbsDetail.CompleteValueRate = wbsDetail.CompleteValueRate;
newWbsDetail.RealValue = wbsDetail.RealValue;
newWbsDetail.RealValueRate = wbsDetail.RealValueRate;
newWbsDetail.IsCompleteApprove = wbsDetail.IsCompleteApprove;
newWbsDetail.IsRealApprove = wbsDetail.IsRealApprove;
db.SubmitChanges();
}
/// <summary>
/// 根据Id删除WBS明细信息
/// </summary>
/// <param name="userId"></param>
public static void DeleteWbsDetail(string wbsDetailId)
{
Model.SGGLDB db = Funs.DB;
Model.WbsDetail ins = db.WbsDetail.First(e => e.WbsDetailId == wbsDetailId);
db.WbsDetail.DeleteOnSubmit(ins);
db.SubmitChanges();
}
/// <summary>
/// 根据toWbs删除WBS明细信息
/// </summary>
/// <param name="userId"></param>
public static void DeleteWbsDetailByToWbs(string toWbs)
{
Model.SGGLDB db = Funs.DB;
var details = from x in db.WbsDetail where x.ToWbs == toWbs select x;
if (details.Count() > 0)
{
db.WbsDetail.DeleteAllOnSubmit(details);
db.SubmitChanges();
}
}
/// <summary>
/// 根据月份总数和当前是第几月及总计划费用获取当前月份的计划值
/// </summary>
/// <param name="monthCount">月份总数</param>
/// <param name="monthNum">当前是第几月</param>
/// <param name="weightMoney">总计划费用</param>
/// <returns>当前月份的计划值</returns>
public static decimal GetMonthPlanValueByMonthCountAndMonthNumAndWeightMonth(int monthCount, int monthNum, decimal weightMoney)
{
decimal monthValue = 0;
int halfLevelCount = 0; //一半的阶级总数比如12个月则一半共有21个阶级共21X
int levelCount = 0; //总共有多少阶级比如12个月则共有42个阶级共42X
int count = 0; //阶级绝对数比如12个月则共分为6个阶级1X,2X,3X,4X,5X,6X
decimal oneValue = 0; //每一阶级即X的值
if (monthCount % 2 == 0) //月份总数为偶数
{
count = monthCount / 2;
for (int i = 1; i < count + 1; i++)
{
halfLevelCount += i;
}
levelCount = halfLevelCount * 2;
//oneValue = decimal.Round(Convert.ToDecimal(weightMoney / levelCount), 2);
oneValue = decimal.Round(Convert.ToDecimal(Math.Floor((weightMoney * 100) / levelCount) / 100), 2);//不进行四舍五入
if (monthNum > count) //当前月份大于中间的月份比如12个月当前为第8月则阶级为5X
{
monthNum = monthCount - monthNum + 1;
}
monthValue = monthNum * oneValue;
}
else //月份总数为奇数
{
count = (monthCount - 1) / 2;
for (int i = 1; i < count + 1; i++)
{
halfLevelCount += i;
}
levelCount = halfLevelCount * 2 + (count + 1);
//oneValue = decimal.Round(Convert.ToDecimal(weightMoney / levelCount), 2);
oneValue = decimal.Round(Convert.ToDecimal(Math.Floor((weightMoney * 100) / levelCount) / 100), 2);
if (monthNum > (count + 1)) //当前月份大于中间的月份比如13个月当前为第8月则阶级为6X
{
monthNum = monthCount - monthNum + 1;
}
monthValue = monthNum * oneValue;
}
return monthValue;
}
}
}