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