/// <summary> /// 市场合价统计 /// </summary> /// <param name="table"></param> private void SCHJ(_SubheadingsQuantityUnitList list) { if (list.Parent.LB == "子目-增加费") { if (list.Parent.Activitie.Property.IncreaseCosts.DataSource != null) { DataRow drs = list.Parent.Activitie.Property.IncreaseCosts.DataSource.Select(string.Format("ParentID = 0 AND Code='{0}'", this.Parent.XMBM)).FirstOrDefault(); if (drs != null) { if (drs["location"].ToString() == "分部分项") { //市场人工费单价 m_ResultValue.RGFDJ = list.Parent.Parent.SubheadingsList.Cast <_SubheadingsInfo>().Where(p => p.LB != "子目-增加费").Sum(p => p.IncreaseCostsList.Cast <_IncreaseCostsInfo>().FirstOrDefault(ps => ps.DH == this.Parent.XMBM) == null ? 0 : p.IncreaseCostsList.Cast <_IncreaseCostsInfo>().FirstOrDefault(ps => ps.DH == this.Parent.XMBM).RGF); //市场材料费单价 m_ResultValue.CLFDJ = list.Parent.Parent.SubheadingsList.Cast <_SubheadingsInfo>().Where(p => p.LB != "子目-增加费").Sum(p => p.IncreaseCostsList.Cast <_IncreaseCostsInfo>().FirstOrDefault(ps => ps.DH == this.Parent.XMBM) == null ? 0 : p.IncreaseCostsList.Cast <_IncreaseCostsInfo>().FirstOrDefault(ps => ps.DH == this.Parent.XMBM).CLF); //市场机械费单价 m_ResultValue.JXFDJ = list.Parent.Parent.SubheadingsList.Cast <_SubheadingsInfo>().Where(p => p.LB != "子目-增加费").Sum(p => p.IncreaseCostsList.Cast <_IncreaseCostsInfo>().FirstOrDefault(ps => ps.DH == this.Parent.XMBM) == null ? 0 : p.IncreaseCostsList.Cast <_IncreaseCostsInfo>().FirstOrDefault(ps => ps.DH == this.Parent.XMBM).JXF); } else { //市场人工费单价 m_ResultValue.RGFDJ = list.Parent.Activitie.Property.SubSegments.SubheadingsList.Cast <_SubheadingsInfo>().Where(p => p.LB != "子目-增加费").Sum(p => p.IncreaseCostsList.Cast <_IncreaseCostsInfo>().FirstOrDefault(ps => ps.DH == this.Parent.XMBM) == null ? 0 : p.IncreaseCostsList.Cast <_IncreaseCostsInfo>().FirstOrDefault(ps => ps.DH == this.Parent.XMBM).RGF); //市场材料费单价 m_ResultValue.CLFDJ = list.Parent.Activitie.Property.SubSegments.SubheadingsList.Cast <_SubheadingsInfo>().Where(p => p.LB != "子目-增加费").Sum(p => p.IncreaseCostsList.Cast <_IncreaseCostsInfo>().FirstOrDefault(ps => ps.DH == this.Parent.XMBM) == null ? 0 : p.IncreaseCostsList.Cast <_IncreaseCostsInfo>().FirstOrDefault(ps => ps.DH == this.Parent.XMBM).CLF); //市场机械费单价 m_ResultValue.JXFDJ = list.Parent.Activitie.Property.SubSegments.SubheadingsList.Cast <_SubheadingsInfo>().Where(p => p.LB != "子目-增加费").Sum(p => p.IncreaseCostsList.Cast <_IncreaseCostsInfo>().FirstOrDefault(ps => ps.DH == this.Parent.XMBM) == null ? 0 : p.IncreaseCostsList.Cast <_IncreaseCostsInfo>().FirstOrDefault(ps => ps.DH == this.Parent.XMBM).JXF); } //定额人工费单价 m_ResultValue.DERGFDJ = m_ResultValue.RGFDJ; //定额材料费单价 m_ResultValue.DECLFDJ = m_ResultValue.CLFDJ; //定额机械费单价 m_ResultValue.DEJXFDJ = m_ResultValue.JXFDJ; } } } else { //市场人工费单价 m_ResultValue.RGFDJ = list.Cast <_SubheadingsQuantityUnitInfo>().Where(p => _Constant.rg.Contains("'" + p.LB + "'")).Sum(p => p.SCDJ * p.XHL); //市场材料费单价 m_ResultValue.CLFDJ = list.Cast <_SubheadingsQuantityUnitInfo>().Where(p => _Constant.cl.Contains("'" + p.LB + "'")).Sum(p => p.SCDJ * p.XHL); //市场机械费单价 m_ResultValue.JXFDJ = list.Cast <_SubheadingsQuantityUnitInfo>().Where(p => _Constant.jx.Contains("'" + p.LB + "'")).Sum(p => p.SCDJ * p.XHL); } //市场主材费单价 m_ResultValue.ZCFDJ = list.Cast <_SubheadingsQuantityUnitInfo>().Where(p => _Constant.zc.Contains("'" + p.LB + "'")).Sum(p => p.SCDJ * p.XHL); //市场设备费单价 m_ResultValue.SBFDJ = list.Cast <_SubheadingsQuantityUnitInfo>().Where(p => _Constant.sb.Contains("'" + p.LB + "'")).Sum(p => p.SCDJ * p.XHL); //市场直接费单价 m_ResultValue.ZJFDJ = m_ResultValue.RGFDJ + m_ResultValue.CLFDJ + m_ResultValue.JXFDJ + m_ResultValue.SBFDJ + m_ResultValue.ZCFDJ + m_ResultValue.FXRCJ; //市场甲供材料 m_ResultValue.JGCL = list.Parent.GetAllQuantityUnit.Cast <_ObjectQuantityUnitInfo>().Where(p => p.YTLB == UseType.甲供材料.ToString()).Sum(p => p.SCDJ * p.XHL); //市场乙供材料 m_ResultValue.YGCL = list.Parent.GetAllQuantityUnit.Cast <_ObjectQuantityUnitInfo>().Where(p => p.YTLB == UseType.甲定乙供材料.ToString()).Sum(p => p.SCDJ * p.XHL); //市场评标指定材料 m_ResultValue.PBZDCL = list.Parent.GetAllQuantityUnit.Cast <_ObjectQuantityUnitInfo>().Where(p => p.YTLB == UseType.评标指定材料.ToString()).Sum(p => p.SCDJ * p.XHL); //市场暂定价材料 m_ResultValue.ZDJCL = list.Parent.GetAllQuantityUnit.Cast <_ObjectQuantityUnitInfo>().Where(p => p.YTLB == UseType.暂定价材料.ToString()).Sum(p => p.SCDJ * p.XHL); }
/// <summary> /// 价差统计 /// </summary> /// <param name="table"></param> private void JCDJ(_SubheadingsQuantityUnitList list) { //价差单价 m_ResultValue.JCDJ = list.Cast <_SubheadingsQuantityUnitInfo>().Where(p => p.DJC != 0).Sum(p => p.DJC * p.XHL); //人工费价差单价 m_ResultValue.RGJCDJ = list.Cast <_SubheadingsQuantityUnitInfo>().Where(p => p.DJC != 0 && _Constant.rg.Contains("'" + p.LB + "'")).Sum(p => p.DJC * p.XHL) + m_ResultValue.HHJXFJC; //材料费价差单价 m_ResultValue.CLJCDJ = list.Cast <_SubheadingsQuantityUnitInfo>().Where(p => p.DJC != 0 && _Constant.cl.Contains("'" + p.LB + "'")).Sum(p => p.DJC * p.XHL); //机械费价差单价 m_ResultValue.JXJCDJ = list.Cast <_SubheadingsQuantityUnitInfo>().Where(p => p.DJC != 0 && _Constant.jx.Contains("'" + p.LB + "'")).Sum(p => p.DJC * p.XHL) - m_ResultValue.HHJXFJC; }
/// <summary> /// 差价统计 /// </summary> /// <param name="table"></param> private void CJDJ(_SubheadingsQuantityUnitList list) { //差价单价 m_ResultValue.CJDJ = list.Parent.GetAllQuantityUnit.Cast <_ObjectQuantityUnitInfo>().Where(p => p.JSDJC != 0).Sum(p => p.JSDJC * p.XHL); //人工费差价单价 m_ResultValue.RGCJDJ = list.Parent.GetAllQuantityUnit.Cast <_ObjectQuantityUnitInfo>().Where(p => p.JSDJC != 0 && _Constant.rg.Contains("'" + p.LB + "'")).Sum(p => p.JSDJC * p.XHL); //材料费差价单价 m_ResultValue.CLCJDJ = list.Parent.GetAllQuantityUnit.Cast <_ObjectQuantityUnitInfo>().Where(p => p.JSDJC != 0 && _Constant.cl.Contains("'" + p.LB + "'")).Sum(p => p.JSDJC * p.XHL); //机械费差价单价 m_ResultValue.JXCJDJ = list.Parent.GetAllQuantityUnit.Cast <_ObjectQuantityUnitInfo>().Where(p => p.JSDJC != 0 && _Constant.jx.Contains("'" + p.LB + "'")).Sum(p => p.JSDJC * p.XHL); }
/// <summary> /// 计算基础数据 /// </summary> public void CalculateBasicData(_SubheadingsQuantityUnitList list) { //定额合价统计 this.DEHJ(list); //市场合价统计 this.SCHJ(list); //其他统计 this.Other(list); //计算百分号 this.JSBFH(list); //赋值 this.setVariable(); }
/// <summary> /// 其他统计 /// </summary> /// <param name="table"></param> private void Other(_SubheadingsQuantityUnitList list) { //工程量 m_BaseResultValue.GCL = this.Parent.GCL; //价差和 m_BaseResultValue.JC = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() select info.DJC).Sum(); //风险人材机 m_BaseResultValue.FXRCJ = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where info.IFFX == true select info.SCHJ).Sum(); //吊装机械台班 m_BaseResultValue.DZJXTB = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where info.LB == "吊装机械台班" select info.SCHJ).Sum(); }
/// <summary> /// 其他统计 /// </summary> /// <param name="table"></param> private void Other(_SubheadingsQuantityUnitList list) { //工程量 m_ResultValue.GCL = this.Parent.GCL; //风险人材机 m_ResultValue.FXRCJ = list.Parent.GetAllQuantityUnit.Cast <_ObjectQuantityUnitInfo>().Where(p => p.IFFX == true).Sum(p => p.SCDJ * p.XHL); //吊装机械台班 m_ResultValue.DZJXTB = list.Cast <_SubheadingsQuantityUnitInfo>().Where(p => p.LB == "吊装机械台班").Sum(p => p.SCDJ * p.XHL); //机械费单价(含人工) - 2012.11.7 修改 m_ResultValue.DEJXFDJHRG = list.Parent.GetAllQuantityUnit.Cast <_ObjectQuantityUnitInfo>().Where(p => p.LB == "机械" && p.DW == "工日").Sum(p => p.GetType() == typeof(_QuantityUnitComponentInfo) ? p.DEDJ * p.XHL * (p as _QuantityUnitComponentInfo).Parent.XHL : p.DEDJ * p.XHL); //定额机械费单价(含人工 ) - 2012.11.7 修改 m_ResultValue.JXFDJHRG = list.Parent.GetAllQuantityUnit.Cast <_ObjectQuantityUnitInfo>().Where(p => p.LB == "机械" && p.DW == "工日").Sum(p => p.GetType() == typeof(_QuantityUnitComponentInfo) ? p.SCDJ * p.XHL * (p as _QuantityUnitComponentInfo).Parent.XHL : p.SCDJ * p.XHL); //混合机械费价差 m_ResultValue.HHJXFJC = m_ResultValue.JXFDJHRG - m_ResultValue.DEJXFDJHRG; //混合机械费单价 m_ResultValue.HHJXFDJ = m_ResultValue.JXFDJ - m_ResultValue.JXFDJHRG + m_ResultValue.DEJXFDJHRG; }
/// <summary> /// 计算基础数据 /// </summary> public void CalculateBasicData(_SubheadingsQuantityUnitList list) { //定额合价统计 this.DEHJ(list); //市场合价统计 this.SCHJ(list); //其他统计 this.Other(list); //计算百分号 this.JSBFH(list); //价差统计 this.JCDJ(list); //差价统计 this.CJDJ(list); //赋值 this.Assignment(); }
/// <summary> /// 计算百分号材料合计 /// </summary> /// <param name="p_list"></param> private void JSBFH(_SubheadingsQuantityUnitList p_list) { m_BaseResultValue.CLBFHHJ = 0m; m_BaseResultValue.JXBFHHJ = 0m; m_BaseResultValue.RGBFHHJ = 0m; IEnumerable <_SubheadingsQuantityUnitInfo> list = p_list.Cast <_SubheadingsQuantityUnitInfo>(); IEnumerable <_SubheadingsQuantityUnitInfo> tslist = list.Where(p => p.YSBH == "11705"); if (tslist.Count() == 1) { IEnumerable <_SubheadingsQuantityUnitInfo> tslists = list.Where(p => p.BH == "10088" || p.BH == "10087" || p.BH == "10544"); decimal mcbfb = 0; foreach (_SubheadingsQuantityUnitInfo item in tslists) { mcbfb += item.SCHJ; } _SubheadingsQuantityUnitInfo tsinfo = tslist.First(); m_BaseResultValue.CLBFHHJ = mcbfb / 100 * tsinfo.XHL; } IEnumerable <_SubheadingsQuantityUnitInfo> bfhlist = list.Where(p => p.LB.Contains("%") && p.YSBH != "11705"); foreach (_SubheadingsQuantityUnitInfo item in bfhlist) { switch (item.LB) { case "材料%": m_BaseResultValue.CLBFHHJ = list.Where(p => p.LB == "材料").Sum(p => p.SCHJ) / 100 * item.XHL; break; case "机械%": m_BaseResultValue.JXBFHHJ = list.Where(p => p.LB == "机械").Sum(p => p.SCHJ) / 100 * item.XHL; break; case "人工%": m_BaseResultValue.RGBFHHJ = list.Where(p => p.LB == "人工").Sum(p => p.SCHJ) / 100 * item.XHL; break; default: break; } } }
/// <summary> /// 市场合价统计 /// </summary> /// <param name="table"></param> private void SCHJ(_SubheadingsQuantityUnitList list) { //市场人工费单价 m_BaseResultValue.RGFDJ = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where _Constant.rg.Contains("'" + info.LB + "'") select info.SCHJ).Sum(); //市场材料费单价 m_BaseResultValue.CLFDJ = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where _Constant.cl.Contains("'" + info.LB + "'") select info.SCHJ).Sum(); //市场机械费单价 m_BaseResultValue.JXFDJ = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where _Constant.jx.Contains("'" + info.LB + "'") select info.SCHJ).Sum(); //市场主材费单价 m_BaseResultValue.ZCFDJ = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where _Constant.zc.Contains("'" + info.LB + "'") select info.SCHJ).Sum(); //市场设备费单价 m_BaseResultValue.SBFDJ = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where _Constant.sb.Contains("'" + info.LB + "'") select info.SCHJ).Sum(); //市场甲供材料 m_BaseResultValue.JGCL = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where info.YTLB == UseType.甲供材料.ToString() select info.SCHJ).Sum(); //市场乙供材料 m_BaseResultValue.YGCL = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where info.YTLB == UseType.甲定乙供材料.ToString() select info.SCHJ).Sum(); //市场评标指定材料 m_BaseResultValue.PBZDCL = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where info.YTLB == UseType.评标指定材料.ToString() select info.SCHJ).Sum(); //市场暂定价材料 m_BaseResultValue.ZDJCL = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where info.YTLB == UseType.暂定价材料.ToString() select info.SCHJ).Sum(); }
/// <summary> /// 定额合价统计 /// </summary> /// <param name="table"></param> private void DEHJ(_SubheadingsQuantityUnitList list) { //定额人工费单价 m_BaseResultValue.DERGFDJ = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where _Constant.rg.Contains("'" + info.LB + "'") select info.DEHJ).Sum(); //定额材料费单价 m_BaseResultValue.DECLFDJ = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where _Constant.cl.Contains("'" + info.LB + "'") select info.DEHJ).Sum(); //定额机械费单价 m_BaseResultValue.DEJXFDJ = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where _Constant.jx.Contains("'" + info.LB + "'") select info.DEHJ).Sum(); //定额主材费单价 m_BaseResultValue.DEZCFDJ = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where _Constant.zc.Contains("'" + info.LB + "'") select info.DEHJ).Sum(); //定额设备费单价 m_BaseResultValue.DESBFDJ = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where _Constant.sb.Contains("'" + info.LB + "'") select info.DEHJ).Sum(); //定额甲供材料 m_BaseResultValue.DEJGCL = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where info.YTLB == UseType.甲供材料.ToString() select info.DEHJ).Sum(); //定额乙供材料 m_BaseResultValue.DEYGCL = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where info.YTLB == UseType.甲定乙供材料.ToString() select info.DEHJ).Sum(); //定额评标指定材料 m_BaseResultValue.DEPBZDCL = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where info.YTLB == UseType.评标指定材料.ToString() select info.DEHJ).Sum(); //定额暂定价材料 m_BaseResultValue.DEZDJCL = (from info in list.Cast <_SubheadingsQuantityUnitInfo>() where info.YTLB == UseType.暂定价材料.ToString() select info.DEHJ).Sum(); }
/// <summary> /// 计算百分号材料合计 /// </summary> /// <param name="p_list"></param> private void JSBFH(_SubheadingsQuantityUnitList p_list) { m_ResultValue.CLBFHHJ = 0m; m_ResultValue.JXBFHHJ = 0m; m_ResultValue.RGBFHHJ = 0m; _SubheadingsQuantityUnitInfo m_TSInfo = p_list.Cast <_SubheadingsQuantityUnitInfo>().Where(p => p.YSBH == "11705" && p.LB.Contains("%")).FirstOrDefault(); if (m_TSInfo != null) { m_ResultValue.CLBFHHJ += p_list.Cast <_SubheadingsQuantityUnitInfo>().Where(p => p.BH == "10088" || p.BH == "10087" || p.BH == "10544").Sum(p => p.SCDJ * p.XHL) / 100 * m_TSInfo.XHL; } IEnumerable <_SubheadingsQuantityUnitInfo> bfhlist = p_list.Cast <_SubheadingsQuantityUnitInfo>().Where(p => p.LB.Contains("%") && p.YSBH != "11705"); foreach (_SubheadingsQuantityUnitInfo item in bfhlist) { switch (item.LB) { case "材料%": m_ResultValue.CLBFHHJ += (p_list.Parent.GetAllQuantityUnit.Cast <_ObjectQuantityUnitInfo>().Where(p => p.LB == "材料").Sum(p => p.GetType() == typeof(_QuantityUnitComponentInfo) ? p.SCHJ * (p as _QuantityUnitComponentInfo).Parent.XHL : p.SCHJ) / 100 * item.XHL); break; case "机械%": m_ResultValue.JXBFHHJ += (p_list.Parent.GetAllQuantityUnit.Cast <_ObjectQuantityUnitInfo>().Where(p => p.LB == "机械").Sum(p => p.GetType() == typeof(_QuantityUnitComponentInfo) ? p.SCHJ * (p as _QuantityUnitComponentInfo).Parent.XHL : p.SCHJ) / 100 * item.XHL); break; case "人工%": m_ResultValue.RGBFHHJ += (p_list.Parent.GetAllQuantityUnit.Cast <_ObjectQuantityUnitInfo>().Where(p => p.LB == "人工").Sum(p => p.GetType() == typeof(_QuantityUnitComponentInfo) ? p.SCHJ * (p as _QuantityUnitComponentInfo).Parent.XHL : p.SCHJ) / 100 * item.XHL); break; default: break; } } m_ResultValue.RGFDJ += m_ResultValue.RGBFHHJ; m_ResultValue.CLFDJ += m_ResultValue.CLBFHHJ; m_ResultValue.JXFDJ += m_ResultValue.JXBFHHJ; m_ResultValue.HHJXFDJ += m_ResultValue.JXBFHHJ; }
/// <summary> /// 定额合价统计 /// </summary> /// <param name="table"></param> private void DEHJ(_SubheadingsQuantityUnitList list) { //定额人工费单价 m_ResultValue.DERGFDJ = list.Cast <_SubheadingsQuantityUnitInfo>().Where(p => _Constant.rg.Contains("'" + p.LB + "'")).Sum(p => p.DEDJ * p.XHL); //定额材料费单价 m_ResultValue.DECLFDJ = list.Cast <_SubheadingsQuantityUnitInfo>().Where(p => _Constant.cl.Contains("'" + p.LB + "'")).Sum(p => p.DEDJ * p.XHL); //定额机械费单价 m_ResultValue.DEJXFDJ = list.Cast <_SubheadingsQuantityUnitInfo>().Where(p => _Constant.jx.Contains("'" + p.LB + "'")).Sum(p => p.DEDJ * p.XHL); //定额主材费单价 m_ResultValue.DEZCFDJ = list.Cast <_SubheadingsQuantityUnitInfo>().Where(p => _Constant.zc.Contains("'" + p.LB + "'")).Sum(p => p.DEDJ * p.XHL); //定额设备费单价 m_ResultValue.DESBFDJ = list.Cast <_SubheadingsQuantityUnitInfo>().Where(p => _Constant.sb.Contains("'" + p.LB + "'")).Sum(p => p.DEDJ * p.XHL); //市场直接费单价 m_ResultValue.DEZJFDJ = m_ResultValue.DERGFDJ + m_ResultValue.DECLFDJ + m_ResultValue.DEJXFDJ + m_ResultValue.DESBFDJ + m_ResultValue.DEZCFDJ + m_ResultValue.FXRCJ; //定额甲供材料 m_ResultValue.DEJGCL = list.Parent.GetAllQuantityUnit.Cast <_ObjectQuantityUnitInfo>().Where(p => p.YTLB == UseType.甲供材料.ToString()).Sum(p => p.DEDJ * p.XHL); //定额乙供材料 m_ResultValue.DEYGCL = list.Parent.GetAllQuantityUnit.Cast <_ObjectQuantityUnitInfo>().Where(p => p.YTLB == UseType.甲定乙供材料.ToString()).Sum(p => p.DEDJ * p.XHL); //定额评标指定材料 m_ResultValue.DEPBZDCL = list.Parent.GetAllQuantityUnit.Cast <_ObjectQuantityUnitInfo>().Where(p => p.YTLB == UseType.评标指定材料.ToString()).Sum(p => p.DEDJ * p.XHL); //定额暂定价材料 m_ResultValue.DEZDJCL = list.Parent.GetAllQuantityUnit.Cast <_ObjectQuantityUnitInfo>().Where(p => p.YTLB == UseType.暂定价材料.ToString()).Sum(p => p.DEDJ * p.XHL); }