using System; using System.Collections.Generic; using System.Linq; using System.Text; using CY.Infrastructure.Common; namespace CY.BLL.Inquiry { /// /// 询价公共帮助类 /// public static class InquiryHelpBLL { #region 计算纸张单价 /// /// 计算纸张单价 /// /// 印刷尺寸 /// 克重 /// 砘价 /// public static decimal GetPaperPriceBySingle(string sizename, int weight, decimal price) { double widht = 0; double height = 0; double area = 0; double _price = price.ToDouble2().Value / 1000; double _weight = weight.ToDouble2().Value / 1000; decimal paperprice = 0; if (sizename.Contains("大") || sizename.Contains("条")) { widht = 0.889; height = 1.194; } else if (sizename.Contains("正") || sizename.Contains("小")) { widht = 0.787; height = 1.092; } area = widht * height; paperprice = (area * _weight * _price).ToDecimal2().Value; return paperprice; } #endregion #region 计算印工费 /// /// 计算印次(此方法针对2开机和4开机) /// /// 开数 /// 面数 /// 印刷数量 /// 类别名称 /// 是否勒口 /// 返回使用的机器ID /// equipmentId public static int GetImpressionCount(string sizeName,int driveNumber, string areaNumber, int printcount, int printTypeId, bool isLeMouth, ref int equipmentId) { //2开机印次 int Impression2 = 0; //4开机印次 int Impression4 = 0; //实际印次 int Impression = 0; if (printTypeId == 6) //书刊 { Impression2 = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 2 * 2).ToDecimal2().Value.JRoundInt(); Impression4 = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 4 * 2).ToDecimal2().Value.JRoundInt(); } else if (printTypeId == 25 || printTypeId == 23 || printTypeId == 21 || printTypeId == 22) { Impression2 = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 2).ToDecimal2().Value.JRoundInt(); Impression4 = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 4).ToDecimal2().Value.JRoundInt(); } else { if (areaNumber == "单面") { Impression2 = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 2).ToDecimal2().Value.JRoundInt(); Impression4 = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 4).ToDecimal2().Value.JRoundInt(); } else if (areaNumber == "双面") { Impression2 = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 2 * 2).ToDecimal2().Value.JRoundInt(); Impression4 = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 4 * 2).ToDecimal2().Value.JRoundInt(); } } #region 有勒口的印次增加50% if (isLeMouth) { Impression4 = (Impression4.ToDouble2().Value + Impression4.ToDouble2().Value / 2).ToDecimal2().Value.JRoundInt(); Impression2 = (Impression2.ToDouble2().Value + Impression2.ToDouble2().Value / 2).ToDecimal2().Value.JRoundInt(); } #endregion if (driveNumber == 1) { if (areaNumber == "双面") { Impression = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 2).ToDecimal2().Value.JRoundInt(); } else { Impression = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value)).ToDecimal2().Value.JRoundInt(); } equipmentId = 1;//二开机 } else if (driveNumber == 3) { if (areaNumber == "双面") { Impression = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value)*2).ToDecimal2().Value.JRoundInt(); } else { Impression = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value)).ToDecimal2().Value.JRoundInt(); } equipmentId = 1;//二开机 } else if (driveNumber == 6 && sizeName.Contains("大") && areaNumber == "双面") { Impression = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 2).ToDecimal2().Value.JRoundInt(); equipmentId = 1;//二开机 } else if (driveNumber == 4 && areaNumber == "双面") { //Impression = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 2).ToDecimal2().Value.JRoundInt(); Impression = printcount; equipmentId = 1;//二开机 } else if (driveNumber <= 3) { Impression = Impression2; equipmentId = 1;//二开机 } else { if (Impression2 <= 5000) { Impression = Impression4; equipmentId = 2;//四开机 } else { Impression = Impression2; equipmentId = 1;//二开机 } } if (Impression < 1000) { Impression = 1000; } return Impression; } /// /// 计算印次(此方法针对2开和8开单色机) /// /// /// /// /// /// public static int GetImpressionCount2(int driveNumber, string areaNumber, int printcount, int printTypeId, ref int equipmentId) { //2开机印次 int Impression2 = 0; //8开机印次 int Impression8 = 0; //实际印次 int Impression = 0; if (areaNumber == "单面") { Impression2 = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 2).ToDecimal2().Value.JRoundInt(); Impression8 = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 8).ToDecimal2().Value.JRoundInt(); } else if (areaNumber == "双面") { Impression2 = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 2 * 2).ToDecimal2().Value.JRoundInt(); Impression8 = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 8 * 2).ToDecimal2().Value.JRoundInt(); } if (Impression8 < 5000) { Impression = Impression8; equipmentId = 5;//8开单色机 } else { Impression = Impression2; equipmentId = 4;//2开单色机 } if (Impression < 1000) { Impression = 1000; } return Impression; } /// /// 计算印次(此方法针对2开和4开单色机) /// /// /// /// /// /// /// public static int GetImpressionCount3(int driveNumber, string areaNumber, int printcount, int printTypeId, ref int equipmentId) { //2开机印次 int Impression2 = 0; //4开机印次 int Impression4 = 0; //实际印次 int Impression = 0; if (areaNumber == "单面") { Impression2 = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 2).ToDecimal2().Value.JRoundInt(); Impression4 = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 4).ToDecimal2().Value.JRoundInt(); } else if (areaNumber == "双面") { Impression2 = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 2 * 2).ToDecimal2().Value.JRoundInt(); Impression4 = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 4 * 2).ToDecimal2().Value.JRoundInt(); } if (Impression2 < 5000) { Impression = Impression4; equipmentId = 6;//8开单色机 } else { Impression = Impression2; equipmentId = 4;//2开单色机 } if (Impression < 1000) { Impression = 1000; } return Impression; } /// /// /// 计算印次(此方法针对2开双面机、双色机) /// /// /// public static int GetImpressionCount4(int driveNumber, int printcount, int printTypeId, ref int equipmentId) { //实际印次 int Impression = 0; Impression = ((printcount.ToDouble2().Value / driveNumber.ToDouble2().Value) * 2).ToDecimal2().Value.JRoundInt(); equipmentId = 3; //2开双面机、双色机 if (Impression < 1000) { Impression = 1000; } return Impression; } #endregion } }