using HH.WMS.BLL; using HH.WMS.BLL.CoreServer; using HH.WMS.Common; using HH.WMS.Entitys; using HH.WMS.Entitys.Algorithm; using HH.WMS.Entitys.Basic; using HH.WMS.Entitys.Common; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace HH.WMS.CoreServer.U8DataTrans { public class DataTrans { #region 开始执行 /// /// 开始执行 /// public void Start() { Log.Info(DateTime.Now.ToString(), "开启线程……"); try { //开启线程-库存比对 Thread thCompare = new Thread(DataTransCompare); thCompare.IsBackground = true; thCompare.Start(); //开启线程-同步物料档案表 Thread thInventory = new Thread(DataTransInventory); thInventory.IsBackground = true; thInventory.Start(); //开启线程-同步仓库档案表 Thread thWarehouse = new Thread(DataTransWarehouse); thWarehouse.IsBackground = true; thWarehouse.Start(); //开启线程-同步客户档案表 Thread thCustomer = new Thread(DataTransCustomer); thCustomer.IsBackground = true; thCustomer.Start(); //开启线程-同步供应商表 Thread thVendnr = new Thread(DataTransVendnr); thVendnr.IsBackground = true; thVendnr.Start(); //开启线程-同步采购入库单主表 Thread thRdrecord01 = new Thread(DataTransRdrecord01); thRdrecord01.IsBackground = true; thRdrecord01.Start(); //开启线程-同步其他入库单主表 Thread thRdrecord08 = new Thread(DataTransRdrecord08); thRdrecord08.IsBackground = true; thRdrecord08.Start(); //开启线程-同步产成品入库单主表 Thread thRdrecord10 = new Thread(DataTransRdrecord10); thRdrecord10.IsBackground = true; thRdrecord10.Start(); //开启线程-同步其他出库单主表 Thread thRdrecord09 = new Thread(DataTransRdrecord09); thRdrecord09.IsBackground = true; thRdrecord09.Start(); //开启线程-同步销售出库单主表 Thread thRdrecord32 = new Thread(DataTransRdrecord32); thRdrecord32.IsBackground = true; thRdrecord32.Start(); //开启线程-同步调拨单主表 Thread thTransVouch = new Thread(DataTransTransVouch); thTransVouch.IsBackground = true; thTransVouch.Start(); } catch (Exception ex) { Log.Info(DateTime.Now.ToString(), "执行错误:" + ex.Message); } } private void DataTransCompare() { System.Timers.Timer t = new System.Timers.Timer(); t.Interval = 60000; t.Elapsed += new System.Timers.ElapsedEventHandler(Timer_Elapsed);//到达时间的时候执行事件; t.AutoReset = true;//设置是执行一次(false)还是一直执行(true); t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件; } private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { Log.Info(DateTime.Now.ToString(), "进入库存对比进入库存对比进入库存对比进入库存对比进入库存对比进入库存对比"); if (DateTime.Now.Hour == 0 && DateTime.Now.Minute >= 1 && DateTime.Now.Minute < 2) { DataCompare(); } } #endregion #region 程序入口 /// /// 程序入口 /// private void DataTransInventory() { while (true) { try { //程序入口 Inventory(); } catch (Exception ex) { Log.Info(DateTime.Now.ToString(), "DataTransInventory调用平台接口错误:" + ex.Message); } } } private void DataTransWarehouse() { while (true) { try { //程序入口 Warehouse(); } catch (Exception ex) { Log.Info(DateTime.Now.ToString(), "DataTransWarehouse调用平台接口错误:" + ex.Message); } } } private void DataTransCustomer() { while (true) { try { //程序入口 Customer(); } catch (Exception ex) { Log.Info(DateTime.Now.ToString(), "DataTransCustomer调用平台接口错误:" + ex.Message); } } } private void DataTransVendnr() { while (true) { try { //程序入口 Vendnr(); } catch (Exception ex) { Log.Info(DateTime.Now.ToString(), "DataTransVendnr调用平台接口错误:" + ex.Message); } } } private void DataTransRdrecord01() { while (true) { try { //程序入口 Rdrecord01(); } catch (Exception ex) { Log.Info(DateTime.Now.ToString(), "DataTransRdrecord01调用平台接口错误:" + ex.Message); } } } private void DataTransRdrecord08() { while (true) { try { //程序入口 Rdrecord08(); } catch (Exception ex) { Log.Info(DateTime.Now.ToString(), "DataTransRdrecord08调用平台接口错误:" + ex.Message); } } } private void DataTransRdrecord10() { while (true) { try { //程序入口 Rdrecord10(); } catch (Exception ex) { Log.Info(DateTime.Now.ToString(), "DataTransRdrecord10调用平台接口错误:" + ex.Message); } } } private void DataTransRdrecord09() { while (true) { try { //程序入口 Rdrecord09(); } catch (Exception ex) { Log.Info(DateTime.Now.ToString(), "DataTransRdrecord09调用平台接口错误:" + ex.Message); } } } private void DataTransRdrecord32() { while (true) { try { //程序入口 Rdrecord32(); } catch (Exception ex) { Log.Info(DateTime.Now.ToString(), "DataTransRdrecord32调用平台接口错误:" + ex.Message); } } } private void DataTransTransVouch() { while (true) { try { //程序入口 TransVouch(); } catch (Exception ex) { Log.Info(DateTime.Now.ToString(), "DataTransTransVouch调用平台接口错误:" + ex.Message); } } } private void DataCompare() { try { Log.Info("开始进入库存比对", "DataCompare"); //程序入口 OperateResult result = BLLCreator.Create().DataCompare(); if (result.Success) { Log.Info("库存比对成功!", "DataCompare"); } else { Log.Info("库存比对失败!", result.Msg); } } catch (Exception ex) { Log.Info(DateTime.Now.ToString(), "调用平台接口错误:" + ex.Message); } } #endregion #region 调用接口 /// /// 调用接口 /// public void Inventory() { #region //1、************************物料档案表************************// int timer = 0; while (true) { timer++; List itemEntityList = new List(); DataTable itemEntityTable = BLLCreator.Create().GetInventoryData(); if (itemEntityTable.Rows.Count == 0) break; for (int i = 0; i < itemEntityTable.Rows.Count; i++) { PLM_itemEntity itemEntity = new PLM_itemEntity(); itemEntity.CODE = itemEntityTable.Rows[i]["cInvCode"].ToString(); itemEntity.NAME = itemEntityTable.Rows[i]["cInvName"].ToString(); itemEntity.UNIT = itemEntityTable.Rows[i]["cComUnitName"].ToString(); itemEntity.MODEL = itemEntityTable.Rows[i]["cInvStd"].ToString(); itemEntity.TYPE = "1"; itemEntity.ITEMTYPE = "商品"; //未传递 默认值 itemEntity.REMARK = "U8对接导入"; itemEntityList.Add(itemEntity); } AutobomResult backRes = BLLCreator.Create().AddList(itemEntityList); Log.Info("调用Autobom", JsonConvert.SerializeObject(backRes)); if (backRes.code == "0") { SqlExecuteResult updateState = BLLCreator.Create().UpdateInventoryCheckState(itemEntityList); if (!updateState.Success) { Log.Info("UpdateInventoryCheckState物料档案报错", JsonConvert.SerializeObject(updateState)); } } } #endregion } private void Warehouse() { #region //2、************************仓库档案表************************// while (true) { List stockEntityList = new List(); DataTable stockEntityTable = BLLCreator.Create().GetWarehouseData(); if (stockEntityTable.Rows.Count == 0) break; for (int i = 0; i < stockEntityTable.Rows.Count; i++) { TN_AB_STOCKEntity stockEntity = new TN_AB_STOCKEntity(); stockEntity.CN_GUID = System.Guid.NewGuid().ToString(); stockEntity.CN_S_STOCK_CODE = stockEntityTable.Rows[i]["cWhCode"].ToString(); stockEntity.CN_S_STOCK_NAME = stockEntityTable.Rows[i]["cWhName"].ToString(); stockEntity.CN_T_CREATE = Convert.ToDateTime(stockEntityTable.Rows[i]["dCreateDate"].ToString()); stockEntity.CN_T_MODIFY = string.IsNullOrEmpty(stockEntityTable.Rows[i]["dLastModifyDate"].ToString()) ? DateTime.Now : Convert.ToDateTime(stockEntityTable.Rows[i]["dLastModifyDate"].ToString()); //未传递 默认值 stockEntity.CN_S_CREATOR = "hh"; stockEntity.CN_S_CREATOR_BY = "汉和信息"; stockEntity.CN_S_MODIFY = "hh"; stockEntity.CN_S_MODIFY_BY = "汉和信息"; stockEntity.CN_S_STOCK_TYPE = ""; stockEntity.CN_C_IS_INIT = "N"; stockEntity.CN_T_INIT = DateTime.Now; stockEntity.CN_S_NOTE = "U8对接导入"; stockEntityList.Add(stockEntity); } bool isOk = BLLCreator.Create().AddList(stockEntityList, "TN_AB_STOCK"); if (isOk) { SqlExecuteResult updateState = BLLCreator.Create().UpdateWarehouseCheckState(stockEntityList); if (!updateState.Success) { Log.Info("UpdateWarehouseCheckState仓库档案", JsonConvert.SerializeObject(updateState)); } } } #endregion } private void Customer() { #region //3、************************客户档案表************************// while (true) { List customEntityList = new List(); DataTable customEntityTable = BLLCreator.Create().GetCustomerData(); if (customEntityTable.Rows.Count == 0) break; for (int i = 0; i < customEntityTable.Rows.Count; i++) { PLM_CusEntity customEntity = new PLM_CusEntity(); customEntity.GUID = System.Guid.NewGuid().ToString(); customEntity.COUSTOMER_CODE = customEntityTable.Rows[i]["cCusCode"].ToString(); customEntity.COUSTOMER_NAME = customEntityTable.Rows[i]["cCusName"].ToString(); customEntity.COUSTOMER_SHORT_NAME = customEntityTable.Rows[i]["cCusAbbName"].ToString(); customEntity.ADDRESS = customEntityTable.Rows[i]["cCusAddress"].ToString(); customEntity.CREATE = Convert.ToDateTime(customEntityTable.Rows[i]["dCreateDate"].ToString()); customEntity.MODIFY = string.IsNullOrEmpty(customEntityTable.Rows[i]["dLastModifyDate"].ToString()) ? DateTime.Now : Convert.ToDateTime(customEntityTable.Rows[i]["dLastModifyDate"].ToString()); //未传递 默认值 customEntity.CREATOR = "hh"; customEntity.TYPE = "1"; customEntity.CREATOR_BY = "汉和信息"; customEntity.MODIFY_BY = "hh"; customEntity.MODIFY_BY = "汉和信息"; customEntity.REMARK = "U8对接导入"; customEntityList.Add(customEntity); } AutobomResult backRes = BLLCreator.Create().AddCusList(customEntityList); if (backRes.code == "0") { SqlExecuteResult updateState = BLLCreator.Create().UpdateCustomerCheckState(customEntityList); if (!updateState.Success) { Log.Info("UpdateCustomerCheckState客户档案", JsonConvert.SerializeObject(updateState)); } } } #endregion } private void Vendnr() { #region //4、*************************供应商表*************************// while (true) { List vendnrEntityList = new List(); DataTable vendnrEntityTable = BLLCreator.Create().GetVendnrData(); if (vendnrEntityTable.Rows.Count == 0) break; for (int i = 0; i < vendnrEntityTable.Rows.Count; i++) { PLM_VenEntity vendnrEntity = new PLM_VenEntity(); vendnrEntity.GUID = System.Guid.NewGuid().ToString(); vendnrEntity.VENDOR_CODE = vendnrEntityTable.Rows[i]["cVenCode"].ToString(); vendnrEntity.VENDOR_NAME = vendnrEntityTable.Rows[i]["cVenName"].ToString(); vendnrEntity.VENDOR_SHORT_NAME = vendnrEntityTable.Rows[i]["cVenAbbName"].ToString(); vendnrEntity.ADDRESS = vendnrEntityTable.Rows[i]["cVenAddress"].ToString(); vendnrEntity.CREATE = Convert.ToDateTime(vendnrEntityTable.Rows[i]["dCreateDate"].ToString()); vendnrEntity.MODIFY = string.IsNullOrEmpty(vendnrEntityTable.Rows[i]["dLastModifyDate"].ToString()) ? DateTime.Now : Convert.ToDateTime(vendnrEntityTable.Rows[i]["dLastModifyDate"].ToString()); //未传递 默认值 vendnrEntity.CREATOR = "hh"; vendnrEntity.TYPE = "1"; vendnrEntity.CREATOR_BY = "汉和信息"; vendnrEntity.MODIFY_OR = "hh"; vendnrEntity.MODIFY_BY = "汉和信息"; vendnrEntity.REMARK = "U8对接导入"; vendnrEntityList.Add(vendnrEntity); } AutobomResult backRes = BLLCreator.Create().AddVenList(vendnrEntityList); if (backRes.code == "0") { SqlExecuteResult updateState = BLLCreator.Create().UpdateVendnrCheckState(vendnrEntityList); if (!updateState.Success) { Log.Info("vendnrEntityList供应商档案", JsonConvert.SerializeObject(updateState)); } } } #endregion } private void Rdrecord01() { #region //5、**********************采购入库单主表**********************// while (true) { DataTable RdrecordMstEntityTable = BLLCreator.Create().GetInMstData("Rdrecord01"); if (RdrecordMstEntityTable.Rows.Count == 0) break; BLLCreator.Create().AddRdrecord(RdrecordMstEntityTable, "Rdrecord01", "Rdrecords01", "采购入库"); } #endregion } private void Rdrecord08() { #region //6、**********************其他入库单主表**********************// while (true) { DataTable RdrecordMstEntityTable = BLLCreator.Create().GetInMstData("Rdrecord08"); if (RdrecordMstEntityTable.Rows.Count == 0) break; BLLCreator.Create().AddRdrecord(RdrecordMstEntityTable, "Rdrecord08", "Rdrecords08", "其他入库"); } #endregion } private void Rdrecord10() { #region //7、*********************产成品入库单主表*********************// while (true) { DataTable RdrecordMstEntityTable = BLLCreator.Create().GetInMstData("Rdrecord10"); if (RdrecordMstEntityTable.Rows.Count == 0) break; BLLCreator.Create().AddRdrecord(RdrecordMstEntityTable, "Rdrecord10", "Rdrecords10", "成品入库"); } #endregion } private void Rdrecord09() { #region //8、**********************其他出库单主表**********************// while (true) { DataTable RdrecordMstEntityTable = BLLCreator.Create().GetOutMstData("Rdrecord09"); if (RdrecordMstEntityTable.Rows.Count == 0) break; BLLCreator.Create().AddRdrecord(RdrecordMstEntityTable, "Rdrecord09", "Rdrecords09", "其他出库"); } #endregion } private void Rdrecord32() { #region //9、**********************销售出库单主表**********************// while (true) { DataTable RdrecordMstEntityTable = BLLCreator.Create().GetOutMstData("Rdrecord32"); if (RdrecordMstEntityTable.Rows.Count > 0) { BLLCreator.Create().AddRdrecord(RdrecordMstEntityTable, "Rdrecord32", "Rdrecords32", "销售出库"); } DataTable RdrecordMstEntityTableTH = BLLCreator.Create().GetOutMstDataTH("Rdrecord32"); if (RdrecordMstEntityTableTH.Rows.Count > 0) { BLLCreator.Create().AddRdrecordTH(RdrecordMstEntityTableTH, "Rdrecord32", "Rdrecords32", "销售退货"); } if (RdrecordMstEntityTable.Rows.Count == 0 && RdrecordMstEntityTableTH.Rows.Count == 0) { break; } } #endregion } private void TransVouch() { #region //10、***********************调拨单主表************************// while (true) { DataTable RdrecordMstEntityTable = BLLCreator.Create().GetOutMstData("TransVouch"); if (RdrecordMstEntityTable.Rows.Count == 0) break; BLLCreator.Create().UpdateRdrecord(RdrecordMstEntityTable, "TransVouch", "TransVouchs"); } #endregion } #endregion } }