using System; using System.Collections.Generic; using System.Linq; using System.Web; using Estsh.Web.Util; using System.Data; using Estsh.Web.Dal; using System.Collections; using System.IO; using NPOI.HSSF.UserModel; using Com.Estsh.MES.App; using System.Text; using Aspose.Cells; using DbCommon; /*************************************************************************************************** * * 作者:王勇 * * *************************************************************************************************/ namespace Estsh.Core.Services { /// /// /// public class StockOrderPrintService { private StockOrderPrintDal dal = new StockOrderPrintDal(RemotingProxyProvider._remotingProxy); #region 目视单打印 public Hashtable getStockOrderListByPage(Pager pager, String direction, String sort, string cbCustPDLine, string startOrder_id, string endOrder_id) { string str = ""; if (!(string.IsNullOrEmpty(startOrder_id) && string.IsNullOrEmpty(endOrder_id))) { //str = " AND a.order_seq >='" + startOrder_id + "' and a.order_seq<='" + endOrder_id + "' "; } else { str = " and a.enabled='Y' and a.count=0 "; } Hashtable result = new Hashtable(); result = dal.getStockOrderListByPage(pager.pageSize, pager.pageNo, cbCustPDLine, str); return result; } public Hashtable getStockOrderDetailByPage(Pager pager, String direction, int order_id) { Hashtable result = new Hashtable(); result = dal.getStockOrderDetailByPage(pager.pageSize, pager.pageNo, order_id); return result; } /// /// /// /// /// public Hashtable updatePrintData(string order_id) { Hashtable result = new Hashtable(); result = this.dal.updatePrintData(order_id); return result; } /// /// 获取客户产线列表 /// /// public ArrayList GetCustPDLine() { Hashtable result = new Hashtable(); DataTable dt = dal.GetCustPDLine(); return DataTypeConvert.NewObject.DataTableToArrayList(dt); } public string getShipNumber(string cbCustPDLine) { Hashtable result = new Hashtable(); string str = dal.getShipNumber(cbCustPDLine); return str; } //public string getNumber(string tray_no) //{ // Hashtable result = new Hashtable(); // string str = dal.getNumber(tray_no); // return str; //} public DataTable updatePrintData_2(string order_id, string cbCustPDLine) { DataTable dt = new DataTable(); dt = this.dal.updatePrintData_2(order_id, cbCustPDLine); return dt; } public DataTable getForPintData(string order_id, string cbCustPDLine) { DataTable dt = new DataTable(); dt = this.dal.getForPintData(order_id, cbCustPDLine); return dt; } public DataTable getTopOrderBy(string step, string cbCustPDLine) { DataTable dt = new DataTable(); dt = this.dal.getTopOrderBy(step, cbCustPDLine); return dt; } public DataTable getOrderByTraySeq(string traySeq, string cbCustPDLine) { DataTable dt = new DataTable(); dt = this.dal.getOrderByTraySeq(traySeq, cbCustPDLine); return dt; } public string getShipNo(string shipNo) { string _shipNo = ""; _shipNo = this.dal.getShipNo(shipNo); return _shipNo; } /// /// 读取采购订单文件并更新至数据库 /// /// 文件全路径 /// 登录用户信息 public Hashtable ReadExcelFile(Stream inputStream, string cbCustPDLine) { try { Hashtable result = new Hashtable(); List SqlStrings = new List(); List Parameters = new List(); Hashtable Params = new Hashtable(); Hashtable Cache = new Hashtable(); DataTable dt = new DataTable(); dt = AsposeExcelTools.ExcelFileToDataTable(inputStream); //StreamReader sr = new StreamReader(inputStream); //string srStr = sr.ReadToEnd(); //DataSet ds = HtmlTableParser.ParseHtmlTable(srStr, 1); //dt = ds.Tables[0]; //判断EXCEL是否存在数据 if (dt.Rows.Count <= 0) { result.Add("message", "导入数据为空,请重新导入!"); result.Add("flag", "error"); return result; } //excel排序 if (cbCustPDLine == "1008" || cbCustPDLine == "1007" || cbCustPDLine == "1001" || cbCustPDLine == "1010") { dt.Rows[0].Delete(); DataView dv = new DataView(dt); dv.Sort = "Column1"; dt = dv.ToTable(); } StringBuilder ErrorMessage = new StringBuilder(1024); #region 本田通用 if (Convert.ToInt32(cbCustPDLine) == 1008 || Convert.ToInt32(cbCustPDLine) == 1007 || Convert.ToInt32(cbCustPDLine) == 1001 || Convert.ToInt32(cbCustPDLine) == 1010) { //验证数据 for (int i = 0; i < dt.Rows.Count ; i++) { //配置ID int part_id = this.dal.GetPartID(dt.Rows[i]["Column2"].ToString()); if (part_id <= 0) { result.Add("message", dt.Rows[i]["Column2"].ToString() + ":配置信息未维护。"); result.Add("flag", "FAIL"); return result; } //order_seq string orderSeq = dt.Rows[i]["Column1"].ToString(); //VIN string vin = dt.Rows[i]["Column1"].ToString(); //数量 int count = Convert.ToInt32(dt.Rows[i]["Column3"]); //上线时间 //string dataYMD = dt.Rows[i]["Column5"].ToString(); //string dataHMS = dt.Rows[i]["Column6"].ToString(); //string dataYMDHMS = dataYMD + " " + dataHMS; //car_no string carNo = dt.Rows[i]["Column1"].ToString(); //判断流水号是否存在 string strOrderSeq = this.dal.ifOrderSeq(orderSeq, cbCustPDLine); if (string.IsNullOrEmpty(strOrderSeq)) { //判断VIN号是否存在 bool Bool = this.dal.ifVin(vin, cbCustPDLine); if (Bool == false) { //查询客户产线 int custPdlineId = this.dal.GetCustPdlineId(part_id); if (custPdlineId <= 0) { result.Add("message", dt.Rows[i]["Column2"].ToString() + ":配置未查询到对应产线。"); result.Add("flag", "FAIL"); return result; } for (int w = 0; w < count; w++) { StringBuilder strSql = new StringBuilder(); strSql.Append(" INSERT INTO dbo.g_order "); strSql.Append(" ( model_part_id ,order_seq ,cust_pdline ,status ,car_no ,vin ,count ,enabled )"); strSql.Append(" VALUES ( " + part_id + ",'" + orderSeq + "'," + custPdlineId + ",0,'" + carNo + "','" + vin + "',0,'Y' )"); SqlStrings.Add(strSql.ToString()); Parameters.Add(Params); if (dal.InsertData(SqlStrings, Parameters)) { //查询所以总成信息 DataTable dt_detail = this.dal.GetDetail(part_id); //查询配置是否对应前后排 DataTable dtLocationType = new DataTable(); dtLocationType = this.dal.getLocationType(part_id); if (dtLocationType.Rows.Count <= 0) { result.Add("message", dt.Rows[i]["Column2"].ToString() + ":未维护座椅位置。"); result.Add("flag", "FAIL"); return result; } SqlStrings = new List(); Parameters = new List(); strSql = new StringBuilder(); int orderId = this.dal.GetOrderId(custPdlineId); //记录后排数量 int locationR = 0; for (int z = 0; z < dt_detail.Rows.Count; z++) { if (dt_detail.Rows[z]["part_location"].ToString() == "01") { strSql = new StringBuilder(); strSql.Append(" INSERT INTO dbo.g_order_detail"); strSql.Append(" ( order_id,status ,enabled,part_type,on_line_time)"); strSql.Append(" VALUES (" + orderId + ",0,'Y','PT11',(SELECT dbo.get_ymd()+' '+dbo.get_hms()) )"); SqlStrings.Add(strSql.ToString()); Parameters.Add(Params); if (dal.InsertData(SqlStrings, Parameters)) { SqlStrings = new List(); Parameters = new List(); strSql = new StringBuilder(); DataTable dtDetailLocation = this.dal.GetDetail(part_id, "01"); int orderDetailId = this.dal.getOrderDetailId(custPdlineId); for (int j = 0; j < dtDetailLocation.Rows.Count; j++) { //零件号 strSql = new StringBuilder(); string part_no = dtDetailLocation.Rows[j]["part_no"].ToString(); string arrangeFlag = dtDetailLocation.Rows[j]["arrange_flag"].ToString(); strSql.Append(" INSERT INTO dbo.g_order_items"); strSql.Append(" ( order_id ,order_detail_id ,part_no ,status ,enabled )"); strSql.Append(" VALUES (" + orderId + "," + orderDetailId + ",'" + part_no + "',0,'Y')"); SqlStrings.Add(strSql.ToString()); Parameters.Add(Params); dal.InsertData(SqlStrings, Parameters); SqlStrings = new List(); Parameters = new List(); strSql = new StringBuilder(); //插入失败后删除主表对应数据 } } } if (dt_detail.Rows[z]["part_location"].ToString() == "02") { strSql = new StringBuilder(); strSql.Append(" INSERT INTO dbo.g_order_detail"); strSql.Append(" ( order_id,status ,enabled,part_type,on_line_time)"); strSql.Append(" VALUES (" + orderId + ",0,'Y','PT12',(SELECT dbo.get_ymd()+' '+dbo.get_hms()) )"); SqlStrings.Add(strSql.ToString()); Parameters.Add(Params); if (dal.InsertData(SqlStrings, Parameters)) { SqlStrings = new List(); Parameters = new List(); strSql = new StringBuilder(); DataTable dtDetailLocation = this.dal.GetDetail(part_id, "02"); int orderDetailId = this.dal.getOrderDetailId(custPdlineId); for (int j = 0; j < dtDetailLocation.Rows.Count; j++) { //零件号 strSql = new StringBuilder(); string part_no = dtDetailLocation.Rows[j]["part_no"].ToString(); string arrangeFlag = dtDetailLocation.Rows[j]["arrange_flag"].ToString(); strSql.Append(" INSERT INTO dbo.g_order_items"); strSql.Append(" ( order_id ,order_detail_id ,part_no ,status ,enabled )"); strSql.Append(" VALUES (" + orderId + "," + orderDetailId + ",'" + part_no + "',0,'Y')"); SqlStrings.Add(strSql.ToString()); Parameters.Add(Params); dal.InsertData(SqlStrings, Parameters); SqlStrings = new List(); Parameters = new List(); strSql = new StringBuilder(); //插入失败后删除主表对应数据 } } } if (dt_detail.Rows[z]["arrange_flag"].ToString() == "R" && locationR == 0) { locationR++; strSql = new StringBuilder(); strSql.Append(" INSERT INTO dbo.g_order_detail"); strSql.Append(" ( order_id,status ,enabled,part_type,on_line_time)"); strSql.Append(" VALUES (" + orderId + ",0,'Y','PT20',(SELECT dbo.get_ymd()+' '+dbo.get_hms()) )"); SqlStrings.Add(strSql.ToString()); Parameters.Add(Params); if (dal.InsertData(SqlStrings, Parameters)) { SqlStrings = new List(); Parameters = new List(); strSql = new StringBuilder(); DataTable dtDetailLocation = this.dal.GetDetail(part_id, "03"); int orderDetailId = this.dal.getOrderDetailId(custPdlineId); for (int j = 0; j < dtDetailLocation.Rows.Count; j++) { //零件号 strSql = new StringBuilder(); string part_no = dtDetailLocation.Rows[j]["part_no"].ToString(); string arrangeFlag = dtDetailLocation.Rows[j]["arrange_flag"].ToString(); strSql.Append(" INSERT INTO dbo.g_order_items"); strSql.Append(" ( order_id ,order_detail_id ,part_no ,status ,enabled )"); strSql.Append(" VALUES (" + orderId + "," + orderDetailId + ",'" + part_no + "',0,'Y')"); SqlStrings.Add(strSql.ToString()); Parameters.Add(Params); dal.InsertData(SqlStrings, Parameters); SqlStrings = new List(); Parameters = new List(); strSql = new StringBuilder(); //插入失败后删除主表对应数据 } } } } SqlStrings = new List(); Parameters = new List(); } else { result.Add("message", "导入失败"); result.Add("flag", "FAIL"); return result; } } } } } result.Add("message", "导入成功"); result.Add("flag", "OK"); return result; } #endregion result.Add("message", "导入失败"); result.Add("flag", "error"); return result; } catch (Exception ex) { Hashtable result = new Hashtable(); result.Add("message", "导入失败"); result.Add("flag", "error"); return result; } } public int UpdateCount(string order_id) { int count = this.dal.UpdateCount(order_id); return count; } public int UpdatePrintNumber(string printNumber, string cbCustPDLine) { int count = this.dal.UpdatePrintNumber(printNumber, cbCustPDLine); return count; } public int updateTrayNo(string HouPaiZhengYiNo, string FuJiaShiNo, string ZhengJiaShiNo, string order_id, string sum) { int count = this.dal.updateTrayNo(HouPaiZhengYiNo, FuJiaShiNo, ZhengJiaShiNo, order_id, sum); return count; } #endregion } }