using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Text; using System.Threading; using SuperMap.RealEstate.ServiceModel; using HWSB = SuperMap.RealEstate.HighWay.Storage.Business; using HCC = HZQR.Common.Common; using Newtonsoft.Json.Linq; using HZQR.Common; namespace ZJZCGCMemberClient.Method { /// /// 基础信息传输相关方法 /// public class BaseInfoHelper { protected static string WholeServerpartId = ConfigurationManager.AppSettings["WholeServerpartId"]; protected static string TransmissionShop = ConfigurationManager.AppSettings["TransmissionShop"]; #region 同步门店数据 public static void SynchroShopInfo(Transaction transaction, string LastDateTime) { string NowTime = DateTime.Now.ToString(); //查询所有门店信息 string SQLString = string.Format(@"SELECT A.*,B.SERVERPARTSHOP_ID,B.SHOPCODE,B.SHOPNAME,B.ISVALID,B.BUSINESS_STATE, B.SHOPTRADE,C.SERVERPART_X,C.SERVERPART_Y FROM HIGHWAY_STORAGE.T_ZJHYSPCRT A, HIGHWAY_STORAGE.T_SERVERPARTSHOP B, HIGHWAY_STORAGE.T_SERVERPART C WHERE A.SERVERPART_ID = B.SERVERPART_ID AND A.SHOPREGION = B.SHOPREGION AND A.ZONAL_CODING IS NOT NULL AND B.SHOPCODE IS NOT NULL AND B.SERVERPART_ID = C.SERVERPART_ID AND B.SHOPTRADE NOT IN ('9032','9999') AND NVL(B.STATISTICS_TYPE,'0') NOT LIKE '1020%'{0} AND B.OPERATE_DATE <= TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')", string.IsNullOrWhiteSpace(LastDateTime) ? "" : " AND B.OPERATE_DATE > TO_DATE('" + LastDateTime + "','YYYY/MM/DD HH24:MI:SS')", NowTime); DataTable dtStore = new HWSB.SERVERPARTSHOP(transaction).ExecuteDataTable(SQLString); if (dtStore.Rows.Count > 0) { foreach (Model.StoreModel storeModel in GetStoreList(transaction, dtStore)) { //开始同步门店数据 if (dtStore.Select("SERVERPARTSHOP_ID = " + storeModel.storeCode).Length > 0) { DataRow drStore = dtStore.Select("SERVERPARTSHOP_ID = " + storeModel.storeCode)[0]; LogUtil.WriteLog("开始同步门店:" + drStore["SECOND_DEP"] + drStore["SHOPNAME"]); } else { LogUtil.WriteLog("开始同步门店:" + storeModel.storeName); } if (dtStore.Select("ISVALID = 0 and SERVERPARTSHOP_ID = " + storeModel.storeCode).Length > 0) { CommonHelper.PostDataToZJHY(storeModel, 2, ZJZCGCMemberHelper.ApiURL + "/merchant/storeSync"); } else { CommonHelper.PostDataToZJHY(storeModel, 1, ZJZCGCMemberHelper.ApiURL + "/merchant/storeSync"); } } } //更新门店表数据同步时间 HCC.Common.AddUpdateAppSettings("LastDateTimeStore", NowTime); } /// /// 同步全部门店数据 /// /// public static void SynchroWholeShop(Transaction transaction) { string NowTime = DateTime.Now.ToString(); HWSB.SERVERPARTSHOP _SERVERPARTSHOP = new HWSB.SERVERPARTSHOP(transaction); //查询所有门店信息 string SQLString = string.Format(@"SELECT A.*,B.SERVERPARTSHOP_ID,B.SHOPCODE,B.SHOPNAME,B.SHOPTRADE,B.BUSINESS_STATE, C.SERVERPART_X,C.SERVERPART_Y FROM HIGHWAY_STORAGE.T_ZJHYSPCRT A, HIGHWAY_STORAGE.T_SERVERPARTSHOP B, HIGHWAY_STORAGE.T_SERVERPART C WHERE A.SERVERPART_ID = B.SERVERPART_ID AND A.SHOPREGION = B.SHOPREGION AND A.ZONAL_CODING IS NOT NULL AND B.SHOPCODE IS NOT NULL AND B.ISVALID = 1 AND B.SHOPTRADE NOT IN ('9032','9999') AND NVL(B.STATISTICS_TYPE,'0') NOT LIKE '1020%' AND B.SERVERPART_ID = C.SERVERPART_ID AND A.SERVERPART_ID = 104"); DataTable dtStore = _SERVERPARTSHOP.ExecuteDataTable(SQLString); //同步商品分类菜单数据 SQLString = string.Format(@"SELECT A.*,B.COMMODITYTYPE_ID,B.COMMODITYTYPE_NAME, B.COMMODITYTYPE_PID,B.COMMODITYTYPE_CODE,C.SERVERPARTSHOP_ID FROM HIGHWAY_STORAGE.T_COMMODITY A, HIGHWAY_STORAGE.T_COMMODITYTYPE B, HIGHWAY_STORAGE.T_SERVERPARTSHOP C WHERE A.COMMODITY_TYPE = TO_CHAR(B.COMMODITYTYPE_ID) AND A.SERVERPART_ID IN (C.SERVERPART_ID,{0}) AND A.BUSINESSTYPE = C.SHOPTRADE AND EXISTS (SELECT 1 FROM HIGHWAY_STORAGE.T_ZJHYSPCRT B WHERE A.SERVERPART_ID IN (B.SERVERPART_ID,{0})) AND C.ISVALID = 1 AND NVL(C.STATISTICS_TYPE,'0') NOT LIKE '1020%' AND A.COMMODITY_STATE = 1 AND C.SERVERPART_ID = 104", WholeServerpartId); DataTable dtGoods = _SERVERPARTSHOP.ExecuteDataTable(SQLString); foreach (Model.StoreModel storeModel in GetStoreList(transaction, dtStore, dtGoods.DefaultView.ToTable(true, "COMMODITY_TYPE", "SERVERPART_ID", "BUSINESSTYPE"))) { //开始同步门店数据 if (dtStore.Select("SERVERPARTSHOP_ID = " + storeModel.storeCode).Length > 0) { DataRow drStore = dtStore.Select("SERVERPARTSHOP_ID = " + storeModel.storeCode)[0]; LogUtil.WriteLog("开始同步门店:" + drStore["SECOND_DEP"] + drStore["SHOPNAME"]); } else { LogUtil.WriteLog("开始同步门店:" + storeModel.storeName); } CommonHelper.PostDataToZJHY(storeModel, 0, ZJZCGCMemberHelper.ApiURL + "/merchant/storeSync"); } //获取本次商品更新涉及的分类 DataTable dtClassify = dtGoods.DefaultView.ToTable(true, "SERVERPARTSHOP_ID", "BUSINESSTYPE", "COMMODITYTYPE_ID", "COMMODITYTYPE_PID", "COMMODITYTYPE_NAME", "COMMODITYTYPE_CODE", "SERVERPART_ID"); foreach (Model.ClassifyModel classifyModel in GetClassifyList(transaction, dtClassify, dtGoods.DefaultView.ToTable(true, "COMMODITY_CODE", "COMMODITYTYPE_ID", "SERVERPART_ID", "BUSINESSTYPE"))) { LogUtil.WriteLog("开始同步商品分类菜单:[" + classifyModel.sort + "]" + classifyModel.classifyName); CommonHelper.PostDataToZJHY(classifyModel, 0, ZJZCGCMemberHelper.ApiURL + "/merchant/storeClassifySync"); } //遍历商品数据并进行同步 foreach (DataRow drGoods in dtGoods.DefaultView.ToTable(true, "COMMODITY_TYPE", "COMMODITY_CODE", "COMMODITY_NAME", "COMMODITY_UNIT", "COMMODITY_RETAILPRICE").Select("", "COMMODITY_CODE")) { //绑定商品对象 Model.GoodsModel goodsModel = new Model.GoodsModel() { timestamp = HCC.Common.ConvertDataTimeLong(DateTime.Now), goodsCode = drGoods["COMMODITY_CODE"].ToString(), goodsName = drGoods["COMMODITY_NAME"].ToString(), img = "", unit = drGoods["COMMODITY_UNIT"].ToString(), nowPrice = drGoods["COMMODITY_RETAILPRICE"].ToString() }; //同步商品数据 LogUtil.WriteLog("开始同步商品:[" + drGoods["COMMODITY_CODE"] + "]" + goodsModel.goodsName); CommonHelper.PostDataToZJHY(goodsModel, 0, ZJZCGCMemberHelper.ApiURL + "/merchant/goodsSync"); } //更新门店表数据同步时间 HCC.Common.AddUpdateAppSettings("LastDateTimeStore", NowTime); HCC.Common.AddUpdateAppSettings("LastDateTimeGoods", NowTime); } #endregion #region 同步商品数据 public static void SynchroGoodsInfo(Transaction transaction, string LastDateTime) { List ShopIdList = new List(); List ClassifyCodeList = new List(); string NowTime = DateTime.Now.ToString(); HWSB.SERVERPARTSHOP _SERVERPARTSHOP = new HWSB.SERVERPARTSHOP(transaction); //查询所有门店信息 string SQLString = string.Format(@"SELECT A.*,B.SERVERPARTSHOP_ID,B.SHOPCODE,B.SHOPNAME,B.SHOPTRADE,B.ISVALID,B.BUSINESS_STATE, C.SERVERPART_X,C.SERVERPART_Y FROM HIGHWAY_STORAGE.T_ZJHYSPCRT A, HIGHWAY_STORAGE.T_SERVERPARTSHOP B, HIGHWAY_STORAGE.T_SERVERPART C WHERE A.SERVERPART_ID = B.SERVERPART_ID AND A.SHOPREGION = B.SHOPREGION AND A.ZONAL_CODING IS NOT NULL AND B.SHOPCODE IS NOT NULL AND B.SERVERPART_ID = C.SERVERPART_ID AND B.SHOPTRADE NOT IN ('9032','9999') AND B.ISVALID = 1 AND NVL(B.STATISTICS_TYPE,'0') NOT LIKE '1020%'"); DataTable dtShop = _SERVERPARTSHOP.ExecuteDataTable(SQLString); //查询发生变更的商品数据 string whereSQL = string.IsNullOrWhiteSpace(LastDateTime) ? "" : " AND A.OPERATE_DATE > TO_DATE('" + LastDateTime + "','YYYY/MM/DD HH24:MI:SS')"; SQLString = string.Format(@"SELECT COMMODITY_TYPE,COMMODITY_CODE,COMMODITY_NAME,COMMODITY_UNIT,COMMODITY_RETAILPRICE, SERVERPART_ID,BUSINESSTYPE,COMMODITY_STATE,ADDTIME,OPERATE_DATE FROM HIGHWAY_STORAGE.T_COMMODITY A WHERE EXISTS (SELECT 1 FROM HIGHWAY_STORAGE.T_ZJHYSPCRT B WHERE A.SERVERPART_ID IN (B.SERVERPART_ID,{0})) AND A.PROVINCE_CODE = 6618 AND A.BUSINESSTYPE NOT IN (9032){1} AND A.OPERATE_DATE <= TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS')", WholeServerpartId, whereSQL, NowTime); DataTable dtGoods = _SERVERPARTSHOP.ExecuteDataTable(SQLString); if (dtGoods.Rows.Count > 0) { //同步服务区商品数据 if (dtGoods.Select("SERVERPART_ID <> " + WholeServerpartId).Length > 0) { GoodsSync(dtShop, dtGoods.Select("SERVERPART_ID <> " + WholeServerpartId).CopyToDataTable(), ShopIdList, ClassifyCodeList); } //同步统一定价商品数据 if (dtGoods.Select("SERVERPART_ID = " + WholeServerpartId).Length > 0) { GoodsSync(dtShop, dtGoods.Select("SERVERPART_ID = " + WholeServerpartId).CopyToDataTable(), ShopIdList, ClassifyCodeList); } } Thread.Sleep(1000); string classifyCodes = HCC.Common.GetInString("COMMODITYTYPE_ID", ClassifyCodeList); string ShopIds = HCC.Common.GetInString("SERVERPARTSHOP_ID", ShopIdList); //同步商品分类菜单数据 SQLString = string.Format(@"SELECT A.COMMODITY_TYPE,A.COMMODITY_CODE,A.SERVERPART_ID,A.BUSINESSTYPE, B.*,C.SERVERPARTSHOP_ID FROM HIGHWAY_STORAGE.T_COMMODITY A, HIGHWAY_STORAGE.T_COMMODITYTYPE B, HIGHWAY_STORAGE.T_SERVERPARTSHOP C WHERE A.COMMODITY_TYPE = TO_CHAR(B.COMMODITYTYPE_ID) AND A.COMMODITY_RETAILPRICE IS NOT NULL AND A.COMMODITY_STATE = 1 AND A.SERVERPART_ID IN (C.SERVERPART_ID,{0}) AND A.BUSINESSTYPE = C.SHOPTRADE AND C.ISVALID = 1 AND {1}", WholeServerpartId, ShopIds.Replace("SERVERPARTSHOP_ID", "C.SERVERPARTSHOP_ID")); DataTable dtGoodsCode = _SERVERPARTSHOP.ExecuteDataTable(SQLString); //获取本次商品更新涉及的分类 dtGoodsCode.DefaultView.RowFilter = classifyCodes; DataTable dtClassify = dtGoodsCode.DefaultView.ToTable(true, "SERVERPARTSHOP_ID", "BUSINESSTYPE", "COMMODITYTYPE_ID", "COMMODITYTYPE_PID", "COMMODITYTYPE_NAME", "COMMODITYTYPE_CODE", "SERVERPART_ID"); foreach (Model.ClassifyModel classifyModel in GetClassifyList(transaction, dtClassify, dtGoodsCode.DefaultView.ToTable(true, "COMMODITY_CODE", "COMMODITYTYPE_ID", "SERVERPART_ID", "BUSINESSTYPE"))) { LogUtil.WriteLog("开始同步商品分类菜单:[" + classifyModel.sort + "]" + classifyModel.classifyName); CommonHelper.PostDataToZJHY(classifyModel, 1, ZJZCGCMemberHelper.ApiURL + "/merchant/storeClassifySync"); } Thread.Sleep(1000); //同步门店数据 dtShop.DefaultView.RowFilter = ShopIds; DataTable dtStore = dtShop.DefaultView.ToTable(); foreach (Model.StoreModel storeModel in GetStoreList(transaction, dtStore, dtGoodsCode.DefaultView.ToTable(true, "COMMODITY_TYPE", "SERVERPART_ID", "BUSINESSTYPE"))) { //开始同步门店数据 if (dtStore.Select("SERVERPARTSHOP_ID = " + storeModel.storeCode).Length > 0) { DataRow drStore = dtStore.Select("SERVERPARTSHOP_ID = " + storeModel.storeCode)[0]; LogUtil.WriteLog("开始同步门店:" + drStore["SECOND_DEP"] + drStore["SHOPNAME"]); } else { LogUtil.WriteLog("开始同步门店:" + storeModel.storeName); } CommonHelper.PostDataToZJHY(storeModel, 1, ZJZCGCMemberHelper.ApiURL + "/merchant/storeSync"); } //更新商品表数据同步时间 HCC.Common.AddUpdateAppSettings("LastDateTimeGoods", NowTime); } #region 同步商品数据 public static void GoodsSync(DataTable dtShop, DataTable dtGoods, List ShopIdList, List ClassifyCodeList) { //遍历商品数据并进行同步 foreach (DataRow drGoods in dtGoods.Rows) { foreach (DataRow drShop in dtShop.Select("SHOPTRADE = '" + drGoods["BUSINESSTYPE"] + "'" + (drGoods["SERVERPART_ID"].ToString() == "109" ? "" : " and SERVERPART_ID = " + drGoods["SERVERPART_ID"]))) { //获取本次商品更新后涉及到的门店 if (!ShopIdList.Contains(drShop["SERVERPARTSHOP_ID"].ToString())) { ShopIdList.Add(drShop["SERVERPARTSHOP_ID"].ToString()); } } //如果商品无效了,则下发删除指令;若添加时间和更新时间相差在2s之内,数据认定为新增,否则是更新操作 int operation = drGoods["COMMODITY_STATE"].ToString() == "0" ? 2 : Math.Abs((DateTime.Parse(drGoods["OPERATE_DATE"].ToString()) - DateTime.Parse(drGoods["ADDTIME"].ToString())).TotalSeconds) < 3 ? 0 : 1; //获取本次商品更新后涉及到的分类 if (drGoods["COMMODITY_TYPE"].TryParseToInt() != 0 && !ClassifyCodeList.Contains(drGoods["COMMODITY_TYPE"].ToString())) { ClassifyCodeList.Add(drGoods["COMMODITY_TYPE"].ToString()); } //绑定商品对象 Model.GoodsModel goodsModel = new Model.GoodsModel() { timestamp = HCC.Common.ConvertDataTimeLong(DateTime.Now), goodsCode = drGoods["COMMODITY_CODE"].ToString(), goodsName = drGoods["COMMODITY_NAME"].ToString(), img = "", unit = drGoods["COMMODITY_UNIT"].ToString(), nowPrice = drGoods["COMMODITY_RETAILPRICE"].ToString() }; //同步商品数据 LogUtil.WriteLog("开始同步商品:[" + drGoods["COMMODITY_CODE"] + "]" + goodsModel.goodsName); CommonHelper.PostDataToZJHY(goodsModel, operation, ZJZCGCMemberHelper.ApiURL + "/merchant/goodsSync"); } } #endregion #endregion #region 同步全部商品 public static void SynchroWholeGoods(Transaction transaction, string LastDateTime) { bool ShopUpdate; string NowTime = DateTime.Now.ToString(); HWSB.SERVERPARTSHOP _SERVERPARTSHOP = new HWSB.SERVERPARTSHOP(transaction); //查询所有门店信息 string SQLString = string.Format(@"SELECT A.*,B.SERVERPARTSHOP_ID,B.SHOPCODE,B.SHOPNAME,B.SHOPTRADE,B.ISVALID,B.BUSINESS_STATE, C.SERVERPART_CODE,C.SERVERPART_X,C.SERVERPART_Y FROM HIGHWAY_STORAGE.T_ZJHYSPCRT A, HIGHWAY_STORAGE.T_SERVERPARTSHOP B, HIGHWAY_STORAGE.T_SERVERPART C WHERE A.SERVERPART_ID = B.SERVERPART_ID AND A.SHOPREGION = B.SHOPREGION AND A.SERVERPART_HYCODE > '0' AND B.SHOPCODE IS NOT NULL AND B.SERVERPART_ID = C.SERVERPART_ID AND BUSINESS_STATE = 1000 AND B.ISVALID = 1 AND B.SHOPTRADE NOT IN ('9032','9999') AND NVL(B.STATISTICS_TYPE,'0') NOT LIKE '%1020%'"); DataTable dtShop = _SERVERPARTSHOP.ExecuteDataTable(SQLString); foreach (DataRow drServerpart in dtShop.DefaultView.ToTable(true, "SERVERPART_ID", "SERVERPART_CODE", "SERVERPART_HYCODE", "SECOND_DEP", "SHOPTRADE").Select("", "SERVERPART_HYCODE,SHOPTRADE")) { LogUtil.WriteLog(null, "开始同步" + drServerpart["SECOND_DEP"] + drServerpart["SHOPTRADE"], DateTime.Now.ToString("yyyyMMdd") + "_ServerpartTrade"); try { ShopUpdate = true; List ShopIdList = new List(); List ClassifyCodeList = new List(); SQLString = string.Format(@"SELECT A.COMMODITY_TYPE,A.COMMODITY_CODE,A.COMMODITY_NAME, NVL(A.COMMODITY_UNIT,'*') AS COMMODITY_UNIT,A.COMMODITY_RETAILPRICE, A.SERVERPART_ID,A.BUSINESSTYPE,A.COMMODITY_STATE,A.ADDTIME,A.OPERATE_DATE, B.*,C.SERVERPARTSHOP_ID FROM HIGHWAY_STORAGE.T_COMMODITY A, HIGHWAY_STORAGE.T_COMMODITYTYPE B, HIGHWAY_STORAGE.T_SERVERPARTSHOP C WHERE A.COMMODITY_TYPE = TO_CHAR(B.COMMODITYTYPE_ID) AND A.SERVERPART_ID IN (C.SERVERPART_ID,{0}) AND A.COMMODITY_RETAILPRICE IS NOT NULL AND A.BUSINESSTYPE = C.SHOPTRADE AND C.ISVALID = 1 AND C.SERVERPART_ID = {1} AND A.BUSINESSTYPE = {2}", WholeServerpartId, drServerpart["SERVERPART_ID"], drServerpart["SHOPTRADE"]); DataTable dtGoods = _SERVERPARTSHOP.ExecuteDataTable(SQLString); if (dtGoods.Rows.Count == 0) { continue; } LogUtil.WriteLog(null, "开始同步商品共" + dtGoods.Rows.Count + "条", DateTime.Now.ToString("yyyyMMdd") + "_ServerpartTrade"); //遍历商品数据并进行同步 foreach (DataRow drGoods in dtGoods.DefaultView.ToTable(true, "COMMODITY_TYPE", "COMMODITY_CODE", "COMMODITY_NAME", "COMMODITY_UNIT", "COMMODITY_RETAILPRICE", "SERVERPART_ID", "BUSINESSTYPE", "COMMODITY_STATE", "ADDTIME", "OPERATE_DATE").Rows) { //判断当前门店是不是已经传输过了,如果传过了,要根据商品更新时间传输数据;否则传输全部商品数据 if (TransmissionShop.Contains(drServerpart["SERVERPART_CODE"].ToString() + drServerpart["SHOPTRADE"])) { //判断商品的更新时间是否发生变化,若小于上次更新时间则跳过,否则上传更新 if (!string.IsNullOrWhiteSpace(LastDateTime) && drGoods["OPERATE_DATE"].TryParseToDateTime() <= DateTime.Parse(LastDateTime)) { continue; } } foreach (DataRow drShop in dtShop.Select("SHOPTRADE = '" + drGoods["BUSINESSTYPE"] + "'" + (drGoods["SERVERPART_ID"].ToString() == "109" ? "" : " and SERVERPART_ID = " + drGoods["SERVERPART_ID"]))) { //获取本次商品更新后涉及到的门店 if (!ShopIdList.Contains(drShop["SERVERPARTSHOP_ID"].ToString())) { ShopIdList.Add(drShop["SERVERPARTSHOP_ID"].ToString()); } } //如果商品无效了,则下发删除指令;若添加时间和更新时间相差在2s之内,数据认定为新增,否则是更新操作 int operation = drGoods["COMMODITY_STATE"].ToString() == "0" ? 2 : Math.Abs((DateTime.Parse(drGoods["OPERATE_DATE"].ToString()) - DateTime.Parse(drGoods["ADDTIME"].ToString())).TotalSeconds) < 3 ? 0 : 1; //获取本次商品更新后涉及到的分类 if (drGoods["COMMODITY_TYPE"].TryParseToInt() != 0 && !ClassifyCodeList.Contains(drGoods["COMMODITY_TYPE"].ToString())) { ClassifyCodeList.Add(drGoods["COMMODITY_TYPE"].ToString()); } //continue; //绑定商品对象 Model.GoodsModel goodsModel = new Model.GoodsModel() { timestamp = HCC.Common.ConvertDataTimeLong(DateTime.Now), goodsCode = drGoods["COMMODITY_CODE"].ToString(), goodsName = drGoods["COMMODITY_NAME"].ToString(), img = "", unit = drGoods["COMMODITY_UNIT"].ToString(), nowPrice = drGoods["COMMODITY_RETAILPRICE"].ToString() }; //同步商品数据 LogUtil.WriteLog("开始同步商品:[" + drGoods["COMMODITY_CODE"] + "]" + goodsModel.goodsName); CommonHelper.PostDataToZJHY(goodsModel, operation, ZJZCGCMemberHelper.ApiURL + "/merchant/goodsSync"); } if (ClassifyCodeList.Count > 0) { Thread.Sleep(1000); dtGoods.DefaultView.RowFilter = "COMMODITY_STATE = 1"; //获取本次商品更新涉及的分类 string classifyCodes = HCC.Common.GetInString("COMMODITYTYPE_ID", ClassifyCodeList); DataTable dtClassify = dtGoods.DefaultView.ToTable(true, "SERVERPARTSHOP_ID", "BUSINESSTYPE", "COMMODITYTYPE_ID", "COMMODITYTYPE_PID", "COMMODITYTYPE_NAME", "COMMODITYTYPE_CODE", "SERVERPART_ID"); foreach (Model.ClassifyModel classifyModel in GetClassifyList(transaction, dtClassify, dtGoods.DefaultView.ToTable(true, "COMMODITY_CODE", "COMMODITYTYPE_ID", "SERVERPART_ID", "BUSINESSTYPE"))) { LogUtil.WriteLog("开始同步商品分类菜单:[" + classifyModel.sort + "]" + classifyModel.classifyName + ",classifyCode:" + classifyModel.classifyCode); string result = CommonHelper.PostDataToZJHY(classifyModel, 1, ZJZCGCMemberHelper.ApiURL + "/merchant/storeClassifySync"); try { //解析接口返回报文内容 JObject keyValuePairs = JObject.Parse(result); if (keyValuePairs["code"].ToString() != "200") { ShopUpdate = false; } } catch { } } //同步门店数据 if (ShopIdList.Count > 0) { Thread.Sleep(1000); string ShopIds = HCC.Common.GetInString("SERVERPARTSHOP_ID", ShopIdList); dtShop.DefaultView.RowFilter = ShopIds; DataTable dtStore = dtShop.DefaultView.ToTable(); foreach (Model.StoreModel storeModel in GetStoreList(transaction, dtStore, dtGoods.DefaultView.ToTable(true, "COMMODITY_TYPE", "SERVERPART_ID", "BUSINESSTYPE"))) { //开始同步门店数据 if (dtStore.Select("SERVERPARTSHOP_ID = " + storeModel.storeCode).Length > 0) { DataRow drStore = dtStore.Select("SERVERPARTSHOP_ID = " + storeModel.storeCode)[0]; LogUtil.WriteLog("开始同步门店:" + drStore["SECOND_DEP"] + drStore["SHOPNAME"]); } else { LogUtil.WriteLog("开始同步门店:" + storeModel.storeName); } string result = CommonHelper.PostDataToZJHY(storeModel, 1, ZJZCGCMemberHelper.ApiURL + "/merchant/storeSync"); try { //解析接口返回报文内容 JObject keyValuePairs = JObject.Parse(result); if (keyValuePairs["code"].ToString() != "200") { ShopUpdate = false; } } catch { } } } } if (ShopUpdate) { if (!TransmissionShop.Contains(drServerpart["SERVERPART_CODE"].ToString() + drServerpart["SHOPTRADE"])) { TransmissionShop += "," + drServerpart["SERVERPART_CODE"] + drServerpart["SHOPTRADE"]; } } LogUtil.WriteLog(null, "开始同步完成", DateTime.Now.ToString("yyyyMMdd") + "_ServerpartTrade"); } catch (Exception ex) { LogUtil.WriteLog(ex, "", DateTime.Now.ToString("yyyyMMdd") + "_ErrorLog"); } } //更新商品表数据同步时间 HCC.Common.AddUpdateAppSettings("LastDateTimeGoods", NowTime); //重新写入已经同步的门店数据 HCC.Common.AddUpdateAppSettings("TransmissionShop", TransmissionShop); } #endregion #region 方法 -> 获取门店集合 public static List GetStoreList(Transaction transaction, DataTable dtStore, DataTable dtclassifyCode = null) { List StoreList = new List(); foreach (DataRow drStore in dtStore.Rows) { Model.StoreModel storeModel = new Model.StoreModel() { timestamp = HCC.Common.ConvertDataTimeLong(DateTime.Now), storeCode = drStore["SERVERPARTSHOP_ID"].ToString(), storeName = drStore["SHOPNAME"].ToString(), logo = "", storeImg = "", serviceAreaChildCode = drStore["ZONAL_CODING"].ToString(), merchantCode = drStore["SHOPCODE"].ToString(), openType = 0, lng = drStore["SERVERPART_X"].ToString(), lat = drStore["SERVERPART_Y"].ToString(), storeClassify = new List() }; //查询当前分类下的商品编码数据 if (dtclassifyCode == null || dtclassifyCode.Rows.Count == 0) { string SQLString = string.Format(@"SELECT COMMODITY_TYPE,SERVERPART_ID,BUSINESSTYPE FROM HIGHWAY_STORAGE.T_COMMODITY WHERE COMMODITY_STATE = 1 AND COMMODITY_RETAILPRICE IS NOT NULL AND SERVERPART_ID IN ({0},{1}) AND BUSINESSTYPE = {2} GROUP BY COMMODITY_TYPE,SERVERPART_ID,BUSINESSTYPE", drStore["SERVERPART_ID"], WholeServerpartId, drStore["SHOPTRADE"]); dtclassifyCode = new HWSB.COMMODITY(transaction).ExecuteDataTable(SQLString); } foreach (DataRow drclassifyCode in dtclassifyCode.Select("SERVERPART_ID = '" + drStore["SERVERPART_ID"] + "' AND BUSINESSTYPE = " + drStore["SHOPTRADE"], "COMMODITY_TYPE")) { storeModel.storeClassify.Add(drStore["SERVERPARTSHOP_ID"].ToString() + drclassifyCode["COMMODITY_TYPE"]); } //添加商品分类菜单至集合对象中 StoreList.Add(storeModel); } return StoreList; } #endregion #region 方法 -> 获取商品分类菜单集合 public static List GetClassifyList(Transaction transaction, DataTable dtClassify, DataTable dtGoodsCode) { List ClassifyList = new List(); foreach (DataRow drClassify in dtClassify.Rows) { Model.ClassifyModel classifyModel = new Model.ClassifyModel() { timestamp = HCC.Common.ConvertDataTimeLong(DateTime.Now), classifyCode = drClassify["SERVERPARTSHOP_ID"] + drClassify["COMMODITYTYPE_ID"].ToString(), //parentCode = drClassify["SERVERPARTSHOP_ID"] + drClassify["COMMODITYTYPE_PID"].ToString(), classifyName = drClassify["COMMODITYTYPE_NAME"].ToString(), sort = drClassify["COMMODITYTYPE_CODE"].TryParseToInt(), goodsCodeList = new List() }; //查询当前分类下的商品编码数据 if (dtGoodsCode == null || dtGoodsCode.Rows.Count == 0) { string SQLString = string.Format(@"SELECT COMMODITY_CODE,SERVERPART_ID,BUSINESSTYPE FROM HIGHWAY_STORAGE.T_COMMODITY WHERE COMMODITY_RETAILPRICE IS NOT NULL AND COMMODITY_STATE = 1 AND PROVINCE_CODE = 6618 AND COMMODITY_TYPE = '{0}' AND SERVERPART_ID IN ({1},{2}) AND BUSINESSTYPE = {3}", drClassify["COMMODITYTYPE_ID"], drClassify["SERVERPART_ID"], WholeServerpartId, drClassify["BUSINESSTYPE"]); dtGoodsCode = new HWSB.COMMODITY(transaction).ExecuteDataTable(SQLString); } foreach (DataRow drGoodsCode in dtGoodsCode.Select("SERVERPART_ID = " + drClassify["SERVERPART_ID"] + " and BUSINESSTYPE = " + drClassify["BUSINESSTYPE"] + " and COMMODITYTYPE_ID = " + drClassify["COMMODITYTYPE_ID"], "COMMODITY_CODE")) { classifyModel.goodsCodeList.Add(drGoodsCode["COMMODITY_CODE"].ToString()); } //添加商品分类菜单至集合对象中 ClassifyList.Add(classifyModel); } return ClassifyList; } #endregion } }