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

1723 lines
104 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.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 ->
/// <summary>
/// 需要重启的服务名称
/// </summary>
protected static string ServiceName = ConfigurationManager.AppSettings["ServiceName"].ToString();
/// <summary>
/// 微信推送APIUrl
/// </summary>
protected static string WebAPIUrl = ConfigurationManager.AppSettings["WebAPIUrl"].ToString();
/// <summary>
/// webapi主项目接口地址
/// </summary>
protected static string EShangApiMain = ConfigurationManager.AppSettings["EShangApiMain"].ToString();
/// <summary>
/// 数据传输日志数据库链接172,orcl数据库
/// </summary>
protected static string OracleConnStrEx = ConfigurationManager.AppSettings["OracleConnStrEx"].ToString();
/// <summary>
/// 业务日志数据库链接175,orcl数据库
/// </summary>
protected static string OracleConnStr = ConfigurationManager.AppSettings["OracleConnStr"].ToString();
/// <summary>
/// 四川进销存数据库链接175,orcl_sc数据库
/// </summary>
protected static string OracleConnStr_SC = ConfigurationManager.AppSettings["OracleConnStr_SC"].ToString();
/// <summary>
/// 合作商户进销存数据库链接175,orcl_cm数据库
/// </summary>
protected static string OracleConnStr_Coop = ConfigurationManager.AppSettings["OracleConnStr_Coop"].ToString();
/// <summary>
/// 移动业务数据库链接175,orcl_msp数据库
/// </summary>
protected static string OracleConnStr_Msp = ConfigurationManager.AppSettings["OracleConnStr_Msp"].ToString();
/// <summary>
/// 对比数据的月份,如果今天是下半月,那就是本月;否则,取上个月
/// </summary>
protected static string compareMonth = DateTime.Now.Day > 15 ? DateTime.Now.ToString("yyyyMM") :
DateTime.Now.AddMonths(-1).ToString("yyyyMM");
/// <summary>
/// 微信推送的消息内容
/// </summary>
protected static string PushContent = "";
/// <summary>
/// Windows服务
/// </summary>
ServiceController service = new ServiceController(ServiceName);
#endregion
public DataTransmission()
{
InitializeComponent();
}
#region ->
/// <summary>
/// 重启服务
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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 ->
/// <summary>
/// 重启服务
/// </summary>
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 69
//创建卡口流水数据库链接
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 ->
/// <summary>
/// 获取账期异常单品情况(销售单品和实收金额不一致)
/// 获取CHECK_STATE=0的日志记录并查询对应的单品数据是否与实收金额一致
/// 若一致,则重新生成库存单品销售日志(记录文本日志)
/// 若不一致,则在消息推送中标注说明(记录文本日志)
/// </summary>
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<Model.AccountModel> 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<string> SQLStringList = new List<string>();
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 ->
/// <summary>
/// 重新验证移动支付到账差异
/// </summary>
/// <param name="OracleHelperLog">业务日志数据库链接</param>
/// <param name="OracleHelperCM">合作商户平台数据库链接</param>
/// <param name="OracleHelperED">自然日报表数据库链接</param>
/// <param name="OracleHelperEx">建行、工行对账数据库链接</param>
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<string>("SERVERPARTCODE").StartsWith("51") &&
t["STATISTICS_DATE"].TryParseToDecimal() >= FormatDate &&
t["CHANNEL_AMOUNT"].TryParseToDecimal() != 0
group t by new
{
t0 = t.Field<string>("SERVERPARTCODE"),
t1 = t["STATISTICS_DATE"].TryParseToDecimal(),
t2 = t.Field<decimal?>("CHANNEL_AMOUNT")
} into m
select new
{
ServerpartCode = m.Key.t0,
AccountDate = m.Key.t1,
BankAccountAmount = m.Key.t2,
CashPay = m.Sum(o => o.Field<decimal?>("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 ->
/// <summary>
/// 验证日结营收固化表的数据一致性
/// </summary>
/// <param name="oracleHelper">营收数据表所在数据库链接</param>
public static void VerifyRevenueData(Method.OracleHelper oracleHelper)
{
List<Model.EndaccountModel> EndaccountList = new List<Model.EndaccountModel>();
//更新历史未处理的日度差异日志数据,重新生成差异日志
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 ->
/// <summary>
/// 推送应收拆分预警信息
/// </summary>
/// <param name="oracleHelper"></param>
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
}
}