ningshuxia
2022-08-19 153da1eef16b51d75442779a3964a1c5413132e4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
using Quartz;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using IStation.Calculation;
 
namespace IStation.Server
{
    /// <summary>
    /// 能效依赖年计划任务
    /// </summary>
    [DisallowConcurrentExecution]//此特性标识 必须等待这次任务执行完成后,才能执行下次任务
    public class EtaAccordYearCronJob : IJob
    {
        /// <summary>
        /// 
        /// </summary>
        public Task Execute(IJobExecutionContext context)
        {
            return Task.Run(() =>
            {
                try
                {
 
                    #region 数据时间
 
                    int data_year = DateTime.Now.AddYears(-1).Year;
 
                    #endregion
 
                    #region 加载目标客户
 
                    var corpIds = CorpHelper.GetCorpIds();
                    if (corpIds == null || corpIds.Count < 1)
                    {
                        LogHelper.Error("能效依赖年计划任务,未检索到目标客户信息");
                        return;
                    }
 
                    #endregion
 
                    #region 加载配置
 
                    var configure_list = new Service.EtaAnalyConfigure().GetByCorpIds(corpIds);
                    if (configure_list == null || configure_list.Count < 1)
                    {
                        LogHelper.Info("能效依赖年计划任务,未检索到能效分析配置信息!");
                        return;
                    }
                    configure_list = configure_list.Where(x => x.UseStatus == Model.eUseStatus.Enable).ToList();
                    if (configure_list.Count < 1)
                    {
                        LogHelper.Info("能效依赖年计划任务,未检索到有效能效分析配置信息!");
                        return;
                    }
 
                    #endregion
 
                    #region 遍历分析
 
                    foreach (var configure in configure_list)
                    {
                        var accord_configure_list = new Service.EtaAccordConfigure().GetByCorpID(configure.CorpID);
                        if (accord_configure_list == null || accord_configure_list.Count < 1)
                            continue;
                        accord_configure_list = accord_configure_list.Where(x => x.UseStatus == Model.eUseStatus.Enable).ToList();
                        if (accord_configure_list.Count < 1)
                            continue;
                        var accord_configure_group_list = accord_configure_list.GroupBy(x => new { x.CorpID, x.BelongType, x.BelongID }).ToList();
 
                        foreach (var accord_configure_group in accord_configure_group_list)
                        {
                            switch (accord_configure_group.Key.BelongType)
                            {
                                case IStation.ObjectType.LogicArea://业务区域
                                    {
                                        var record_list = new Service.EtaAccordLogicRecord()
                                                .GetMonthByObjectOfYear(accord_configure_group.Key.CorpID, accord_configure_group.Key.BelongType, accord_configure_group.Key.BelongID, data_year);
                                        if (record_list == null || record_list.Count < 1)
                                            break;
                                        var sum_record_list = EtaAccordLogicYearHelper.Accord(data_year, accord_configure_group, record_list);
                                        if (sum_record_list == null || sum_record_list.Count < 1)
                                            break;
                                        var bol = new Service.EtaAccordLogicRecord().Inserts(sum_record_list);
                                        if (!bol)
                                        {
                                            LogHelper.Info($"能效依赖年计划任务,客户标识:{accord_configure_group.Key.CorpID},对象类型:{accord_configure_group.Key.BelongType},对象标识:{accord_configure_group.Key.BelongID},数据保存失败!");
                                            break;
                                        }
                                    }
                                    break;
                                case IStation.ObjectType.Station://泵站
                                    {
                                        var record_list = new Service.EtaAccordMultiRecord()
                                                    .GetMonthByObjectOfYear(accord_configure_group.Key.CorpID, accord_configure_group.Key.BelongType, accord_configure_group.Key.BelongID, data_year);
                                        if (record_list == null || record_list.Count < 1)
                                            break;
                                        var sum_record_list = EtaAccordMultiYearHelper.Accord(data_year, accord_configure_group, record_list);
                                        if (sum_record_list == null || sum_record_list.Count < 1)
                                            break;
                                        var bol = new Service.EtaAccordMultiRecord().Inserts(sum_record_list);
                                        if (!bol)
                                        {
                                            LogHelper.Info($"能效依赖年计划任务,客户标识:{accord_configure_group.Key.CorpID},对象类型:{accord_configure_group.Key.BelongType},对象标识:{accord_configure_group.Key.BelongID},数据保存失败!");
                                            break;
                                        }
                                    }
                                    break;
                                case IStation.ObjectType.PipeLine://管路(机泵)
                                    {
                                        var record_list = new Service.EtaAccordSingleRecord()
                                                       .GetMonthByObjectOfYear(accord_configure_group.Key.CorpID, accord_configure_group.Key.BelongType, accord_configure_group.Key.BelongID, data_year);
                                        if (record_list == null || record_list.Count < 1)
                                            break;
                                        var sum_record_list = EtaAccordSingleYearHelper.Accord(data_year, accord_configure_group, record_list);
                                        if (sum_record_list == null || sum_record_list.Count < 1)
                                            break;
                                        var bol = new Service.EtaAccordSingleRecord().Inserts(sum_record_list);
                                        if (!bol)
                                        {
                                            LogHelper.Info($"能效依赖年计划任务,客户标识:{accord_configure_group.Key.CorpID},对象类型:{accord_configure_group.Key.BelongType},对象标识:{accord_configure_group.Key.BelongID},数据保存失败!");
                                            break;
                                        }
                                    }
                                    break;
                                default: break;
                            }
                        }
                    }
 
                    #endregion
 
 
                }
                catch (Exception ex)
                {
                    LogHelper.Error("能效日依赖计划任务中,出错", ex);
                    var e = new JobExecutionException(ex);
                    throw e;
                }
 
 
            });
        }
    }
}