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);
}
}
}
}