LiJinHuan
2024-01-05 462188a2c982b0a8750dfe01692dfd898216bb0c
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
trigger RentalApplyOtherTrigger on Rental_Apply__c (before insert, before update, after insert, after update, after delete) {
    public static Boolean tempCheck = false;
    if(((!Test.isRunningTest()) && UserInfo.getUserId() == System.Label.ByPassTrigger) || FixtureUtil.isRepairRenewal) {
        return;
    }
    //SWAG-B3U63C 2018/8/21 更新学会培训的申请备品申请单数 start
    if (Trigger.isAfter) {
        list<id> CampaignID = new list<id>();
        if (Trigger.isInsert || Trigger.isUndelete ) {
            for (Rental_Apply__c local : Trigger.New) {
                if (String.isNotEmpty(local.Campaign__c)){
                    CampaignID.add(local.Campaign__c);
                }
            }
        }
        // 2023-10-26 zyh 智能化 start
        System.debug('tempCheck=start=='+tempCheck);
        System.debug('StaticParameter.EscapeRaTrigger=start=='+StaticParameter.EscapeRaTrigger);
        if (Trigger.isUpdate && StaticParameter.EscapeRaTrigger == false) {
            List<String> raIdList = new List<String>();
            List<String> ra614List = new List<String>();
            List<Rental_Apply_Equipment_Set_Detail__c> raesdList = [SELECT Id,Shippment_loaner_time__c,Asset__c FROM Rental_Apply_Equipment_Set_Detail__c WHERE Rental_Apply__c = :Trigger.new[0].Id];
            for (Rental_Apply__c upRa : Trigger.new){
                Rental_Apply__c oldRa = Trigger.oldMap.get(upRa.Id);
                
                System.debug('QueueShippmentDate__c=' + upRa.QueueShippmentDate__c + '///' + oldRa.QueueShippmentDate__c
                + ';;Shippment_loaner_time__c=' + upRa.Shippment_loaner_time__c + '///' + oldRa.Shippment_loaner_time__c
                + ';;Return_dadeline_final__c=' + upRa.Return_dadeline_final__c + '///' + oldRa.Return_dadeline_final__c
                + ';;Cancel_time__c=' + upRa.Cancel_time__c + '///' + oldRa.Cancel_time__c + upRa.Rental_Status__c);
                // 有修理,满足触发条件推送接口数据
                if ((upRa.Shippment_loaner_time__c != oldRa.Shippment_loaner_time__c ||  // 备品中心出库日,发生变化
                    // upRa.QueueShippmentDate__c != oldRa.QueueShippmentDate__c ||  // 排队备品预计出库时间,发生变化
                    upRa.Return_dadeline_final__c != oldRa.Return_dadeline_final__c ||  // 最新预定归还日,发生变化
                    upRa.QueueShippmentDate__c != oldRa.QueueShippmentDate__c || upRa.Rental_Status__c != oldRa.Rental_Status__c ||  upRa.Cancel_time__c != oldRa.Cancel_time__c) &&  // 备品申请取消日,发生变化
                    upRa.Repair__c != null && upRa.Demo_purpose1__c == '维修代用' && upRa.Rental_Status__c != '草案中' && upRa.Rental_Status__c != '申请中' && upRa.Rental_Status__c != '审批中(OPD未通过)') {
                        System.debug('QueueShippmentDate__c=' + upRa.QueueShippmentDate__c + '///' + oldRa.QueueShippmentDate__c
                                    + ';;Shippment_loaner_time__c=' + upRa.Shippment_loaner_time__c + '///' + oldRa.Shippment_loaner_time__c
                                    + ';;Return_dadeline_final__c=' + upRa.Return_dadeline_final__c + '///' + oldRa.Return_dadeline_final__c
                                    + ';;Cancel_time__c=' + upRa.Cancel_time__c + '///' + oldRa.Cancel_time__c);
                        System.debug('QueueShippmentDate__c=' + (upRa.QueueShippmentDate__c == oldRa.QueueShippmentDate__c)
                                    + ';;Shippment_loaner_time__c=' + (upRa.Shippment_loaner_time__c == oldRa.Shippment_loaner_time__c)
                                    + ';;Return_dadeline_final__c=' + (upRa.Return_dadeline_final__c == oldRa.Return_dadeline_final__c)
                                    + ';;Cancel_time__c=' + (upRa.Cancel_time__c == oldRa.Cancel_time__c));
                        ra614List.add(upRa.Id);
                }
            }
            // 智能化接口推送
            if (ra614List.size() > 0) {
                System.debug('NFM614====' + ra614List);
                BatchIF_Log__c iflog = new BatchIF_Log__c();
                iflog.Type__c = 'NFM614';
                iflog.Log__c = 'callout start\n';
                System.debug('NFM614===RentalApplyToApp====callout start' + ra614List);
                System.debug('NFM614===RentalApplyToApp====callout start' + Datetime.now());
                System.debug('NFM614===RentalApplyToApp====callout start' + ra614List.size());
                insert iflog;
                // 2023-12-2 zyh 跳过Batch用户 start
                // NFM614Controller.callout(iflog.Id, ra614List);
                String uid = UserInfo.getUserId();
                String BUid = System.Label.Batch_User_Id;
                String OLYid = System.Label.OlympusSystem_ID;
                System.debug('zheli');
                if (uid.substring(0,15) == BUid.substring(0,15) || uid.substring(0,15) == OLYid.substring(0,15)) {
                    NFM614Controller.executefuture(iflog, ra614List);
                }else{
                    NFM614Controller.callout(iflog.Id, ra614List);
                }
                // 2023-12-2 zyh 跳过Batch用户 end
                tempCheck = true;
                StaticParameter.EscapeRaTrigger = true;
                System.debug('tempCheck=end=='+tempCheck);
                System.debug('StaticParameter.EscapeRaTrigger=end=='+StaticParameter.EscapeRaTrigger);
            } 
            if(ra614List.size() <= 0){
                BatchIF_Log__c iflog = new BatchIF_Log__c();
                iflog.Type__c = 'NFM614';
                iflog.Log__c = 'callout start\nfugailvbugou';
                iflog.Log__c = 'callout start\nfugailvbugou';
                iflog.Log__c = 'callout start\nfugailvbugou';
                iflog.Log__c = 'callout start\nfugailvbugou';
                tempCheck = true;
                if (tempCheck == true) {
                    String uid = UserInfo.getUserId();
                    String BUid = System.Label.Batch_User_Id;
                    String OLYid = System.Label.OlympusSystem_ID;
                    if (uid.substring(0,15) == BUid.substring(0,15) || uid.substring(0,15) == OLYid.substring(0,15)) {
                        iflog.Log__c = 'callout start\nfugailvbugouTrue';
                    }else{
                        iflog.Log__c = 'callout start\nfugailvbugouTrue';
                        iflog.Log__c = 'callout start\nfugailvbugouTrue';
                        iflog.Log__c = 'callout start\nfugailvbugouTrue';
                    }
                }
            }
            
        }
        // 2023-10-26 zyh 智能化 end
        if (Trigger.isUpdate || Trigger.isDelete) {
            for (Rental_Apply__c local : Trigger.old) {
                // 2020/11/3 songxiaoqi start 更新申请时,更新前不是取消,然后更新成取消的时候计算
                Rental_Apply__c news =null;
                if (Trigger.isUpdate) {
                    news = Trigger.newMap.get( local.Id );
                }
                // 两种情况需要更新:
                // 1、删除并且 old包含学会培训;
                // 2、更新,new 或 old 中包含学会培训,并且状态发生变化 ;
                if (
                    (Trigger.isDelete &&
                     String.isNotEmpty( local.Campaign__c )
                    )
                    ||
                    (Trigger.isUpdate &&
                     (String.isNotEmpty(local.Campaign__c) ||
                      String.isNotEmpty(news.Campaign__c)
                     ) &&
                     (
                         (local.RA_Status__c !=news.RA_Status__c
                          && news.RA_Status__c=='取消')||
                         (local.Request_approval_day__c != news.Request_approval_day__c) ||
                         (local.Campaign__c != news.Campaign__c )
                     )
                    )
                ){
                    // 2020/11/3 songxiaoqi end
                    // 如果老的备品借出申请的学会不为空,加入
                    if( String.isNotEmpty( local.Campaign__c ) ){
                        CampaignID.add( local.Campaign__c );
                    }
                    // 如果新的备品借出申请的学会不为空,加入
                    if( String.isNotEmpty( news.Campaign__c ) ){
                        CampaignID.add( news.Campaign__c );
                    }
                }
            }
        }
        if (CampaignID.size () > 0) {
            List<AggregateResult> TemRentalApplies =
                [select Count(Id) Cnt_Id, Campaign__c, min(Request_approval_day__c) RADay
                 from Rental_Apply__c
                 where Campaign__c in: CampaignID
                 and RA_Status__c != '取消'
                 group by Campaign__c
                ];
            map<id, list<string>> TemRentalAppliesMap = new map<id, list<string>>();
            for (AggregateResult TemRentalApply : TemRentalApplies) {
                list<string> temStringList = new list<string>();
                temStringList.add(string.valueOf( TemRentalApply.get('Cnt_Id')));
                if (TemRentalApply.get('RADay') != null) {
                    temStringList.add(((Date)TemRentalApply.get('RADay')).format());
                }
                TemRentalAppliesMap.put( (ID) TemRentalApply.get('Campaign__c'),
                                        temStringList);
            }
            list<Campaign> UpdateCampaignList = new list<Campaign>();
            for (Campaign TemCampaign : [select id, Number_Rental_Apply__c
                                         from Campaign where id in: CampaignID
                                         //2020/11/3 songxiaoqi start 创建申请后,草案中的时候计算单数
                                         and Status != '取消'
                                         //2020/11/3 songxiaoqi end
                                        ]) {
                                            list<string> temStringList = TemRentalAppliesMap.get(TemCampaign.id);
                                            if (temStringList != null) {
                                                integer RentalApplyNumber = integer.valueof(temStringList[0]);
                                                TemCampaign.Number_Rental_Apply__c = RentalApplyNumber;
                                                if (temStringList.size() > 1) {
                                                    Date tempRADay = date.parse(temStringList[1]);
                                                    TemCampaign.Request_approval_day_RA__c = tempRADay;
                                                } else {
                                                    TemCampaign.Request_approval_day_RA__c = null;
                                                }
                                            } else {
                                                TemCampaign.Number_Rental_Apply__c = 0;
                                                TemCampaign.Request_approval_day_RA__c = null;
                                            }
                                            UpdateCampaignList.add(TemCampaign);
                                        }
            if (UpdateCampaignList.size() > 0) {
                upsert UpdateCampaignList;
            }
        }
        //SWAG-B3U63C 2018/8/21 更新学会培训的申请备品申请单数 end
    }
}