global without sharing class RentalApplyEquipmentSetWebService { //借出备品一览单位重新分配 WebService static String rentalApplyEquipmentSetReassign(Id raesID) { Savepoint sp = Database.setSavepoint(); try{ //ToDo IndexFromUniqueKey__c要清除吗 //applyUser__c loginuser? List 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 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 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'; 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; insert raes; Rental_Apply_Equipment_Set_Detail__c firstraesd; List cloneraesd = new List(); 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; } // 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'; } }