using QM.KJGH.Model.KJGH;
using QM.KJGH.Model.View;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WS;
using WS.IO.Office;
namespace QM.KJGH.CGGL.Model.QxCghj
{
public class JcyjzbReportIo
{
///
/// 指标编号(2021003)
///
[Export("指标编号", 1)]
public string code { set; get; }
///
/// 行政区划代码(150100)
///
[Export("行政区划代码", 2)]
public string divisionCode { set; get; }
///
/// 监测时间(注:监测时间为监测值的时间更新频率为年度时,
/// 监测时间仅填写年份,如2020;
/// 更新频率为季度时,填写年度-季度,如2020-2;
/// 更新频率为月度时,填写年度-月度,如2020-03;)
///
[Export("监测时间", 3)]
public string monitorTime { set; get; }
///
/// 监测数值(注:如果监测值填写了,则上面监测时间字段也必须填写。反之亦然,否则接口会过滤)
///
[Export("监测值", 4)]
public string monitorValue { set; get; }
///
/// 规划年份(注:如果规划年份填写了,则下面规划值也必须填写。反之亦然,否则接口会过滤。如2020)
///
[Export("近期规划年", 5)]
public string targetYear { set; get; }
///
/// 规划值(注:如果规划值填写了,则上面规划年份也必须填写。反之亦然,否则接口会过滤。如12.32)
///
[Export("近期规划值", 6)]
public string targetValue { set; get; }
///
/// 基期年(注:基期年需要更新则上面两个规划年份、规划值都必须填写,否则接口会过滤。如2020)
///
[Export("基期年", 7)]
public string baseYear { set; get; }
///
/// 基期值(注:基期年填写了,则上面基期年也必须填写。反之亦然,否则接口会过滤。如2020)
///
[Export("基期值", 8)]
public string baseValue { set; get; }
///
/// 远期规划年份(注:如果远期规划年份填写了,则下面远期规划值也必须填写。反之亦然,否则接口会过滤。如2050)
///
[Export("远期规划目标年", 9)]
public string forwardTargetYear { set; get; }
///
/// 远期规划值(注:如果远期规划值填写了,则上面远期规划年份也必须填写。反之亦然,否则接口会过滤。如12.32)
///
[Export("远期规划目标值", 10)]
public string forwardTargetValue { set; get; }
public string JCSJLX { get
{
var len = monitorTime.Trim().Length;
switch (len)
{
case 4:
return "年";
case 6:
return "季";
case 7:
return "月";
default:
return "";
}
}
}
///
/// 检查数据
///
///
public string CheckData(Dictionary listZbx, Dictionary listXzq)
{
List msgs = new List();
#region 必填性
if (string.IsNullOrWhiteSpace(code))
msgs.Add($"指标编号(code)不能为空");
if (string.IsNullOrWhiteSpace(divisionCode))
msgs.Add($"行政区划代码(divisionCode)不能为空");
if (string.IsNullOrWhiteSpace(monitorTime))
msgs.Add($"监测时间(monitorTime)不能为空");
if (string.IsNullOrWhiteSpace(monitorValue))
msgs.Add($"监测值(monitorValue)不能为空");
#endregion
#region 完整性
if (string.IsNullOrWhiteSpace(targetYear) != string.IsNullOrWhiteSpace(targetValue))
msgs.Add($"近期规划年(targetYear)、近期规划值(targetValue)必须都为空或都不为空");
if (string.IsNullOrWhiteSpace(baseYear) != string.IsNullOrWhiteSpace(baseValue))
msgs.Add($"基期年(baseYear)、基期值(baseValue)必须都为空或都不为空");
if (string.IsNullOrWhiteSpace(forwardTargetYear) != string.IsNullOrWhiteSpace(forwardTargetValue))
msgs.Add($"远期规划目标年(forwardTargetYear)、远期规划目标值(forwardTargetValue)必须都为空或都不为空");
#endregion
#region 正确性
if (!string.IsNullOrWhiteSpace(code) && !listZbx.Keys.Contains(code))
msgs.Add($"指标编号({code})不存在");
if (!string.IsNullOrWhiteSpace(divisionCode) && !listXzq.Keys.Contains(divisionCode))
msgs.Add($"行政区划代码({divisionCode})不存在");
#endregion
if (msgs.Count > 0)
return msgs.Join("、");
return string.Empty;
}
}
}