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.

479 lines
21 KiB
C#

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
{
/// <summary>
///
/// </summary>
public class StockOrderPrintService
{
private StockOrderPrintDal dal = new StockOrderPrintDal(RemotingProxyProvider._remotingProxy);
#region 目视单打印
public Hashtable getStockOrderListByPage(Pager pager, String direction, String sort, string cbCustPDLine, string startOrder_id, string endOrder_id)
{
string str = "";
if (!(string.IsNullOrEmpty(startOrder_id) && string.IsNullOrEmpty(endOrder_id)))
{
//str = " AND a.order_seq >='" + startOrder_id + "' and a.order_seq<='" + endOrder_id + "' ";
}
else
{
str = " and a.enabled='Y' and a.count=0 ";
}
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;
}
/// <summary>
///
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public Hashtable updatePrintData(string order_id)
{
Hashtable result = new Hashtable();
result = this.dal.updatePrintData(order_id);
return result;
}
/// <summary>
/// 获取客户产线列表
/// </summary>
/// <returns></returns>
public ArrayList GetCustPDLine()
{
Hashtable result = new Hashtable();
DataTable dt = dal.GetCustPDLine();
return DataTypeConvert.NewObject.DataTableToArrayList(dt);
}
public string getShipNumber(string cbCustPDLine)
{
Hashtable result = new Hashtable();
string str = dal.getShipNumber(cbCustPDLine);
return str;
}
//public string getNumber(string tray_no)
//{
// Hashtable result = new Hashtable();
// string str = dal.getNumber(tray_no);
// 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;
}
/// <summary>
/// 读取采购订单文件并更新至数据库
/// </summary>
/// <param name="inputStream">文件全路径</param>
/// <param name="userInfo">登录用户信息</param>
public Hashtable ReadExcelFile(Stream inputStream, string cbCustPDLine)
{
try
{
Hashtable result = new Hashtable();
List<string> SqlStrings = new List<string>();
List<Hashtable> Parameters = new List<Hashtable>();
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 == "1008" || cbCustPDLine == "1007" || cbCustPDLine == "1001" || cbCustPDLine == "1010")
{
dt.Rows[0].Delete();
DataView dv = new DataView(dt);
dv.Sort = "Column1";
dt = dv.ToTable();
}
StringBuilder ErrorMessage = new StringBuilder(1024);
#region 本田通用
if (Convert.ToInt32(cbCustPDLine) == 1008 || Convert.ToInt32(cbCustPDLine) == 1007 || Convert.ToInt32(cbCustPDLine) == 1001 || Convert.ToInt32(cbCustPDLine) == 1010)
{
//验证数据
for (int i = 0; i < dt.Rows.Count ; 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]["Column1"].ToString();
//数量
int count = Convert.ToInt32(dt.Rows[i]["Column3"]);
//上线时间
//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]["Column1"].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]["Column2"].ToString() + ":配置未查询到对应产线。");
result.Add("flag", "FAIL");
return result;
}
for (int w = 0; w < count; w++)
{
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]["Column2"].ToString() + ":未维护座椅位置。");
result.Add("flag", "FAIL");
return result;
}
SqlStrings = new List<string>();
Parameters = new List<Hashtable>();
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',(SELECT dbo.get_ymd()+' '+dbo.get_hms()) )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
SqlStrings = new List<string>();
Parameters = new List<Hashtable>();
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<string>();
Parameters = new List<Hashtable>();
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',(SELECT dbo.get_ymd()+' '+dbo.get_hms()) )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
SqlStrings = new List<string>();
Parameters = new List<Hashtable>();
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<string>();
Parameters = new List<Hashtable>();
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',(SELECT dbo.get_ymd()+' '+dbo.get_hms()) )");
SqlStrings.Add(strSql.ToString());
Parameters.Add(Params);
if (dal.InsertData(SqlStrings, Parameters))
{
SqlStrings = new List<string>();
Parameters = new List<Hashtable>();
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<string>();
Parameters = new List<Hashtable>();
strSql = new StringBuilder();
//插入失败后删除主表对应数据
}
}
}
}
SqlStrings = new List<string>();
Parameters = new List<Hashtable>();
}
else
{
result.Add("message", "导入失败");
result.Add("flag", "FAIL");
return result;
}
}
}
}
}
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
}
}