public without sharing class EquipmentRentalUnassignController { // 备品申请书 public Rental_Apply__c rentalApply { get; set; } // 明细行项目 public List lineInfoList { get; set; } //备品申请书ID public String rentalApplyId { get; private set; } public Boolean hasError { get; private set; } public Boolean saveBtn { get; private set; } //现有备品数量(基于备品一览数量) public Integer EquipmentSetCnt{get;set;} private static final Map DEVELOPERNAMEMAP = Schema.SObjectType.Rental_Apply__c.getRecordTypeInfosByDeveloperName(); public String EquipmentId {get; private set;} // private String EquipmentId {get; set;} // 被选中的一览记录Id public EquipmentRentalUnassignController() { //Apexpages.currentPage().getHeaders().put('X-UA-Compatible', 'IE=8'); rentalApplyId = ApexPages.currentPage().getParameters().get('raid'); EquipmentId = ApexPages.currentPage().getParameters().get('EquipmentId'); } // 画面初始化 public PageReference init() { String tempId = DEVELOPERNAMEMAP.get('StandardRequest').getRecordTypeId(); String recordId = tempId.length() == 15 ? tempId :tempId.substring(0,tempId.length() - 3); saveBtn = false; hasError = false; rentalApply = new Rental_Apply__c(); lineInfoList = new List(); if (rentalApplyId != null && rentalApplyId.length() > 0) { // 备品借出申请取得 List raList = [ select Id, Status__c, RA_Status__c from Rental_Apply__c where Id = :rentalApplyId]; if (raList.size() > 0) { rentalApply = raList[0]; } else { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '备品申请书不存在,请确认。')); saveBtn = true; return null; } } else { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '备品申请书不存在,请确认。')); saveBtn = true; return null; } List qumentIds = new List(); if (EquipmentId != null && EquipmentId.length() > 0) { List rentalequimentIds = EquipmentId.split(','); List rentalequipmentList = [select Id,Name,RAES_Status__c,Cancel_Select__c from Rental_Apply_Equipment_Set__c where RARecordTypeId__c = :recordId and Id in :rentalequimentIds ]; if (rentalequipmentList == null || rentalequipmentList.size() == 0) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '您选择的一览不符合条件,请重新选中')); saveBtn = true; return null; }else{ Boolean a = false; String str = ''; for (Rental_Apply_Equipment_Set__c se : rentalequipmentList) { if (se.RAES_Status__c == '已分配' || se.RAES_Status__c == '已出库指示') { qumentIds.add(se.Id); a = true; } if (se.RAES_Status__c != '已分配' && se.RAES_Status__c != '已出库指示') { str += se.Name + ', '; }else if (se.Cancel_Select__c ) { str += se.Name +', '; } } if (str.length() > 0 ) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '您选择的一览'+str.substring(0,str.length()-2)+'不符合条件')); } if (!a) { return null; } } } // 备品借出备品set一览取得 List raesList = new List(); if (qumentIds.size() == 0 && (EquipmentId == null || EquipmentId == '')) { raesList = [ select id, Name, Fixture_Set__c, Fixture_Set__r.Name, Fixture_Set__r.Loaner_code__c, RAES_Status__c, Rental_Start_Date__c, Final_reply_day__c, Yi_StockDown__c, StockDown_time__c, Shippment_loaner_time2__c, Cancel_Select__c, Cancel_Reason__c, Cancel_Mem__c, Loaner_cancel_Remarks__c, Fixture_Set__r.Loaner_name__c, First_RAESD__r.Asset__c,Loaner_cancel_reason__c //20210708 SFDC-C448KZ you start from Rental_Apply_Equipment_Set__c where Rental_Apply__c = :rentalApply.Id and RARecordTypeId__c = :recordId and RAES_Status__c in ('已分配','已出库指示') and Cancel_Select__c = false]; }else { raesList = [ select id, Name, Fixture_Set__c, Fixture_Set__r.Name, Fixture_Set__r.Loaner_code__c, RAES_Status__c, Rental_Start_Date__c, Final_reply_day__c, Yi_StockDown__c, StockDown_time__c, Shippment_loaner_time2__c, Cancel_Select__c, Cancel_Reason__c, Cancel_Mem__c, Loaner_cancel_Remarks__c, Fixture_Set__r.Loaner_name__c, First_RAESD__r.Asset__c,Loaner_cancel_reason__c //20210708 SFDC-C448KZ you start from Rental_Apply_Equipment_Set__c where Rental_Apply__c = :rentalApply.Id and RARecordTypeId__c = :recordId and RAES_Status__c in ('已分配','已出库指示') and Cancel_Select__c = false and id in :qumentIds]; } if (raesList.size() == 0) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '备品申请书未分配明细,不能取消分配。')); saveBtn = true; return null; }else{ EquipmentSetCnt = raesList.size(); } // 明细行做成 for (Rental_Apply_Equipment_Set__c raes : raesList) { LineInfo lineInfo = new LineInfo(raes); lineInfoList.add(lineInfo); } return null; } // 保存按钮 public PageReference saveBtn() { List delList = new List(); List updList = new List(); Set esIdSet = new Set(); // 明细行check Integer cntSelect = 0; hasError = false; //获取已选中的一览 Set ylIds = new Set(); for (LineInfo line : lineInfoList) { if (line.isSelect == true) { ylIds.add(line.raes.Id); cntSelect += 1; } } if (cntSelect == 0) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '未选择取消分配的明细。')); hasError = true; } if (hasError == true) { system.debug('=====hasError'); return null; } Set raesdIdSet = new Set(); //获取一览明细 List detailList = [select id,Is_Body_F__c,Rental_Apply__r.Internal_asset_location_F__c,Rental_Apply__r.Salesdepartment__c,Rental_Apply__r.Owner_province__c,Rental_Apply__r.demo_purpose2__c,Rental_Apply__r.Demo_purpose1__c from Rental_Apply_Equipment_Set_Detail__c where Rental_Apply_Equipment_Set__c in :ylIds AND EquipmentSet_Detail_Status_Status__c in ('已分配','已出库指示') FOR UPDATE]; // 保存逻辑 for (LineInfo line : lineInfoList) { if (line.isSelect == true) { Rental_Apply_Equipment_Set__c upd = new Rental_Apply_Equipment_Set__c(); upd.Id = line.raes.Id; // 清空 主体产品 upd.Product2__c = ''; // 主体产品F // 备品管理编码 // 机身编号 // 固定资产号码 updList.add(upd); } } //更新明细 if (detailList != null && detailList.size() > 0) { for (Rental_Apply_Equipment_Set_Detail__c robj : detailList) { // 主体和附属品均会清空如下字段 // 相关字段置为 null // 保有设备 = 空 robj.Asset__c = null; // 分配时间 = 空 robj.Select_Time__c = null; // 出库指示时间 = 空 robj.Shipment_request_time2__c = null; // 已做出库指示 = 空 robj.Shipment_request__c = false; // 备品管理编码(借出时) robj.EquipmentSet_Managment_Code_text__c = null; // 机身编号(借出时) robj.SerialNumber_text__c = null; //备品存放地(借出时) = 备品借出申请单的备品存放地 robj.Internal_asset_location_before__c = robj.Rental_Apply__r.Internal_asset_location_F__c; //所在地区(本部) 借出时 = 备品借出申请单的借出申请人-销售本部 robj.Salesdepartment_before__c = robj.Rental_Apply__r.Salesdepartment__c; //所在地区(省) 借出时 =备品借出申请单的借出申请人-省 robj.SalesProvince_before__c = robj.Rental_Apply__r.Owner_province__c; //备品分类(借出时) = 使用目的2,使用目的1 --不用了 现在设置为null robj.Equipment_Type_text__c = null; // robj.Equipment_Type_text__c = robj.Rental_Apply__r.demo_purpose2__c + ','+robj.Rental_Apply__r.Demo_purpose1__c; // 清空排队信息 //主体还需清空排队信息 if (robj.Is_Body_F__c) { // 排队备注 robj.Queue_Conment__c = null; // 排队日 robj.Queue_Day__c = null; // 负责人 robj.Queue_User__c = null; // 排队No robj.Queue_Number__c = null; } } } // 保存 Savepoint sp = Database.setSavepoint(); try { if (detailList.size() > 0) { update detailList; } if (updList.size() > 0) { FixtureUtil.withoutUpdate(updList); } } catch (Exception ex) { system.debug('=====' + ex.getMessage()); hasError = true; ApexPages.addMessages(ex); Database.rollback(sp); return null; } // 保存 // Savepoint sp = Database.setSavepoint(); // try { // // if ( delList.size() > 0 ) delete delList; // if (!raesdIdSet.isEmpty()) { // List fotos = [Select Id From Fixture_OneToOne_Link__c // Where Main_Asset__c =: raesdIdSet // for update]; // if (!fotos.isEmpty()) { // for (Fixture_OneToOne_Link__c foto : fotos) { // foto.Select_Accessory_Asset_Cnt__c = 0; // } // FixtureUtil.withoutUpdate(fotos); // } // } // if ( updList.size() > 0 ) { // Set assetIdSet = new Set(); // for (Rental_Apply_Equipment_Set_Detail__c raesd : [SELECT Id, Asset__c // FROM Rental_Apply_Equipment_Set_Detail__c // WHERE Rental_Apply_Equipment_Set__c = :updList FOR UPDATE] // ) { // if (String.isNotBlank(raesd.Asset__c)) { // assetIdSet.add(raesd.Asset__c); // } // } // if (assetIdSet.size() > 0) { // List assetList = [SELECT Id // FROM Asset // WHERE Id = :assetIdSet FOR UPDATE]; // } // FixtureUtil.withoutUpdate(updList); // } // } catch (Exception ex) { // system.debug('=====' + ex.getMessage()); // hasError = true; // ApexPages.addMessages(ex); // Database.rollback(sp); // return null; // } return null; } @TestVisible class LineInfo { // 选择 public boolean isSelect { get; set; } // 借出备品set一览 public Rental_Apply_Equipment_Set__c raes { get; set; } // 状态:可以删除、可以取消、不能取消 //public String status { get; private set; } public String esName { get; private set; } public String loanerCode { get; private set; } public LineInfo(Rental_Apply_Equipment_Set__c r) { isSelect = false; raes = r; loanerCode = r.Fixture_Set__r.Loaner_name__c; ////cancel //if (r.Yi_StockDown__c > 0) { // status = 'canCancel'; ////下架以后改成待上架的checkbox ////cancel //} else { // status = 'OnStock_Pre_Inspection'; //} esName = r.Fixture_Set__r.Name; } } }