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 Estsh.Web.Models; namespace Estsh.Core.Services { public class ProductionOrderPdlineFirstEmergencyReleaseService { private ProductionOrderPdlineFirstEmergencyReleaseDal dal = new ProductionOrderPdlineFirstEmergencyReleaseDal(RemotingProxyProvider._remotingProxy); /// /// 获取客户产线列表 /// /// public ArrayList GetCustPDLine() { Hashtable result = new Hashtable(); DataTable dt = dal.GetCustPDLine(); return DataTypeConvert.NewObject.DataTableToArrayList(dt); } /// /// 获取配置名称 /// /// //public ArrayList GetModelName() //{ // Hashtable result = new Hashtable(); // DataTable dt = dal.GetModelName(); // return DataTypeConvert.NewObject.DataTableToArrayList(dt); //} /// /// 根据客户产线查询车型 /// /// public ArrayList GetMode_type(string CustPDLine) { Hashtable result = new Hashtable(); DataTable dt = dal.GetMode_type(CustPDLine); return DataTypeConvert.NewObject.DataTableToArrayList(dt); } public ArrayList GetPdline(string CustPDLine) { Hashtable result = new Hashtable(); DataTable dt = dal.GetPdline(CustPDLine); return DataTypeConvert.NewObject.DataTableToArrayList(dt); } public ArrayList GetStage(string pdlineId) { Hashtable result = new Hashtable(); DataTable dt = dal.GetStage(pdlineId); return DataTypeConvert.NewObject.DataTableToArrayList(dt); } /// /// 根据车型编号查询座椅配置 /// /// public ArrayList GetModelList(int ModelType) { Hashtable result = new Hashtable(); DataTable dt = dal.GetModelList(ModelType); return DataTypeConvert.NewObject.DataTableToArrayList(dt); } /// /// 获取班次 /// /// public ArrayList Getshift() { Hashtable result = new Hashtable(); DataTable dt = dal.Getshift(); return DataTypeConvert.NewObject.DataTableToArrayList(dt); } /// /// 获取生产类型 /// /// public ArrayList GetProdType() { Hashtable result = new Hashtable(); DataTable dt = dal.GetProdType(); return DataTypeConvert.NewObject.DataTableToArrayList(dt); } /// /// 根据配置编号获取总成清单 /// /// 配置编号 /// 总成清单 public ArrayList GetBomDetail(int modelID, string stageId) { Hashtable result = new Hashtable(); DataTable dt = dal.GetBomDetail(modelID, stageId); return DataTypeConvert.NewObject.DataTableToArrayList(dt); } /// /// 根据配置编号获取总成清单 /// /// 配置编号 /// 总成清单 public DataTable GetBomDetailTable(int modelID) { DataTable dt = dal.GetBomDetailTable(modelID); return dt; } //库存插单保存按钮 public bool isExist(string order_no) { return dal.isExist(order_no); } //加载单据编号 public string GetOrderNo(string stockOrder, string p) { return dal.GetOrderNo(stockOrder, p); } public bool Insert_g_stock_order(int model_type_id, int model_id, string order_no, string cust_pdline, int shift_id, int qty, string type, string document_data, int stageId) { return dal.Insert_g_stock_order(model_type_id, model_id, order_no, cust_pdline, shift_id, qty, type, document_data, stageId); } public bool Insert_g_stock_order_detail(string order_no, string part_id) { return dal.Insert_g_stock_order_detail(order_no, part_id); } /// /// 调用存储过程 dbo.sys_release_stock_order 释放生产指令 /// /// public string ReleaseStockOrder(string order_no, string stageId) { return dal.ReleaseStockOrder(order_no, stageId); } /// /// 调用存储过程 dbo.sys_assign_stock_order 分配虚拟料架 /// /// public string AssignStockOrder(string custPDLine) { return dal.AssignStockOrder(custPDLine); } /// /// 获取要打印的条码数据(前排) /// /// public ArrayList GetSN(string orderNo) { Hashtable result = new Hashtable(); DataTable dt = dal.GetSN(orderNo); return DataTypeConvert.NewObject.DataTableToArrayList(dt); } /// /// 更新条码的打印状态 /// /// 条码 /// 是否成功 //public bool UpdateSNPrintStatus(string serialNumber) //{ // return dal.UpdateSNPrintStatus(serialNumber); //} /// /// 获取要打印的条码数据(后排) /// /// public ArrayList GetBackSN(string orderNo) { Hashtable result = new Hashtable(); DataTable dt = dal.GetBackSN(orderNo); return DataTypeConvert.NewObject.DataTableToArrayList(dt); } /// /// 初始化全局的静态变量 /// /// public string TrayPagePrintCount(string param) { return dal.TrayPagePrintCount(param); } /////////////////////////////////////////////////////////////////////////////////////////////////// //条码补打 /// /// 获取补打信息 /// /// 过程条码 OR 合格证条码 /// public ArrayList GetReprintDataBySN(string type, string serialNumber, int count, bool isOrderByInLineTime) { Hashtable result = new Hashtable(); DataTable dt = dal.GetReprintDataBySN(type, serialNumber, count, isOrderByInLineTime); return DataTypeConvert.NewObject.DataTableToArrayList(dt); } /// /// 更新条码的补打状态 /// /// 条码 /// 是否更新成功 public bool UpdateSNReprintStatus(string serialNumber) { return dal.UpdateSNReprintStatus(serialNumber); } /// /// 获取要 打印过程条码 信息 /// /// //public void PrintSerialNumber(string serialNumber) public ArrayList PrintSerialNumber(string serialNumber) { Hashtable result = new Hashtable(); DataTable dt = dal.PrintSerialNumber(serialNumber); return DataTypeConvert.NewObject.DataTableToArrayList(dt); } /// /// 根据配置编号获取过程条码打印的张数 /// public int GetModelBarcodeCount(string serialNumber) { return dal.GetModelBarcodeCount(serialNumber); } /// /// 更新条码的打印状态 /// /// 条码 /// 是否成功 public bool UpdateSNPrintStatus(string serialNumber) { return dal.UpdateSNPrintStatus(serialNumber); } // 打印合格证 /// /// 根据配置编号获取合格证条码打印的张数 /// public int GetModelQACount(string serialNumber) { return dal.GetModelQACount(serialNumber); } /// /// 根据零件号查询零件ID /// public int getPartId(string partNo) { return dal.getPartId(partNo); } //打印后排的的合格证条码 /// /// 根据条码获取对应后排条码的打印信息 /// /// 条码 /// 后排条码的打印信息 public ArrayList GetBackSNs(string serialNumber) { Hashtable result = new Hashtable(); DataTable dt = dal.GetBackSNs(serialNumber); return DataTypeConvert.NewObject.DataTableToArrayList(dt); } /// /// 读取采购订单文件并更新至数据库 /// /// 文件全路径 /// 登录用户信息 public Hashtable ReadExcelFile(Stream inputStream, int userId) { Hashtable result = new Hashtable(); try { Hashtable Cache = new Hashtable(); DataTable dt = AsposeExcelTools.ExcelFileToDataTable(inputStream); DataView dv = new DataView(dt); //去除第一行&重新排序 dv.AllowDelete = true; dv[0].Delete(); //dv.Sort = "Column1"; dt = dv.ToTable(); StringBuilder ErrorMessage = new StringBuilder(1024); // 验证数据 for (int i = 0; i < dt.Rows.Count; i++) { if (i == 13207) { string a = i.ToString(); } if (string.IsNullOrEmpty(dt.Rows[i][0].ToString()) || string.IsNullOrEmpty(dt.Rows[i][2].ToString()) || string.IsNullOrEmpty(dt.Rows[i][3].ToString()) || string.IsNullOrEmpty(dt.Rows[i][4].ToString()) || string.IsNullOrEmpty(dt.Rows[i][5].ToString()) || string.IsNullOrEmpty(dt.Rows[i][6].ToString()) || string.IsNullOrEmpty(dt.Rows[i][7].ToString())) { ErrorMessage.Append("行" + (i + 1).ToString() + ":信息不能为空!" + Environment.NewLine); } else { //零件号查询 string partNo = dt.Rows[i][4].ToString(); int partNoId = dal.GetPartID(partNo); if (partNoId <= 0) { ErrorMessage.Append("配置零件号“" + partNo + "” 不存在!" + Environment.NewLine); } ////配置名称查询 //string model_name = dt.Rows[i][0].ToString(); //int model_id = dal.GetModelName(model_name); //if (string.IsNullOrEmpty(model_name.ToString())) //{ // ErrorMessage.Append("配置描述 “" + model_id + "” 不存在!" + Environment.NewLine); //} //客户产线查询 string cust_pdline = dt.Rows[i][0].ToString(); string cust_pdline_name = dal.GetCustPdline(cust_pdline); if (string.IsNullOrEmpty(cust_pdline_name.ToString())) { ErrorMessage.Append("客户编号 “" + cust_pdline + "” 不存在!" + Environment.NewLine); } //班次查询 string shiftName = dt.Rows[i][2].ToString(); int shiftId = dal.GetShiftId(shiftName); if (shiftId <= 0) { ErrorMessage.Append("班次“" + shiftName + "” 不存在!" + Environment.NewLine); } //生产类型查询 string ProdType = dt.Rows[i][6].ToString(); int ProdTypeId = dal.GetProdTypeId(ProdType); if (ProdTypeId <= 0) { ErrorMessage.Append("生产类型“" + ProdType + "” 不存在!" + Environment.NewLine); } //零件和客户产线关系 int custPdlinePart = dal.GetCustPdlinePart(partNo, cust_pdline); if (custPdlinePart <= 0) { ErrorMessage.Append("行" + (i + 1).ToString() + ":客户与配置零件号对应关系不正确!" + Environment.NewLine); } //零件和客户产线关系 string orderData = dt.Rows[i][3].ToString(); string batchNumber = dt.Rows[i][7].ToString(); int ifExist = dal.GetOrderNo(partNoId.ToString(), cust_pdline_name, orderData, batchNumber, shiftId.ToString(), ProdType); if (ifExist > 0) { ErrorMessage.Append("行" + (i + 1).ToString() + ":数据已导入!" + Environment.NewLine); } } } if (dt == null) { result.Add("message", "导入数据为空,请重新导入"); result.Add("flag", "error"); return result; } // 校验数据时发生错误 if (ErrorMessage.Length != 0) { result.Add("message", ErrorMessage.ToString()); result.Add("flag", "error"); return result; } for (int i = 0; i < dt.Rows.Count; i++) { string orderNo = dal.GetOrderNo("StockOrder", "A"); if (i == 13207) { string a = i.ToString(); } string documentData = dt.Rows[i][3].ToString(); int qty = Convert.ToInt32(dt.Rows[i][5].ToString()); string shiftName = dt.Rows[i][2].ToString(); int shiftId = dal.GetShiftId(shiftName); string ProdType = dt.Rows[i][6].ToString(); string partNo = dt.Rows[i][4].ToString(); string batchNumber = dt.Rows[i][7].ToString(); dal.ReleaseStockOrderImport(orderNo, partNo, shiftId, documentData, qty, ProdType,batchNumber, userId); } result.Add("message", "导入成功"); result.Add("flag", "error"); return result; } catch (Exception ex) { result.Add("message", "导入失败"); result.Add("flag", "error"); return result; } } /// /// 根据分页条件获取分页菜单数据 /// /// /// /// /// /// public Hashtable getProductionOrderListByPage(Pager pager, String direction, String sort, string stageId) { Hashtable result = new Hashtable(); String orderBy = " c.seq "; result = dal.getProductionOrderListByPage(pager.pageSize, pager.pageNo, orderBy, stageId); return result; } } }