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

283 lines
14 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.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using HWSB = SuperMap.RealEstate.HighWay.Storage.Business;
using HZQR.Common;
namespace PlatformModuleManage
{
public partial class RecognizePage : SuperMap.RealEstate.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack) return;
//设置按钮回车事件
SetControlClientAction(BtnRecognize);
}
protected void BtnRecognize_Click(object sender, EventArgs e)
{
if (sentence.Text.Trim() != "")
{
string WhereSQL = "", ShopSQL = "", ServerpartSQL = "", SearchValue;
ResultInfo.Text = "为您查找";
DataTable dtResult = new DataTable();
dtResult.Columns.Add("StartDate");
dtResult.Columns.Add("EndDate");
dtResult.Columns.Add("HolidayName");
dtResult.Columns.Add("ServerpartName");
dtResult.Columns.Add("RegionName");
dtResult.Columns.Add("BrandName");
dtResult.Columns.Add("YOYDate");
dtResult.Columns.Add("QOQDate");
dtResult.Columns.Add("BusinessType");
dtResult.Columns.Add("ShopName");
DataRow drResult = dtResult.NewRow();
bool hasAppoint = Common.CommonHelper.sentenceKey(sentence.Text, 1),
hasHoliday = Common.CommonHelper.sentenceKey(sentence.Text, 2),
hasServerpart = Common.CommonHelper.sentenceKey(sentence.Text, 3),
hasRegion = Common.CommonHelper.sentenceKey(sentence.Text, 5),
hasBrand = Common.CommonHelper.sentenceKey(sentence.Text, 4),
hasBusinessType = Common.CommonHelper.sentenceKey(sentence.Text, 6),
hasShopName = Common.CommonHelper.sentenceKey(sentence.Text, 7);
string AppointDays = Common.CommonHelper.GetSentenceKeyName(sentence.Text, 1),
Holiday = Common.CommonHelper.GetSentenceKeyName(sentence.Text, 2),
ServerpartName = Common.CommonHelper.GetSentenceKeyName(sentence.Text, 3),
RegionName = Common.CommonHelper.GetSentenceKeyName(sentence.Text, 5),
BrandName = Common.CommonHelper.GetSentenceKeyName(sentence.Text, 4),
BusinessType = Common.CommonHelper.GetSentenceKeyName(sentence.Text, 6),
ShopName = Common.CommonHelper.GetSentenceKeyName(sentence.Text, 7);
DateTime[] curDate = null;
KeyNameInfo.Text = "指定日期:" + (hasAppoint ? AppointDays +
$"【{ Common.TimeParser.ParseDate(AppointDays) }】" : AppointDays);
if (hasAppoint)
{
if (hasHoliday)
{
drResult[2] = Holiday;
ResultInfo.Text += $"【{ Holiday }】";
int curYear = Common.TimeParser.timeParsingRules[AppointDays].Invoke()[0].Year;
curDate = Common.TimeParser.holidayParsingRules[Holiday].Invoke(curYear);
Holiday = Common.TimeParser.ParseHoliday(Holiday, curYear);
}
else
{
curDate = Common.TimeParser.timeParsingRules[AppointDays].Invoke();
}
drResult[0] = curDate[0].ToShortDateString();
drResult[1] = curDate[1].ToShortDateString();
}
KeyNameInfo.Text += "\r\n节假日" + Holiday;
KeyNameInfo.Text += "\r\n服务区" + ServerpartName;
KeyNameInfo.Text += "\r\n片区" + RegionName;
KeyNameInfo.Text += "\r\n品牌名称" + BrandName;
KeyNameInfo.Text += "\r\n经营模式" + BusinessType;
KeyNameInfo.Text += "\r\n自营业态" + ShopName;
if (hasBusinessType)
{
drResult[8] = BusinessType;
ResultInfo.Text += $"【{ BusinessType }】";
SearchValue = "";
foreach (string single in BusinessType.Split(','))
{
SearchValue += (SearchValue == "" ? "" : ",") + Common.CommonHelper.businessTypes[single];
}
WhereSQL += $" AND C.BUSINESS_TYPE IN ({ SearchValue })";
}
ResultInfo.Text += "在";
if (hasRegion)
{
drResult[4] = RegionName;
ResultInfo.Text += (ResultInfo.Text.EndsWith("在") ? "" : "|") + $"【{ RegionName }】";
SearchValue = "";
foreach (string single in RegionName.Split(','))
{
SearchValue += (SearchValue == "" ? "" : ",") + Common.CommonHelper.regionRules[single];
}
ServerpartSQL += (ServerpartSQL == "" ? "" : " OR ") + $"B.SPREGIONTYPE_ID IN ({ SearchValue })";
}
if (hasServerpart)
{
drResult[3] = ServerpartName;
ResultInfo.Text += (ResultInfo.Text.EndsWith("在") ? "" : "|") + $"【{ ServerpartName }】";
SearchValue = "";
foreach (string single in ServerpartName.Split(','))
{
SearchValue += (SearchValue == "" ? "" : ",") + Common.CommonHelper.serverpartRules[single];
}
ServerpartSQL += (ServerpartSQL == "" ? "" : " OR ") + $"B.SERVERPART_ID IN ({ SearchValue })";
}
if (hasBrand)
{
drResult[5] = BrandName;
ResultInfo.Text += (ResultInfo.Text.EndsWith("在") ? "" : "|") + $"【{ BrandName }】";
ShopSQL += (ShopSQL == "" ? "" : " OR ") + $"C.BRAND_NAME IN ('{ BrandName.Replace(",", "','") }')";
}
if (hasShopName)
{
drResult[9] = ShopName;
ResultInfo.Text += (ResultInfo.Text.EndsWith("在") ? "" : "|") + $"【{ ShopName }】";
ShopSQL += (ShopSQL == "" ? "" : " OR ") + $"C.SHOPSHORTNAME IN ('{ ShopName.Replace(",", "','") }')";
}
ResultInfo.Text += "的营收数据";
if (sentence.Text.Contains("同环比"))
{
if (hasAppoint)
{
drResult[6] = curDate[0].AddYears(-1).ToShortDateString() + "至" +
curDate[1].AddYears(-1).ToShortDateString();
drResult[7] = curDate[0].AddMonths(-1).ToShortDateString() + "至" +
curDate[1].AddMonths(-1).ToShortDateString();
KeyNameInfo.Text += "\r\n同比日期";
KeyNameInfo.Text += drResult[6].ToString();
KeyNameInfo.Text += "\r\n环比日期";
KeyNameInfo.Text += drResult[7].ToString();
ResultInfo.Text += "(同比/环比)";
}
}
else if (sentence.Text.Contains("环比"))
{
KeyNameInfo.Text += "\r\n环比日期";
if (hasAppoint)
{
drResult[7] = curDate[0].AddMonths(-1).ToShortDateString() + "至" +
curDate[1].AddMonths(-1).ToShortDateString();
KeyNameInfo.Text += drResult[7].ToString();
ResultInfo.Text += "(环比)";
}
}
else if (sentence.Text.Contains("同比"))
{
KeyNameInfo.Text += "\r\n同比日期";
if (hasAppoint)
{
drResult[6] = curDate[0].AddYears(-1).ToShortDateString() + "至" +
curDate[1].AddYears(-1).ToShortDateString();
KeyNameInfo.Text += drResult[6].ToString();
ResultInfo.Text += "(同比)";
}
}
dtResult.Rows.Add(drResult);
GridViewEx1.DataSource = dtResult;
string SQLString = @"SELECT SUM(REVENUE_AMOUNT)
FROM PLATFORM_DASHBOARD.T_REVENUEDAILY A
WHERE A.STATISTICS_DATE BETWEEN {0} AND {1} AND EXISTS (SELECT 1
FROM HIGHWAY_STORAGE.T_SERVERPART B,HIGHWAY_STORAGE.T_SERVERPARTSHOP C
WHERE A.SERVERPART_ID = B.SERVERPART_ID AND B.SERVERPART_ID = C.SERVERPART_ID AND
',' || A.SERVERPARTSHOP_ID || ',' LIKE '%,' || C.SERVERPARTSHOP_ID || ',%'{2})";
DataTable dtRevenueAmount = new HWSB.SERVERPART(Transaction).ExecuteDataTable(string.Format(
SQLString, curDate[0].ToString("yyyyMMdd"), curDate[1].ToString("yyyyMMdd"),
WhereSQL + (ServerpartSQL == "" ? "" : $" AND ({ ServerpartSQL })") + (ShopSQL == "" ? "" : $" AND ({ ShopSQL })")));
decimal curRevenue = dtRevenueAmount.Rows[0][0].TryParseToDecimal();
ResultInfo.Text += $":【{ curDate[0].ToShortDateString() }】至【{ curDate[1].ToShortDateString() }】:" +
$"{ Math.Floor(curRevenue / 100) / 100 }万元";
if (sentence.Text.Contains("同环比") || sentence.Text.Contains("同比"))
{
dtRevenueAmount = new HWSB.SERVERPART(Transaction).ExecuteDataTable(string.Format(SQLString,
curDate[0].AddYears(-1).ToString("yyyyMMdd"), curDate[1].AddYears(-1).ToString("yyyyMMdd"),
WhereSQL + (ServerpartSQL == "" ? "" : $" AND ({ ServerpartSQL })") + (ShopSQL == "" ? "" : $" AND ({ ShopSQL })")));
decimal YOYRevenue = dtRevenueAmount.Rows[0][0].TryParseToDecimal();
ResultInfo.Text += $";【{ curDate[0].AddYears(-1).ToShortDateString() }】至" +
$"【{ curDate[1].AddYears(-1).ToShortDateString() }】:{ Math.Floor(YOYRevenue / 100) / 100 }万元";
if (YOYRevenue > 0)
{
ResultInfo.Text += $",同比增幅{ Math.Round(curRevenue / YOYRevenue * 100 - 100, 2) }%";
}
}
if (sentence.Text.Contains("同环比") || sentence.Text.Contains("环比"))
{
dtRevenueAmount = new HWSB.SERVERPART(Transaction).ExecuteDataTable(string.Format(SQLString,
curDate[0].AddMonths(-1).ToString("yyyyMMdd"), curDate[1].AddMonths(-1).ToString("yyyyMMdd"),
WhereSQL + (ServerpartSQL == "" ? "" : $" AND ({ ServerpartSQL })") + (ShopSQL == "" ? "" : $" AND ({ ShopSQL })")));
decimal QOQRevenue = dtRevenueAmount.Rows[0][0].TryParseToDecimal();
ResultInfo.Text += $";【{ curDate[0].AddMonths(-1).ToShortDateString() }】至" +
$"【{ curDate[1].AddMonths(-1).ToShortDateString() }】:{ Math.Floor(QOQRevenue / 100) / 100 }万元";
if (QOQRevenue > 0)
{
ResultInfo.Text += $",同比增幅{ Math.Round(curRevenue / QOQRevenue * 100 - 100, 2) }%";
}
}
ResultInfo.Text += "。";
}
else
{
KeyNameInfo.Text = "";
ResultInfo.Text = "";
GridViewEx1.DataSource = null;
}
GridViewEx1.DataBind();
}
protected void GridViewEx1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.Cells[1].Text.Replace(" ", "") == "")
{
e.Row.Cells[1].Text = "<font style='color:red'>未找到指定日期</font>";
}
if (e.Row.Cells[2].Text.Replace("&nbsp;", "") == "")
{
e.Row.Cells[2].Text = "<font style='color:red'>未找到指定日期</font>";
}
if (e.Row.Cells[3].Text.Replace("&nbsp;", "") == "")
{
e.Row.Cells[3].Text = "<font style='color:red'>未找到节假日</font>";
}
if (e.Row.Cells[4].Text.Replace("&nbsp;", "") == "")
{
e.Row.Cells[4].Text = "<font style='color:red'>未找到服务区</font>";
}
if (e.Row.Cells[6].Text.Replace("&nbsp;", "") == "")
{
e.Row.Cells[6].Text = "<font style='color:red'>未找到匹配的品牌</font>";
}
if (e.Row.Cells[7].Text.Replace("&nbsp;", "") == "")
{
e.Row.Cells[7].Text = "<font style='color:red'>未找到经营模式</font>";
}
if (e.Row.Cells[8].Text.Replace("&nbsp;", "") == "")
{
e.Row.Cells[8].Text = "<font style='color:red'>未找到自营业态</font>";
}
}
}
}
}