// xudan 20160106 Arrival_wh_time__c -> Arrival_wh_time2__c(回库はSet単位なので、積み上げ項目使わず) // RentalFixtureManage11Test // RentalFixtureManage12Test public without sharing class EquipmentSetShippmentReceived6Controller { public Rental_Apply_Equipment_Set__c es { get; set; } public List esdList { get; set; } public String crossRegion {get;set;} private Map roleRegionMap {get;set;} public Boolean saveBtnDisabled { get; private set; } public boolean ReturnRefuse {get;private set;} public String ErrorMessage {get; set;} public String CDSFinished {get;set;} public boolean LostFlg {get;set;} public boolean done_flg {get;set;} public String SR_status { get; private set; } public String Step_status { get; private set; } public Boolean needCDS { get; private set; } public String open_type { get; private set; } public Boolean forceSave { get; set; } public String Raid {get;set;} public String AccessoryId {get;set;} public String AccessorySetId {get;set;} public String UnCheckedId {get;set;} private String Id; public Integer getEsdListSize() { return esdList.size(); } public EquipmentSetShippmentReceived6Controller() { // Apexpages.currentPage().getHeaders().put('X-UA-Compatible', 'IE=8'); Id = ApexPages.currentPage().getParameters().get('id'); if (SR_status == null) { SR_status = ApexPages.currentPage().getParameters().get('type'); } if (Step_status == null) { Step_status = ApexPages.currentPage().getParameters().get('step'); } if (open_type == null) { open_type = ApexPages.currentPage().getParameters().get('open'); } roleRegionMap = new Map { '备品中心北方管理成员' => '北京 备品中心', '备品中心华东管理成员' => '上海 备品中心', '备品中心南方管理成员' => '广州 备品中心' }; } // 画面初始化 public PageReference init() { forceSave = false; done_flg = false; es = new Rental_Apply_Equipment_Set__c(); esdList = new List(); Set esIds = new Set(); saveBtnDisabled = false; ReturnRefuse = true; ErrorMessage = ''; crossRegion = ''; if (Id != null) { List ids = Id.split(','); // 当前User String userid = Userinfo.getUserId(); User user = [select Id,Name,UserRole.Name from User where Id = :userid]; // 备品set List esList = [select Rental_Apply__c, Id, RAES_Status__c, Name, Shippment_loaner_time2__c , Rental_Apply__r.Cross_Region_Assign__c from Rental_Apply_Equipment_Set__c where (Rental_Apply__r.Name in :ids or Id in :ids) ]; //List esList = [select Id, Name, CDS_staff__c, Shippment_loaner_time__c, Received_loaner_time__c, // delivery_company__c, Return_to_wh_staff__c, Return_to_wh_staff__r.Name, Fedex_number__c, Distributor_method__c, // Return_delivery_company__c,Return_wh_chenk_staff__c, Received_confirmation_staff__c, Received_confirmation_staff__r.Name, Return_Fedex_number__c, Return_Distributor_method__c, // Arrival_wh_time2__c, Asset_return_time__c, // CDS_complete__c, Arrival_in_wh__c, StockDown__c, // Lost_item_check_time__c,Last_Reserve_Rental_Apply_Fixture_Set__c, // StockDown_time__c // from Fixture_Set__c where Name = :Id]; if (esList.size() > 0) { //es = esList[0]; for (Rental_Apply_Equipment_Set__c raes : esList) { esIds.add(raes.Id); Raid = raes.Rental_Apply__c; if(String.isNotBlank(raes.Rental_Apply__r.Cross_Region_Assign__c)){ crossRegion = raes.Rental_Apply__r.Cross_Region_Assign__c; if(roleRegionMap.containsKey(user.UserRole.Name) && roleRegionMap.get(user.UserRole.Name) == raes.Rental_Apply__r.Cross_Region_Assign__c) { crossRegion = ''; } } } } else { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '备品不存在')); saveBtnDisabled = true; return null; } //检查验证规则修理最终检测日 /* todo List CheckRAES = [select id,Name,RAES_Status__c,Rental_Apply__c,Rental_Apply__r.Repair__c,Cancel_Date__c,Fixture_Set__c from Rental_Apply_Equipment_Set__c where id=:es.Last_Reserve_Rental_Apply_Equipment_Set__c]; Rental_Apply_Equipment_Set__c Ra_c = new Rental_Apply_Equipment_Set__c(); Rental_Apply__c Rac = new Rental_Apply__c(); if(CheckRAES.size()>0){ Ra_c = CheckRAES[0]; Raid = Ra_c.Rental_Apply__c; } system.debug(Ra_c.Rental_Apply__r.Repair__c ); List CheckError = new List(); CheckError = [Select id,name,repair__c,repair__r.Return_Without_Repair_Date__c,repair__r.Repair_Final_Inspection_Date__c,repair__r.Repair_Shipped_Date__c, Campaign__c,Campaign__r.Status from Rental_Apply__c where id=:Ra_c.Rental_Apply__c and RA_Status__c !='取消' and RA_Status__c !='删除']; if(CheckError.size()>0){ Rac = CheckError[0]; } */ //system.debug('All::::'+Rac.repair__r.Repair_Final_Inspection_Date__c); // system.debug('All::::'+Rac.repair__c); // system.debug('All::::'+Ra_c.RAES_Status__c); // 本番暂不上线该功能,启用后不能入库操作感觉不对 } // 备品set明细 //154p 1414 20211014 you 后面加查询 List eList = [ select Substitute_flag__c, Cancel_Select__c, Rental_Apply_Equipment_Set__c, AssetName__c, Asset__r.Product2Id, Canceled_Id__c, SerialNumber_F__c, Arrival_wh_Flag_F__c, Arrival_wh_Abandoned_Flag_F__c, OnStock_By_Cancel__c, Fixture_Set_Detail__r.Is_OneToOne__c, Is_Body__c, Rental_Apply_Equipment_Set__r.Fixture_Set__r.Name, Fixture_Set_Detail__c, FSD_OneToOneAccessory_Cnt_F__c, Asset__r.WH_location__c, OneToOne_Flag__c,Fixture_QRCode_F__c, Rental_Apply_Equipment_Set__r.Name, Pre_inspection_time__c, StockDown__c, StockDown_time__c, Id, Name, Asset__c, Asset__r.Name, Asset__r.SerialNumber, Asset__r.Product_Serial_No__c, Asset__r.Remark__c, Asset__r.ImageAsset__c, Asset__r.ImageSerial__c, Asset__r.ImageAssetUploadedTime__c, Asset__r.ImageSerialUploadedTime__c, Loaner_CDS_Info__c, Inspection_result__c, Check_lost_Item__c, Pre_disinfection__c, Water_leacage_check__c, Inspection_result_after_F__c, Arrival_in_wh__c, Asset__r.Pre_Reserve_RAES_Detail__c, Asset__r.Pre_Reserve_RAES_Detail__r.After_Inspection_time__c, Inspection_result_after_ng_F__c, Inspection_result_ng__c, Lost_item_giveup__c, CDS_complete__c, Loaner_accsessary__c, BoxInconsistent__c, Fixture_Model_No_text__c,Equipment_Type_text__c,Rental_Apply__r.RecordTypeId from Rental_Apply_Equipment_Set_Detail__c where Rental_Apply_Equipment_Set__c in :esIds and ((Shipment_request_time2__c <> null and Cancel_Select__c = False ) or Arrival_wh_Flag_F__c = true or Arrival_wh_Abandoned_Flag_F__c = true) order by Rental_Apply_Equipment_Set__r.Name, Rental_Apply_Equipment_Set__c, Name ]; //String assid = ''; Map> raesMap = new Map>(); for (Rental_Apply_Equipment_Set_Detail__c esd : eList) { List raesdList; if (raesMap.containsKey(esd.Rental_Apply_Equipment_Set__c)) { raesdList = raesMap.get(esd.Rental_Apply_Equipment_Set__c); } else { raesdList = new List(); } raesdList.add(esd); raesMap.put(esd.Rental_Apply_Equipment_Set__c, raesdList); } Set otomainSet = new Set(); for (Id raesId : raesMap.keySet()) { //Set assetIds = new Set(); for (Rental_Apply_Equipment_Set_Detail__c esd : raesMap.get(raesId)) { EsdInfo ei = new EsdInfo(esd); if (esd.Arrival_in_wh__c == false && (esd.Arrival_wh_Flag_F__c || esd.Arrival_wh_Abandoned_Flag_F__c)) { ei.editable = true; if (esd.Arrival_wh_Abandoned_Flag_F__c) { ei.discardFlg = true; } else if (esd.FSD_OneToOneAccessory_Cnt_F__c > 0) { if (esd.Is_Body__c) { //ei.locChange = true; //otomainSet.add(esd.Rental_Apply_Equipment_Set__c); } else if (!esd.Fixture_Set_Detail__r.Is_OneToOne__c) { // if (!assetIds.contains(esd.Asset__c)) { // ei.locChange = true; //assetIds.add(esd.Asset__c); // } } } else { // if (!assetIds.contains(esd.Asset__c)) { // ei.locChange = true; //assetIds.add(esd.Asset__c); // } } } //SFDC-C63DFK 上架时镜箱/周转箱不符的标记   thh 2021-09-07 start if(String.isNotBlank(esd.Fixture_Model_No_text__c) && esd.Fixture_Model_No_text__c == 'WA05990A' || esd.Fixture_Model_No_text__c.indexOf('镜箱') != -1 ) { ei.isShow = true; } //SFDC-C63DFK 上架时镜箱/周转箱不符的标记   thh 2021-09-07 end ei.accessorySetId = esd.Rental_Apply_Equipment_Set__c; esdList.add(ei); } } //for (EsdInfo esd : esdList) { // if (esd.rec.FSD_OneToOneAccessory_Cnt__c > 0 && esd.rec.FSD_Is_OneToOne__c && esd.rec.Inspection_result_after_F__c == 'OK') { // esd.otoWithoutMain = !otomainSet.contains(esd.rec.Rental_Apply_Equipment_Set__c); // } //} //for (Rental_Apply_Equipment_Set_Detail__c esd : eList) { // EsdInfo ei = new EsdInfo(esd); // if (esd.Arrival_in_wh__c == false // && (esd.Inspection_result_after_F__c == 'OK' // || (esd.Inspection_result_after_F__c == 'NG' && esd.Inspection_result_after_ng_F__c == '废弃') || esd.OnStock_By_Cancel__c == true)) { // ei.editable = true; // if (esd.Inspection_result_after_ng_F__c == '废弃' || (esd.Inspection_result_NG__c == '废弃' && esd.OnStock_By_Cancel__c)) { // ei.discardFlg = true; // } else if (esd.FSD_OneToOneAccessory_Cnt__c > 0) { // if (esd.Is_Body__c) { // if (assid != (String)esd.Asset__c) { // ei.locChange = true; // assid = esd.Asset__c; // } // } else if (!esd.Fixture_Set_Detail__r.Is_OneToOne__c) { // if (assid != (String)esd.Asset__c) { // ei.locChange = true; // assid = esd.Asset__c; // } // } // } else { // if (assid != (String)esd.Asset__c) { // ei.locChange = true; // assid = esd.Asset__c; // } // } // } // esdList.add(ei); //} if (esdList.size() <= 0) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '没有备品set明细')); saveBtnDisabled = true; return null; } Step_status = '上架'; SR_status = 'Shippment'; system.debug('=====' + Step_status); system.debug('=====' + open_type); return null; } // Step 切り替えボタン、发货前-检测 public PageReference Shippment1() { Step_status = '发货前'; return new PageReference('/apex/EquipmentSetShippmentReceived2?id=' + this.Id + '&type=' + this.SR_status + '&step=' + this.Step_status + '&open=' + this.open_type); } // Step 切り替えボタン、发货-发货运输单号 等 public PageReference Shippment2() { Step_status = '发货'; return new PageReference('/apex/EquipmentSetShippmentReceived6?id=' + this.Id); } // Step 切り替えボタン、回寄-发货运输单号 等 public PageReference Received1() { Step_status = '回寄'; return new PageReference('/apex/EquipmentSetShippmentReceived2?id=' + this.Id + '&type=' + this.SR_status + '&step=' + this.Step_status + '&open=' + this.open_type); } // Step 切り替えボタン、CDS 等 public PageReference Received2() { Step_status = 'CDS'; return new PageReference('/apex/EquipmentSetShippmentReceived2?id=' + this.Id + '&type=' + this.SR_status + '&step=' + this.Step_status + '&open=' + this.open_type); } // Step 切り替えボタン、回库检查 等 public PageReference Received3() { Step_status = '回库检查'; return new PageReference('/apex/EquipmentSetShippmentReceived2?id=' + this.Id + '&type=' + this.SR_status + '&step=' + this.Step_status + '&open=' + this.open_type); } // Step 切り替えボタン、回库 等 public PageReference Received4() { Step_status = '回库'; return new PageReference('/apex/EquipmentSetShippmentReceived2?id=' + this.Id + '&type=' + this.SR_status + '&step=' + this.Step_status + '&open=' + this.open_type); } public PageReference deleteDetail() { if (UnCheckedId != null) { integer index = 0; for (EsdInfo esd : esdList) { if (esd.accessoryFlg && UnCheckedId == esd.rec2.Id) { break; } index++; } esdList.remove(index); } UnCheckedId = null; return null; } public PageReference addAccessory() { system.debug(AccessorySetId); if (AccessoryId != null) { List assList = [select Id, Name, SerialNumber, Product2Id,WH_location__c from Asset where Fixture_QRCode__c = :AccessoryId and Ji_Zhong_Guan_Li_Ku_Cun__c > 0 and Asset_loaner_category__c != '耗材' and RecordTypeId = '01210000000kOPR']; system.debug(assList); if (assList.size() > 0) { //Rental_apply_equipment_Set_Detail__c raesd = new Rental_apply_equipment_Set_Detail__c(); EsdInfo accInfo = new EsdInfo(); accInfo.accessoryFlg = true; accInfo.rec2=asslist[0]; accInfo.accessorySetId = AccessorySetId; Integer index = 1; Integer insert_index = 0; for (EsdInfo esd : esdList) { if (esd.rec.Rental_Apply_Equipment_Set__c == AccessorySetId) insert_index = index; index++; } if (esdList.size() == insert_index) { esdList.add(accInfo); } else { esdList.add(insert_index, accInfo); } } } AccessoryId = null; return null; } // 保存按钮 public PageReference save() { done_flg = false; String userid = Userinfo.getUserId(); List eList = new List(); List otoCheckList_main = new List(); //List otoCheckList = new List(); List otoAccessoryList = new List(); Map assetloc = new Map(); Set assetlocAbandoned = new Set(); Set assetForLock = new Set(); //Map accessoryMap = new Map(); //Set otomainSet = new Set(); ////一对一主体 //for (EsdInfo esdInfo : esdList) { // if (!esdInfo.accessoryFlg && esdInfo.editable && esdInfo.rec.FSD_OneToOneAccessory_Cnt__c > 0) { // if (esdInfo.rec.Arrival_in_wh__c && esdInfo.rec.Is_Body__c) { // otomainSet.add(esdInfo.rec.Rental_Apply_Equipment_Set__c); // } // } //} //for (EsdInfo esdInfo : esdList) { // if (!esdInfo.accessoryFlg && esdInfo.editable && esdInfo.rec.FSD_OneToOneAccessory_Cnt__c > 0) { // if (esdInfo.rec.FSD_Is_OneToOne__c && esdInfo.rec.Inspection_result_after_F__c == 'OK' && !esdInfo.otoWithoutMain) { // esdInfo.rec.Arrival_in_wh__c = otomainSet.contains(esdInfo.rec.Rental_Apply_Equipment_Set__c); // } // } //} Set mainSet = new Set(); for (EsdInfo esdInfo : esdList) { esdInfo.errorInfo = null; if (esdInfo.accessoryFlg) { otoAccessoryList.add(esdInfo); //accessoryMap.put(esdInfo.rec2.Product2Id, 0); } else { if (!esdInfo.editable) continue; Rental_Apply_Equipment_Set_Detail__c esd = esdInfo.rec; eList.add(esd); //if (esd.Inspection_result_after_F__c == 'OK' && esd.FSD_OneToOneAccessory_Cnt__c > 0 && esd.FSD_Is_OneToOne__c) esd.Arrival_in_wh__c = true; if (esd.Arrival_in_wh__c) { if (esd.Arrival_wh_Abandoned_Flag_F__c) { assetlocAbandoned.add(esd.Asset__c); } if (esd.FSD_OneToOneAccessory_Cnt_F__c > 0 && esd.Is_Body__c && (esd.Inspection_result_after_F__c == 'OK' || (!esd.Arrival_wh_Abandoned_Flag_F__c && esd.Arrival_wh_Flag_F__c))) { otoCheckList_main.add(esdInfo); mainSet.add(esd.Rental_Apply_Equipment_Set__c); assetloc.put(esd.Asset__c, esd.Asset__r.WH_location__c); } else if ((esd.Inspection_result_after_F__c == 'OK' || (!esd.Arrival_wh_Abandoned_Flag_F__c && esd.Arrival_wh_Flag_F__c)) && esd.FSD_OneToOneAccessory_Cnt_F__c > 0 && esd.Fixture_Set_Detail__r.Is_OneToOne__c) { //if (String.isNotBlank(esd.Canceled_Id__c)) { // otoAccessoryList.add(esdInfo); //} else { // otoCheckList.add(esdInfo); //} otoAccessoryList.add(esdInfo); } else if (!assetloc.containsKey(esd.Asset__c)) { assetloc.put(esd.Asset__c, esd.Asset__r.WH_location__c); //assetIds.add(esd.Asset__c); } } } if (esdInfo.editable) { assetForLock.add(esdInfo.rec.Asset__c); } } //Map> esdMap = new Map>(); for (EsdInfo esd : otoAccessoryList) { //List raesdList; //if (esdMap.containsKey(esd.rec.Rental_Apply_Equipment_Set__c)) { // raesdList = esdMap.get(esd.rec.Rental_Apply_Equipment_Set__c); //} else { // raesdList = new List(); //} //raesdList.add(esd); //esdMap.put(esd.rec.Rental_Apply_Equipment_Set__c, raesdList); if (!esd.accessoryFlg && !mainSet.contains(esd.rec.Rental_Apply_Equipment_Set__c) && !assetloc.containsKey(esd.rec.Asset__c)) { assetloc.put(esd.rec.Asset__c, esd.rec.Asset__r.WH_location__c); } } Map>> assProductCountMapAll = new Map>>(); //Map> assProductCountMap = new Map>(); for (EsdInfo ei : otoAccessoryList) { Map> assProductCountMap; if (assProductCountMapAll.containsKey(ei.accessorySetId)) { assProductCountMap = assProductCountMapAll.get(ei.accessorySetId); } else { assProductCountMap = new Map>(); } Id recId; Id product2Id; if (ei.rec2 != null) { recId = ei.rec2.Id; product2Id = ei.rec2.Product2Id; } else { recId = ei.rec.Asset__c; product2Id = ei.rec.Asset__r.Product2Id; } List count; if (assProductCountMap.containsKey(product2Id)) { count = assProductCountMap.get(product2Id); } else { count = new List(); } count.add(recId); assProductCountMap.put(product2Id, count); assProductCountMapAll.put(ei.accessorySetId, assProductCountMap); } Boolean needSaveSet = false; Boolean needSaveDetail = false; Boolean needSaveAsset = false; List otolinkList = new List(); List updAsset = null; List updAssetAbandoned = null; //if (!forceSave) { boolean err = false; Map otoMap = new Map(); for (EsdInfo main : otoCheckList_main) { //Fixture_Set_Detail__c m1 = [select Id, Fixture_Set__c from Fixture_Set_Detail__c where Id = :main.rec.Fixture_Set_Detail__c]; //List asslist = [select Product2__r.Name, Id,Product2__c,Is_Body__c, Quantity__c from Fixture_Set_Detail__c where Is_Body__c = false and Fixture_Set__c = :m1.Fixture_Set__c and Is_OneToOne__c = true]; //List raesdList = esdMap.get(main.rec.Rental_Apply_Equipment_Set__c); List asslist; //没有cancel的看最新一套明细的fsd数量 //已经cancel的看最早一套明细的一对一分配数量 //理论上出库前上架的数据不会有非cancel的情况,所以直接用Cancel_Select__c判断 system.debug(main.rec); if (main.rec.Cancel_Select__c == false) { asslist = [select Asset__r.Product2.Name, Asset__c, Asset__r.Product2Id , OneToOne_Flag__c from Rental_Apply_Equipment_Set_Detail__c where Rental_Apply_Equipment_Set__c = :main.rec.Rental_Apply_Equipment_Set__c and Fixture_Set_Detail__r.Is_OneToOne__c = true and Cancel_Select__c = false //找最新的一套明细 //and Canceled_Id__c = null //找最初的一套明细 and Asset__c <> null //过滤未分配的数据。 and Substitute_flag__c = false // 一览NG的情况拷贝新的一览,不影响一对一数量Count // and Rental_Apply_Equipment_Set__r.Canceled_Id__c = null order by OneToOne_Flag__c desc]; } else { asslist = [select Asset__r.Product2.Name, Asset__c, Asset__r.Product2Id , OneToOne_Flag__c from Rental_Apply_Equipment_Set_Detail__c where Rental_Apply_Equipment_Set__c = :main.rec.Rental_Apply_Equipment_Set__c and Fixture_Set_Detail__r.Is_OneToOne__c = true and Substitute_flag__c = false and Canceled_Id__c = null and Asset__c <> null order by OneToOne_Flag__c desc]; } system.debug(asslist); Map> assProductCountMap = new Map>(); if (assProductCountMapAll.containsKey(main.rec.Rental_Apply_Equipment_Set__c)) { assProductCountMap = assProductCountMapAll.get(main.rec.Rental_Apply_Equipment_Set__c); } //Map> assCountMap = new Map>(); //if (raesdList != null) { // for (EsdInfo ei : raesdList) { // List count; // if (assCountMap.containsKey(ei.rec.Asset__c)) { // count = assCountMap.get(ei.rec.Asset__c); // } else { // count = new List(); // } // count.add(ei); // assCountMap.put(ei.rec.Asset__c, count); // } //} for (Rental_Apply_Equipment_Set_Detail__c ass : assList) { //if (assCountMap.containsKey(ass.Asset__c) && assCountMap.get(ass.Asset__c).size() > 0) { // List count = assCountMap.get(ass.Asset__c); // count.remove(0); // assCountMap.put(ass.Asset__c, count); // String key = (String)main.rec.Asset__c + ':' + (String)ass.Asset__c; // Integer otoCnt; // if (otoMap.containsKey(key)) { // otoCnt = otoMap.get(key); // } else { // otoCnt = 0; // } // otoMap.put(key, otoCnt + 1); //} else if (assProductCountMap.containsKey(ass.Asset__r.Product2Id) && assProductCountMap.get(ass.Asset__r.Product2Id).size() > 0) { List count = assProductCountMap.get(ass.Asset__r.Product2Id); String assetId = (String)count[0]; count.remove(0); assProductCountMap.put(ass.Asset__r.Product2Id, count); assProductCountMapAll.put(main.rec.Rental_Apply_Equipment_Set__c, assProductCountMap); //accessoryMap.put(ass.Asset__r.Product2Id, accessoryMap.get(ass.Asset__r.Product2Id)+1); String key = (String)main.rec.Asset__c + ':' + assetId; Integer otoCnt; if (otoMap.containsKey(key)) { otoCnt = otoMap.get(key); } else { otoCnt = 0; } otoMap.put(key, otoCnt + 1); } else { if (!forceSave && (main.rec.Cancel_Select__c == false || (main.rec.Cancel_Select__c == true && ass.OneToOne_Flag__c))) { main.errorInfo = '未补全附属品(部分上架请勾选复选框):'+ass.Asset__r.Product2.Name; err = true; break; } else { continue; } //return null; } } //有多余的附属品 //for (Id count : assCountMap.keySet()) { // if (assCountMap.get(count).size() > 0) { // err = true; // for (EsdInfo ei : assCountMap.get(count)) { // ei.errorInfo = '一对一附属品无对应主体(拆分上架请勾选复选框)'; // } // } //} } if (err) return null; for (String oto : otoMap.keySet()) { List keys = oto.split(':'); Fixture_OneToOne_Link__c otolink = new Fixture_OneToOne_Link__c(); otolink.Main_Asset__c = keys[0]; otolink.Accessory_Asset__c = keys[1]; otolink.Quantity__c = otoMap.get(oto); otolinkList.add(otolink); } //} //附属品和一览走,不需要check // system.debug(accessoryMap); // for (String sKey : accessoryMap.keySet()) { // if (accessoryMap.get(sKey) > 1) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '有追加附属品对应不同主体,不可更新( '+Step_status+' )')); // return null; // } //} //return null; // TODO 没变化不存 if (Step_status == '上架') { for (Rental_Apply_Equipment_Set_Detail__c esd : eList) { if (esd.Arrival_in_wh__c) { esd.Arrival_wh_time__c = System.now(); esd.Return_wh_chenk_staff__c = userid; } else { esd.Arrival_wh_time__c = null; esd.Return_wh_chenk_staff__c = null; } } needSaveDetail = true; } if (assetloc.keySet().size() > 0) { updAsset = [select Id, WH_location__c from Asset where Id in :assetloc.keySet() and Asset_loaner_category__c != '耗材' and RecordTypeId = '01210000000kOPR']; for (Asset upda : updAsset) { upda.WH_location__c = assetloc.get(upda.Id); } needSaveAsset = true; } if (assetlocAbandoned.size() > 0) { updAssetAbandoned = [select Id, WH_location__c from Asset where Id in :assetlocAbandoned and Asset_loaner_category__c != '耗材' and RecordTypeId = '01210000000kOPR' and Manage_type__c = '个体管理']; for (Asset upda : updAssetAbandoned) { upda.WH_location__c = '废弃区'; } needSaveAsset = true; } for (EsdInfo esdInfo : esdList) { if (esdInfo.accessoryFlg) continue; Rental_Apply_Equipment_Set_Detail__c esd = esdInfo.rec; if (esd.Arrival_in_wh__c && esd.FSD_OneToOneAccessory_Cnt_F__c > 0 && esd.Is_Body__c && esd.Arrival_wh_Abandoned_Flag_F__c) { otoCheckList_main.add(esdInfo); } } List astLock = [select Id from Asset where Id in :assetForLock for update]; //return null; Savepoint sp = Database.setSavepoint(); try { //if (needSaveSet) ControllerUtil.upRAdEquipmentSet(es); if (otoCheckList_main.size() > 0) { List mainIds = new List(); for (EsdInfo oto : otoCheckList_main) { if (String.isNotBlank(oto.rec.Asset__c)) { // Asset__c 念のための確認 mainIds.add(oto.rec.Asset__c); } } //ControllerUtil.delOtOLinkData(mainIds); FixtureUtil.delOtOLinkData(mainIds); } if (otolinkList.size() > 0) { // Set mainIds = new Set(); //for (Fixture_OneToOne_Link__c oto : otolinkList) { // if (String.isBlank(oto.Main_Asset__c) == false) { // mainIds.add(oto.Main_Asset__c); // } //} // ControllerUtil.delOtOLinkData(mainIds); if (needSaveDetail) { //ControllerUtil.updRAEquipmentSetDetail(eList); FixtureUtil.withoutUpsertObjects(eList); needSaveDetail = false; } //ControllerUtil.updOtOLinkData(otolinkList); Oly_TriggerHandler.clearBypass(AssetHandlerCheck.class.getName()); FixtureUtil.withoutInsert(otolinkList); Oly_TriggerHandler.bypass(AssetHandlerCheck.class.getName()); } //if (needSaveDetail) ControllerUtil.updRAEquipmentSetDetail(eList); if (needSaveDetail) FixtureUtil.withoutUpsertObjects(eList); //if (needSaveAsset) ControllerUtil.updAssetLocation(updAsset); if (needSaveAsset && updAsset != null && updAsset.size() > 0) FixtureUtil.withoutUpdate(updAsset); if (needSaveAsset && updAssetAbandoned != null && updAssetAbandoned.size() > 0) FixtureUtil.withoutUpdate(updAssetAbandoned); //PageReference ref = new Pagereference('/apex/EquipmentSetShippmentReceived6?id=' + Id); //ref.setRedirect(true); //return ref; List esdL = new List(); for (EsdInfo esd : esdList) { if (!esd.accessoryFlg) { esdL.add(esd); } } //esdList = esdL; init(); done_flg = true; return null; } catch (Exception ex) { system.debug('=====' + ex.getMessage()); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ex.getMessage()+'( '+Step_status+' )')); Database.rollback(sp); done_flg = false; return null; } return null; } public class EsdInfo { public Rental_Apply_Equipment_Set_Detail__c rec { get; set; } public Asset rec2 { get; set; } public String imageAssetUploadedTime { get; set; } public String imageSerialUploadedTime { get; set; } public String errorInfo { get; set; } public boolean accessoryFlg { get; set; } public String accessorySetId { get; set; } public Boolean discardFlg { get; set; } //public Boolean locChange { get; set; } public boolean editable { get; set; } //public boolean otoWithoutMain { get; set; } // 回库はSet単位で、明細一つ一つのquickCheck要らない public boolean quickCheck { get; set; } //判断镜箱/灭菌盒不符是否显示 public boolean isShow { get; set; } public EsdInfo() { this.quickCheck = false; //this.locChange = false; this.discardFlg = false; this.editable = false; this.isShow = false; //this.otoWithoutMain = false; } public EsdInfo(Rental_apply_equipment_Set_Detail__c rec) { this.rec = rec; this.accessoryFlg = false; //this.locChange = false; this.discardFlg = false; this.editable = false; this.isShow = false; //this.otoWithoutMain = false; if (rec.Asset__r.Pre_Reserve_RAES_Detail__c != null && rec.Asset__r.Pre_Reserve_RAES_Detail__r.After_Inspection_time__c != null) { this.quickCheck = Datetime.now() < rec.Asset__r.Pre_Reserve_RAES_Detail__r.After_Inspection_time__c + 30 ? true : false; } else { this.quickCheck = false; } if (rec.Asset__r.ImageAssetUploadedTime__c != null) { imageAssetUploadedTime = rec.Asset__r.ImageAssetUploadedTime__c.format('yyyy/MM/dd HH:mm'); } if (rec.Asset__r.ImageSerialUploadedTime__c != null) { imageSerialUploadedTime = rec.Asset__r.ImageSerialUploadedTime__c.format('yyyy/MM/dd HH:mm'); } } } }