|
|
using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using ICSSoft.FromERP.Extension; using ICSSoft.FromERP.Model; using Newtonsoft.Json; using Quartz;
namespace ICSSoft.FromERP { /// <summary>
/// 物料档案(威迈)
/// </summary>
public class SyncItem_WeiMas : IJob { private static object key = new object(); private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); public void Execute(IJobExecutionContext context) { try { lock (key) { log.Info("开始……………………………………………………………………"); Execute(); log.Info("结束……………………………………………………………………"); } } catch (Exception ex) { log.Error(ex.ToString()); } }
public void Execute() { try { string conStr = ICSHelper.GetConnectString(); string Namespace = this.GetType().Namespace; //string Class = this.GetType().Name;
DataTable dt = ICSHelper.GetERPDB(conStr); foreach (DataRow dr in dt.Rows) { var dtNowBegin = new DateTime(2000, 1, 1, 0, 0, 0);//默认开始时间
var dtNow = DateTime.Now; string erpName = ICSHelper.GetConfigString()["ERPDB"]; string TenantId = dr["TenantId"].ToString();//mes 组织
string TenantCode = dr["TenantCode"].ToString(); string ErpId = dr["ErpID"].ToString(); //erpID
string Class = this.GetType().Name + TenantCode; erpName = string.Format(erpName, TenantId);
string sql0 = " SELECT top 1 ModifyDate FROM ICSERPTime where ClassName='" + Class + "'"; var lastDate = ICSHelper.ExecuteScalar(conStr, sql0).ToDateOrNull(); if (!lastDate.HasValue) { lastDate = dtNowBegin; }
string sql = @" select '"+ DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "' as MTIME into #TempItem "; sql = ICSHelper.Time(Namespace, Class, TenantId, sql, "#TempItem"); sql += "DROP TABLE #TempItem"; ICSHelper.ExecuteDate(conStr, sql);
Dictionary<string, string> dic = new Dictionary<string, string>(); dic.Add("WEP", "MSP"); dic.Add("WEI", "MSI"); dic.Add("WP", "MS0P"); dic.Add("WEO", "MSO"); dic.Add("WEF", "MSF"); dic.Add("RMRD", "MSRM");
List<string> keyList = new List<string>(); keyList.AddRange(dic.Keys.ToList()); List<string> valueList = new List<string>(); valueList.AddRange(dic.Values.ToList());
#region 获取Token
var tokenUrl = ICSHelper.GetConfigString()["WeiMasTokenUrl"]; var inputTokenDto = new TokenInputDto();
inputTokenDto.route = "sj_token"; inputTokenDto.grant_type = "password"; inputTokenDto.client_id = ICSHelper.GetConfigString()["app_id"]; inputTokenDto.client_secret = ICSHelper.GetConfigString()["app_secret"]; inputTokenDto.timestamp = dtNow.ToMillisecondsTimeStamp(); // inputTokenDto.timestamp = 1727252722913;
inputTokenDto.username = "api_token"; inputTokenDto.sign = ICSHelper.ApiSign(inputTokenDto.client_id, inputTokenDto.client_secret, inputTokenDto.timestamp); // inputTokenDto.sign = "0e29ab77f05117b979901723dbcffecf";
inputTokenDto.clientExplorer = "";
var tokenDto= HttpHelper.PostForm<TokenDto, TokenInputDto> (tokenUrl, inputTokenDto).Result; if(string.IsNullOrEmpty(tokenDto.access_token)) { throw new Exception(" no access_token "); }
// return;
#endregion
#region 获取子公司列表
//var companyUrl = ICSHelper.GetConfigString()["WeiMasOrgUrl"] + @"/EnterpriseService/FromWeMec/GetSubCompanyList";
//var companyDto = HttpHelper.HttpClientGet<WeiMasResult<List<SubCompanyDto>>>(companyUrl,"", tokenDto.access_token).Result;
//if(companyDto.Data==null|| companyDto.Data.Count == 0)
//{
// throw new Exception(" 获取子公司列表失败 ");
//}
// return;
#endregion
var input = new ItemInputDto(); input.CustomerId = ICSHelper.GetConfigString()["WeiMasOrgCustomerId"]; input.CASNo = ""; input.BeginTime = dtNowBegin.ToString("yyyy-MM-dd HH:mm:ss"); input.EndTime =dtNow.ToString("yyyy-MM-dd HH:mm:ss");
var inputObj = JsonConvert.SerializeObject(input); string url = ICSHelper.GetConfigString()["WeiMasErpUrl"]+ @"/BasicAssistingService/FromWeMec/APIItemToMES";
var result = HttpHelper.HttpClientPost<WeiMasResult<List<ItemDto>>>(url, inputObj,token: tokenDto.access_token).Result; if (result.IsSuccess) { if (result.Data.Count == 0) { return; }
// return;
var insertSql = @"
if exists (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb..#tempFromErp4ItemCode') and type='U') DROP TABLE #tempFromErp4ItemCode
select * into #tempFromErp4ItemCode from (";
Dictionary<string, string> dics = new Dictionary<string, string>();
for (int i = 0; i < result.Data.Count; i++) { var item = result.Data[i]; dics.Clear();
var subKey = keyList.Where(x => item.ItemCode.StartsWith(x)).FirstOrDefault(); if (subKey != null) { string value = valueList[keyList.FindIndex(x => x == subKey)]; dics.Add("ItemCode", item.ItemCode.Replace(subKey, value).Replace("-","")); } else { dics.Add("ItemCode", item.ItemCode.Replace("-", "")); } dics.Add("ItemAddCode", item.ItemCode); dics.Add("ItemName", item.ItemName); dics.Add("ItemStd", item.ItemStd); dics.Add("ItemDesc", item.ItemDesc); dics.Add("ItemCasNo", item.ItemCasNo); dics.Add("ItemMolecularFormula", item.ItemMolecularFormula); dics.Add("ItemAttribute", item.ItemAttribute); dics.Add("ItemMainCategoryCode", item.ItemMainCategoryCode); dics.Add("ItemUnit", item.ItemUnit); dics.Add("Itemmodel", item.Itemmodel); dics.Add("GR", item.GR); dics.Add("Mtime", item.Mtime.ToString("yyyy-MM-dd HH:mm:ss")); dics.Add("Free1", item.Free1); dics.Add("Free2", item.Free2); dics.Add("Free3", item.Free3); dics.Add("Free4", item.Free4); if (i == 0) { insertSql += " select ";
} else { insertSql += " union all "; insertSql += " select ";
} foreach (var keyValue in dics) { insertSql += " '" + keyValue.Value + "' as " + keyValue.Key + " ,"; }
insertSql = insertSql.TrimEnd(','); }
insertSql += " ) a";
insertSql += @"
insert into IcsInventory (ItemCode,ItemAddCode,ItemName,ItemDesc,ItemStd,ItemType,ItemControlType,ItemContype ,ItemAttribute,ItemUnit,ItemMainCategoryCode,ItemModel,ItemCasNo,ItemMolecularFormula,GR,Default1,Default2,Default3,Default4 ,CreationTime,CreatorUserId,CreatorUserName,TenantId)
select a.ItemCode,a.ItemAddCode,a.ItemName,a.ItemDesc,a.ItemStd,'itemtype_finishedproduct','item_control_lot','item_control_nocontrol' ,left( a.ItemAttribute,1),a.ITEMUnit,a.ItemMainCategoryCode,a.ITEMMODEL,a.ItemCasNo,a.ItemMolecularFormula,a.GR,a.Free1,a.Free2,a.Free3,a.Free4 ,Mtime,'job','job','{0}' from #tempFromErp4ItemCode a left join IcsInventory b with(nolock) on a.itemcode=b.itemcode where 1=1 and b.id is null
update IcsInventory set ItemName=a.ItemName,ItemDesc=a.ItemDesc,ItemStd=a.ItemStd,ItemAttribute=left( a.ItemAttribute,1) ,ITEMUnit=a.ITEMUnit,ItemMainCategoryCode=a.ItemMainCategoryCode,ITEMMODEL=a.ITEMMODEL ,ItemCasNo=a.ItemCasNo,ItemMolecularFormula=a.ItemMolecularFormula,Default1=a.Free1,Default2=a.Free2,Default3=a.Free3,Default4=a.Free4 ,LastModificationTime=a.Mtime,LastModifierUserId='job',LastModifierUserName='job' from #tempFromErp4ItemCode a left join IcsInventory b with(nolock) on a.itemcode=b.itemcode where 1=1 and b.Id is not null
";
insertSql = string.Format(insertSql, TenantId); ICSHelper.ExecuteDate(conStr, insertSql); } else { throw new Exception(result.Message); } } } catch (Exception ex) { log.Error(ex.ToString()); } } } }
|