using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Estsh.Web.Util;
using System.Data;
using Estsh.Web.Dal;
using System.Collections;
using System.IO;
using NPOI.HSSF.UserModel;
using Com.Estsh.MES.App;
using System.Text;
using Aspose.Cells;
using DbCommon;
/***************************************************************************************************
*
* 作者:王勇
*
* *************************************************************************************************/
namespace Estsh.Core.Services
{
///
///
///
public class ProdOrderReleaseService
{
private ProdOrderReleaseDal dal = new ProdOrderReleaseDal(RemotingProxyProvider._remotingProxy);
#region 目视单打印
public Hashtable getStockOrderListByPage(Pager pager, String direction, String sort, string cbCustPDLine)
{
string str = "";
if (string.IsNullOrEmpty(cbCustPDLine))
{
return null;
}
Hashtable result = new Hashtable();
result = dal.getStockOrderListByPage(pager.pageSize, pager.pageNo, cbCustPDLine, str);
return result;
}
public Hashtable getStockOrderDetailByPage(Pager pager, String direction, int order_id)
{
Hashtable result = new Hashtable();
result = dal.getStockOrderDetailByPage(pager.pageSize, pager.pageNo, order_id);
return result;
}
///
///
///
///
///
public Hashtable updatePrintData(string order_id)
{
Hashtable result = new Hashtable();
result = this.dal.updatePrintData(order_id);
return result;
}
///
/// 获取客户产线列表
///
///
public ArrayList GetCustPDLine()
{
Hashtable result = new Hashtable();
DataTable dt = dal.GetCustPDLine();
return DataTypeConvert.NewObject.DataTableToArrayList(dt);
}
public string releaseOrder(string cbCustPDLine, string cbShift, string qty)
{
Hashtable result = new Hashtable();
string str = dal.releaseOrder(cbCustPDLine, cbShift, qty);
return str;
}
public DataTable updatePrintData_2(string order_id, string cbCustPDLine)
{
DataTable dt = new DataTable();
dt = this.dal.updatePrintData_2(order_id, cbCustPDLine);
return dt;
}
public DataTable getForPintData(string order_id, string cbCustPDLine)
{
DataTable dt = new DataTable();
dt = this.dal.getForPintData(order_id, cbCustPDLine);
return dt;
}
public DataTable getTopOrderBy(string step, string cbCustPDLine)
{
DataTable dt = new DataTable();
dt = this.dal.getTopOrderBy(step, cbCustPDLine);
return dt;
}
public DataTable getOrderByTraySeq(string traySeq, string cbCustPDLine)
{
DataTable dt = new DataTable();
dt = this.dal.getOrderByTraySeq(traySeq, cbCustPDLine);
return dt;
}
public string getShipNo(string shipNo)
{
string _shipNo = "";
_shipNo = this.dal.getShipNo(shipNo);
return _shipNo;
}
///
/// 读取采购订单文件并更新至数据库
///
/// 文件全路径
/// 登录用户信息
public Hashtable ReadExcelFile(Stream inputStream, string cbCustPDLine)
{
try
{
Hashtable result = new Hashtable();
List SqlStrings = new List();
List Parameters = new List();
Hashtable Params = new Hashtable();
Hashtable Cache = new Hashtable();
DataTable dt = new DataTable();
dt = AsposeExcelTools.ExcelFileToDataTable(inputStream);
//StreamReader sr = new StreamReader(inputStream);
//string srStr = sr.ReadToEnd();
//DataSet ds = HtmlTableParser.ParseHtmlTable(srStr, 1);
//dt = ds.Tables[0];
//判断EXCEL是否存在数据
if (dt.Rows.Count <= 0)
{
result.Add("message", "导入数据为空,请重新导入!");
result.Add("flag", "error");
return result;
}
//excel排序
if (cbCustPDLine == "1006")
{
DataView dv = new DataView(dt);
dv.Sort = "Column5,Column14,Column4";
dt = dv.ToTable();
}
else if (cbCustPDLine == "1005")
{
DataView dv = new DataView(dt);
dv.Sort = "Column5,Column14,Column4";
dt = dv.ToTable();
}
else if (cbCustPDLine == "1002")
{
DataView dv = new DataView(dt);
dv.Sort = "Column25";
dt = dv.ToTable();
}
else if (cbCustPDLine == "1004")
{
DataView dv = new DataView(dt);
dv.Sort = "Column2,Column8";
dt = dv.ToTable();
}
else if (cbCustPDLine == "1007")
{
dt.Rows[0].Delete();
dt.Rows[0].Delete();
DataView dv = new DataView(dt);
dv.Sort = "Column10";
dt = dv.ToTable();
}
else if (cbCustPDLine == "1008")
{
DataView dv = new DataView(dt);
dv.Sort = "Column1";
dt = dv.ToTable();
}
StringBuilder ErrorMessage = new StringBuilder(1024);
#region DFPV
if (Convert.ToInt32(cbCustPDLine) == 1002)
{
//验证数据
for (int i = 0; i < dt.Rows.Count - 1; i++)
{
//配置ID
string partNo = dt.Rows[i]["Column20"].ToString().Trim() + "-" + dt.Rows[i]["Column22"].ToString().Trim() + "00";
int part_id = this.dal.GetPartID(partNo);
if (part_id <= 0)
{
result.Add("message", partNo + ":配置信息未维护。");
result.Add("flag", "FAIL");
return result;
}
//order_seq
string orderSeq = dt.Rows[i]["Column17"].ToString().Trim();
//工厂
//string custLineNo = dt.Rows[i]["Column3"].ToString();
//汇报点
//string reportPM = dt.Rows[i]["Column4"].ToString();
//if (reportPM.ToUpper() != "Z02")
//{
// result.Add("message", reportPM + ":汇报点不正确。");
// result.Add("flag", "FAIL");
// return result;
//}
//VIN
string vin = dt.Rows[i]["Column25"].ToString();
//上线时间
string dataYMDHMS = dt.Rows[i]["Column15"].ToString();
//查询客户产线
int custPdlineId = this.dal.GetCustPdlineId(part_id);
if (custPdlineId <= 0)
{
result.Add("message", partNo + ":配置未查询到对应产线。");
result.Add("flag", "FAIL");
return result;
}
//car_no
string carNo = vin.Substring(vin.Length - 8, 8);
//判断流水号是否存在
string strOrderSeq = this.dal.ifOrderSeq(orderSeq, cbCustPDLine);
if (string.IsNullOrEmpty(strOrderSeq))
{
//判断VIN号是否存在
bool Bool = this.dal.ifVin(vin, cbCustPDLine);
if (Bool == false)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(" INSERT INTO dbo.g_order ");
strSql.Append(" ( model_part_id ,order_seq ,cust_pdline ,status ,car_no ,vin ,count ,enabled )");
strSql.Append(" VALUES ( " + part_id + ",'" + orderSeq + "'," + custPdlineId + ",0,'" + carNo + "','" + vin + "',0,'Y' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
//查询所以总成信息
DataTable dt_detail = this.dal.GetDetail(part_id);
//查询配置是否对应前后排
DataTable dtLocationType = new DataTable();
dtLocationType = this.dal.getLocationType(part_id);
if (dtLocationType.Rows.Count <= 0)
{
result.Add("message", partNo + ":未维护座椅位置。");
result.Add("flag", "FAIL");
return result;
}
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
int orderId = this.dal.GetOrderId(custPdlineId);
//记录后排数量
int locationR = 0;
for (int z = 0; z < dt_detail.Rows.Count; z++)
{
if (dt_detail.Rows[z]["part_location"].ToString() == "01")
{
strSql = new StringBuilder();
strSql.Append(" INSERT INTO dbo.g_order_detail");
strSql.Append(" ( order_id,status ,enabled,cust_line_no,part_type,on_line_time)");
strSql.Append(" VALUES (" + orderId + ",0,'Y','" + "" + "','PT11','" + dataYMDHMS + "' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
DataTable dtDetailLocation = this.dal.GetDetail(part_id, "01");
int orderDetailId = this.dal.getOrderDetailId(custPdlineId);
for (int j = 0; j < dtDetailLocation.Rows.Count; j++)
{
//零件号
strSql = new StringBuilder();
string part_no = dtDetailLocation.Rows[j]["part_no"].ToString();
string arrangeFlag = dtDetailLocation.Rows[j]["arrange_flag"].ToString();
strSql.Append(" INSERT INTO dbo.g_order_items");
strSql.Append(" ( order_id ,order_detail_id ,part_no ,status ,enabled )");
strSql.Append(" VALUES (" + orderId + "," + orderDetailId + ",'" + part_no + "',0,'Y')");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
dal.InsertData(SqlStrings, Parameters);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
//插入失败后删除主表对应数据
}
}
}
if (dt_detail.Rows[z]["part_location"].ToString() == "02")
{
strSql = new StringBuilder();
strSql.Append(" INSERT INTO dbo.g_order_detail");
strSql.Append(" ( order_id,status ,enabled,cust_line_no,part_type,on_line_time)");
strSql.Append(" VALUES (" + orderId + ",0,'Y','" + "" + "','PT12','" + dataYMDHMS + "' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
DataTable dtDetailLocation = this.dal.GetDetail(part_id, "02");
int orderDetailId = this.dal.getOrderDetailId(custPdlineId);
for (int j = 0; j < dtDetailLocation.Rows.Count; j++)
{
//零件号
strSql = new StringBuilder();
string part_no = dtDetailLocation.Rows[j]["part_no"].ToString();
string arrangeFlag = dtDetailLocation.Rows[j]["arrange_flag"].ToString();
strSql.Append(" INSERT INTO dbo.g_order_items");
strSql.Append(" ( order_id ,order_detail_id ,part_no ,status ,enabled )");
strSql.Append(" VALUES (" + orderId + "," + orderDetailId + ",'" + part_no + "',0,'Y')");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
dal.InsertData(SqlStrings, Parameters);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
//插入失败后删除主表对应数据
}
}
}
if (dt_detail.Rows[z]["arrange_flag"].ToString() == "R" && locationR == 0)
{
locationR++;
strSql = new StringBuilder();
strSql.Append(" INSERT INTO dbo.g_order_detail");
strSql.Append(" ( order_id,status ,enabled,cust_line_no,part_type,on_line_time)");
strSql.Append(" VALUES (" + orderId + ",0,'Y','" + "" + "','PT20','" + dataYMDHMS + "' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
DataTable dtDetailLocation = this.dal.GetDetail(part_id, "03");
int orderDetailId = this.dal.getOrderDetailId(custPdlineId);
for (int j = 0; j < dtDetailLocation.Rows.Count; j++)
{
//零件号
strSql = new StringBuilder();
string part_no = dtDetailLocation.Rows[j]["part_no"].ToString();
string arrangeFlag = dtDetailLocation.Rows[j]["arrange_flag"].ToString();
strSql.Append(" INSERT INTO dbo.g_order_items");
strSql.Append(" ( order_id ,order_detail_id ,part_no ,status ,enabled )");
strSql.Append(" VALUES (" + orderId + "," + orderDetailId + ",'" + part_no + "',0,'Y')");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
dal.InsertData(SqlStrings, Parameters);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
//插入失败后删除主表对应数据
}
}
}
}
SqlStrings = new List();
Parameters = new List();
}
else
{
result.Add("message", "导入失败");
result.Add("flag", "FAIL");
return result;
}
}
}
}
result.Add("message", "导入成功");
result.Add("flag", "OK");
return result;
}
#endregion
#region 雷诺
if (Convert.ToInt32(cbCustPDLine) == 1007)
{
//验证数据
for (int i = 0; i < dt.Rows.Count; i++)
{
//配置ID
int part_id = this.dal.GetPartID(dt.Rows[i]["Column15"].ToString());
if (part_id <= 0)
{
result.Add("message", dt.Rows[i]["Column15"].ToString() + ":配置信息未维护。");
result.Add("flag", "FAIL");
return result;
}
//order_seq
string orderSeq = dt.Rows[i]["Column10"].ToString().Trim();
//VIN
string vin = dt.Rows[i]["Column9"].ToString().Trim() + dt.Rows[i]["Column10"].ToString().Trim();
//上线时间
string dataYMD = dt.Rows[i]["Column11"].ToString();
string dataHMS = dt.Rows[i]["Column13"].ToString();
string dataYMDHMS = dataYMD + " " + dataHMS;
//car_no
string carNo = dt.Rows[i]["Column10"].ToString().Trim();
//判断流水号是否存在
string strOrderSeq = this.dal.ifOrderSeq(orderSeq, cbCustPDLine);
if (string.IsNullOrEmpty(strOrderSeq))
{
//判断VIN号是否存在
bool Bool = this.dal.ifVin(vin, cbCustPDLine);
if (Bool == false)
{
//查询客户产线
int custPdlineId = this.dal.GetCustPdlineId(part_id);
if (custPdlineId <= 0)
{
result.Add("message", dt.Rows[i]["Column15"].ToString() + ":配置未查询到对应产线。");
result.Add("flag", "FAIL");
return result;
}
StringBuilder strSql = new StringBuilder();
strSql.Append(" INSERT INTO dbo.g_order ");
strSql.Append(" ( model_part_id ,order_seq ,cust_pdline ,status ,car_no ,vin ,count ,enabled )");
strSql.Append(" VALUES ( " + part_id + ",'" + orderSeq + "'," + custPdlineId + ",0,'" + carNo + "','" + vin + "',0,'Y' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
//查询所以总成信息
DataTable dt_detail = this.dal.GetDetail(part_id);
//查询配置是否对应前后排
DataTable dtLocationType = new DataTable();
dtLocationType = this.dal.getLocationType(part_id);
if (dtLocationType.Rows.Count <= 0)
{
result.Add("message", dt.Rows[i]["Column15"].ToString() + ":未维护座椅位置。");
result.Add("flag", "FAIL");
return result;
}
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
int orderId = this.dal.GetOrderId(custPdlineId);
//记录后排数量
int locationR = 0;
for (int z = 0; z < dt_detail.Rows.Count; z++)
{
if (dt_detail.Rows[z]["part_location"].ToString() == "01")
{
strSql = new StringBuilder();
strSql.Append(" INSERT INTO dbo.g_order_detail");
strSql.Append(" ( order_id,status ,enabled,part_type,on_line_time)");
strSql.Append(" VALUES (" + orderId + ",0,'Y','PT11','" + dataYMDHMS + "' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
DataTable dtDetailLocation = this.dal.GetDetail(part_id, "01");
int orderDetailId = this.dal.getOrderDetailId(custPdlineId);
for (int j = 0; j < dtDetailLocation.Rows.Count; j++)
{
//零件号
strSql = new StringBuilder();
string part_no = dtDetailLocation.Rows[j]["part_no"].ToString();
string arrangeFlag = dtDetailLocation.Rows[j]["arrange_flag"].ToString();
strSql.Append(" INSERT INTO dbo.g_order_items");
strSql.Append(" ( order_id ,order_detail_id ,part_no ,status ,enabled )");
strSql.Append(" VALUES (" + orderId + "," + orderDetailId + ",'" + part_no + "',0,'Y')");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
dal.InsertData(SqlStrings, Parameters);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
//插入失败后删除主表对应数据
}
}
}
if (dt_detail.Rows[z]["part_location"].ToString() == "02")
{
strSql = new StringBuilder();
strSql.Append(" INSERT INTO dbo.g_order_detail");
strSql.Append(" ( order_id,status ,enabled,part_type,on_line_time)");
strSql.Append(" VALUES (" + orderId + ",0,'Y','PT12','" + dataYMDHMS + "' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
DataTable dtDetailLocation = this.dal.GetDetail(part_id, "02");
int orderDetailId = this.dal.getOrderDetailId(custPdlineId);
for (int j = 0; j < dtDetailLocation.Rows.Count; j++)
{
//零件号
strSql = new StringBuilder();
string part_no = dtDetailLocation.Rows[j]["part_no"].ToString();
string arrangeFlag = dtDetailLocation.Rows[j]["arrange_flag"].ToString();
strSql.Append(" INSERT INTO dbo.g_order_items");
strSql.Append(" ( order_id ,order_detail_id ,part_no ,status ,enabled )");
strSql.Append(" VALUES (" + orderId + "," + orderDetailId + ",'" + part_no + "',0,'Y')");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
dal.InsertData(SqlStrings, Parameters);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
//插入失败后删除主表对应数据
}
}
}
if (dt_detail.Rows[z]["arrange_flag"].ToString() == "R" && locationR == 0)
{
locationR++;
strSql = new StringBuilder();
strSql.Append(" INSERT INTO dbo.g_order_detail");
strSql.Append(" ( order_id,status ,enabled,part_type,on_line_time)");
strSql.Append(" VALUES (" + orderId + ",0,'Y','PT20','" + dataYMDHMS + "' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
DataTable dtDetailLocation = this.dal.GetDetail(part_id, "03");
int orderDetailId = this.dal.getOrderDetailId(custPdlineId);
for (int j = 0; j < dtDetailLocation.Rows.Count; j++)
{
//零件号
strSql = new StringBuilder();
string part_no = dtDetailLocation.Rows[j]["part_no"].ToString();
string arrangeFlag = dtDetailLocation.Rows[j]["arrange_flag"].ToString();
strSql.Append(" INSERT INTO dbo.g_order_items");
strSql.Append(" ( order_id ,order_detail_id ,part_no ,status ,enabled )");
strSql.Append(" VALUES (" + orderId + "," + orderDetailId + ",'" + part_no + "',0,'Y')");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
dal.InsertData(SqlStrings, Parameters);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
//插入失败后删除主表对应数据
}
}
}
}
SqlStrings = new List();
Parameters = new List();
}
else
{
result.Add("message", "导入失败");
result.Add("flag", "FAIL");
return result;
}
}
}
}
result.Add("message", "导入成功");
result.Add("flag", "OK");
return result;
}
#endregion
#region 本田通用
if (Convert.ToInt32(cbCustPDLine) == 1008)
{
//验证数据
for (int i = 0; i < dt.Rows.Count - 1; i++)
{
//配置ID
int part_id = this.dal.GetPartID(dt.Rows[i]["Column2"].ToString());
if (part_id <= 0)
{
result.Add("message", dt.Rows[i]["Column2"].ToString() + ":配置信息未维护。");
result.Add("flag", "FAIL");
return result;
}
//order_seq
string orderSeq = dt.Rows[i]["Column1"].ToString();
//VIN
string vin = dt.Rows[i]["Column4"].ToString();
//上线时间
string dataYMD = dt.Rows[i]["Column5"].ToString();
string dataHMS = dt.Rows[i]["Column6"].ToString();
string dataYMDHMS = dataYMD + " " + dataHMS;
//car_no
string carNo = dt.Rows[i]["Column3"].ToString();
//判断流水号是否存在
string strOrderSeq = this.dal.ifOrderSeq(orderSeq, cbCustPDLine);
if (string.IsNullOrEmpty(strOrderSeq))
{
//判断VIN号是否存在
bool Bool = this.dal.ifVin(vin, cbCustPDLine);
if (Bool == false)
{
//查询客户产线
int custPdlineId = this.dal.GetCustPdlineId(part_id);
if (custPdlineId <= 0)
{
result.Add("message", dt.Rows[i]["Column1"].ToString() + ":配置未查询到对应产线。");
result.Add("flag", "FAIL");
return result;
}
StringBuilder strSql = new StringBuilder();
strSql.Append(" INSERT INTO dbo.g_order ");
strSql.Append(" ( model_part_id ,order_seq ,cust_pdline ,status ,car_no ,vin ,count ,enabled )");
strSql.Append(" VALUES ( " + part_id + ",'" + orderSeq + "'," + custPdlineId + ",0,'" + carNo + "','" + vin + "',0,'Y' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
//查询所以总成信息
DataTable dt_detail = this.dal.GetDetail(part_id);
//查询配置是否对应前后排
DataTable dtLocationType = new DataTable();
dtLocationType = this.dal.getLocationType(part_id);
if (dtLocationType.Rows.Count <= 0)
{
result.Add("message", dt.Rows[i]["Column1"].ToString() + ":未维护座椅位置。");
result.Add("flag", "FAIL");
return result;
}
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
int orderId = this.dal.GetOrderId(custPdlineId);
//记录后排数量
int locationR = 0;
for (int z = 0; z < dt_detail.Rows.Count; z++)
{
if (dt_detail.Rows[z]["part_location"].ToString() == "01")
{
strSql = new StringBuilder();
strSql.Append(" INSERT INTO dbo.g_order_detail");
strSql.Append(" ( order_id,status ,enabled,part_type,on_line_time)");
strSql.Append(" VALUES (" + orderId + ",0,'Y','PT11','" + dataYMDHMS + "' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
DataTable dtDetailLocation = this.dal.GetDetail(part_id, "01");
int orderDetailId = this.dal.getOrderDetailId(custPdlineId);
for (int j = 0; j < dtDetailLocation.Rows.Count; j++)
{
//零件号
strSql = new StringBuilder();
string part_no = dtDetailLocation.Rows[j]["part_no"].ToString();
string arrangeFlag = dtDetailLocation.Rows[j]["arrange_flag"].ToString();
strSql.Append(" INSERT INTO dbo.g_order_items");
strSql.Append(" ( order_id ,order_detail_id ,part_no ,status ,enabled )");
strSql.Append(" VALUES (" + orderId + "," + orderDetailId + ",'" + part_no + "',0,'Y')");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
dal.InsertData(SqlStrings, Parameters);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
//插入失败后删除主表对应数据
}
}
}
if (dt_detail.Rows[z]["part_location"].ToString() == "02")
{
strSql = new StringBuilder();
strSql.Append(" INSERT INTO dbo.g_order_detail");
strSql.Append(" ( order_id,status ,enabled,part_type,on_line_time)");
strSql.Append(" VALUES (" + orderId + ",0,'Y','PT12','" + dataYMDHMS + "' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
DataTable dtDetailLocation = this.dal.GetDetail(part_id, "02");
int orderDetailId = this.dal.getOrderDetailId(custPdlineId);
for (int j = 0; j < dtDetailLocation.Rows.Count; j++)
{
//零件号
strSql = new StringBuilder();
string part_no = dtDetailLocation.Rows[j]["part_no"].ToString();
string arrangeFlag = dtDetailLocation.Rows[j]["arrange_flag"].ToString();
strSql.Append(" INSERT INTO dbo.g_order_items");
strSql.Append(" ( order_id ,order_detail_id ,part_no ,status ,enabled )");
strSql.Append(" VALUES (" + orderId + "," + orderDetailId + ",'" + part_no + "',0,'Y')");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
dal.InsertData(SqlStrings, Parameters);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
//插入失败后删除主表对应数据
}
}
}
if (dt_detail.Rows[z]["arrange_flag"].ToString() == "R" && locationR == 0)
{
locationR++;
strSql = new StringBuilder();
strSql.Append(" INSERT INTO dbo.g_order_detail");
strSql.Append(" ( order_id,status ,enabled,part_type,on_line_time)");
strSql.Append(" VALUES (" + orderId + ",0,'Y','PT20','" + dataYMDHMS + "' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
DataTable dtDetailLocation = this.dal.GetDetail(part_id, "03");
int orderDetailId = this.dal.getOrderDetailId(custPdlineId);
for (int j = 0; j < dtDetailLocation.Rows.Count; j++)
{
//零件号
strSql = new StringBuilder();
string part_no = dtDetailLocation.Rows[j]["part_no"].ToString();
string arrangeFlag = dtDetailLocation.Rows[j]["arrange_flag"].ToString();
strSql.Append(" INSERT INTO dbo.g_order_items");
strSql.Append(" ( order_id ,order_detail_id ,part_no ,status ,enabled )");
strSql.Append(" VALUES (" + orderId + "," + orderDetailId + ",'" + part_no + "',0,'Y')");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
dal.InsertData(SqlStrings, Parameters);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
//插入失败后删除主表对应数据
}
}
}
}
SqlStrings = new List();
Parameters = new List();
}
else
{
result.Add("message", "导入失败");
result.Add("flag", "FAIL");
return result;
}
}
}
}
result.Add("message", "导入成功");
result.Add("flag", "OK");
return result;
}
#endregion
#region M3M4 & X7前后排生产线
if (Convert.ToInt32(cbCustPDLine) == 1006 || Convert.ToInt32(cbCustPDLine) == 1005)
{
//验证数据
for (int i = 1; i < dt.Rows.Count - 1; i++)
{
if (dt.Rows[i]["Column15"].ToString() == "中央扶手")
{
continue;
}
DataRow[] dr = dt.Select("Column14='" + dt.Rows[i]["Column14"].ToString() + "'");
if (dr.Length <= 0)
{
result.Add("message", dt.Rows[i]["Column14"].ToString() + ":未查询到配置明细!");
result.Add("flag", "FAIL");
return result;
}
//查询总成零件号
string partName = this.dal.getOCN(dt.Rows[i]["Column12"].ToString());
if (string.IsNullOrEmpty(partName))
{
partName = this.dal.getPartName(dt.Rows[i]["Column12"].ToString());
}
//配置ID
int part_id = this.dal.GetPartID(partName);
string orderSeq = dt.Rows[i]["Column14"].ToString();
//总装产线
string custLineNo = dt.Rows[i]["Column5"].ToString();
//VIN
string vin = dt.Rows[i]["Column14"].ToString();
//car_no
string carNo = dt.Rows[i]["Column14"].ToString();
//查询客户产线
int custPdlineId = this.dal.GetCustPdlineId(part_id);
if (custPdlineId <= 0)
{
result.Add("message", dt.Rows[i]["Column12"].ToString() + ":配置未查询到对应产线。");
result.Add("flag", "FAIL");
return result;
}
//查询配置是否对应前后排
DataTable dtLocationType = new DataTable();
DataTable dtLocationType2 = new DataTable();
dtLocationType2 = this.dal.getLocationType2(part_id);
StringBuilder strSql = new StringBuilder();
bool isOK = false;
//判断流水号是否存在
string strOrderSeq = this.dal.ifOrderSeq(orderSeq, custPdlineId.ToString());
if (string.IsNullOrEmpty(strOrderSeq))
{
DataRow[] dr3 = null;
dr3 = dt.Select("Column14='" + dt.Rows[i]["Column14"].ToString() + "'");
if (dtLocationType2.Rows.Count > dr3.Length)
{
result.Add("message", dt.Rows[i]["Column14"].ToString() + ":流水号对应前后排信息不完整");
result.Add("flag", "FAIL");
return result;
}
strSql.Append(" INSERT INTO dbo.g_order ");
strSql.Append(" ( model_part_id ,order_seq ,cust_pdline ,status ,car_no ,vin ,count ,enabled )");
strSql.Append(" VALUES ( " + part_id + ",'" + orderSeq + "'," + custPdlineId + ",0,'" + carNo + "','" + vin + "',0,'Y' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
dal.InsertData(SqlStrings, Parameters);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
//查询所以总成信息
DataTable dt_detail = this.dal.GetDetail(part_id);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
int orderId = this.dal.GetOrderId(custPdlineId);
//记录后排数量
int locationR = 0;
for (int z = 0; z < dt_detail.Rows.Count; z++)
{
if (dt_detail.Rows[z]["part_location"].ToString() == "01")
{
strSql = new StringBuilder();
bool boolIfOrderDetail = this.dal.IfOrderDetail(dt.Rows[i]["Column14"].ToString(), "PT11");
if (boolIfOrderDetail == false)
{
DataRow[] dr2 = null;
string printSeq = "";
string trayNo = "";
if (custPdlineId == 1005)
{
dr2 = dt.Select("Column14='" + dt.Rows[i]["Column14"].ToString() + "' and Column4='EW10'");
if (dr2.Length > 0)
{
printSeq = dr2[0][15].ToString();
trayNo = dr2[0][1].ToString();
}
}
else
{
printSeq = dt.Rows[i]["Column16"].ToString();
trayNo = dt.Rows[i]["Column2"].ToString();
}
strSql.Append(" INSERT INTO dbo.g_order_detail");
strSql.Append(" ( order_id,status ,enabled,cust_line_no,part_type,tray_no,print_seq)");
strSql.Append(" VALUES (" + orderId + ",0,'Y','" + custLineNo + "','PT11','" + trayNo + "','" + printSeq + "' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
DataTable dtDetailLocation = this.dal.GetDetail(part_id, "01");
int orderDetailId = this.dal.getOrderDetailId(custPdlineId);
for (int j = 0; j < dtDetailLocation.Rows.Count; j++)
{
//零件号
strSql = new StringBuilder();
string part_no = dtDetailLocation.Rows[j]["part_no"].ToString();
string arrangeFlag = dtDetailLocation.Rows[j]["arrange_flag"].ToString();
strSql.Append(" INSERT INTO dbo.g_order_items");
strSql.Append(" ( order_id ,order_detail_id ,part_no ,status ,enabled )");
strSql.Append(" VALUES (" + orderId + "," + orderDetailId + ",'" + part_no + "',0,'Y')");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
dal.InsertData(SqlStrings, Parameters);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
//插入失败后删除主表对应数据
}
}
}
}
if (dt_detail.Rows[z]["part_location"].ToString() == "02")
{
strSql = new StringBuilder();
bool boolIfOrderDetail = this.dal.IfOrderDetail(dt.Rows[i]["Column14"].ToString(), "PT12");
if (boolIfOrderDetail == false)
{
DataRow[] dr2 = null;
string printSeq = "";
string trayNo = "";
if (custPdlineId == 1005)
{
dr2 = dt.Select("Column14='" + dt.Rows[i]["Column14"].ToString() + "' and Column4='EW11'");
if (dr2.Length > 0)
{
printSeq = dr2[0][15].ToString();
trayNo = dr2[0][1].ToString();
}
}
else
{
printSeq = dt.Rows[i]["Column16"].ToString();
trayNo = dt.Rows[i]["Column2"].ToString();
}
strSql.Append(" INSERT INTO dbo.g_order_detail");
strSql.Append(" ( order_id,status ,enabled,cust_line_no,part_type,tray_no,print_seq)");
strSql.Append(" VALUES (" + orderId + ",0,'Y','" + custLineNo + "','PT12','" + trayNo + "','" + printSeq + "' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
DataTable dtDetailLocation = this.dal.GetDetail(part_id, "02");
int orderDetailId = this.dal.getOrderDetailId(custPdlineId);
for (int j = 0; j < dtDetailLocation.Rows.Count; j++)
{
//零件号
strSql = new StringBuilder();
string part_no = dtDetailLocation.Rows[j]["part_no"].ToString();
string arrangeFlag = dtDetailLocation.Rows[j]["arrange_flag"].ToString();
strSql.Append(" INSERT INTO dbo.g_order_items");
strSql.Append(" ( order_id ,order_detail_id ,part_no ,status ,enabled )");
strSql.Append(" VALUES (" + orderId + "," + orderDetailId + ",'" + part_no + "',0,'Y')");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
dal.InsertData(SqlStrings, Parameters);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
//插入失败后删除主表对应数据
}
}
}
}
if (dt_detail.Rows[z]["arrange_flag"].ToString() == "R" && locationR == 0)
{
bool boolIfOrderDetail = this.dal.IfOrderDetail(dt.Rows[i]["Column14"].ToString(), "PT20");
if (boolIfOrderDetail == false)
{
locationR++;
DataRow[] dr2 = null;
string printSeq = "";
string trayNo = "";
if (custPdlineId == 1005)
{
dr2 = dt.Select("Column14='" + dt.Rows[i]["Column14"].ToString() + "' and Column4<>'EW10' and Column4<>'EW11'");
if (dr2.Length > 0)
{
printSeq = dr2[0][15].ToString();
trayNo = dr2[0][1].ToString();
}
}
else
{
printSeq = dt.Rows[i]["Column16"].ToString();
trayNo = dt.Rows[i]["Column2"].ToString();
}
strSql = new StringBuilder();
strSql.Append(" INSERT INTO dbo.g_order_detail");
strSql.Append(" ( order_id,status ,enabled,cust_line_no,part_type,tray_no,print_seq)");
strSql.Append(" VALUES (" + orderId + ",0,'Y','" + custLineNo + "','PT20','" + trayNo + "','" + printSeq + "' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
DataTable dtDetailLocation = this.dal.GetDetail(part_id, "03");
int orderDetailId = this.dal.getOrderDetailId(custPdlineId);
for (int j = 0; j < dtDetailLocation.Rows.Count; j++)
{
//零件号
strSql = new StringBuilder();
string part_no = dtDetailLocation.Rows[j]["part_no"].ToString();
string arrangeFlag = dtDetailLocation.Rows[j]["arrange_flag"].ToString();
strSql.Append(" INSERT INTO dbo.g_order_items");
strSql.Append(" ( order_id ,order_detail_id ,part_no ,status ,enabled )");
strSql.Append(" VALUES (" + orderId + "," + orderDetailId + ",'" + part_no + "',0,'Y')");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
dal.InsertData(SqlStrings, Parameters);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
//插入失败后删除主表对应数据
}
}
}
}
}
SqlStrings = new List();
Parameters = new List();
//}
}
}
result.Add("message", "导入成功");
result.Add("flag", "OK");
return result;
}
#endregion
#region 神龙一厂
if (Convert.ToInt32(cbCustPDLine) == 1004)
{
//验证数据
for (int i = 0; i < dt.Rows.Count - 1; i++)
{
//查询总成零件号
string partName = this.dal.getOCN(dt.Rows[i]["Column4"].ToString());
//配置ID
int part_id = this.dal.GetPartID(partName);
string orderSeq = dt.Rows[i]["Column8"].ToString();
//总装产线
string custLineNo = dt.Rows[i]["Column7"].ToString();
if (custLineNo != "UW5L2")
{
result.Add("message", custLineNo + ":生产线号不匹配。");
result.Add("flag", "FAIL");
return result;
}
//VIN
string vin = dt.Rows[i]["Column8"].ToString();
//car_no
string carNo = dt.Rows[i]["Column8"].ToString();
//查询客户产线
int custPdlineId = this.dal.GetCustPdlineId(part_id);
if (custPdlineId <= 0)
{
result.Add("message", dt.Rows[i]["Column4"].ToString() + ":配置未查询到对应产线。");
result.Add("flag", "FAIL");
return result;
}
//查询配置是否对应前后排
DataTable dtLocationType = new DataTable();
DataTable dtLocationType2 = new DataTable();
dtLocationType2 = this.dal.getLocationType2(part_id);
StringBuilder strSql = new StringBuilder();
bool isOK = false;
//判断流水号是否存在
string strOrderSeq = this.dal.ifOrderSeq(orderSeq, cbCustPDLine);
if (string.IsNullOrEmpty(strOrderSeq))
{
DataRow[] dr3 = null;
dr3 = dt.Select("Column8='" + dt.Rows[i]["Column8"].ToString() + "'");
if (dtLocationType2.Rows.Count != dr3.Length)
{
result.Add("message", dt.Rows[i]["Column8"].ToString() + ":流水号对应前后排信息不完整");
result.Add("flag", "FAIL");
return result;
}
strSql.Append(" INSERT INTO dbo.g_order ");
strSql.Append(" ( model_part_id ,order_seq ,cust_pdline ,status ,car_no ,vin ,count ,enabled )");
strSql.Append(" VALUES ( " + part_id + ",'" + orderSeq + "'," + custPdlineId + ",0,'" + carNo + "','" + vin + "',0,'Y' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
dal.InsertData(SqlStrings, Parameters);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
//查询所以总成信息
DataTable dt_detail = this.dal.GetDetail(part_id);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
int orderId = this.dal.GetOrderId(custPdlineId);
//记录后排数量
int locationR = 0;
for (int z = 0; z < dt_detail.Rows.Count; z++)
{
if (dt_detail.Rows[z]["part_location"].ToString() == "01")
{
strSql = new StringBuilder();
bool boolIfOrderDetail = this.dal.IfOrderDetail(dt.Rows[i]["Column8"].ToString(), "PT11");
if (boolIfOrderDetail == false)
{
string trayNo = "";
trayNo = dt.Rows[i]["Column2"].ToString();
strSql.Append(" INSERT INTO dbo.g_order_detail");
strSql.Append(" ( order_id,status ,enabled,cust_line_no,part_type,tray_no)");
strSql.Append(" VALUES (" + orderId + ",0,'Y','" + custLineNo + "','PT11','" + trayNo + "' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
DataTable dtDetailLocation = this.dal.GetDetail(part_id, "01");
int orderDetailId = this.dal.getOrderDetailId(custPdlineId);
for (int j = 0; j < dtDetailLocation.Rows.Count; j++)
{
//零件号
strSql = new StringBuilder();
string part_no = dtDetailLocation.Rows[j]["part_no"].ToString();
string arrangeFlag = dtDetailLocation.Rows[j]["arrange_flag"].ToString();
strSql.Append(" INSERT INTO dbo.g_order_items");
strSql.Append(" ( order_id ,order_detail_id ,part_no ,status ,enabled )");
strSql.Append(" VALUES (" + orderId + "," + orderDetailId + ",'" + part_no + "',0,'Y')");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
dal.InsertData(SqlStrings, Parameters);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
//插入失败后删除主表对应数据
}
}
}
}
if (dt_detail.Rows[z]["part_location"].ToString() == "02")
{
strSql = new StringBuilder();
bool boolIfOrderDetail = this.dal.IfOrderDetail(dt.Rows[i]["Column8"].ToString(), "PT12");
if (boolIfOrderDetail == false)
{
string trayNo = "";
trayNo = dt.Rows[i]["Column2"].ToString();
strSql.Append(" INSERT INTO dbo.g_order_detail");
strSql.Append(" ( order_id,status ,enabled,cust_line_no,part_type,tray_no)");
strSql.Append(" VALUES (" + orderId + ",0,'Y','" + custLineNo + "','PT12','" + trayNo + "' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
DataTable dtDetailLocation = this.dal.GetDetail(part_id, "02");
int orderDetailId = this.dal.getOrderDetailId(custPdlineId);
for (int j = 0; j < dtDetailLocation.Rows.Count; j++)
{
//零件号
strSql = new StringBuilder();
string part_no = dtDetailLocation.Rows[j]["part_no"].ToString();
string arrangeFlag = dtDetailLocation.Rows[j]["arrange_flag"].ToString();
strSql.Append(" INSERT INTO dbo.g_order_items");
strSql.Append(" ( order_id ,order_detail_id ,part_no ,status ,enabled )");
strSql.Append(" VALUES (" + orderId + "," + orderDetailId + ",'" + part_no + "',0,'Y')");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
dal.InsertData(SqlStrings, Parameters);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
//插入失败后删除主表对应数据
}
}
}
}
if (dt_detail.Rows[z]["arrange_flag"].ToString() == "R" && locationR == 0)
{
bool boolIfOrderDetail = this.dal.IfOrderDetail(dt.Rows[i]["Column8"].ToString(), "PT20");
if (boolIfOrderDetail == false)
{
locationR++;
string trayNo = "";
trayNo = dt.Rows[i]["Column2"].ToString();
strSql = new StringBuilder();
strSql.Append(" INSERT INTO dbo.g_order_detail");
strSql.Append(" ( order_id,status ,enabled,cust_line_no,part_type,tray_no)");
strSql.Append(" VALUES (" + orderId + ",0,'Y','" + custLineNo + "','PT20','" + trayNo + "' )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
DataTable dtDetailLocation = this.dal.GetDetail(part_id, "03");
int orderDetailId = this.dal.getOrderDetailId(custPdlineId);
for (int j = 0; j < dtDetailLocation.Rows.Count; j++)
{
//零件号
strSql = new StringBuilder();
string part_no = dtDetailLocation.Rows[j]["part_no"].ToString();
string arrangeFlag = dtDetailLocation.Rows[j]["arrange_flag"].ToString();
strSql.Append(" INSERT INTO dbo.g_order_items");
strSql.Append(" ( order_id ,order_detail_id ,part_no ,status ,enabled )");
strSql.Append(" VALUES (" + orderId + "," + orderDetailId + ",'" + part_no + "',0,'Y')");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
dal.InsertData(SqlStrings, Parameters);
SqlStrings = new List();
Parameters = new List();
strSql = new StringBuilder();
//插入失败后删除主表对应数据
}
}
}
}
}
SqlStrings = new List();
Parameters = new List();
//}
}
}
result.Add("message", "导入成功");
result.Add("flag", "OK");
return result;
}
#endregion
result.Add("message", "导入失败");
result.Add("flag", "error");
return result;
}
catch (Exception ex)
{
Hashtable result = new Hashtable();
result.Add("message", "导入失败");
result.Add("flag", "error");
return result;
}
}
public int UpdateCount(string order_id)
{
int count = this.dal.UpdateCount(order_id);
return count;
}
public int UpdatePrintNumber(string printNumber, string cbCustPDLine)
{
int count = this.dal.UpdatePrintNumber(printNumber, cbCustPDLine);
return count;
}
public int updateTrayNo(string HouPaiZhengYiNo, string FuJiaShiNo, string ZhengJiaShiNo, string order_id, string sum)
{
int count = this.dal.updateTrayNo(HouPaiZhengYiNo, FuJiaShiNo, ZhengJiaShiNo, order_id, sum);
return count;
}
#endregion
}
}