namespace BLL { using Newtonsoft.Json.Linq; using System; using System.Timers; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; public static class MCSWebService { #region 启动监视器 系统启动5分钟 /// /// 监视组件 /// private static Timer messageTimer; /// /// 启动监视器,不一定能成功,根据系统设置决定对监视器执行的操作 系统启动5分钟 /// public static void StartMonitor() { if (messageTimer != null) { messageTimer.Stop(); messageTimer.Dispose(); messageTimer = null; } messageTimer = new Timer { AutoReset = true }; messageTimer.Elapsed += new ElapsedEventHandler(GetCLData); messageTimer.Interval = 1000 * 60 * 60 * 24;// 60分钟 60000 * adTimeJ; messageTimer.Start(); } #endregion public static void GetCLData(object sender, ElapsedEventArgs e) { getPojectInfo(); getVendor(); var projects = from x in Funs.DB.Base_Project where x.CLProjectCode != null select x; foreach (var project in projects) { getPoDetails(project.CLProjectCode ?? 0); getIssueDetails(project.CLProjectCode ?? 0); getPartNoInfo(project.CLProjectCode ?? 0); getShelvesNo(project.CLProjectCode ?? 0); getSubcontractor(project.CLProjectCode ?? 0); getReqDetails(project.CLProjectCode ?? 0); } } public static void getPojectInfo() { try { using (var db = new Model.SGGLDB(Funs.ConnString)) { MCSService.WebService1SoapClient mscsC = new MCSService.WebService1SoapClient(); var details = mscsC.getPojectInfo(); if (!string.IsNullOrEmpty(details)) { JArray arr = JArray.Parse(details); foreach (var item in arr) { Model.Base_Project project = db.Base_Project.FirstOrDefault(x => x.ProjectCode == item["项目编码"].ToString()); if (project != null) { project.CLProjectCode = Funs.GetNewInt(item["项目ID"].ToString()); db.SubmitChanges(); } } } } } catch (Exception ex) { ErrLogInfo.WriteLog(ex, "材料管理接口定时器", "MCSWebService.getPojectInfo" + ex.Message); } } public static void getPoDetails(long projectId) { try { using (var db = new Model.SGGLDB(Funs.ConnString)) { MCSService.WebService1SoapClient mscsC = new MCSService.WebService1SoapClient(); var details = mscsC.getPoDetails(projectId); if (!string.IsNullOrEmpty(details)) { var q = from x in db.CLGL_ContractQuantitySheet where x.ProjectId == projectId.ToString() select x; if (q.Count() > 0) { db.CLGL_ContractQuantitySheet.DeleteAllOnSubmit(q); db.SubmitChanges(); } JArray arr = JArray.Parse(details); foreach (var item in arr) { Model.CLGL_ContractQuantitySheet contractQuantitySheet = new Model.CLGL_ContractQuantitySheet(); contractQuantitySheet.PPGUID = item["PPGUID"].ToString(); contractQuantitySheet.ProjectId = projectId.ToString(); contractQuantitySheet.MaterialUse = item["材料用途"].ToString(); contractQuantitySheet.ContractCode = item["合同号"].ToString(); contractQuantitySheet.Major = item["专业"].ToString(); contractQuantitySheet.PSGUID = item["PSGUID"].ToString(); contractQuantitySheet.RDGUID = item["RDGUID"].ToString(); contractQuantitySheet.MaterialCode = item["材料编码"].ToString(); contractQuantitySheet.TagNo = item["位号"].ToString(); contractQuantitySheet.BuyQuantity = item["采购量"].ToString(); contractQuantitySheet.Remark = item["备注"].ToString(); contractQuantitySheet.DeviceCode = item["装置号"].ToString(); contractQuantitySheet.MainItemCode = item["主项号"].ToString(); contractQuantitySheet.UnitName = item["企业中文名称"].ToString(); db.CLGL_ContractQuantitySheet.InsertOnSubmit(contractQuantitySheet); db.SubmitChanges(); } } } } catch (Exception ex) { ErrLogInfo.WriteLog(ex, "材料管理接口定时器", "MCSWebService.getPoDetails" + ex.Message); } } public static void getIssueDetails(long projectId) { try { using (var db = new Model.SGGLDB(Funs.ConnString)) { MCSService.WebService1SoapClient mscsC = new MCSService.WebService1SoapClient(); var details = mscsC.getIssueDetails(projectId); if (!string.IsNullOrEmpty(details)) { var q = from x in db.CLGL_PickMaterialRecord where x.ProjectId == projectId.ToString() select x; if (q.Count() > 0) { db.CLGL_PickMaterialRecord.DeleteAllOnSubmit(q); db.SubmitChanges(); } JArray arr = JArray.Parse(details); foreach (var item in arr) { Model.CLGL_PickMaterialRecord pickMaterialRecord = new Model.CLGL_PickMaterialRecord(); pickMaterialRecord.IDGUID = item["IDGUID"].ToString(); pickMaterialRecord.ProjectId = projectId.ToString(); pickMaterialRecord.PickCode = item["领料单号"].ToString(); pickMaterialRecord.PickDate = Funs.GetNewDateTime(item["领料时间"].ToString()); pickMaterialRecord.PickUnit = item["领料单位"].ToString(); pickMaterialRecord.PickLimitDate = Funs.GetNewDateTime(item["领料截止时间"].ToString()); pickMaterialRecord.State = item["领料单审批状态代码"].ToString(); pickMaterialRecord.ISGUID = item["ISGUID"].ToString(); pickMaterialRecord.PLGUID = item["PLGUID"].ToString(); pickMaterialRecord.Major = item["专业"].ToString(); pickMaterialRecord.PSGUID = item["PSGUID"].ToString(); pickMaterialRecord.MaterialCode = item["材料编码"].ToString(); pickMaterialRecord.TagNo = item["位号"].ToString(); pickMaterialRecord.ClaimQuantity = item["申领量"].ToString(); pickMaterialRecord.ApproveQuantity = item["批准量"].ToString(); pickMaterialRecord.ActualQuantity = item["实发量"].ToString(); pickMaterialRecord.DHGUID = item["DHGUID"].ToString(); pickMaterialRecord.Remark = item["发料备注"].ToString(); pickMaterialRecord.DeviceCode = item["装置号"].ToString(); pickMaterialRecord.MainItemCode = item["主项号"].ToString(); db.CLGL_PickMaterialRecord.InsertOnSubmit(pickMaterialRecord); db.SubmitChanges(); } } } } catch (Exception ex) { ErrLogInfo.WriteLog(ex, "材料管理接口定时器", "MCSWebService.getIssueDetails" + ex.Message); } } public static void getPartNoInfo(long projectId) { try { using (var db = new Model.SGGLDB(Funs.ConnString)) { MCSService.WebService1SoapClient mscsC = new MCSService.WebService1SoapClient(); var details = mscsC.getPartNoInfo(projectId); if (!string.IsNullOrEmpty(details)) { var q = from x in db.CLGL_Material where x.ProjectId == projectId.ToString() select x; if (q.Count() > 0) { db.CLGL_Material.DeleteAllOnSubmit(q); db.SubmitChanges(); } JArray arr = JArray.Parse(details); foreach (var item in arr) { Model.CLGL_Material material = new Model.CLGL_Material(); material.Id = SQLHelper.GetNewID(); material.ProjectId = projectId.ToString(); material.MaterialCode = item["材料编码"].ToString(); material.TagNo = item["位号"].ToString(); material.MaterialName = item["材料名称"].ToString(); material.Def = item["规格描述"].ToString(); material.Unit = item["计量单位"].ToString(); db.CLGL_Material.InsertOnSubmit(material); db.SubmitChanges(); } } } } catch (Exception ex) { ErrLogInfo.WriteLog(ex, "材料管理接口定时器", "MCSWebService.getPartNoInfo" + ex.Message); } } public static void getMTODetailInfo(long projectId) { try { using (var db = new Model.SGGLDB(Funs.ConnString)) { MCSService.WebService1SoapClient mscsC = new MCSService.WebService1SoapClient(); var details = mscsC.getPojectReport(projectId, "MTO明细信息一览表"); if (!string.IsNullOrEmpty(details)) { var q = from x in db.CLGL_Material where x.ProjectId == projectId.ToString() select x; if (q.Count() > 0) { db.CLGL_Material.DeleteAllOnSubmit(q); db.SubmitChanges(); } JArray arr = JArray.Parse(details); foreach (var item in arr) { Model.CLGL_Material material = new Model.CLGL_Material(); material.Id = SQLHelper.GetNewID(); material.ProjectId = projectId.ToString(); material.MaterialCode = item["材料编码"].ToString(); material.TagNo = item["位号"].ToString(); material.MaterialName = item["材料名称"].ToString(); material.Def = item["规格描述"].ToString(); material.Unit = item["计量单位"].ToString(); db.CLGL_Material.InsertOnSubmit(material); db.SubmitChanges(); } } } } catch (Exception ex) { ErrLogInfo.WriteLog(ex, "材料管理接口定时器", "MCSWebService.getMTODetailInfo" + ex.Message); } } public static void getShelvesNo(long projectId) { try { using (var db = new Model.SGGLDB(Funs.ConnString)) { MCSService.WebService1SoapClient mscsC = new MCSService.WebService1SoapClient(); var details = mscsC.getShelvesNo(projectId); if (!string.IsNullOrEmpty(details)) { var q = from x in db.CLGL_GoodsShelves where x.ProjectId == projectId.ToString() select x; if (q.Count() > 0) { db.CLGL_GoodsShelves.DeleteAllOnSubmit(q); db.SubmitChanges(); } JArray arr = JArray.Parse(details); foreach (var item in arr) { Model.CLGL_GoodsShelves goodsShelves = new Model.CLGL_GoodsShelves(); goodsShelves.DHGUID = item["DHGUID"].ToString(); goodsShelves.ProjectId = projectId.ToString(); goodsShelves.GoodsShelvesCode = item["货架编号"].ToString(); goodsShelves.Def = item["货架编号描述"].ToString(); db.CLGL_GoodsShelves.InsertOnSubmit(goodsShelves); db.SubmitChanges(); } } } } catch (Exception ex) { ErrLogInfo.WriteLog(ex, "材料管理接口定时器", "MCSWebService.getPartNoInfo" + ex.Message); } } public static void getSubcontractor(long projectId) { try { using (var db = new Model.SGGLDB(Funs.ConnString)) { MCSService.WebService1SoapClient mscsC = new MCSService.WebService1SoapClient(); var details = mscsC.getSubcontractor(projectId); if (!string.IsNullOrEmpty(details)) { var q = from x in db.CLGL_SubUnit where x.ProjectId == projectId.ToString() select x; if (q.Count() > 0) { db.CLGL_SubUnit.DeleteAllOnSubmit(q); db.SubmitChanges(); } JArray arr = JArray.Parse(details); foreach (var item in arr) { Model.CLGL_SubUnit subUnit = new Model.CLGL_SubUnit(); subUnit.Id = SQLHelper.GetNewID(); subUnit.ProjectId = projectId.ToString(); subUnit.SubUnitCode = item["分包商编号"].ToString(); subUnit.SubUnitName = item["分包商名称"].ToString(); db.CLGL_SubUnit.InsertOnSubmit(subUnit); db.SubmitChanges(); } } } } catch (Exception ex) { ErrLogInfo.WriteLog(ex, "材料管理接口定时器", "MCSWebService.getSubcontractor" + ex.Message); } } public static void getVendor() { try { using (var db = new Model.SGGLDB(Funs.ConnString)) { MCSService.WebService1SoapClient mscsC = new MCSService.WebService1SoapClient(); var details = mscsC.getVendor(); if (!string.IsNullOrEmpty(details)) { var q = from x in db.CLGL_Supplier select x; if (q.Count() > 0) { db.CLGL_Supplier.DeleteAllOnSubmit(q); db.SubmitChanges(); } JArray arr = JArray.Parse(details); foreach (var item in arr) { Model.CLGL_Supplier supplier = new Model.CLGL_Supplier(); supplier.Id = SQLHelper.GetNewID(); supplier.SupplierName = item["企业中文名称"].ToString(); supplier.SupplierCode = item["厂商企标ID"].ToString(); db.CLGL_Supplier.InsertOnSubmit(supplier); db.SubmitChanges(); } } } } catch (Exception ex) { ErrLogInfo.WriteLog(ex, "材料管理接口定时器", "MCSWebService.getVendor" + ex.Message); } } public static void getReqDetails(long projectId) { try { using (var db = new Model.SGGLDB(Funs.ConnString)) { MCSService.WebService1SoapClient mscsC = new MCSService.WebService1SoapClient(); var details = mscsC.getReqDetails(projectId); if (!string.IsNullOrEmpty(details)) { var q = from x in db.CLGL_PurchaseRequisition where x.ProjectId == projectId.ToString() select x; if (q.Count() > 0) { db.CLGL_PurchaseRequisition.DeleteAllOnSubmit(q); db.SubmitChanges(); } JArray arr = JArray.Parse(details); foreach (var item in arr) { Model.CLGL_PurchaseRequisition purchaseRequisition = new Model.CLGL_PurchaseRequisition(); purchaseRequisition.Id = SQLHelper.GetNewID(); purchaseRequisition.RSGUID = item["RSGUID"].ToString(); purchaseRequisition.ProjectId = projectId.ToString(); purchaseRequisition.PurchaseRequisitionCode = item["请购单号"].ToString(); purchaseRequisition.PurchaseRequisitionName = item["请购单名称"].ToString(); purchaseRequisition.SiteRequisition = item["现场请购"].ToString(); purchaseRequisition.Major = item["专业名称"].ToString(); purchaseRequisition.RDGUID = item["RDGUID"].ToString(); purchaseRequisition.MaterialClass = item["材料等级"].ToString(); purchaseRequisition.MaterialCode = item["材料编码"].ToString(); purchaseRequisition.TagNo = item["位号"].ToString(); purchaseRequisition.DesignQuantity = item["设计量"].ToString(); purchaseRequisition.SurplusQuantity = item["余量"].ToString(); purchaseRequisition.RequisitionQuantity = item["请购量"].ToString(); purchaseRequisition.Def = item["请购说明"].ToString(); purchaseRequisition.DeviceCode = item["装置号"].ToString(); purchaseRequisition.MainItemCode = item["主项号"].ToString(); purchaseRequisition.MaterialUse = item["材料用途"].ToString(); purchaseRequisition.Remark = item["采购说明"].ToString(); db.CLGL_PurchaseRequisition.InsertOnSubmit(purchaseRequisition); db.SubmitChanges(); } } } } catch (Exception ex) { ErrLogInfo.WriteLog(ex, "材料管理接口定时器", "MCSWebService.getVendor" + ex.Message); } } } }