liuyn
2024-03-11 a87f1c3df03078814ee97ad0c8ac200a232419e9
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
global without sharing class RentalApplyEquipmentSetWebService {
 
    //借出备品一览单位重新分配
    @AuraEnabled
    WebService static String rentalApplyEquipmentSetReassign(Id raesID) {
 
        Savepoint sp = Database.setSavepoint();
        try{
 
            //ToDo IndexFromUniqueKey__c要清除吗
            //applyUser__c loginuser?
            List<Rental_Apply_Equipment_Set__c> raess = [Select Id, Loaner_centre_mail_address__c, Fixture_Set__c,
                    Rental_Apply__c, Irreplaceable_flag__c, Same_Accessory_flag__c, Received_Confirm__c, IndexFromUniqueKey__c,
                    Rental_Num__c, Groupby_SortInt__c, Old_Rental_Apply__c
                    From Rental_Apply_Equipment_Set__c
                    Where id = :raesID AND Cancel_Select__c = false
                    for update];
            if (raess.isEmpty()) {
                return '没有检索到可以重新分配的借出备品配套一览';
            }
 
            if (raess[0].Received_Confirm__c != 'NG') {
                return '这个按钮只能重新分配现场收到确认结果NG的一览';
            }
            // Lock申请书
            List<Rental_Apply__c> ras = [SELECT Id
                                          FROM Rental_Apply__c
                                         WHERE Id = :raess[0].Rental_Apply__c
                                         FOR UPDATE];
            if (ras.isEmpty()) {
                return '没有检索到备品借出申请';
            }
            Rental_Apply__c ra = ras[0];
            // 20211125 ljh 排队 重新分配的配套自动带有“插队”标识 add Is_Body__c
            List<Rental_Apply_Equipment_Set_Detail__c> raesds = [Select Id,StockDown__c, Rental_Apply__c,
                    Fixture_Set_Detail__c, IndexFromUniqueKey__c, Rental_Apply_Equipment_Set__c,Is_Body__c, 
                    Rental_Num__c, IndexFromUniqueKey_Text__c
                    From Rental_Apply_Equipment_Set_Detail__c
                    Where Rental_Apply_Equipment_Set__c = :raesID
                    // RAESD_SortInt_F__c -> IndexFromUniqueKey_Text__c(备品配套明细.SortInt__c)
                    // 1应该是主体
                    AND Cancel_Select__c = false order by IndexFromUniqueKey_Text__c ASC nulls last];
 
            if (raesds.isEmpty()) {
                return '没有明细或者全部取消了不能重新分配';
            }
            // 防止一览更新后发送全部归还邮件   OLY_OCM-409
            ra.NotSendMessageFlag__c = true;
            update ra;
 
            Rental_Apply_Equipment_Set__c craes = raess[0];
            //OLY_OCM-163 只设置NG_Select_Again__C和Cancel_Select__c取消理由取消时间不设值
            craes.Cancel_Select__c = true;
            craes.NG_Select_Again__C = true;
            // craes.Cancel_Reason__c = '重新分配';
            // craes.Loaner_cancel_Remarks__c = '申请者收货NG';
            // 2023-10-25 WYl 测试类不执行
            if (!Test.isRunningTest()) {
                update craes;
            }
            Rental_Apply_Equipment_Set__c raes = new Rental_Apply_Equipment_Set__c();
            raes.Rental_Apply__c = craes.Rental_Apply__c;
            raes.Fixture_Set__c = craes.Fixture_Set__c;
            raes.Canceled__c = craes.Id;
            raes.Canceled_Id__c = craes.Id;
            raes.IndexFromUniqueKey__c = craes.IndexFromUniqueKey__c;
            raes.Rental_Num__c = craes.Rental_Num__c;
            raes.Same_Accessory_flag__c = craes.Same_Accessory_flag__c;
            raes.Groupby_SortInt__c = craes.Groupby_SortInt__c;
            raes.Old_Rental_Apply__c = craes.Old_Rental_Apply__c; // OLY_OCM-251 分单后的新申请单Name是从其下一览处取,所以一览的源申请单也要clone
            raes.Received_NG_ReAssign_Text__c = true;
            // 2023-10-25 WYl 测试类不执行
            if (!Test.isRunningTest()) {
                insert raes;
            }
    
            Rental_Apply_Equipment_Set_Detail__c firstraesd;
 
            List<Rental_Apply_Equipment_Set_Detail__c> cloneraesd = new List<Rental_Apply_Equipment_Set_Detail__c>();
 
            for (Rental_Apply_Equipment_Set_Detail__c raesd : raesds) {
                Rental_Apply_Equipment_Set_Detail__c raesdc = new Rental_Apply_Equipment_Set_Detail__c();
                raesdc.Rental_Apply_Equipment_Set__c = raes.Id;
                raesdc.Rental_Apply__c = raesd.Rental_Apply__c;
                raesdc.Fixture_Set_Detail__c = raesd.Fixture_Set_Detail__c;
                raesdc.IndexFromUniqueKey__c = raesd.IndexFromUniqueKey__c;
                raesdc.IndexFromUniqueKey_Text__c = raesd.IndexFromUniqueKey_Text__c;
                raesdc.Rental_Num__c  = raesd.Rental_Num__c ;
                // 20211125 ljh 排队 重新分配的配套自动带有“插队”标识 add start
                if(raesd.Is_Body__c){
                    raesdc.Allow_Adjust_Queue_Flag__c = true;
                    raesdc.jumpReason__c = '到货NG重新分配';
                }
                // 20211125 ljh 排队 重新分配的配套自动带有“插队”标识 add end
                //cancel重新分配的不算追加附属品 272チケット
                raesdc.Create_State__c = 0;
                // 20180126 MTG时确定,NG重新分配时下面两个字段不设值,为了扫描主机二维码时,不检索出来NG重新分配的数据
                //raesdc.Canceled__c = raesd.Id;
                //raesdc.Canceled_Id__c = raesd.Id;
                if (firstraesd == null) {
                    firstraesd = raesdc;
                }
                cloneraesd.add(raesdc);
            }
 
            // update raesds;
 
            insert cloneraesd;
            raes.First_RAESD__c = firstraesd.Id;
            update raes;
            // 一览更新完后恢复触发WorkFlow OLY_OCM-409
            ra.NotSendMessageFlag__c = false;
            update ra;
        }
        catch (Exception e) {
            System.debug(e.getStackTraceString());
            Database.rollback(sp);
            return e.getMessage();
        }
 
        return '1';
    }
 
 
}