|
|
|
|
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
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 立体库计划导入模块业务类
|
|
|
|
|
/// </summary>
|
|
|
|
|
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 公共方法
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 读取采购订单文件并更新至数据库
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="inputStream">文件全路径</param>
|
|
|
|
|
/// <param name="userInfo">登录用户信息</param>
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 判断字符串是否为日期
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="date"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public bool IsDate(string date)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
DateTime.Parse(date);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 判断字符串是否为月数
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="date"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
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 预测计划导入
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 检查待导入的数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="dtCheck"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 检查待导入的数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="dtCheck"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
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 计划导入
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 导入正式计划
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="dtFile"></param>
|
|
|
|
|
/// <param name="empId"></param>
|
|
|
|
|
/// <param name="orderType"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
private int ImportPredictedPlanData(DataTable dtFile, int empId)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Hashtable insertHt = new Hashtable();
|
|
|
|
|
List<Hashtable> insertList = new List<Hashtable>();
|
|
|
|
|
List<string> sqlList = new List<string>();
|
|
|
|
|
List<string> sqlDetailList = new List<string>();
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 导入零星计划
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="dtFile"></param>
|
|
|
|
|
/// <param name="empId"></param>
|
|
|
|
|
/// <param name="orderType"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
private int ImportLXPlanData(DataTable dtFile, int empId)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Hashtable insertHt = new Hashtable();
|
|
|
|
|
List<Hashtable> insertList = new List<Hashtable>();
|
|
|
|
|
List<string> sqlList = new List<string>();
|
|
|
|
|
List<string> sqlDetailList = new List<string>();
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|