using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Estsh.Web.Dal;
using Estsh.Web.Util;
using System.Collections;
using System.Data;
using System.IO;
using System.Text;
namespace Estsh.Core.Services
{
/***************************************************************************************************
*
* 作者:张茂忠
* 创建时间:2013.05.13
* 描述:零件关键数据Service层
* 修改日志:
*
*
* *************************************************************************************************/
public class EDIKeyDataDefineService
{
EDIKeyDataDefineDal dal = new EDIKeyDataDefineDal(RemotingProxyProvider._remotingProxy);
/// 根据查询条件得出结果集
///
/// 查询条件
/// 符合条件的结果集
//public ArrayList GetQuery(string aWhere, ref DataTable dt)
//{
// return dal.GetQuery(aWhere, ref dt);
//}
///
/// 根据分页条件获取分页菜单数据
///
///
///
///
///
///
public Hashtable GetQuery(String where, Pager pager, String direction, String sort)
{
Hashtable result = new Hashtable();
result = dal.GetQuery(where, pager.pageSize, pager.pageNo);
return result;
}
///
/// 判断数据是否存在
///
/// 零件ID
/// 制程ID
/// 关键数据ID
///
public bool GetEDICSN(string CSN)
{
return dal.GetEDICSN(CSN);
}
public bool GetEDIVIN(string VIN)
{
return dal.GetEDIVIN(VIN);
}
public bool GetEDIBillId(string BillID)
{
return dal.GetEDIBillId(BillID);
}
/////
///// 获取零件号信息
/////
/////
//public ArrayList GetPartID()
//{
// return dal.GetPartID();
//}
/////
///// 获取制程信息
/////
/////
//public ArrayList GetProcessID()
//{
// return dal.GetProcessID();
//}
public ArrayList GetModelID()
{
return dal.GetModelID();
}
///
/// 获取关键数据信息
///
///
public ArrayList GetKeyDataID()
{
return dal.GetKeyDataID();
}
///
///更改可用状态
///
/// true or false
/// 当前行
///
public bool ChangeDetailStatus(bool status, DataRow dr)
{
return dal.ChangeDetailStatus(status, dr);
}
public int DeleteDetail(string csn)
{
return dal.DeleteDetail(csn);
}
public DataTable GetRow(string aWhere)
{
return dal.GetRow(aWhere);
}
public string insert(string csn, string vin, string billid, string modelname,string isProduction, string isShipping)
{
return dal.inEdiData(csn, vin, billid, modelname, isProduction, isShipping);
}
public string UpdateKeyData(string csn, string vin, string billID, string model_id, string isProduction, string isShipping)
{
return dal.UpdateKeyData(csn, vin, billID, model_id, isProduction, isShipping);
}
public DataTable GetEDIData(string aWhere, Pager pager, ref int totalCount)
{
return dal.GetEDIData(aWhere, pager, ref totalCount);
}
/////
///// 根据分页条件获取分页菜单数据
/////
///// 查询条件
/////
///// 排序方式
///// 排序字段
/////
//public DataTable getTableListByPage(String where , String enabled_search, Pager pager, String direction, String sort, Boolean isPage)
//{
// DataTable result = null;
// int rowCount = 0;
// if (isPage)
// {
// rowCount = pager.pageSize;
// }
// else
// {
// rowCount = pager.pageSize;
// }
// result = dal.getListByPage(rowCount, pager.pageNo, where, sort + " ");
// return result;
//}
///
/// 读取文件并更新至数据库
///
/// 文件全路径
/// 登录用户信息
public Hashtable ReadExcelFile(Stream inputStream, int userId)
{
Hashtable result = new Hashtable();
Hashtable Cache = new Hashtable();
DataTable dt = AsposeExcelTools.ExcelFileToDataTable(inputStream);
dt.Rows[0].Delete();
if (dt == null)
{
result.Add("message", "导入数据为空,请重新导入");
result.Add("flag", "error");
return result;
}
string csn = string.Empty;
string vin = string.Empty;
string billid = string.Empty;
string model_name = string.Empty;
string isProduction = string.Empty;
string isShipping = string.Empty;
StringBuilder ErrorMessage = new StringBuilder(1024);
// 验证数据
try
{
for (int i = 0; i < dt.Rows.Count; i++)
{
csn = dt.Rows[i][0].ToString().Trim();
// 跳过空行
if (string.IsNullOrEmpty(csn))
{
continue;
}
// 判断零件号是否存在
//int partID = dal.GetCSN(csn);
//if (partID != 0)
//{
// ErrorMessage.Append("CSN: " + csn + " 已存在!" + Environment.NewLine);
//}
// 判断制程名称是否存在
vin = dt.Rows[i][1].ToString().Trim();
int processID = dal.GetVIN(vin);
if (processID != 0)
{
ErrorMessage.Append("vin: " + vin + " 已存在!" + Environment.NewLine);
}
// 判断工位名称是否存在
billid = dt.Rows[i][2].ToString().Trim();
int terminalID = dal.GetBillID(billid);
if (terminalID != 0)
{
ErrorMessage.Append("排序单号: " + billid + " 已存在!" + Environment.NewLine);
}
// 判断关键数据名称是否存在
model_name = dt.Rows[i][3].ToString().Trim();
int ModelID = dal.GetModel(model_name);
if (ModelID == 0)
{
ErrorMessage.Append("配置信息: " + model_name + " 不存在!" + Environment.NewLine);
}
}
}
catch
{
ErrorMessage.Append("数据检查失败,数据中不能有公式或宏等,或用格式刷把所有数据格式同一后再试!");
}
if (ErrorMessage.Length != 0)
{
result.Add("message", ErrorMessage.ToString());
result.Add("flag", "error");
return result;
}
for (int j = 0; j < dt.Rows.Count; j++)
{
csn= dt.Rows[j][0].ToString().Trim();
vin=dt.Rows[j][1].ToString().Trim();
billid=dt.Rows[j][2].ToString().Trim();
model_name=dt.Rows[j][3].ToString().Trim();
isProduction = dt.Rows[j][4].ToString().Trim();
isShipping = dt.Rows[j][5].ToString().Trim();
int mode_ID=dal.GetModel(model_name);
try
{
dal.inEdiData(csn, vin, billid, mode_ID.ToString(), isProduction,isShipping);
}
catch
{
result.Add("message", "导入失败,请检查数据完整性!");
result.Add("flag", "error");
}
}
result.Add("message", "导入成功");
result.Add("flag", "error");
return result;
}
}
}