You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

313 lines
10 KiB
C#

2 years ago
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
}
}