using IWareDataAccess.Entity.Base;
using IWareDataAccess.Entity.Order;
using iWareSda_QQJF.WCSNEW.EDM;
using iWareSda_QQJF.WEBAPI.JSONEntity;
using Oracle.ManagedDataAccess.Client;
using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace iWareSda_QQJF.WEBAPI
{
public class OracleWord
{
public static long oldidOfItem = 0;//指针
public static long oldidOfKanban = 0;//指针
static decimal numSum = 0;//出库总零件数
static string connStr = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.69.136.2)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=10.69.136.4)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=erpdb)));Persist Security Info=True;User ID=cywms;Password=wmscy;";
///
/// 语句调用方法
///
///
///
///
public static DataTable ExecuteDataTable(string sql, params OracleParameter[] parameters)
{
using (OracleConnection conn = new OracleConnection(connStr))
{
conn.Open();
using (OracleCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
//cmd.Parameters.AddRange(parameters);
OracleDataAdapter adapter = new OracleDataAdapter(cmd);
DataTable datatable = new DataTable();
adapter.Fill(datatable);
return datatable;
}
}
}
///
/// 更新任务信息
///
public static void SearchTask()
{
try
{
string sqlString = "select * from (select * from QDERP.DI_T_KANBANHEADER where getgodscen ='V3012' and DI_T_KANBANHEADERID > " + oldidOfKanban + " order by DI_T_KANBANHEADERID) where rownum < 2";
DataTable dt = ExecuteDataTable(sqlString, new OracleParameter(":id", 1));
DataRow row = dt.AsEnumerable().FirstOrDefault();
if (row != null)
{
//调用接口
if (row[41].ToString() == "I" || row[41].ToString() == "U")//插入
{
OutOrderWebEntity order = GetKANBAN(row);
if (order==null)
{
//记录读取指针是
oldidOfKanban = long.Parse(row[0].ToString());
return;
}
//GetJsonOfItem getInfo = ReadErpSendToWMS.AddTaskMethod(order);
//if (getInfo.result == false)
//{
// if (getInfo.data != null)
// {
// //WZ.Useful.Commons.LogTextHelper.WriteLine("OracleWord", "SearchADDTask", getInfo.data.orderPanCode.ToString());
// }
// //WZ.Useful.Commons.LogTextHelper.WriteLine("OracleWord", "SearchADDTask", getInfo.msg);
//}
string msg = "";
IWareDataAccess.Order.OUTORDER.OutOrderSqlFunc.AddOrUpdate(order,out msg);
}
//else if (row[41].ToString() == "U")//修改
//{
// ERPTask task = GetKANBAN(row);
// if (task.details.Count == 0)
// {
// //记录读取指针
// oldidOfKanban = long.Parse(row[0].ToString());
// return;
// }
// GetJsonOfItem getInfo = ReadErpSendToWMS.UpdateTaskMethod(task);
// if (getInfo.result == false)
// {
// if (getInfo.data != null)
// {
// WZ.Useful.Commons.LogTextHelper.WriteLine("OracleWord", "SearchUpdateTask", getInfo.data.orderPanCode.ToString());
// }
// WZ.Useful.Commons.LogTextHelper.WriteLine("OracleWord", "SearchUpdateTask", getInfo.msg);
// }
//}
else if (row[41].ToString() == "D")//删除
{
OutOrderWebEntity order = new OutOrderWebEntity();
//task.orderPlanCode = row[6].ToString();
order.productionLineName = row[6].ToString();
order.outOrderCode = row[6].ToString();
//GetJsonOfItem getInfo = ReadErpSendToWMS.DeleteTaskMethod(order);
//if (getInfo.result == false)
//{
// // WZ.Useful.Commons.LogTextHelper.WriteLine("OracleWord", "SearchDeleteTask", getInfo.msg);
//}
string msg = "";
IWareDataAccess.Order.OUTORDER.OutOrderSqlFunc.Delete(order, out msg);
}
//记录读取指针
oldidOfKanban = long.Parse(row[0].ToString());
}
else
{
//已经最新数据,等待一分钟
Thread.Sleep(1000 * 60);
}
}
catch (Exception e)
{
//WZ.Useful.Commons.LogTextHelper.WriteLine("OracleWord", "SearchTask", e.ToString());
//等待
Thread.Sleep(1000);
}
}
///
/// 获取看板信息
///
///
///
private static OutOrderWebEntity GetKANBAN(DataRow row)
{
//ERPTask task = new ERPTask();
////必填
////task.orderPlanCode = row[6].ToString();
//task.sourceCode = row[6].ToString();
//task.chanceDate = row[25].ToString();
//task.orderType = "焊装出库";
//task.creator = "超级管理员";
//task.createDate = DateTime.Now.ToString();
//////关联数据
////DataTable data = GetDesTask(row[6].ToString());
////List dtList = data.AsEnumerable().ToList();
////numSum = 0;
////for (int i = 0; i < dtList.Count(); i++)
////{
//// Details details = new Details();
//// details.productCode = dtList[i].ItemArray[16].ToString();
//// AddItemByNo(dtList[i].ItemArray[16].ToString());
//// //details.productName = SearchItemByNo(dtList[i].ItemArray[16].ToString());
//// //details.totalWeight = 0;
//// details.makeRoute = 0;
//// details.quantity = decimal.Parse(dtList[i].ItemArray[9].ToString());
//// details.destinationName = dtList[i].ItemArray[25].ToString();
//// details.batchNumber = dtList[i].ItemArray[5].ToString();
//// numSum = numSum + details.quantity;
//// task.details.Add(details);
////}
//task.totalQuantity = numSum;
//task.totalWeight = numSum * 0;
////貌似要填
//task.consignorCode = "V30";
//task.storageName = "立体库";
OutOrderWebEntity order = new OutOrderWebEntity();
try
{
order.doTime = DateTime.Parse(row[25].ToString());
}
catch
{
}
order.orderType = "焊装出库";
order.outOrderCode = row[6].ToString();
//order.UPDATETIME = DateTime.Now;
string msg="";
//ProductionLineWebEntity line=new ProductionLineWebEntity();
//line.productionName = row[6].ToString();
//var lineList = IWareDataAccess.Base.PRODUCTIONLINE.ProductionLineSqlFunc.SearchView(line,20,1, out msg);
//if(lineList.Count()>0)
//{
// order.productionLineCode = lineList[0].productionCode;
// order.productionLineName = lineList[0].productionName;
//}
//关联数据
DataTable data = GetDesTask(row[6].ToString());
List dtList = data.AsEnumerable().ToList();
numSum = 0;
for (int i = 0; i < dtList.Count(); i++)
{
//Details details = new Details();
//details.productCode = dtList[i].ItemArray[16].ToString();
AddItemByNo(dtList[i].ItemArray[16].ToString());
////details.productName = SearchItemByNo(dtList[i].ItemArray[16].ToString());
////details.totalWeight = 0;
//details.makeRoute = 0;
//details.quantity = decimal.Parse(dtList[i].ItemArray[9].ToString());
//details.destinationName = dtList[i].ItemArray[25].ToString();
//details.batchNumber = dtList[i].ItemArray[5].ToString();
numSum = numSum + decimal.Parse(dtList[i].ItemArray[9].ToString());
//task.details.Add(details);
}
order.totalOutNum = (int)numSum;
order.isErp = 1;
return order;
}
///
/// 根据物料编号搜索物料
///
///
public static string SearchItemByNo(string no)
{
string sqlString = "select * from QDERP.DI_T_MMRGENMTL where MTLNO = '"+ no +"'";
DataTable dt = ExecuteDataTable(sqlString, new OracleParameter(":id", 1));
DataRow row = dt.AsEnumerable().FirstOrDefault();
long id = long.Parse(row[5].ToString());
SearchItem(id);//添加此物料
string des = GetDes(int.Parse(row[5].ToString()));
return des;
}
///
/// 根据物料编号插入物料
///
///
public static void AddItemByNo(string no)
{
string sqlString = "select * from QDERP.DI_T_MMRGENMTL where MTLNO = '" + no + "'";
DataTable dt = ExecuteDataTable(sqlString, new OracleParameter(":id", 1));
DataRow row = dt.AsEnumerable().FirstOrDefault();
long id = long.Parse(row[5].ToString());
SearchItem(id);//添加此物料
}
///
/// 搜索新物料(指针指定)
///
public static void SearchItem(long id)
{
try
{
string sqlString = "select * from (select * from QDERP.DI_T_MMRGENMTL where MMRGENMTLID = " + id + " order by MMRGENMTLID) where rownum < 2";
DataTable dt = ExecuteDataTable(sqlString, new OracleParameter(":id", 1));
DataRow row = dt.AsEnumerable().FirstOrDefault();
if (row != null)
{
//AddItem item = new AddItem();
////必填
//item.productCode = row[6].ToString();
//item.productName = GetDes(int.Parse(row[5].ToString()));
//item.productModel = row[5].ToString();
//item.consignorCode = "";
//item.providerCode = "";
//item.providerShortName = "默认供应商";
//item.enable = 1;
////ERP存在数据
//item.productSpec = row[0].ToString();
//item.smallUnit = row[4].ToString();
////貌似必填
//item.consignorName = "一汽解放青岛";
//item.consignorCode = "V30";
//item.consignor_Id = 323;
////调用接口
//GetJsonOfItem getInfo = ReadErpSendToWMS.AdditemMethod(item);
//if (getInfo.result == false)
//{
// if (getInfo.data != null)
// {
// //WZ.Useful.Commons.LogTextHelper.WriteLine("OracleWord", "SearchItem", getInfo.data.productModel.ToString());
// }
// // WZ.Useful.Commons.LogTextHelper.WriteLine("OracleWord", "SearchItem", getInfo.msg);
//}
string msg = "";
ItemWebEntity item = new ItemWebEntity();
item.itemName = row[6].ToString();
item.itemDes = GetDes(int.Parse(row[5].ToString()));
//item.productModel = row[5].ToString();
item.enable = 1;
//ERP存在数据
//item.productSpec = row[0].ToString();
item.unit = row[4].ToString();
//貌似必填
IWareDataAccess.Base.ITEM.ItemSqlFunc.AddOrUpdate(item, out msg);
//保存到数据库
using (Model edm = new Model())
{
BASE_ITEM sqlItem = new BASE_ITEM();
}
//记录读取指针
oldidOfItem = int.Parse(row[5].ToString());
}
else
{
int a = 0;
}
}
catch (Exception e)
{
// WZ.Useful.Commons.LogTextHelper.WriteLine("OracleWord", "SearchItem", e.ToString());
//等待
Thread.Sleep(1000);
}
}
///
/// 搜索新物料
///
public static void SearchItem()
{
try
{
string sqlString = "select * from (select * from QDERP.DI_T_MMRGENMTL where MMRGENMTLID > " + oldidOfItem + " order by MMRGENMTLID) where rownum < 2";
DataTable dt = ExecuteDataTable(sqlString, new OracleParameter(":id", 1));
DataRow row = dt.AsEnumerable().FirstOrDefault();
if (row != null)
{
//AddItem item = new AddItem();
////必填
//item.productCode = row[6].ToString();
//item.productName = GetDes(int.Parse(row[5].ToString()));
//item.productModel = row[5].ToString();
//item.consignorCode = "";
//item.providerCode = "";
//item.providerShortName = "默认供应商";
//item.enable = 1;
////ERP存在数据
//item.productSpec = row[0].ToString();
//item.smallUnit = row[4].ToString();
////貌似必填
//item.consignorName = "一汽解放青岛";
//item.consignorCode = "V30";
//item.consignor_Id = 323;
////调用接口
//GetJsonOfItem getInfo = ReadErpSendToWMS.AdditemMethod(item);
//if (getInfo.result == false)
//{
// if (getInfo.data != null)
// {
// // WZ.Useful.Commons.LogTextHelper.WriteLine("OracleWord", "SearchItem", getInfo.data.productModel.ToString());
// }
// //WZ.Useful.Commons.LogTextHelper.WriteLine("OracleWord", "SearchItem", getInfo.msg);
//}
string msg = "";
ItemWebEntity item = new ItemWebEntity();
item.itemName = row[6].ToString();
item.itemDes = GetDes(int.Parse(row[5].ToString()));
//item.productModel = row[5].ToString();
item.enable = 1;
//ERP存在数据
//item.productSpec = row[0].ToString();
item.unit = row[4].ToString();
//貌似必填
IWareDataAccess.Base.ITEM.ItemSqlFunc.AddOrUpdate(item, out msg);
//保存到数据库
using (Model edm = new Model())
{
BASE_ITEM sqlItem = new BASE_ITEM();
}
//记录读取指针
oldidOfItem = int.Parse(row[5].ToString());
}
}
catch(Exception e)
{
// WZ.Useful.Commons.LogTextHelper.WriteLine("OracleWord", "SearchItem", e.ToString());
//等待
Thread.Sleep(1000);
}
}
///
/// 获取物料描述
///
///
///
public static string GetDes(int id)
{
string sqlString = "select * from QDERP.DI_T_MMRGENMTLTRL where MMRGENMTLID = " + id;
DataTable dt = ExecuteDataTable(sqlString, new OracleParameter(":id", 1));
DataRow row = dt.AsEnumerable().FirstOrDefault();
return row[2].ToString();
}
///
/// 获取关联任务描述
///
///
///
public static DataTable GetDesTask(string id)
{
string sqlString = "select * from QDERP.DI_T_KANBANITEM where shopKBNO = '" + id + "' and DI_OPERTYPE != 'D'";
DataTable dt = ExecuteDataTable(sqlString, new OracleParameter(":id", 1));
return dt;
}
}
}