using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.ServiceProcess;
using System.Windows.Forms;
using DataTransmission.Method.BLL;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using EShang.Common.Model;
using HZQR.Common;
namespace DataTransmission
{
public partial class DataTransmission : Form
{
#region 方法 -> 定义全局变量
///
/// 需要重启的服务名称
///
protected static string ServiceName = ConfigurationManager.AppSettings["ServiceName"].ToString();
///
/// 微信推送APIUrl
///
protected static string WebAPIUrl = ConfigurationManager.AppSettings["WebAPIUrl"].ToString();
///
/// webapi主项目接口地址
///
protected static string EShangApiMain = ConfigurationManager.AppSettings["EShangApiMain"].ToString();
///
/// 数据传输日志数据库链接:172,orcl数据库
///
protected static string OracleConnStrEx = ConfigurationManager.AppSettings["OracleConnStrEx"].ToString();
///
/// 业务日志数据库链接:175,orcl数据库
///
protected static string OracleConnStr = ConfigurationManager.AppSettings["OracleConnStr"].ToString();
///
/// 四川进销存数据库链接:175,orcl_sc数据库
///
protected static string OracleConnStr_SC = ConfigurationManager.AppSettings["OracleConnStr_SC"].ToString();
///
/// 合作商户进销存数据库链接:175,orcl_cm数据库
///
protected static string OracleConnStr_Coop = ConfigurationManager.AppSettings["OracleConnStr_Coop"].ToString();
///
/// 移动业务数据库链接:175,orcl_msp数据库
///
protected static string OracleConnStr_Msp = ConfigurationManager.AppSettings["OracleConnStr_Msp"].ToString();
///
/// 对比数据的月份,如果今天是下半月,那就是本月;否则,取上个月
///
protected static string compareMonth = DateTime.Now.Day > 15 ? DateTime.Now.ToString("yyyyMM") :
DateTime.Now.AddMonths(-1).ToString("yyyyMM");
///
/// 微信推送的消息内容
///
protected static string PushContent = "";
///
/// Windows服务
///
ServiceController service = new ServiceController(ServiceName);
#endregion
public DataTransmission()
{
InitializeComponent();
}
#region 方法 -> 初始加载事件
///
/// 重启服务
///
///
///
private void DataTransmission_Load(object sender, EventArgs e)
{
//创建业务日志数据库链接
Method.OracleHelper _OracleHelper = new Method.OracleHelper(OracleConnStr.Split(',')[0],
OracleConnStr.Split(',')[1], OracleConnStr.Split(',')[2], OracleConnStr.Split(',')[3]);
//创建合作商户数据库链接
Method.OracleHelper _OracleHelper_Coop = new Method.OracleHelper(OracleConnStr_Coop.Split(',')[0],
OracleConnStr_Coop.Split(',')[1], OracleConnStr_Coop.Split(',')[2], OracleConnStr_Coop.Split(',')[3]);
//创建建行、工行对账数据库链接
Method.OracleHelper _OracleHelperEx = new Method.OracleHelper(OracleConnStrEx.Split(',')[0],
OracleConnStrEx.Split(',')[1], OracleConnStrEx.Split(',')[2], OracleConnStrEx.Split(',')[3]);
////创建移动支付业务数据库链接
//Method.OracleHelper _OracleHelper_Msp = new Method.OracleHelper(OracleConnStr_Msp.Split(',')[0],
// OracleConnStr_Msp.Split(',')[1], OracleConnStr_Msp.Split(',')[2], OracleConnStr_Msp.Split(',')[3]);
////创建四川进销存数据库链接
//Method.OracleHelper _OracleHelper_SC = new Method.OracleHelper(OracleConnStr_SC.Split(',')[0],
// OracleConnStr_SC.Split(',')[1], OracleConnStr_SC.Split(',')[2], OracleConnStr_SC.Split(',')[3]);
PushBillLading(_OracleHelper);
//DateTime curDateTime = DateTime.Now;
////MobilePayHelper.GetRefundMobilePay(_OracleHelper, _OracleHelper_Coop, curDateTime.AddDays(-1), "511300");
////CuringDataHelper.CorrectShopCigarette(_OracleHelper, curDateTime.AddDays(-1), "511300");
//CuringDataHelper.BuildRefundSplit(_OracleHelper, _OracleHelper_Coop, _OracleHelperEx,
// curDateTime.AddDays(-1).ToString("yyyyMMdd"), "511300", "", true);
//CuringDataHelper.ValidateRefundSplitRevenue(_OracleHelper, _OracleHelper_Coop, _OracleHelperEx,
// curDateTime.AddDays(-1).ToShortDateString(), "511300");
////获取移动支付分账数据
//MobilePayHelper.GetKwyMobileShare(_OracleHelper, _OracleHelper_Coop, curDateTime.AddDays(num));
////存储营收分账数据
//CuringDataHelper.BuildDailyRevenueSplit(_OracleHelper, _OracleHelper_Coop,
// _OracleHelperEx, curDateTime.AddDays(-1).ToString("yyyyMMdd"));
////生成昨日应收拆分数据
//BusinessProjectHelper.RebuildSplitData(_OracleHelper);
//验证移动支付分账数据的一致性
//MobilePayHelper.ValidateRoyaltyMobilePay(_OracleHelper, _OracleHelper_Coop,
// _OracleHelperEx, curDateTime.AddDays(num).ToString("yyyyMMdd"));
//CuringDataHelper.ValidateSplitRevenue(_OracleHelper, _OracleHelper_Coop,
// _OracleHelperEx, curDateTime.AddDays(num).ToString("yyyy-MM-dd"));
//try
//{
// //数据处理
// ExcuteDealData();
//}
//catch (Exception ex)
//{
// LogUtil.WriteLog(null, "【" + curDateTime.ToShortTimeString() + "】任务执行异常,失败原因:【" + ex.Message + "】",
// curDateTime.ToString("yyyyMMdd") + "_DataTransmission_Error");
//}
//重启服务
//RestartService();
//关闭窗口
this.Close();
}
#endregion
#region 方法 -> 执行“重启服务”操作
///
/// 重启服务
///
public void RestartService()
{
try
{
LogUtil.WriteLog(null, string.Format("重启服务开始,服务名:【" + ServiceName + "】"),
DateTime.Now.ToString("yyyyMMdd") + "_DataTransmission");
//判断服务状态,正在运行则停止服务,然后开启服务
if (service.Status == ServiceControllerStatus.Running)
{
service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped);
}
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running);
PushContent = "socket通讯出现异常,服务已重启";
string url = WebAPIUrl + "WeChat/RunningBulletinPush";//消息推送接口
//调用消息推送接口
EShang.Common.HttpUtil.HttpUrlPost("SecondContent=" + PushContent, url);
LogUtil.WriteLog(null, "重启服务结束,服务名:【" + ServiceName + "】",
DateTime.Now.ToString("yyyyMMdd") + "_DataTransmission");
}
catch (Exception ex)
{
LogUtil.WriteLog(null, "重启服务失败,服务名:【" + ServiceName + "】, 失败原因:【" +
ex.Message + "】", DateTime.Now.ToString("yyyyMMdd") + "_DataTransmission_Error");
}
}
#endregion
#region 方法 -> 执行“数据处理”操作
private void ExcuteDealData()
{
DateTime curDateTime = DateTime.Now;
if (curDateTime.Hour == 1 && curDateTime.Minute == 30)
{
#region 时段数据统计
try
{
LogUtil.WriteLog(null, "///------------【时段数据统计】开始执行------------///",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission");
//创建车流数据库链接
Method.OracleHelper _OracleHelper = new Method.OracleHelper(OracleConnStr.Split(',')[0],
OracleConnStr.Split(',')[1], OracleConnStr.Split(',')[2], OracleConnStr.Split(',')[3]);
BayonetHelper.GetHourInOut(_OracleHelper);
//创建销售流水数据库链接
Method.OracleHelper _OracleHelperEx = new Method.OracleHelper(OracleConnStrEx.Split(',')[0],
OracleConnStrEx.Split(',')[1], OracleConnStrEx.Split(',')[2], OracleConnStrEx.Split(',')[3]);
//统计月度门店消费水平
CuringDataHelper.GetShopConsumptionLevel(_OracleHelper, _OracleHelperEx, -1);
//统计月度时段销售流水
CuringDataHelper.GetHourSellMaster(_OracleHelper, _OracleHelperEx, -1);
}
catch (Exception ex)
{
LogUtil.WriteLog(null, "【时段数据统计】执行失败,失败原因:【" + ex.Message + "】",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission_Error");
}
finally
{
LogUtil.WriteLog(null, "///------------【时段数据统计】执行结束------------///",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission");
}
#endregion
}
else
{
if (curDateTime.Hour >= 6 && curDateTime.Hour < 9)
{
#region 每日6点至9点之间,每隔半小时从客无忧获取移动支付分账数据
//创建卡口流水数据库链接
Method.OracleHelper _OracleHelper = new Method.OracleHelper(OracleConnStr.Split(',')[0],
OracleConnStr.Split(',')[1], OracleConnStr.Split(',')[2], OracleConnStr.Split(',')[3]);
if (curDateTime.Hour == 8 && curDateTime.Minute >= 30)
{
//生成服务区营收固化数据
CuringDataHelper.CalculateRevenue(_OracleHelper);
//生成昨日应收拆分数据
//BusinessProjectHelper.RebuildSplitData(_OracleHelper);
}
else
{
//创建合作商户数据库链接
Method.OracleHelper _OracleHelper_Coop = new Method.OracleHelper(OracleConnStr_Coop.Split(',')[0],
OracleConnStr_Coop.Split(',')[1], OracleConnStr_Coop.Split(',')[2], OracleConnStr_Coop.Split(',')[3]);
//生成车流量预警数据
BayonetHelper.RecordWarningData(_OracleHelper, compareMonth, curDateTime.AddHours(-1).Hour);
if (curDateTime.Hour == 7)
{
//更新断面流量服务区标识
BayonetHelper.UpdateSectionFlow(_OracleHelper);
//模拟车流量数值
//BayonetHelper.AnalogBayonet(_OracleHelper, DateTime.Now.AddDays(-1));
}
else if (curDateTime.Hour == 8)
{
PushFixedRent(_OracleHelper);
}
//生成服务区营收固化数据
CuringDataHelper.CalculateRevenue(_OracleHelper);
//执行万佳商品调价审批预生效
BusinessLogHelper.PutInStorageGoods(_OracleHelper);
if (curDateTime.Hour == 8)
{
//创建建行、工行对账数据库链接
//Method.OracleHelper _OracleConnStrEx = new Method.OracleHelper(OracleConnStrEx.Split(',')[0],
// OracleConnStrEx.Split(',')[1], OracleConnStrEx.Split(',')[2], OracleConnStrEx.Split(',')[3]);
////验证移动支付分账数据的一致性
//MobilePayHelper.ValidateRoyaltyMobilePay(_OracleHelper, _OracleHelper_Coop,
// _OracleConnStrEx, curDateTime.AddDays(-1).ToString("yyyyMMdd"));
////存储营收分账数据
//CuringDataHelper.BuildDailyRevenueSplit(_OracleHelper, _OracleHelper_Coop,
// _OracleConnStrEx, curDateTime.AddDays(-1).ToString("yyyyMMdd"));
//CuringDataHelper.ValidateSplitRevenue(_OracleHelper, _OracleHelper_Coop,
// _OracleConnStrEx, curDateTime.AddDays(-1).ToString("yyyy-MM-dd"));
//生成昨日应收拆分数据
//BusinessProjectHelper.RebuildSplitData(_OracleHelper);
CuringDataHelper.CorrectShopCigarette(_OracleHelper, curDateTime.AddDays(-1), "511300");
}
else
{
//获取移动支付分账数据
MobilePayHelper.GetKwyMobileShare(_OracleHelper, _OracleHelper_Coop, curDateTime.AddDays(-1));
//获取资金返款分账数据
MobilePayHelper.GetRefundMobilePay(_OracleHelper, _OracleHelper_Coop, curDateTime.AddDays(-1), "511300");
}
if (curDateTime.Hour == 6)
{
CuringDataHelper.SolidServerpartWeather(_OracleHelper);
}
}
#endregion
}
else if (curDateTime.Hour >= 9 && curDateTime.Hour <= 23)
{
if (curDateTime.Hour == 9 && curDateTime.Minute >= 30)
{
//创建营收固化数据库链接
Method.OracleHelper _OracleHelper = new Method.OracleHelper(OracleConnStr.Split(',')[0],
OracleConnStr.Split(',')[1], OracleConnStr.Split(',')[2], OracleConnStr.Split(',')[3]);
//生成服务区营收固化数据
CuringDataHelper.CalculateRevenue(_OracleHelper);
if (curDateTime.Minute >= 45)
{
//生成卡口流水月度汇总数据
BayonetHelper.CalculateBayonet(curDateTime.AddDays(-1).ToString("yyyyMM"));
}
else if (curDateTime.Minute >= 30)
{
//创建建行、工行对账数据库链接
Method.OracleHelper _OracleConnStrEx = new Method.OracleHelper(OracleConnStrEx.Split(',')[0],
OracleConnStrEx.Split(',')[1], OracleConnStrEx.Split(',')[2], OracleConnStrEx.Split(',')[3]);
//创建合作商户数据库链接
Method.OracleHelper _OracleHelper_Coop = new Method.OracleHelper(OracleConnStr_Coop.Split(',')[0],
OracleConnStr_Coop.Split(',')[1], OracleConnStr_Coop.Split(',')[2], OracleConnStr_Coop.Split(',')[3]);
//存储营收分账数据
CuringDataHelper.BuildDailyRevenueSplit(_OracleHelper, _OracleHelper_Coop,
_OracleConnStrEx, curDateTime.AddDays(-1).ToString("yyyyMMdd"), "", true);
CuringDataHelper.BuildRefundSplit(_OracleHelper, _OracleHelper_Coop, _OracleConnStrEx,
curDateTime.AddDays(-1).ToString("yyyyMMdd"), "511300", "", true);
//生成昨日应收拆分数据
BusinessProjectHelper.RebuildSplitData(_OracleHelper);
//存储昨日移动支付银行到账数据
MobilePayHelper.SolidBankAccount(_OracleHelper_Coop, curDateTime.AddDays(-1).ToShortDateString(),
curDateTime.AddDays(-1).ToShortDateString());
//验证营收分账数据的一致性
CuringDataHelper.ValidateSplitRevenue(_OracleHelper, _OracleHelper_Coop,
_OracleConnStrEx, curDateTime.AddDays(-1).ToString("yyyy-MM-dd"));
CuringDataHelper.ValidateRefundSplitRevenue(_OracleHelper, _OracleHelper_Coop, _OracleConnStrEx,
curDateTime.AddDays(-1).ToShortDateString(), "511300");
}
}
else if (curDateTime.Hour == 10 && curDateTime.Minute >= 30)
{
//创建业务日志数据库链接
Method.OracleHelper _OracleHelper = new Method.OracleHelper(OracleConnStr.Split(',')[0],
OracleConnStr.Split(',')[1], OracleConnStr.Split(',')[2], OracleConnStr.Split(',')[3]);
#region 推送即将到期商品
string SQLString = string.Format(@"SELECT COUNT(1) AS TOTALCOUNT,SERVERPART_ID,SERVERPART_NAME
FROM HIGHWAY_STORAGE.T_COMMODITY_TEMP
WHERE STATISTICS_DATE = {0} AND COMMODITY_TEMP_STATE = 1
GROUP BY SERVERPART_ID,SERVERPART_NAME", curDateTime.ToString("yyyyMMdd"));
DataTable dtQualification = _OracleHelper.ExcuteSqlGetDataSet(SQLString).Tables[0];
if (dtQualification.Rows.Count > 0)
{
string url = EShangApiMain + "WeChat/WeChatPushMessage";
foreach (DataRow drQualification in dtQualification.Rows)
{
WeChatPushModel weChatPushModel = new WeChatPushModel();
weChatPushModel.PushModule = "WarningAttention";
weChatPushModel.JumpUrl = "pages/commodity_temp/index?serverpartid=" +
drQualification["SERVERPART_ID"] + "&statisticsdate=" + curDateTime.ToShortDateString();
weChatPushModel.PushParameterObject = new PushParameter();
weChatPushModel.PushParameterObject.ServerpartIds = drQualification["SERVERPART_ID"].ToString();
weChatPushModel.PushContentObject = new PushContent();
weChatPushModel.PushContentObject.TitleContent = "商品资质到期预警通知";
weChatPushModel.PushContentObject.FisrtContent = "您的" + drQualification["SERVERPART_NAME"] +
"有" + drQualification[0] + "件商品资质证书即将过期";
weChatPushModel.PushContentObject.SecondContent = curDateTime.ToString();
weChatPushModel.PushContentObject.LastContent = "注:过期商品将无法售卖!小程序只支持连续3次的3天临时延期设置";
string Result = EShang.Common.HttpUtil.HttpUrlPost(JsonConvert.SerializeObject(weChatPushModel), url, "application/json");
LogUtil.WriteLog(null, "推送【资质到期提醒日志】返回结果:" + Result, curDateTime.ToString("yyyyMMdd") + "_WeChatPush");
}
}
#endregion
//推送驿达万佳供应商检测报告预警
CuringDataHelper.PushCheckReport(_OracleHelper);
}
else
{
//每日9点开始每隔1小时进行异常数据检测
GetEndaccountException();
}
}
else if (curDateTime.Hour == 1)
{
#region 卡口日汇总统计
try
{
LogUtil.WriteLog(null, "///------------【卡口日汇总统计】开始执行------------///",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission");
//创建卡口流水数据库链接
Method.OracleHelper _OracleHelper = new Method.OracleHelper(OracleConnStr.Split(',')[0],
OracleConnStr.Split(',')[1], OracleConnStr.Split(',')[2], OracleConnStr.Split(',')[3]);
//记录车流预警数据
BayonetHelper.RecordWarningData(_OracleHelper, compareMonth, curDateTime.AddHours(-1).Hour);
//生成卡口流水固化表数据
BayonetHelper.GetDailyInOut(_OracleHelper);
BayonetHelper.GetDailyVehicleOwner(_OracleHelper);
BayonetHelper.GetMonthlyVehicleOwner(_OracleHelper);
BayonetHelper.GetAllMonthlyVehicleOwner(_OracleHelper, curDateTime.ToString("yyyyMM"));
//删除历史卡口流水数据
BayonetHelper.DeleteBayonet(_OracleHelper);
}
catch (Exception ex)
{
LogUtil.WriteLog(null, "【卡口日汇总统计】执行失败,失败原因:【" + ex.Message + "】",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission_Error");
}
finally
{
LogUtil.WriteLog(null, "///------------【卡口日汇总统计】执行结束------------///",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission");
}
#endregion
}
else if (curDateTime.Hour == 2 && curDateTime.Minute == 0)
{
#region 应收账款数据处理
try
{
LogUtil.WriteLog(null, "///------------【应收账款数据处理】开始执行------------///",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission");
//创建应收账款数据库链接
Method.OracleHelper _OracleHelper = new Method.OracleHelper(OracleConnStr.Split(',')[0],
OracleConnStr.Split(',')[1], OracleConnStr.Split(',')[2], OracleConnStr.Split(',')[3]);
//记录车流预警数据
BayonetHelper.RecordWarningData(_OracleHelper, compareMonth, curDateTime.AddHours(-1).Hour);
//如果是本月1号,则生成上个月的门店费用记录
if (curDateTime.Day == 1)
{
BusinessProjectHelper.CreateShopExpenses(_OracleHelper, curDateTime.AddDays(-1).ToString("yyyyMM"));
}
//应收账款数据处理
//BusinessProjectHelper.BuildProjectData(_OracleHelper);
}
catch (Exception ex)
{
LogUtil.WriteLog(null, "【应收账款数据处理】执行失败,失败原因:【" + ex.Message + "】",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission_Error");
}
finally
{
LogUtil.WriteLog(null, "///------------【应收账款数据处理】执行结束------------///",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission");
}
#endregion
}
else if (curDateTime.Hour == 2 && curDateTime.Minute == 30)
{
#region 拉取驿达考核、巡检数据
try
{
LogUtil.WriteLog(null, "///------------【拉取驿达考核、巡检数据】开始执行------------///",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission");
//创建业务日志数据库链接
Method.OracleHelper _OracleHelper = new Method.OracleHelper(OracleConnStr.Split(',')[0],
OracleConnStr.Split(',')[1], OracleConnStr.Split(',')[2], OracleConnStr.Split(',')[3]);
////创建四川进销存数据库链接
//Method.OracleHelper _OracleHelper_SC = new Method.OracleHelper(OracleConnStr_SC.Split(',')[0],
// OracleConnStr_SC.Split(',')[1], OracleConnStr_SC.Split(',')[2], OracleConnStr_SC.Split(',')[3]);
////生成供应商门店库存数据
//CuringDataHelper.GetSupplierShopStock(_OracleHelper, _OracleHelper_SC);
ExamineHelper.GetExamineData(_OracleHelper, curDateTime.AddDays(-1).ToShortDateString(),
curDateTime.AddDays(-1).ToShortDateString());
}
catch (Exception ex)
{
LogUtil.WriteLog(null, "【拉取驿达考核、巡检数据】执行失败,失败原因:【" + ex.Message + "】",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission_Error");
}
finally
{
LogUtil.WriteLog(null, "///------------【拉取驿达考核、巡检数据】执行结束------------///",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission");
}
#endregion
}
else if (curDateTime.Hour == 3 && curDateTime.Minute == 0)
{
#region 固化数据【客群分析、单品报表】
try
{
//创建固化单品报表数据库链接
Method.OracleHelper _OracleHelper = new Method.OracleHelper(OracleConnStr.Split(',')[0],
OracleConnStr.Split(',')[1], OracleConnStr.Split(',')[2], OracleConnStr.Split(',')[3]);
//记录车流预警数据
BayonetHelper.RecordWarningData(_OracleHelper, compareMonth, curDateTime.AddHours(-1).Hour);
int IntervalMonth = ConfigurationManager.AppSettings["Interval"].TryParseToInt();
if (curDateTime.Day == 1)
{
LogUtil.WriteLog(null, "///------------固化数据【客群分析】开始执行------------///",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission");
//创建客群分析数据库链接
Method.OracleHelper _OracleHelperEx = new Method.OracleHelper(OracleConnStrEx.Split(',')[0],
OracleConnStrEx.Split(',')[1], OracleConnStrEx.Split(',')[2], OracleConnStrEx.Split(',')[3]);
CustomerHelper.CustomerDataCuring(_OracleHelperEx,
curDateTime.AddMonths(IntervalMonth).ToString("yyyyMM01000000"),
curDateTime.AddMonths(IntervalMonth + 1).ToString("yyyyMM01000000"));
}
else if (curDateTime.Day == 2)
{
LogUtil.WriteLog(null, "///------------固化数据【单品报表】开始执行------------///",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission");
//生成固化单品报表数据
CuringDataHelper.CommoditySaleCuring(_OracleHelper,
curDateTime.AddMonths(IntervalMonth).ToString("yyyy-MM-01"),
curDateTime.AddMonths(IntervalMonth + 1).ToString("yyyy-MM-01"));
}
}
catch (Exception ex)
{
LogUtil.WriteLog(null, "固化数据【客群分析、单品报表】执行失败,失败原因:【" + ex.Message + "】",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission_Error");
}
finally
{
LogUtil.WriteLog(null, "///------------固化数据【客群分析、单品报表】执行结束------------///",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission");
}
#endregion
}
else if (curDateTime.Hour == 4)
{
#region 固化数据【商品表临期数据、更新各业主有效门店数量、生成供应商原材料价格浮动表、生成实时库存信息】
try
{
int TimeLimit = ConfigurationManager.AppSettings["TimeLimit"].TryParseToInt(7);
LogUtil.WriteLog(null, "///------------固化数据开始执行------------///",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission");
//创建资质证书表数据库链接
Method.OracleHelper _OracleHelperCM = new Method.OracleHelper(OracleConnStr_Coop.Split(',')[0],
OracleConnStr_Coop.Split(',')[1], OracleConnStr_Coop.Split(',')[2], OracleConnStr_Coop.Split(',')[3]);
//创建商品表数据库链接
Method.OracleHelper _OracleHelper = new Method.OracleHelper(OracleConnStr.Split(',')[0],
OracleConnStr.Split(',')[1], OracleConnStr.Split(',')[2], OracleConnStr.Split(',')[3]);
//记录车流预警数据
BayonetHelper.RecordWarningData(_OracleHelper, compareMonth, curDateTime.AddHours(-1).Hour);
//生成资质即将到期的商品数据
CuringDataHelper.CreateCommodityTempData(_OracleHelper, _OracleHelperCM, TimeLimit);
//更新各业主有效门店数量
CuringDataHelper.ModifyShopCount();
//延迟1s执行
System.Threading.Thread.Sleep(1000);
//生成供应商原材料价格浮动表
CuringDataHelper.CalculateDeviate();
////生成实时库存信息
//CuringDataHelper.CalculateCurStock(_OracleHelper);
//创建客群分析表数据库链接
Method.OracleHelper _OracleHelperEx = new Method.OracleHelper(OracleConnStrEx.Split(',')[0],
OracleConnStrEx.Split(',')[1], OracleConnStrEx.Split(',')[2], OracleConnStrEx.Split(',')[3]);
//生成客群偏好统计表数据
CustomerHelper.CalculateCustomerShop(_OracleHelper, _OracleHelperEx, curDateTime.AddDays(-1).ToString("yyyyMM"));
//CustomerHelper.CalculateCustomerSale(_OracleHelper, _OracleHelperEx, curDateTime.AddDays(-1).ToString("yyyyMM"));
}
catch (Exception ex)
{
LogUtil.WriteLog(null, "固化数据执行失败,失败原因:【" + ex.Message + "】",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission_Error");
}
finally
{
LogUtil.WriteLog(null, "///------------固化数据执行结束------------///",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission");
}
#endregion
}
else if (curDateTime.Hour == 0)
{
//创建卡口流水数据库链接
Method.OracleHelper _OracleHelper = new Method.OracleHelper(OracleConnStr.Split(',')[0],
OracleConnStr.Split(',')[1], OracleConnStr.Split(',')[2], OracleConnStr.Split(',')[3]);
//创建合作商户数据库链接
Method.OracleHelper _OracleHelper_Coop = new Method.OracleHelper(OracleConnStr_Coop.Split(',')[0],
OracleConnStr_Coop.Split(',')[1], OracleConnStr_Coop.Split(',')[2], OracleConnStr_Coop.Split(',')[3]);
//判断是否有经营项目到了新周期的第一天,要重新下发分账比例
MobilePayHelper.NewPeriodIssueCommand(_OracleHelper, _OracleHelper_Coop, curDateTime.ToString("yyyyMMdd"));
//下发移动支付切换指令
MobilePayHelper.IssueCommand(_OracleHelper, _OracleHelper_Coop, curDateTime.ToString("yyyyMMdd"));
//生成车流量预警数据
BayonetHelper.RecordWarningData(_OracleHelper, compareMonth, curDateTime.AddHours(-1).Hour);
//更新门店经营状态
//BaseInfoHelper.ModifyShopState(_OracleHelper);
//执行万佳商品调价审批预生效
BusinessLogHelper.PutInStorageGoods(_OracleHelper);
}
else if (curDateTime.Hour == 5)
{
//创建卡口流水数据库链接
Method.OracleHelper _OracleHelper = new Method.OracleHelper(OracleConnStr.Split(',')[0],
OracleConnStr.Split(',')[1], OracleConnStr.Split(',')[2], OracleConnStr.Split(',')[3]);
//生成车流量预警数据
BayonetHelper.RecordWarningData(_OracleHelper, compareMonth, curDateTime.AddHours(-1).Hour);
}
}
}
#endregion
#region 方法 -> 查询异常日志,并进行微信推送
///
/// 获取账期异常单品情况(销售单品和实收金额不一致)
/// 获取CHECK_STATE=0的日志记录,并查询对应的单品数据是否与实收金额一致
/// 若一致,则重新生成库存单品销售日志(记录文本日志)
/// 若不一致,则在消息推送中标注说明(记录文本日志)
///
private void GetEndaccountException()
{
DateTime curDateTime = DateTime.Now;
try
{
string SQLString;
//定义变量:已处理的记录条数,仍存在异常的记录条数
int DealCount = 0, ExceptionCount = 0;
//创建业务日志数据库链接
Method.OracleHelper _OracleHelper = new Method.OracleHelper(OracleConnStr.Split(',')[0],
OracleConnStr.Split(',')[1], OracleConnStr.Split(',')[2], OracleConnStr.Split(',')[3]);
//创建四川进销存数据库链接
Method.OracleHelper _OracleHelper_SC = new Method.OracleHelper(OracleConnStr_SC.Split(',')[0],
OracleConnStr_SC.Split(',')[1], OracleConnStr_SC.Split(',')[2], OracleConnStr_SC.Split(',')[3]);
//创建合作商户数据库链接
Method.OracleHelper _OracleHelper_Coop = new Method.OracleHelper(OracleConnStr_Coop.Split(',')[0],
OracleConnStr_Coop.Split(',')[1], OracleConnStr_Coop.Split(',')[2], OracleConnStr_Coop.Split(',')[3]);
//创建建行、工行对账数据库链接
Method.OracleHelper _OracleConnStrEx = new Method.OracleHelper(OracleConnStrEx.Split(',')[0],
OracleConnStrEx.Split(',')[1], OracleConnStrEx.Split(',')[2], OracleConnStrEx.Split(',')[3]);
//创建移动支付业务数据库链接
Method.OracleHelper _OracleHelper_Msp = new Method.OracleHelper(OracleConnStr_Msp.Split(',')[0],
OracleConnStr_Msp.Split(',')[1], OracleConnStr_Msp.Split(',')[2], OracleConnStr_Msp.Split(',')[3]);
//万佳配送:超时订单催单提醒
BayonetHelper.RecordWarningData(_OracleHelper, compareMonth, curDateTime.AddHours(-1).Hour);
//执行万佳商品调价审批预生效
BusinessLogHelper.PutInStorageGoods(_OracleHelper);
#region 查询单品不一致的账期数据,并进行单品数据重新验证【统计数量去除陶山服务区北区浙鑫小吃】
//查询当天有单品不一致的异常数据,CHECK_STATE=0
//陶山服务区北区浙鑫小吃:SERVERPARTCODE【330342】,SHOPCODE【143004】
DataTable _DataTable = BusinessLogHelper.GetSaleData(_OracleHelper, "100000");
if (_DataTable.Rows.Count > 0)
{
//有差异数据进行推送消息
foreach (DataRow dataRow in _DataTable.Rows)
{
string LogCentent = "开始对账期【唯一标识:" + dataRow[1] + ",内码:" + dataRow[0] + "】进行单品验证操作";
LogUtil.WriteLog(null, LogCentent, curDateTime.ToString("yyyyMMdd") + "_DataTransmission");
//获取业务内码
int BusinessId = dataRow[0].TryParseToInt();
//获取商品业态
string BusinessType = dataRow["BUSINESSTYPE"].ToString();
//获取日志中的账期唯一标识,格式:服务区编码|门店编码|日结时间|机器编码|实收金额
string UniqueCode = dataRow[1].ToString();
if (!string.IsNullOrWhiteSpace(UniqueCode))
{
string ServerpartCode = UniqueCode.Split('|')[0]; //服务区编码
string ShopCode = UniqueCode.Split('|')[1]; //门店编码
string EndaccountDate = UniqueCode.Split('|')[2]; //日结时间
string MachineCode = UniqueCode.Split('|')[3]; //机器编码
//获取账期单品金额,判断是否和实收金额一致
DataTable dtSaleTotalData = BusinessLogHelper.GetSaleTotalData(_OracleHelper,
ServerpartCode, ShopCode, EndaccountDate, MachineCode);
if (dtSaleTotalData.Rows.Count > 0)
{
//获取账期实收金额
decimal CashPay = UniqueCode.Split('|')[4].TryParseToDecimal();
//获取单品销售金额
decimal TotalSaleAmount = dtSaleTotalData.Rows[0][1].TryParseToDecimal();
if (CashPay == TotalSaleAmount)
{
//定义校验后的日志内容
string BusinessLogContent = dataRow[3].ToString().Split("单品销售金额:")[0] +
"单品销售金额:" + TotalSaleAmount + ",实收金额:" + CashPay;
DataTable dtShopInfo = BusinessLogHelper.GetInSaleShop(_OracleHelper, ServerpartCode, ShopCode);
if (dtShopInfo.Rows.Count == 0)
{
LogCentent = "单品验证成功";
//更新日志反查标识为1
BusinessLogHelper.UpdateBusinessLogCheckState(_OracleHelper, 100000,
BusinessId, "T_ENDACCOUNT", "HIGHWAY_SELLDATA", 1, BusinessLogContent);
if (ServerpartCode != "330342" && ShopCode != "143004")
{
DealCount++;
}
}
else
{
string ServerpartShopID = dtShopInfo.Rows[0][0].ToString();
//获取日结单品异常数据
DataTable dtSales = StockLogHelper.GetSaleData(_OracleHelper, ServerpartCode,
ShopCode, EndaccountDate, MachineCode, dtShopInfo.Rows[0][0].ToString());
if (BusinessType.StartsWith("3"))
{
if (StockLogHelper.AddRestaurantStockLog(_OracleHelper, 5000, BusinessId,
dtSales, EndaccountDate, ServerpartShopID, BusinessLogContent))
{
LogCentent = "餐饮进销存单品数据记录与数据库一致,单品验证成功";
if (ServerpartCode != "330342" && ShopCode != "143004")
{
DealCount++;
}
}
else
{
LogCentent = "餐饮进销存单品数据记录与数据库不一致,单品验证失败";
if (ServerpartCode != "330342" && ShopCode != "143004")
{
ExceptionCount++;
}
}
}
else
{
bool DealFlag = false;
if (ServerpartCode.StartsWith("51"))
{
//如果服务区编码是51开头,标识是四川的服务区,进销存数据库调取_OracleHelper_SC;
DealFlag = StockLogHelper.AddStockLog(_OracleHelper, _OracleHelper_SC, 5000,
BusinessId, dtSales, EndaccountDate, ServerpartShopID, BusinessLogContent);
}
else
{
//其他服务区的进销存数据为_OracleHelper
DealFlag = StockLogHelper.AddStockLog(_OracleHelper, _OracleHelper, 5000,
BusinessId, dtSales, EndaccountDate, ServerpartShopID, BusinessLogContent);
}
if (DealFlag)
{
LogCentent = "进销存单品数据记录与数据库一致,单品验证成功";
if (ServerpartCode != "330342" && ShopCode != "143004")
{
DealCount++;
}
}
else
{
LogCentent = "进销存单品数据记录与数据库不一致,单品验证失败";
if (ServerpartCode != "330342" && ShopCode != "143004")
{
ExceptionCount++;
}
}
}
}
}
else
{
LogCentent = "单品金额与实收金额不一致,单品验证失败";
if (ServerpartCode != "330342" && ShopCode != "143004")
{
ExceptionCount++;
}
}
}
else
{
LogCentent = "单品数据未上传,单品验证失败";
if (ServerpartCode != "330342" && ShopCode != "143004")
{
ExceptionCount++;
}
}
}
else
{
LogCentent = "账期唯一标识不存在,单品验证失败";
if (dataRow["SERVERPARTCODE"].ToString() != "330342" && dataRow["SHOPCODE"].ToString() != "143004")
{
ExceptionCount++;
}
}
LogUtil.WriteLog(null, LogCentent, curDateTime.ToString("yyyyMMdd") + "_DataTransmission");
}
PushContent = string.Format("处理{0}条单品数据,{1}条单品不一致;", DealCount, ExceptionCount);
}
else
{
PushContent = "单品数据无异常;";
}
#endregion
#region 推送异常日志消息提醒
switch (curDateTime.Hour)
{
case 13:
case 18:
case 23:
DataTable dtMaterialData = BusinessLogHelper.GetBusinessLogErrorData(_OracleHelper, "701000,702000,703000,704000,705000");
PushContent += "餐饮成本管控异常日志" + dtMaterialData.Rows.Count + "条;";
DataTable dtInSaleData = BusinessLogHelper.GetBusinessLogErrorData(_OracleHelper, "201000,202000,203000,204000");
PushContent += "进销存异常日志" + dtInSaleData.Rows.Count + "条;";
//23点是最后一次推送,将统计总仓实时库存表与业务记录是否一致
if (curDateTime.Hour == 23)
{
//迁移前天的正常日志记录
BusinessLogHelper.RemoveBuisnessLog(_OracleHelper, _OracleConnStrEx);
//记录进销存重复入库记录
int RepeatCount = StockLogHelper.GetRepeatStorageBill(_OracleHelper, _OracleHelper_SC);
PushContent += "进销存重复入库" + RepeatCount + "条;";
//查询总仓异常库存记录
//CompareWareHouseStock(_OracleHelper, ref PushContent);
//查询移动支付到账差异数据
DataTable dtBankAccountLogData = BusinessLogHelper.GetBusinessLogErrorData(_OracleHelper, "1");
PushContent += "移动支付到账差异" + dtBankAccountLogData.Select("CHANNEL_AMOUNT <> 0").Length + "条;";
}
//查询解压缩异常数据
DataTable dtErrorLogData = BusinessLogHelper.GetBusinessLogErrorData(_OracleHelper, "0");
if (dtErrorLogData.Select("TABLE_NAME like '%_ReEndAccount.zip'").Length > 0)
{
DataTable dtReEndAccount = dtErrorLogData.Select("TABLE_NAME like '%_ReEndAccount.zip'").CopyToDataTable();
SQLString = "UPDATE PLATFORM_FRAMEWORK.T_BUSINESSLOG SET CHECK_STATE = 1 WHERE BUSINESSLOG_ID IN (" +
EShang.Common.CommonHelper.JoinStrFromDataTable(dtReEndAccount, "BUSINESSLOG_ID") + ") AND CHECK_STATE = 0";
}
PushContent += "解压缩异常" + dtErrorLogData.Select("TABLE_NAME not like '%_ReEndAccount.zip'").Length + "条;";
//查询日结账期异常数据
DataTable dtEndaccountErrorData = BusinessLogHelper.GetEndaccountErrorData(_OracleConnStrEx);
PushContent += "日结账期异常" + dtEndaccountErrorData.Select("CHECK_STATE is null").Length + "条;";
//查询移动支付分账异常数据
DataTable dtRoyaltyErrorData = BusinessLogHelper.GetBusinessLogErrorData(_OracleHelper, "9");
PushContent += "移动支付分账差异" + dtRoyaltyErrorData.Select("SERVERPARTCODE <> '348888'").Length + "条;";
//查询未传输的移动支付门店数据
DataTable dtMobilePayErrorData = BusinessLogHelper.GetBusinessLogErrorData(_OracleHelper, "12");
PushContent += "移动支付未传输门店" + dtMobilePayErrorData.Select("SERVERPARTCODE <> '348888'").Length + "条";
//获取消息推送接口地址
string url = EShangApiMain + "WeChat/RunningBulletinPush";
//调用消息推送接口
string Result = EShang.Common.HttpUtil.HttpUrlPost("SecondContent=" + PushContent, url);
LogUtil.WriteLog(null, "推送【异常日志】返回结果:" + Result, curDateTime.ToString("yyyyMMdd") + "_WeChatPush");
break;
}
#endregion
//生成服务区营收固化数据
CuringDataHelper.CalculateRevenue(_OracleHelper);
//更新门店经营状态
//BaseInfoHelper.ModifyShopState(_OracleHelper);
if (curDateTime.Hour == 10 || curDateTime.Hour == 18)
{
//BusinessProjectHelper.SendSMSMessage(_OracleHelper);
}
else if (curDateTime.Hour == 12)
{
#region 12点执行进程:固化营收数据;生成项目预警并推送;生成所有项目应收拆分;
//生成服务区业态营收汇总数据,验证日期从上月1号至昨日的日度数据,上月和本月的月度数据,并记录异常数据
VerifyRevenueData(_OracleHelper);
//检测客无忧没传数据的门店
string[] provinceCodeList = { "330200", "330300", "340000", "500000", "520000", "630000" };
foreach (string province_code in provinceCodeList)
{
string trade_date = curDateTime.AddDays(-1).ToString("yyyy-MM-dd");
List AccountList = AccountHelper.GetAccountList(
_OracleHelper, _OracleHelper_Coop, province_code, "1005", trade_date);
}
//生成经营项目预警数据,并进行推送
BusinessProjectHelper.ProjectWarning(_OracleHelper, curDateTime.AddDays(-1).ToString("yyyyMMdd"));
//推送分账比例切换审批
PushProjectWarning(_OracleHelper);
//推送年度结算提单提醒
PushBillLading(_OracleHelper);
////拉取驿达考核、巡检数据
//ExamineHelper.GetExamineData(_OracleHelper, curDateTime.ToShortDateString(), curDateTime.ToShortDateString());
////重新校验移动支付到账差异数据
//MobilePayHelper.RecheckMobileShare(_OracleHelper, _OracleHelper_Coop, _OracleConnStrEx);
////推送营收拆分差异数据
//PushRevenueWarning(_OracleHelper, DateTime.Now.AddDays(-1));
//生成昨日应收拆分数据
BusinessProjectHelper.RebuildSplitData(_OracleHelper);
//生成本月营收分润的项目财务报表数据
//BusinessProjectHelper.SolidMonthProjectSplit(_OracleHelper, curDateTime.AddDays(-1).ToString("yyyyMMdd"));
#endregion
//推送项目到期提醒
BusinessProjectHelper.ProjectDueWarning(_OracleHelper);
//验证卡口流水差异数据
BayonetHelper.CompareVehicleCount(_OracleHelper);
//记录服务区天气情况
CuringDataHelper.SolidServerpartWeather(_OracleHelper);
//推送财务共享数据变更未传输数据
CuringDataHelper.PushFinanceRevenueError(_OracleHelper, DateTime.Now.AddDays(-1).ToString("yyyyMM"));
}
else if (curDateTime.Hour == 23)
{
//ExamineHelper.GetExamineData(_OracleHelper, curDateTime.ToShortDateString(), curDateTime.ToShortDateString());
////重新校验移动支付分账差异数据
//MobilePayHelper.RecheckMobileShare(_OracleHelper, _OracleHelper_Coop, _OracleConnStrEx);
////推送营收拆分差异数据
//PushRevenueWarning(_OracleHelper, DateTime.Now.AddDays(-1));
//重新验证移动支付到账差异
ValidateBankAccount(_OracleHelper, _OracleHelper_Coop, _OracleHelper, _OracleConnStrEx);
}
else
{
if (curDateTime.Hour == 19)
{
//重新校验移动支付分账差异数据
MobilePayHelper.RecheckMobileShare(_OracleHelper, _OracleHelper_Coop, _OracleConnStrEx);
}
else if (curDateTime.Hour == 21)
{
//存储经营异常预警月度固化数据
if (curDateTime.Day < 5 && curDateTime.Day > 1)
{
//如果是月初,上个月的数据也同步更新一次
CuringDataHelper.SolidMonthINCAnalysis(_OracleHelper, curDateTime.AddMonths(-1).ToString("yyyyMM"));
}
CuringDataHelper.SolidMonthINCAnalysis(_OracleHelper, curDateTime.AddDays(-1).ToString("yyyyMM"));
//重新计算经营项目周期预计数据
BusinessProjectHelper.ModifyPeriodWarning(_OracleHelper, _OracleHelper_Coop);
BusinessProjectHelper.RecordCACOST(_OracleHelper);
}
else if (curDateTime.Hour == 22)
{
//查询卡口流水误差率
double ErrorRate = BayonetHelper.GetErrorRate(_OracleHelper);
if (Math.Abs(ErrorRate) > 2)
{
PushContent += "卡口流水误差率:" + ErrorRate + "%";
}
//获取消息推送接口地址
string url = EShangApiMain + "WeChat/RunningBulletinPush";
//调用消息推送接口
string Result = EShang.Common.HttpUtil.HttpUrlPost("SecondContent=" + PushContent, url);
LogUtil.WriteLog(null, "推送【异常日志】返回结果:" + Result, curDateTime.ToString("yyyyMMdd") + "_WeChatPush");
//推送营收拆分差异数据
PushRevenueWarning(_OracleHelper, DateTime.Now.AddDays(-1));
//生成经营项目预警数据,并进行推送
BusinessProjectHelper.WarningProject(_OracleHelper);
PushSplitWarning(_OracleHelper);
//处理日结异常数据
BusinessLogHelper.CorrectErrorAccount(_OracleHelper);
//删除前天的测试数据
SQLString = "DELETE FROM PLATFORM_FRAMEWORK.T_BUSINESSLOG WHERE SUBSTR(STATISTICS_DATE,1,8) <= '" +
curDateTime.AddDays(-2).ToString("yyyyMMdd") + "' AND SERVERPARTCODE = '348888'";
int DeleteCount = _OracleHelper.ExcuteSql(SQLString);
LogUtil.WriteLog(null, "删除测试数据日志共" + DeleteCount + "条",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission");
}
}
//授权用户微信推送权限
BusinessLogHelper.AuthorPush(_OracleHelper, _OracleHelper_Msp);
//处理万佳配送业务异常日期
BusinessLogHelper.DealWJProinst(_OracleHelper);
//重新验证移动支付到账差异
//ValidateBankAccount(_OracleHelper, _OracleHelper_Coop, _OracleHelper, _OracleConnStrEx);
}
catch (Exception ex)
{
LogUtil.WriteLog(null, "获取异常日志数据失败,失败原因:【" + ex.Message + "】",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission_Error");
}
finally
{
LogUtil.WriteLog(null, "///------------【异常日志】执行结束------------///",
curDateTime.ToString("yyyyMMdd") + "_DataTransmission");
}
}
#endregion
#region 方法 -> 统计总仓实时库存数据,与业务记录进行比对
protected void CompareWareHouseStock(Method.OracleHelper _OracleHelper, ref string PushContent)
{
List SQLStringList = new List();
string _WAREHOUSE_ID = "3", _CHECKCOMMODITY_ID = "0", _CHECKDATE = "";
//查询上次盘点数据
string SQLString = @"SELECT CHECKCOMMODITY_ID,CHECKDATE
FROM SELLER_STORAGE.T_CHECKCOMMODITY
WHERE CHECK_STATE = 1 AND WAREHOUSE_ID = " + _WAREHOUSE_ID;
DataTable dtCheckInfo = _OracleHelper.ExcuteSqlGetDataSet(SQLString).Tables[0];
if (dtCheckInfo.Rows.Count > 0)
{
//获取上次盘点单内码、盘点时间
DataRow drCheckInfo = dtCheckInfo.Select("", "CHECKDATE desc")[0];
_CHECKCOMMODITY_ID = drCheckInfo["CHECKCOMMODITY_ID"].ToString();
_CHECKDATE = drCheckInfo["CHECKDATE"].ToString();
}
//统计实时库存表与本期业务数据【入库、配送、退货、损溢、调拨】和上期结存的差异
SQLString = string.Format(@"SELECT
A.SELLERCOMMODITY_ID,A.COMMODITY_CODE,
A.COMMODITY_NAME,A.COMMODITY_BARCODE,
NVL(A.SURPLUS_STOCK,0) AS SURPLUS_STOCK,
NVL(B.TOTAL_COUNT,0) AS TOTAL_COUNT,
NVL(D.OVERPLUSCOUNT,0) AS OVERPLUSCOUNT
FROM
SELLER_STORAGE.V_TOTALSTOCK A
LEFT JOIN
(
SELECT
B.SELLERCOMMODITY_ID,B.WAREHOUSE_ID,
SUM(TOTAL_COUNT) AS TOTAL_COUNT
FROM
SELLER_STORAGE.V_COSTINFOFORSTOCK B
WHERE
B.RECEIVE_DATE > TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS') AND
B.WAREHOUSE_ID = {2}
GROUP BY
B.SELLERCOMMODITY_ID,B.WAREHOUSE_ID
) B
ON
A.SELLERCOMMODITY_ID = B.SELLERCOMMODITY_ID AND
A.WAREHOUSE_ID = B.WAREHOUSE_ID
LEFT JOIN
SELLER_STORAGE.T_INSALES_STATISTIC D
ON
A.WAREHOUSE_ID = D.WAREHOUSE_ID AND
D.CHECKCOMMODITY_ID = {1} AND
A.SELLERCOMMODITY_ID = D.SELLERCOMMODITY_ID
WHERE
A.WAREHOUSE_ID = {2}", _CHECKDATE, _CHECKCOMMODITY_ID, _WAREHOUSE_ID);
DataTable dtStockDifference = _OracleHelper.ExcuteSqlGetDataSet(SQLString).Tables[0];
//计算有差异的条数=实时库存-业务发生数量-上期结存数量
foreach (DataRow dataRow in dtStockDifference.Select("SURPLUS_STOCK - TOTAL_COUNT - OVERPLUSCOUNT <> 0"))
{
SQLString = string.Format(@"INSERT INTO PLATFORM_FRAMEWORK.T_BUSINESSLOG (
BUSINESSLOG_ID,BUSINESSLOG_TYPE,BUSINESS_ID,TABLE_NAME,OWNER_NAME,
BUSINESSLOG_CONTENT,OPERATE_DATE,DATA_CONSISTENCY,CHECK_STATE)
VALUES (
PLATFORM_FRAMEWORK.SEQ_BUSINESSLOG.NEXTVAL,
507000,{0},'T_GOODSSTOCK','SELLER_STORAGE','{1}',{2},0,0)",
dataRow[0], dataRow[2] + "【" + dataRow[3] + "】" + "实时库存:" + dataRow[4] +
",业务发生数量:" + dataRow[5] + ",上期结存数量:" + dataRow[6],
DateTime.Now.ToString("yyyyMMddHHmmss").TryParseToDecimal());
SQLStringList.Add(SQLString);
}
//因为现在生成的数据是最新的,要把历史差异更新为已处理
SQLString = @"UPDATE PLATFORM_FRAMEWORK.T_BUSINESSLOG SET CHECK_STATE = 1
WHERE CHECK_STATE = 0 AND BUSINESSLOG_TYPE = 507000 AND OPERATE_DATE < " +
DateTime.Now.ToString("yyyyMMdd000000");
SQLStringList.Add(SQLString);
if (SQLStringList.Count > 0)
{
_OracleHelper.ExecuteSqlTran(SQLStringList);
}
PushContent += "总仓实时库存异常" + SQLStringList.Count + "条;";
}
#endregion
#region 方法 -> 重新验证移动支付到账差异
///
/// 重新验证移动支付到账差异
///
/// 业务日志数据库链接
/// 合作商户平台数据库链接
/// 自然日报表数据库链接
/// 建行、工行对账数据库链接
public static void ValidateBankAccount(Method.OracleHelper OracleHelperLog, Method.OracleHelper OracleHelperCM,
Method.OracleHelper OracleHelperED, Method.OracleHelper OracleHelperEx)
{
string SQLString = @"DELETE FROM PLATFORM_FRAMEWORK.T_BUSINESSLOG
WHERE BUSINESSLOG_TYPE = 1 AND SERVERPARTCODE IN ('340403','340409','341003','330340')";
OracleHelperLog.ExcuteSql(SQLString);
DataTable dtBankAccountLogData = BusinessLogHelper.GetBankAccountLogData(OracleHelperLog);
if (DateTime.Now.TimeOfDay.TotalHours > 10)
{
//每天10点以后(不含10点)查询通道返回金额返回为0的数据
foreach (DataRow drBankAccountLogData in dtBankAccountLogData.Select(
"SERVERPARTCODE not like '51%' and CHANNEL_AMOUNT = 0"))
{
//获取门店移动支付商户编号信息
DataTable dtBusinessShopCode = MobilePayHelper.GetBusinessShopCodeList(OracleHelperCM,
drBankAccountLogData["SERVERPARTCODE"].ToString(), drBankAccountLogData["SHOPCODE"].ToString());
//重新校验通道返回金额为0的异常数据
string AccountDate = drBankAccountLogData["STATISTICS_DATE"].ToString();
AccountDate = AccountDate.Substring(0, 4) + "-" + AccountDate.Substring(4, 2) + "-" + AccountDate.Substring(6, 2);
MobilePayHelper.BankAccountCompare(OracleHelperLog, OracleHelperED, OracleHelperEx,
dtBankAccountLogData, dtBusinessShopCode, AccountDate, drBankAccountLogData["SERVERPARTCODE"].ToString(),
drBankAccountLogData["SHOPCODE"].ToString(), drBankAccountLogData["MACHINECODE"].ToString());
}
}
//验证3天内的移动支付差异数据
decimal FormatDate = DateTime.Now.Date.AddDays(-3).ToString("yyyyMMdd").TryParseToDecimal();
var ServerpartCodeList = from t in dtBankAccountLogData.AsEnumerable()
where !t.Field("SERVERPARTCODE").StartsWith("51") &&
t["STATISTICS_DATE"].TryParseToDecimal() >= FormatDate &&
t["CHANNEL_AMOUNT"].TryParseToDecimal() != 0
group t by new
{
t0 = t.Field("SERVERPARTCODE"),
t1 = t["STATISTICS_DATE"].TryParseToDecimal(),
t2 = t.Field("CHANNEL_AMOUNT")
} into m
select new
{
ServerpartCode = m.Key.t0,
AccountDate = m.Key.t1,
BankAccountAmount = m.Key.t2,
CashPay = m.Sum(o => o.Field("DAILY_AMOUNT"))
};
foreach (var ServerpartCode in ServerpartCodeList)
{
string SelectSQL = "CHECK_STATE = 0 and SERVERPARTCODE = '" + ServerpartCode.ServerpartCode + "' and STATISTICS_DATE = " +
ServerpartCode.AccountDate + " and CHANNEL_AMOUNT = " + ServerpartCode.BankAccountAmount;
foreach (DataRow drBankAccountLogData in dtBankAccountLogData.Select(SelectSQL))
{
if (ServerpartCode.CashPay != ServerpartCode.BankAccountAmount)
{
SQLString = "UPDATE PLATFORM_FRAMEWORK.T_BUSINESSLOG SET CHECK_COUNT = CHECK_COUNT + 1 " +
"WHERE BUSINESSLOG_ID = " + drBankAccountLogData["BUSINESSLOG_ID"];
}
else
{
drBankAccountLogData["DATA_CONSISTENCY"] = 1;
drBankAccountLogData["CHECK_STATE"] = 1;
SQLString = @"UPDATE PLATFORM_FRAMEWORK.T_BUSINESSLOG
SET CHECK_COUNT = CHECK_COUNT + 1,DATA_CONSISTENCY = 1,CHECK_STATE = 1
WHERE BUSINESSLOG_ID = " + drBankAccountLogData["BUSINESSLOG_ID"];
}
OracleHelperLog.ExcuteSql(SQLString);
}
}
}
#endregion
#region 方法 -> 验证日结营收固化表的数据一致性
///
/// 验证日结营收固化表的数据一致性
///
/// 营收数据表所在数据库链接
public static void VerifyRevenueData(Method.OracleHelper oracleHelper)
{
List EndaccountList = new List();
//更新历史未处理的日度差异日志数据,重新生成差异日志
string SQLString = @"UPDATE PLATFORM_FRAMEWORK.T_BUSINESSLOG SET CHECK_STATE = 1
WHERE CHECK_STATE = 0 AND BUSINESSLOG_TYPE = 7 AND STATISTICS_DATE >= " +
DateTime.Now.AddMonths(-1).ToString("yyyyMM01") +
" AND STATISTICS_DATE <= " + DateTime.Now.Date.ToString("yyyyMMdd");
oracleHelper.ExcuteSql(SQLString);
//验证服务区日度营收固化数据的一致性,验证日期从上月1号至昨日,并记录异常数据
for (DateTime StartDate = DateTime.Parse(DateTime.Now.AddMonths(-1).ToString("yyyy-MM-01"));
StartDate <= DateTime.Now.Date; StartDate = StartDate.AddDays(1))
{
CuringDataHelper.VerifyDailyRevenueData(oracleHelper,
StartDate.ToString("yyyy-MM-dd"), EndaccountList);
}
//设置微信推送的内容
PushContent = "本次验证【" + DateTime.Now.AddMonths(-1).ToString("yyyy-MM-01") + "至" +
DateTime.Now.ToString("yyyy-MM-dd") + "】日度营收数据";
if (EndaccountList.Count == 0)
{
PushContent += ",数据一致没有异常;";
}
else
{
PushContent += ",";
}
//获取当前存在异常账期的数量
int CurCount = EndaccountList.Count;
//更新历史未处理的月度差异日志数据,重新生成差异日志
SQLString = @"UPDATE PLATFORM_FRAMEWORK.T_BUSINESSLOG SET CHECK_STATE = 1
WHERE CHECK_STATE = 0 AND BUSINESSLOG_TYPE = 8 AND STATISTICS_DATE >= " +
DateTime.Now.AddMonths(-1).ToString("yyyyMM") +
" AND STATISTICS_DATE <= " + DateTime.Now.Date.ToString("yyyyMM");
oracleHelper.ExcuteSql(SQLString);
//验证服务区月度营收固化数据的一致性,验证上月和本月的数据
for (DateTime LastMonth = DateTime.Now.AddMonths(-1);
LastMonth <= DateTime.Now.AddMonths(1);
LastMonth = LastMonth.AddMonths(1))
{
CuringDataHelper.VerifyMonthlyRevenueData(
oracleHelper, LastMonth.ToString("yyyyMM"), EndaccountList);
}
//设置微信推送的内容
if (DateTime.Now.AddMonths(-1).Month == DateTime.Now.AddDays(-1).Month)
{
PushContent += "【" + DateTime.Now.AddMonths(-1).ToString("yyyy-MM") + "】月度营收数据";
}
else
{
PushContent += "【" + DateTime.Now.AddMonths(-1).ToString("yyyy-MM") + "和" +
DateTime.Now.AddDays(-1).ToString("yyyy-MM") + "】月度营收数据";
}
//获取新增的账期
int AddCount = EndaccountList.FindAll(o => o.ErrorType == 1).Count;
//获取调整的账期
int ModifyCount = EndaccountList.FindAll(o => o.ErrorType == 2).Count;
//获取异常时间的账期
int ErrorCount = EndaccountList.FindAll(o => o.ErrorType == 9).Count;
if (EndaccountList.Count == 0)
{
PushContent += ",数据一致没有异常;";
}
else
{
PushContent += ",";
}
if (EndaccountList.Count > 0)
{
if (EndaccountList.Count > 3)
{
PushContent += "其中" + (AddCount > 0 ? "新增" + AddCount + "笔账期," : "") +
(ModifyCount > 0 ? "调整" + ModifyCount + "笔账期," : "") +
(ErrorCount > 0 ? "有" + ErrorCount + "笔账期被无效" : "");
}
else
{
string EndaccountStr = "其中";
if (AddCount > 0)
{
EndaccountStr = "新增的账期:";
string curEndaccountStr = "";
foreach (Model.EndaccountModel endaccountModel in EndaccountList.FindAll(o => o.ErrorType == 1))
{
curEndaccountStr += (curEndaccountStr == "" ? "" : "、") + endaccountModel.ServerpartName +
endaccountModel.ShopName + "【" + endaccountModel.EndaccountDate + "】";
}
EndaccountStr += curEndaccountStr;
}
if (ModifyCount > 0)
{
EndaccountStr = (EndaccountStr == "" ? "" : ",") + "有调整的账期:";
string curEndaccountStr = "";
foreach (Model.EndaccountModel endaccountModel in EndaccountList.FindAll(o => o.ErrorType == 2))
{
curEndaccountStr += (curEndaccountStr == "" ? "" : "、") + endaccountModel.ServerpartName +
endaccountModel.ShopName + "【" + endaccountModel.EndaccountDate + "】";
}
EndaccountStr += curEndaccountStr;
}
if (ErrorCount > 0)
{
EndaccountStr += (EndaccountStr == "" ? "" : ",") + "被无效的账期:";
string curEndaccountStr = "";
foreach (Model.EndaccountModel endaccountModel in EndaccountList.FindAll(o => o.ErrorType == 9))
{
curEndaccountStr += (curEndaccountStr == "" ? "" : "、") + endaccountModel.ServerpartName +
endaccountModel.ShopName + "【" + endaccountModel.EndaccountDate + "】";
}
EndaccountStr += curEndaccountStr;
}
PushContent += EndaccountStr;
}
}
//获取消息推送接口地址
string url = EShangApiMain + "WeChat/RunningBulletinPush";
//调用消息推送接口
string Result = EShang.Common.HttpUtil.HttpUrlPost("SecondContent=" + PushContent, url);
LogUtil.WriteLog(null, "推送【异常日志】返回结果:" + Result, DateTime.Now.ToString("yyyyMMdd") + "_WeChatPush");
}
#endregion
#region 方法 -> 推送营收拆分预警信息
public static void PushRevenueWarning(Method.OracleHelper oracleHelper, DateTime cudDate)
{
//设置微信推送的内容
string PushContent = "本次验证【" + cudDate.ToString("yyyy-MM-dd") + "】营收拆分数据";
string SQLString = "SELECT 1 FROM PLATFORM_FRAMEWORK.T_BUSINESSLOG WHERE BUSINESSLOG_TYPE = 11 AND CHECK_STATE = 0";
DataTable dtErrorLog = oracleHelper.ExcuteSqlGetDataSet(SQLString).Tables[0];
if (dtErrorLog.Rows.Count == 0)
{
PushContent += ",数据一致没有异常";
//每天的第一次推送,才显示无差异的情况
if (cudDate.Hour > 9)
{
return;
}
}
else
{
PushContent += ",产生" + dtErrorLog.Rows.Count + "条异常数据,详细请登录综管平台查看";
}
//获取消息推送接口地址
string url = EShangApiMain + "WeChat/WarningPush";
//定义推送跳转链接
string jumpUrl = "https://eshangtech.com/Public/Bulletin/warningPage.html?BUSINESSLOG_TYPE=11".ToEncrypt();
//定义推送入参
string pushContent = "PushModule=PushWarning&FirstContent=营收拆分预警&SecondContent=" + PushContent + "&PushUrl=" + jumpUrl;
//调用消息推送接口
string Result = EShang.Common.HttpUtil.HttpUrlPost(pushContent, url + "?" + pushContent);
LogUtil.WriteLog(null, "推送【异常日志】返回结果:" + Result, DateTime.Now.ToString("yyyyMMdd") + "_WeChatPush");
}
#endregion
#region 方法 -> 推送分润比例切换审批提醒
public static void PushProjectWarning(Method.OracleHelper oracleHelper)
{
string SQLString = "SELECT * FROM CONTRACT_STORAGE.T_PROJECTWARNING WHERE PROJECTWARNING_STATE in (1000,2000)";
DataTable dtWarning = oracleHelper.ExcuteSqlGetDataSet(SQLString).Tables[0];
//从配置文件获取预警天数
string WarningDays = ConfigurationManager.AppSettings["WarningDays"];
//定义微信推送的接口地址
string url = EShangApiMain + "WeChat/WeChatPushMessageByPhone"; //WeChatPushMessage
foreach (DataRow drWarning in dtWarning.Select("", "PROJECTWARNING_STATE,EXPIREDAYS"))
{
if (drWarning["PROJECTWARNING_STATE"].ToString() == "1000" &&
drWarning["EXPIREDAYS"].TryParseToInt() > WarningDays.TryParseToInt())
{
continue;
}
WeChatPushModel weChatPushModel = new WeChatPushModel();
weChatPushModel.PushModule = "WarningAttention";
weChatPushModel.PushPhoneNum = drWarning["PROJECTWARNING_STATE"].ToString() == "2000" ?
ConfigurationManager.AppSettings["ApprovePhone"] : ConfigurationManager.AppSettings["SwitchPhone"];
weChatPushModel.JumpUrl = "pages/projectWarning/detail?id=" + drWarning["PROJECTWARNING_ID"];
//weChatPushModel.AppletAppId = "wxa99ef047735c031e";//推送驿行畅旅小程序
weChatPushModel.PushParameterObject = new PushParameter();
weChatPushModel.PushParameterObject.ProvinceCode = 340000;
weChatPushModel.PushParameterObject.ServerpartIds = drWarning["SERVERPART_ID"].ToString();
weChatPushModel.PushContentObject = new PushContent();
if (drWarning["EXPIREDAYS"].TryParseToInt() == 0)
{
weChatPushModel.PushContentObject.FisrtContent = "【" + drWarning["SERVERPART_NAME"] +
drWarning["SERVERPARTSHOP_NAME"] + "】分润比例切换审批申请";
}
else
{
weChatPushModel.PushContentObject.FisrtContent = "【" + drWarning["SERVERPART_NAME"] +
drWarning["SERVERPARTSHOP_NAME"] + "】分润比例切换审批申请";
}
weChatPushModel.PushContentObject.SecondContent = DateTime.Now.ToString();
string Result = EShang.Common.HttpUtil.HttpUrlPost(JsonConvert.SerializeObject(weChatPushModel), url, "application/json");
LogUtil.WriteLog(null, "推送【分润比例切换" + (drWarning["PROJECTWARNING_STATE"].ToString() == "2000" ?
"审核" : "提醒") + "日志】返回结果:" + Result, DateTime.Now.ToString("yyyyMMdd") + "_WeChatPush");
}
}
#endregion
#region 方法 -> 推送年度结算审批提单
public static void PushBillLading(Method.OracleHelper oracleHelper)
{
string SQLString = @"SELECT A.*,B.BUSINESSPROJECT_NAME
FROM PLATFORM_FRAMEWORK.T_BUSINESSAPPROVAL A,CONTRACT_STORAGE.T_BUSINESSPROJECT B
WHERE A.BUSINESSPROCESS_ID = B.BUSINESSPROJECT_ID AND A.OPERATION_TYPE = 11 AND
A.BUSINESSAPPROVAL_STATE = 9000 AND NVL(A.BILL_STATE,0) = 0";
DataTable dtBill = oracleHelper.ExcuteSqlGetDataSet(SQLString).Tables[0];
//定义微信推送的接口地址
string url = EShangApiMain + "WeChat/WeChatPushMessageByPhone"; //WeChatPushMessage
foreach (DataRow drBill in dtBill.Select("", "BUSINESS_ENDDATE"))
{
WeChatPushModel weChatPushModel = new WeChatPushModel
{
PushModule = "WarningAttention",
PushPhoneNum = ConfigurationManager.AppSettings["BillLadingPhone"],
JumpUrl = "pages/billOfLading/detail?id=" + drBill["BUSINESSAPPROVAL_ID"] + "&ispush=true",
//weChatPushModel.AppletAppId = "wxa99ef047735c031e";//推送驿行畅旅小程序
PushParameterObject = new PushParameter
{
ProvinceCode = 340000,
ServerpartIds = drBill["SERVERPART_ID"].ToString()
},
PushContentObject = new PushContent
{
FisrtContent = "【" + drBill["BUSINESSPROJECT_NAME"] + "】年度结算审批提单",
SecondContent = DateTime.Now.ToString()
}
};
string Result = EShang.Common.HttpUtil.HttpUrlPost(JsonConvert.SerializeObject(weChatPushModel), url, "application/json");
LogUtil.WriteLog(null, "推送【年度结算审批提单日志】返回结果:" + Result, DateTime.Now.ToString("yyyyMMdd") + "_WeChatPush");
}
}
#endregion
#region 方法 -> 推送固定租金项目预警信息
public static void PushFixedRent(Method.OracleHelper oracleHelper)
{
string SQLString = string.Format(@"SELECT * FROM CONTRACT_STORAGE.T_PROJECTWARNING
WHERE PROJECTWARNING_STATE = 9000 AND SWITCH_DATE IS NULL AND
BUSINESS_TYPE = 2000 AND WARNING_DATE >= {0} AND WARNING_DATE <= {1}",
DateTime.Now.ToString("yyyyMM01"), DateTime.Now.ToString("yyyyMM31"));
DataTable dtWarning = oracleHelper.ExcuteSqlGetDataSet(SQLString).Tables[0];
foreach (DataRow drWarning in dtWarning.Rows)
{
PushContent = "固定租金【" + drWarning["BUSINESSPROJECT_NAME"] + "】已达保底,请及时联系客无忧进行切换通道!";
//获取消息推送接口地址
string url = EShangApiMain + "WeChat/RunningBulletinPush";
//调用消息推送接口
string Result = EShang.Common.HttpUtil.HttpUrlPost("SecondContent=" + PushContent, url);
LogUtil.WriteLog(null, "推送【固定租金项目预警信息】返回结果:" + Result,
DateTime.Now.ToString("yyyyMMdd") + "_WeChatPush");
}
}
#endregion
#region 方法 -> 推送应收拆分预警信息
///
/// 推送应收拆分预警信息
///
///
public static void PushSplitWarning(Method.OracleHelper oracleHelper)
{
string SQLString = "SELECT 1,BUSINESSLOG_TYPE FROM PLATFORM_FRAMEWORK.T_BUSINESSLOG WHERE BUSINESSLOG_TYPE IN (17,18)";
DataTable dtWarning = oracleHelper.ExcuteSqlGetDataSet(SQLString).Tables[0];
//推送【应收拆分预警信息】
if (dtWarning.Select("BUSINESSLOG_TYPE = 17").Length > 0)
{
PushContent = "应收拆分预警" + dtWarning.Select("BUSINESSLOG_TYPE = 17").Length + "条,请点击详情查看具体内容!";
//获取消息推送接口地址
string url = EShangApiMain + "WeChat/WarningPush";
//定义推送跳转链接
string jumpUrl = "https://eshangtech.com/Public/Bulletin/warningPage.html?BUSINESSLOG_TYPE=17".ToEncrypt();
//定义推送入参
string pushContent = "PushModule=PushWarning&FirstContent=应收拆分预警&SecondContent=" + PushContent + "&PushUrl=" + jumpUrl;
//调用消息推送接口
string Result = EShang.Common.HttpUtil.HttpUrlPost(pushContent, url + "?" + pushContent);
LogUtil.WriteLog(null, "推送【应收拆分预警信息】返回结果:" + Result,
DateTime.Now.ToString("yyyyMMdd") + "_WeChatPush");
}
//推送【附件上传预警信息】
if (dtWarning.Select("BUSINESSLOG_TYPE = 18").Length > 0)
{
PushContent = "合同附件未上传" + dtWarning.Select("BUSINESSLOG_TYPE = 18").Length + "条,请点击详情查看具体内容!";
//获取消息推送接口地址
string url = EShangApiMain + "WeChat/WarningPush";
//定义推送跳转链接
string jumpUrl = "https://eshangtech.com/Public/Bulletin/warningPage.html?BUSINESSLOG_TYPE=18".ToEncrypt();
//定义推送入参
string pushContent = "PushModule=PushWarning&FirstContent=附件上传预警&SecondContent=" + PushContent + "&PushUrl=" + jumpUrl;
//调用消息推送接口
string Result = EShang.Common.HttpUtil.HttpUrlPost(pushContent, url + "?" + pushContent);
LogUtil.WriteLog(null, "推送【附件上传预警信息】返回结果:" + Result,
DateTime.Now.ToString("yyyyMMdd") + "_WeChatPush");
}
}
#endregion
#region 方法 -> 迁移历史数据
public static void RemoveHisData(Method.OracleHelper _OracleHelper, Method.OracleHelper _OracleHelperEx)
{
int ExcuteCount;
//查询有盘点数据的门店
string SQLString, selectedSQL;
//SQLString = "SELECT * FROM SALESTORE_STORAGE.T_CHECKCOMMODITY WHERE CHECK_STATE > 0";
//DataTable dtCheckInfo = _OracleHelperEx.ExcuteSqlGetDataSet(SQLString).Tables[0];
for (DateTime curDate = DateTime.Parse("2023/12/1"); curDate > DateTime.Parse("2020/1/1"); curDate = curDate.AddMonths(-1))
{
//SQLString = string.Format(@"INSERT INTO SALESTORE_STORAGE.T_INSALES_STATISTIC_HIS
// SELECT * FROM SALESTORE_STORAGE.T_INSALES_STATISTIC A
// WHERE CHECKDATE >= TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS') AND
// CHECKDATE < TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')", curDate.AddMonths(-1), curDate);
//ExcuteCount = _OracleHelper.ExcuteSql(SQLString);
//LogUtil.WriteLog(null, "迁移" + curDate.AddMonths(-1) + "进销存报表数据" +
// ExcuteCount + "条记录到历史库", DateTime.Now.ToString("yyyyMMdd") + "_InSales");
//if (ExcuteCount > 0)
//{
// SQLString = string.Format(@"DELETE FROM SALESTORE_STORAGE.T_INSALES_STATISTIC A
// WHERE CHECKDATE >= TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS') AND
// CHECKDATE < TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')", curDate.AddMonths(-1), curDate);
// ExcuteCount = _OracleHelper.ExcuteSql(SQLString);
// LogUtil.WriteLog(null, "删除" + curDate.AddMonths(-1) + "进销存报表数据" +
// ExcuteCount + "条记录", DateTime.Now.ToString("yyyyMMdd") + "_InSales");
//}
SQLString = string.Format(@"INSERT INTO SALESTORE_STORAGE.T_INSALES_STATISTIC_HIS (
INSALES_STATISTIC_ID,SERVERPART_ID,SERVERPART_CODE,SERVERPART_NAME,
PROVINCE_CODE,SERVERPARTSHOP_ID,SHOPCODE,SHOPNAME,COMMODITY_ID,COMMODITY_TYPE,
COMMODITYTYPE_NAME,BUSINESSTYPE,COMMODITY_CODE,COMMODITY_NAME,COMMODITY_BARCODE,
COMMODITY_UNIT,COMMODITY_RULE,COMMODITY_RETAILPRICE,COMMODITY_PURCHASEPRICE,
PURCHASE_COUNT,PURCHASE_TAXPRICE,PURCHASE_TOTALTAXPRICE,PURCHASE_PRICE,
PURCHASE_TOTALPRICE,SELL_COUNT,SELL_UNITTAXPRICE,SELL_TOTALTAXPRICE,
SELL_UNITPRICE,SELL_TOTALPRICE,SELL_COST,SELL_COSTPRICE,TRANSFER_COUNT,
TRANSFER_AMOUNT,TRANSFER_PRICE,RECEIVE_COUNT,RECEIVE_AMOUNT,RECEIVE_PRICE,
BACK_COUNT,BACK_AMOUNT,BACK_PRICE,LAST_OVERPLUSCOUNT,LAST_OVERPLUSAMOUNT,
LAST_OVERPLUSPRICE,OVERPLUSCOUNT,OVERPLUS_AMOUNT,OVERPLUS_PRICE,LOSSPROFIT_COUNT,
LOSSPROFIT_AMOUNT,LOSSPROFIT_PRICE,GROSS_PROFIT,GROSS_PROFITPRICE,TOTAL_PROFIT,
TOTAL_PROFITPRICE,GROUPPURCHASE_AMOUNT,GROUPPURCHASE_COST,GROUPPURCHASE_COUNT,
LOSSPROFIT_CHECKAMOUNT,LOSSPROFIT_CHECKCOUNT,PROCESSORDER_AMOUNT,PROCESSORDER_COUNT,
LOSSPROFIT_CHECKPRICE,GROUPPURCHASE_PRICE,GROUPPURCHASE_COSTPRICE,
PROCESSORDER_PRICE,CHECKDATE,INSALES_STATISTIC_DESC)
SELECT
INSALES_STATISTIC_ID,SERVERPART_ID,SERVERPART_CODE,SERVERPART_NAME,
PROVINCE_CODE,SERVERPARTSHOP_ID,SHOPCODE,SHOPNAME,COMMODITY_ID,COMMODITY_TYPE,
COMMODITYTYPE_NAME,BUSINESSTYPE,COMMODITY_CODE,COMMODITY_NAME,COMMODITY_BARCODE,
COMMODITY_UNIT,COMMODITY_RULE,COMMODITY_RETAILPRICE,COMMODITY_PURCHASEPRICE,
PURCHASE_COUNT,PURCHASE_TAXPRICE,PURCHASE_TOTALTAXPRICE,PURCHASE_PRICE,
PURCHASE_TOTALPRICE,SELL_COUNT,SELL_UNITTAXPRICE,SELL_TOTALTAXPRICE,
SELL_UNITPRICE,SELL_TOTALPRICE,SELL_COST,SELL_COSTPRICE,TRANSFER_COUNT,
TRANSFER_AMOUNT,TRANSFER_PRICE,RECEIVE_COUNT,RECEIVE_AMOUNT,RECEIVE_PRICE,
BACK_COUNT,BACK_AMOUNT,BACK_PRICE,LAST_OVERPLUSCOUNT,LAST_OVERPLUSAMOUNT,
LAST_OVERPLUSPRICE,OVERPLUSCOUNT,OVERPLUS_AMOUNT,OVERPLUS_PRICE,LOSSPROFIT_COUNT,
LOSSPROFIT_AMOUNT,LOSSPROFIT_PRICE,GROSS_PROFIT,GROSS_PROFITPRICE,TOTAL_PROFIT,
TOTAL_PROFITPRICE,GROUPPURCHASE_AMOUNT,GROUPPURCHASE_COST,GROUPPURCHASE_COUNT,
LOSSPROFIT_CHECKAMOUNT,LOSSPROFIT_CHECKCOUNT,PROCESSORDER_AMOUNT,PROCESSORDER_COUNT,
LOSSPROFIT_CHECKPRICE,GROUPPURCHASE_PRICE,GROUPPURCHASE_COSTPRICE,
PROCESSORDER_PRICE,CHECKDATE,INSALES_STATISTIC_DESC
FROM SALESTORE_STORAGE.T_INSALES_STATISTIC A
WHERE CHECKDATE >= TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS') AND
CHECKDATE < TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')", curDate.AddMonths(-1), curDate);
ExcuteCount = _OracleHelperEx.ExcuteSql(SQLString);
LogUtil.WriteLog(null, "迁移" + curDate.AddMonths(-1) + "四川进销存报表数据" +
ExcuteCount + "条记录到历史库", DateTime.Now.ToString("yyyyMMdd") + "_InSales");
if (ExcuteCount > 0)
{
SQLString = string.Format(@"DELETE FROM SALESTORE_STORAGE.T_INSALES_STATISTIC A
WHERE CHECKDATE >= TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS') AND
CHECKDATE < TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')", curDate.AddMonths(-1), curDate);
ExcuteCount = _OracleHelperEx.ExcuteSql(SQLString);
LogUtil.WriteLog(null, "删除" + curDate.AddMonths(-1) + "四川进销存报表数据" +
ExcuteCount + "条记录", DateTime.Now.ToString("yyyyMMdd") + "_InSales");
}
}
//foreach (DataRow drShop in dtCheckInfo.DefaultView.ToTable(true, "SERVERPARTSHOP_ID").Rows)
//{
// selectedSQL = "SERVERPARTSHOP_ID = " + drShop[0];
// DataRow[] CheckInfoList = dtCheckInfo.Select(selectedSQL, "CHECKDATE desc");
// string shopName = CheckInfoList[0]["SERVERPART_NAME"] + "" + CheckInfoList[0]["SHOPNAME"];
// for (int curNum = 1; curNum < CheckInfoList.Length; curNum++)
// {
// if (curNum == CheckInfoList.Length - 1)
// {
// SQLString = string.Format(@"INSERT INTO SALESTORE_STORAGE.T_STOCKLOG_HIS
// SELECT * FROM SALESTORE_STORAGE.T_STOCKLOG A
// WHERE {0} AND OPERATE_DATE <= TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')",
// selectedSQL, CheckInfoList[curNum]["CHECKDATE"]);
// ExcuteCount = _OracleHelperEx.ExcuteSql(SQLString);
// LogUtil.WriteLog(null, "迁移" + shopName + "【" + CheckInfoList[curNum]["CHECKDATE"] + "】进销存日志" +
// ExcuteCount + "条记录到历史库", DateTime.Now.ToString("yyyyMMdd") + "_StockLog");
// if (ExcuteCount > 0)
// {
// SQLString = string.Format(@"DELETE FROM SALESTORE_STORAGE.T_STOCKLOG A
// WHERE {0} AND OPERATE_DATE <= TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')",
// selectedSQL, CheckInfoList[curNum]["CHECKDATE"]);
// ExcuteCount = _OracleHelperEx.ExcuteSql(SQLString);
// LogUtil.WriteLog(null, "删除" + shopName + "【" + CheckInfoList[curNum]["CHECKDATE"] + "】进销存日志" +
// ExcuteCount + "条记录", DateTime.Now.ToString("yyyyMMdd") + "_StockLog");
// }
// }
// else
// {
// SQLString = string.Format(@"INSERT INTO SALESTORE_STORAGE.T_STOCKLOG_HIS
// SELECT * FROM SALESTORE_STORAGE.T_STOCKLOG A
// WHERE {0} AND OPERATE_DATE <= TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS') AND
// OPERATE_DATE > TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS')",
// selectedSQL, CheckInfoList[curNum]["CHECKDATE"], CheckInfoList[curNum + 1]["CHECKDATE"]);
// ExcuteCount = _OracleHelperEx.ExcuteSql(SQLString);
// LogUtil.WriteLog(null, "迁移" + shopName + "【" + CheckInfoList[curNum]["CHECKDATE"] + "】进销存日志" +
// ExcuteCount + "条记录到历史库", DateTime.Now.ToString("yyyyMMdd") + "_StockLog");
// if (ExcuteCount > 0)
// {
// SQLString = string.Format(@"DELETE FROM SALESTORE_STORAGE.T_STOCKLOG A
// WHERE {0} AND OPERATE_DATE <= TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS') AND
// OPERATE_DATE > TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS')",
// selectedSQL, CheckInfoList[curNum]["CHECKDATE"], CheckInfoList[curNum + 1]["CHECKDATE"]);
// ExcuteCount = _OracleHelperEx.ExcuteSql(SQLString);
// LogUtil.WriteLog(null, "删除" + shopName + "【" + CheckInfoList[curNum]["CHECKDATE"] + "】进销存日志" +
// ExcuteCount + "条记录", DateTime.Now.ToString("yyyyMMdd") + "_StockLog");
// }
// }
// }
//}
//SQLString = "SELECT * FROM HIGHWAY_STORAGE.T_SERVERPART WHERE PROVINCE_CODE IN (3544,4962) AND STATISTICS_TYPE = 1000";
//DataTable dtServerpart = _OracleHelper.ExcuteSqlGetDataSet(SQLString).Tables[0];
//foreach (DataRow drServerpart in dtServerpart.Rows)
//{
// string ExtraCode = "";
// switch (drServerpart["PROVINCE_CODE"].ToString())
// {
// case "3544":
// ExtraCode = "_340000";
// break;
// case "4962":
// ExtraCode = "_330300";
// break;
// }
// SQLString = "DELETE FROM HIGHWAY_EXCHANGE.T_COMMODITYSALE" + ExtraCode +
// " WHERE SERVERPARTCODE = '" + drServerpart["SERVERPART_CODE"] + "'";
// ExcuteCount = _OracleHelperEx.ExcuteSql(SQLString);
// LogUtil.WriteLog(null, "删除" + drServerpart["SERVERPART_NAME"] + "单品数据" +
// ExcuteCount + "条记录", DateTime.Now.ToString("yyyyMMdd") + "_CommoditySale");
// SQLString = string.Format(@"INSERT INTO HIGHWAY_EXCHANGE.T_COMMODITYSALE{0}@NEWEX
// SELECT * FROM HIGHWAY_EXCHANGE.T_COMMODITYSALE
// WHERE SERVERPARTCODE = '{1}'", ExtraCode, drServerpart["SERVERPART_CODE"]);
// ExcuteCount = _OracleHelper.ExcuteSql(SQLString);
// LogUtil.WriteLog(null, "复制" + drServerpart["SERVERPART_NAME"] + "单品数据" +
// ExcuteCount + "条记录", DateTime.Now.ToString("yyyyMMdd") + "_CommoditySale");
//}
//for (int decade = 0; decade < 7; decade++)
//{
// string month = DateTime.Now.AddMonths(num).ToString("yyyyMM"),
// startTime = DateTime.Now.AddMonths(num).ToString("yyyyMM") + (decade * 5).ToString("00") + "000000",
// endTime = DateTime.Now.AddMonths(num).ToString("yyyyMM") + ((decade + 1) * 5).ToString("00") + "000000";
// SQLString = string.Format(@"INSERT INTO HIGHWAY_HISTORY.T_YSSELLMASTER_{2}
// SELECT * FROM HIGHWAY_SELLDATA.T_YSSELLMASTER A
// WHERE SELLMASTER_DATE BETWEEN {0} AND {1}", startTime, endTime, month);
// int ExcuteCount = _OracleHelperEx.ExcuteSql(SQLString);
// LogUtil.WriteLog(null, "迁移【" + startTime + "至" + endTime + "】销售流水" + ExcuteCount +
// "条记录到历史库", DateTime.Now.ToString("yyyyMMdd") + "_SellMaster");
// if (ExcuteCount > 0)
// {
// SQLString = string.Format(@"DELETE FROM HIGHWAY_SELLDATA.T_YSSELLMASTER A
// WHERE SELLMASTER_DATE BETWEEN {0} AND {1}", startTime, endTime);
// ExcuteCount = _OracleHelperEx.ExcuteSql(SQLString);
// LogUtil.WriteLog(null, "删除【" + startTime + "至" + endTime + "】销售流水" + ExcuteCount +
// "条记录", DateTime.Now.ToString("yyyyMMdd") + "_SellMaster");
// }
// SQLString = string.Format(@"INSERT INTO HIGHWAY_HISTORY.T_YSSELLDETAILS_{2}
// SELECT * FROM HIGHWAY_SELLDATA.T_YSSELLDETAILS A
// WHERE CREATE_DATE BETWEEN {0} AND {1}", startTime, endTime, month);
// ExcuteCount = _OracleHelperEx.ExcuteSql(SQLString);
// LogUtil.WriteLog(null, "迁移【" + startTime + "至" + endTime + "】销售流水明细" + ExcuteCount +
// "条记录到历史库", DateTime.Now.ToString("yyyyMMdd") + "_SellMaster");
// if (ExcuteCount > 0)
// {
// SQLString = string.Format(@"DELETE FROM HIGHWAY_SELLDATA.T_YSSELLDETAILS A
// WHERE CREATE_DATE BETWEEN {0} AND {1}", startTime, endTime);
// ExcuteCount = _OracleHelperEx.ExcuteSql(SQLString);
// LogUtil.WriteLog(null, "删除【" + startTime + "至" + endTime + "】销售流水明细" + ExcuteCount +
// "条记录", DateTime.Now.ToString("yyyyMMdd") + "_SellMaster");
// }
//}
//SQLString = string.Format(@"INSERT INTO HIGHWAY_EXCHANGE.T_YSABNORMALITY_HIS
// SELECT * FROM HIGHWAY_EXCHANGE.T_YSABNORMALITY A
// WHERE ABNORMALITY_TIME BETWEEN {0}01000000 AND {0}32000000",
// DateTime.Now.AddMonths(num).ToString("yyyyMM"));
//int ExcuteCount = _OracleHelperEx.ExcuteSql(SQLString);
//LogUtil.WriteLog(null, "迁移【" + DateTime.Now.AddMonths(num).ToString("yyyy/MM") +
// "】异常稽核" + ExcuteCount + "条记录到历史库", DateTime.Now.ToString("yyyyMMdd") + "_Abnormal");
//if (ExcuteCount > 0)
//{
// SQLString = string.Format(@"DELETE FROM HIGHWAY_EXCHANGE.T_YSABNORMALITY A
// WHERE ABNORMALITY_TIME BETWEEN {0}01000000 AND {0}32000000",
// DateTime.Now.AddMonths(num).ToString("yyyyMM"));
// ExcuteCount = _OracleHelperEx.ExcuteSql(SQLString);
// LogUtil.WriteLog(null, "删除【" + DateTime.Now.AddMonths(num).ToString("yyyy/MM") +
// "】异常稽核" + ExcuteCount + "条记录", DateTime.Now.ToString("yyyyMMdd") + "_Abnormal");
//}
//SQLString = string.Format(@"INSERT INTO HIGHWAY_EXCHANGE.T_YSABNORMALITYDETAIL_HIS
// SELECT * FROM HIGHWAY_EXCHANGE.T_YSABNORMALITYDETAIL A
// WHERE OPERATEDATE BETWEEN {0}01000000 AND {0}32000000",
// DateTime.Now.AddMonths(num).ToString("yyyyMM"));
//ExcuteCount = _OracleHelperEx.ExcuteSql(SQLString);
//LogUtil.WriteLog(null, "迁移【" + DateTime.Now.AddMonths(num).ToString("yyyy/MM") +
// "】异常稽核明细" + ExcuteCount + "条记录到历史库", DateTime.Now.ToString("yyyyMMdd") + "_Abnormal");
//if (ExcuteCount > 0)
//{
// SQLString = string.Format(@"DELETE FROM HIGHWAY_EXCHANGE.T_YSABNORMALITYDETAIL A
// WHERE OPERATEDATE BETWEEN {0}01000000 AND {0}32000000",
// DateTime.Now.AddMonths(num).ToString("yyyyMM"));
// ExcuteCount = _OracleHelperEx.ExcuteSql(SQLString);
// LogUtil.WriteLog(null, "删除【" + DateTime.Now.AddMonths(num).ToString("yyyy/MM") +
// "】异常稽核明细" + ExcuteCount + "条记录", DateTime.Now.ToString("yyyyMMdd") + "_Abnormal");
//}
}
#endregion
#region 方法 -> 删除历史数据
public static void DeleteData(Method.OracleHelper oracleHelper, Method.OracleHelper oracleHelperEx)
{
int ExcuteCount;
string SQLString = "SELECT * FROM HIGHWAY_STORAGE.T_SERVERPART WHERE PROVINCE_CODE = 8832";
DataTable dtServerpart = oracleHelper.ExcuteSqlGetDataTable(SQLString);
foreach (DataRow drSP in dtServerpart.Rows)
{
LogUtil.WriteLog("开始删除【" + drSP["SERVERPART_NAME"] + "】营收趋势数据表");
SQLString = @"DELETE FROM HIGHWAY_EXCHANGE.T_REVENUETREND WHERE SERVERPARTCODE = '" + drSP["SERVERPART_CODE"] + "'";
ExcuteCount = oracleHelperEx.ExcuteSql(SQLString);
LogUtil.WriteLog("删除营收趋势数据表" + ExcuteCount + "条记录");
}
//for (DateTime curDate = StartDate; curDate < EndDate; curDate = curDate.AddDays(1))
//{
// LogUtil.WriteLog("开始删除【" + curDate.ToShortDateString() + "】销售流水数据");
// SQLString = "DELETE FROM HIGHWAY_SELLDATA.T_YSSELLMASTER WHERE SELLMASTER_DATE BETWEEN " +
// curDate.ToString("yyyyMMdd") + "000000 AND " + curDate.AddDays(1).ToString("yyyyMMdd") + "000000";
// ExcuteCount = oracleHelper.ExcuteSql(SQLString);
// LogUtil.WriteLog("删除【" + curDate.ToShortDateString() + "】销售流水数据" + ExcuteCount + "条记录");
//}
}
#endregion
}
}