tangxu
2022-10-08 c4c7b110178d02ad732eddf9a67c4a6ebb150da5
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
using IStation.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace IStation.Service
{
    public static class ProductBaseExtensions
    {
        /// <summary>
        /// 获取所有的机泵列表
        /// </summary>
        public static List<Model.Product> GetEnginePumpProductList(this IEnumerable<Model.Product> allProducts)
        {
            if (allProducts == null || allProducts.Count() < 1)
                return default;
            return allProducts.Where(x => x.Catalog == Model.ProductCatalog.机泵).OrderBy(x => x.ID).ToList();
        }
 
        /// <summary>
        /// 获取单泵
        /// </summary>
        public static Model.Product GetSinglePumpProduct(this IEnumerable<Model.Product> allProducts)
        {
            if (allProducts == null || allProducts.Count() < 1)
                return default;
            var pump = allProducts.ToList().Find(x => x.Catalog == Model.ProductCatalog.泵);
            return pump;
        }
 
        /// <summary>
        /// 获取后代
        /// </summary>
        public static List<Model.Product> GetChildrenProduct(this Model.Product product, IEnumerable<Model.Product> allProducts)
        {
            if (product == null)
                return default;
            if (allProducts == null || allProducts.Count() < 1)
                return default;
            var spids = TreeParentIdsHelper.GetChildParentIds(product.ID, product.ParentIds);
            var product_list = allProducts.Where(t => !string.IsNullOrEmpty(t.ParentIds) && t.ParentIds.StartsWith(spids)).ToList();
            return product_list;
        }
 
        /// <summary>
        /// 获取所有后代及自身
        /// </summary>
        public static List<Model.Product> GetChildsAndSelfProduct(this Model.Product product, IEnumerable<Model.Product> allProducts)
        {
            if (product == null)
                return default;
            if (allProducts == null || allProducts.Count() < 1)
                return default;
            var spids = TreeParentIdsHelper.GetChildParentIds(product.ID, product.ParentIds);
            var allProducts_Product = allProducts.Where(t => (t.ID == product.ID)
                                                    || (!string.IsNullOrEmpty(t.ParentIds) && t.ParentIds.StartsWith(spids))).ToList();
            return allProducts_Product;
        }
 
        /// <summary>
        /// 获取后代单泵
        /// </summary>
        public static Model.Product GetChildSinglePumpProduct(this Model.Product product, IEnumerable<Model.Product> allProducts)
        {
            if (product == null)
                return default;
            if (allProducts == null || allProducts.Count() < 1)
                return default;
            var spids = TreeParentIdsHelper.GetChildParentIds(product.ID, product.ParentIds);
            var product_list = allProducts.Where(t => !string.IsNullOrEmpty(t.ParentIds) && t.ParentIds.StartsWith(spids)).ToList();
            if (product_list == null || product_list.Count < 1)
                return default;
            var pump = product_list.Find(x => x.Catalog == Model.ProductCatalog.泵);
            return pump;
        }
 
 
        /// <summary>
        /// 设备及以下的所有常规测点
        /// </summary>
        public static List<Model.GeneralMonitorPoint> GetGeneralMonitorPointContainsChildren
            (
                this Model.Product product,
                List<Model.Product> allProducts,
                List<Model.GeneralMonitorPoint> allGenerals
            )
        {
            if (product == null)
                return default;
            if (allProducts == null || allProducts.Count < 1)
                return default;
            var allProducts_product = product.GetChildsAndSelfProduct(allProducts);
            if (allProducts_product == null || allProducts_product.Count < 1)
                return default;
            var allSignal_Product = (from x in allProducts_product
                                     join y in allGenerals on x.ID equals y.BelongID
                                     where y.BelongType == ObjectType.Product_设备
                                     select y).ToList();
            return allSignal_Product;
        }
 
        /// <summary>
        /// 产品的所有测点
        /// </summary>
        public static List<Model.GeneralMonitorPoint> GetGeneralViewList
            (
                this List<Model.Product> allProducts,
                List<Model.GeneralMonitorPoint> allViews
            )
        {
            if (allProducts == null || allProducts.Count < 1)
                return default;
            var allSignal_Product = (from x in allProducts
                                     join y in allViews on x.ID equals y.BelongID
                                     where y.BelongType == ObjectType.Product_设备
                                     select y).ToList();
            return allSignal_Product;
        }
 
 
    }
}