using System; using System.Collections.Generic; using System.Linq; using System.Web; using Estsh.Web.Dal; using System.Collections; using Estsh.Web.Util; using System.Data; using System.IO; using Estsh.Web.Models; /*************************************************************************************************** * * 作者:康庆 * * *************************************************************************************************/ namespace Estsh.Core.Services { /// /// 立体库计划导入模块业务类 /// public class PredictionOrderImportService { private PredictionOrderImportDal dal = new PredictionOrderImportDal(RemotingProxyProvider._remotingProxy); private Hashtable result = new Hashtable(); private const int PredictedPlan = 10;//预测计划 private const int CeremonialPlan = 20;//正式计划 private const int SPORADIC_OUT = 30; #region 公共方法 /// /// 读取采购订单文件并更新至数据库 /// /// 文件全路径 /// 登录用户信息 public Hashtable ReadExcelFile(Stream inputStream, int orderType, UserInfo user) { DataTable dt; //if (orderType == PredictedPlan) //{ dt = AsposeExcelTools.ExcelFileToDataTable(inputStream); //} //else //{ // dt = AsposeExcelTools.ExcelFileToDataTable(inputStream, true); //} if (dt == null || dt.Rows.Count <= 0) { result.Add("message", "Excel数据为空!"); result.Add("flag", "error"); } else { try { switch (orderType) { case PredictedPlan: //正式计划导入 if (CheckInput(dt, orderType)) { ImportPredictedPlanData(dt, user.empId); } break; case SPORADIC_OUT: //零星计划导入 if (LXCheckInput(dt, orderType)) { ImportLXPlanData(dt, user.empId); } break; } } catch (Exception e) { result.Clear(); result.Add("message", e.Message); result.Add("flag", "error"); } } return result; } /// /// 判断字符串是否为日期 /// /// /// public bool IsDate(string date) { try { DateTime.Parse(date); return true; } catch { return false; } } /// /// 判断字符串是否为月数 /// /// /// public bool IsMonth(string date) { try { if (!(date.Length == 6)) { return false; } date = date.Substring(4, 2); string[] monthList = { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12" }; if (monthList.Contains(date)) { return true; } else { return false; } } catch { return false; } } #endregion #region 预测计划导入 /// /// 检查待导入的数据 /// /// /// private bool CheckInput(DataTable dtCheck, int orderType) { for (int i = 2; i < dtCheck.Rows.Count; i++) { //string strOrderSeq = dtCheck.Rows[i]["Column2"].ToString(); string strModelType = dtCheck.Rows[i]["Column2"].ToString(); string strModel = dtCheck.Rows[i]["Column3"].ToString(); int strQty = 0; try { strQty = Convert.ToInt32(dtCheck.Rows[i]["Column5"].ToString()); } catch { strQty = 0; } DataTable model_name = dal.getModelname(strModelType, strModel); if (null == model_name || model_name.Rows.Count <= 0) { result.Add("message", string.Format("第" + i + 1 + "行," + "配置名称{0}不存在,请确认基础数据!", strModel)); result.Add("flag", "error"); return false; } if (strQty <= 0) { result.Add("message", "第" + i + 1 + "行,数量填写错误!"); result.Add("flag", "error"); return false; } } return true; } /// /// 检查待导入的数据 /// /// /// private bool LXCheckInput(DataTable dtCheck, int orderType) { for (int i = 2; i < dtCheck.Rows.Count; i++) { //string strOrderSeq = dtCheck.Rows[i]["Column2"].ToString(); string strPartNo = dtCheck.Rows[i]["Column2"].ToString(); int strQty = 0; try { strQty = Convert.ToInt32(dtCheck.Rows[i]["Column4"].ToString()); } catch { strQty = 0; } DataTable listPartNo = dal.getPartNo(strPartNo); if (null == listPartNo || listPartNo.Rows.Count <= 0) { result.Add("message", string.Format("第" + i + 1 + "行," + "总成零件号{0}不存在,请确认基础数据!", strPartNo)); result.Add("flag", "error"); return false; } if (strQty <= 0) { result.Add("message", "第" + i + 1 + "行,数量填写错误!"); result.Add("flag", "error"); return false; } } return true; } #endregion #region 计划导入 /// /// 导入正式计划 /// /// /// /// /// private int ImportPredictedPlanData(DataTable dtFile, int empId) { try { Hashtable insertHt = new Hashtable(); List insertList = new List(); List sqlList = new List(); List sqlDetailList = new List(); for (int i = 2; i < dtFile.Rows.Count; i++) { insertHt = new Hashtable(); int strQty = Convert.ToInt32(dtFile.Rows[i]["Column5"].ToString()); string strModelType = dtFile.Rows[i]["Column2"].ToString(); string strModel = dtFile.Rows[i]["Column3"].ToString(); //dal.PredictionOrderImport(strModelType, strModel, strQty); } result.Add("message", string.Format("导入成功!")); result.Add("flag", "OK"); dal.ExecuteSqlTransaction(sqlList, insertList); } catch (Exception ex) { result.Add("message", ex.Message); result.Add("flag", "error"); return 0; } return 1; } /// /// 导入零星计划 /// /// /// /// /// private int ImportLXPlanData(DataTable dtFile, int empId) { try { Hashtable insertHt = new Hashtable(); List insertList = new List(); List sqlList = new List(); List sqlDetailList = new List(); string OrderNo = dal.getOrderNo(); if (OrderNo == "") { result.Add("message", "单号获取失败!"); result.Add("flag", "error"); } for (int i = 2; i < dtFile.Rows.Count; i++) { insertHt = new Hashtable(); int strQty = Convert.ToInt32(dtFile.Rows[i]["Column4"].ToString()); string strPartNo = dtFile.Rows[i]["Column2"].ToString(); dal.LXOrderImport(OrderNo, strPartNo, strQty, empId); } result.Add("message", string.Format("导入成功!")); result.Add("flag", "OK"); dal.ExecuteSqlTransaction(sqlList, insertList); } catch (Exception ex) { result.Add("message", ex.Message); result.Add("flag", "error"); return 0; } return 1; } #endregion } }