2025-03-28 09:49:56 +08:00

613 lines
34 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
{
/// <summary>
/// 基础信息传输相关方法
/// </summary>
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);
}
/// <summary>
/// 同步全部门店数据
/// </summary>
/// <param name="transaction"></param>
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<string> ShopIdList = new List<string>();
List<string> ClassifyCodeList = new List<string>();
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<string> ShopIdList, List<string> 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<string> ShopIdList = new List<string>();
List<string> ClassifyCodeList = new List<string>();
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<Model.StoreModel> GetStoreList(Transaction transaction, DataTable dtStore, DataTable dtclassifyCode = null)
{
List<Model.StoreModel> StoreList = new List<Model.StoreModel>();
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<string>()
};
//查询当前分类下的商品编码数据
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<Model.ClassifyModel> GetClassifyList(Transaction transaction,
DataTable dtClassify, DataTable dtGoodsCode)
{
List<Model.ClassifyModel> ClassifyList = new List<Model.ClassifyModel>();
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<string>()
};
//查询当前分类下的商品编码数据
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
}
}