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#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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
}
}