// xudan 20160106 Arrival_wh_time__c -> Arrival_wh_time2__c(回库はSet単位なので、積み上げ項目使わず) // EquipmentSetShippmentReceived4CtrlTest public without sharing class EquipmentSetShippmentReceived4Controller { public FixtureDeliverySlip__c slip { get; set; } public Rental_Apply_Equipment_Set__c es { get; set; } public List esdList { get; set; } //public List raesList { 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 Step_status { get; private set; } public Boolean needCDS { get; private set; } public Boolean showTab2 { get; private set; } public Boolean isEquipmentCenter { get; private set; } public String Raid {get;set;} public String ApplyId {get;set;} public String CheckedId {get;set;} public String UnCheckedId {get;set;} public String CheckedSetId {get;set;} public String BPRegion {get;set;} //备品中心地址 public Boolean isSameCity {get;set;} private String Id; public boolean isMainReceivedSignRich {get;set;}//当前借出备品是否上传签收单 true为没有上传 public boolean isAdvocateFollow{get;set;} public String skipId{get;set;} private static final Map DEVELOPERNAMEMAP = Schema.SObjectType.Rental_Apply__c.getRecordTypeInfosByDeveloperName(); public Integer getEsdListSize() { return esdList.size(); } public EquipmentSetShippmentReceived4Controller() { // Apexpages.currentPage().getHeaders().put('X-UA-Compatible', 'IE=8'); Id = ApexPages.currentPage().getParameters().get('id'); if (Step_status == null) { Step_status = ApexPages.currentPage().getParameters().get('step'); } ApplyId = Id; BPRegion = ''; isSameCity = false; roleRegionMap = new Map { '备品中心北方管理成员' => '北京 备品中心', '备品中心华东管理成员' => '上海 备品中心', '备品中心南方管理成员' => '广州 备品中心' }; isMainReceivedSignRich = false; isAdvocateFollow = false; skipId = ''; } public PageReference searchSlip() { Map esdIdMap = new Map(); for (EsdInfo esd : esdList) { if (!esd.hasSended) esdIdMap.put(esd.rec.Id, esd.isChecked); } String qryString = 'select Id, Name, DeliveryCompany_SlipNo__c,DeliveryType__c,Distributor_method__c,DeliveryCompany__c,Wh_Staff__c ' + 'from FixtureDeliverySlip__c ' + 'where Name =\''+ slip.Name +'\' and DeliveryType__c = \'回寄\''; if (String.isNotBlank(slip.Distributor_method__c)) { qryString += ' and Distributor_method__c = \''+ slip.Distributor_method__c +'\''; } if (String.isNotBlank(slip.DeliveryCompany__c)) { qryString += ' and DeliveryCompany__c = \''+ slip.DeliveryCompany__c +'\''; } List slipList = Database.query(qryString); if (slipList.size() > 0) { if (slipList.size() > 1) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '当前条件检索到复数条运输单,请追加检索条件!')); return null; } slip = slipList[0]; List eList = [select Lost_item_Memo_Final__c, Lost_item_Memo__c, Rental_Apply_Equipment_Set__r.Wei_loaner_arranged__c, Rental_Apply__r.Asset_return_ng_num__c, Rental_Apply_Equipment_Set__r.Final_reply_day__c, NoItemReturn__c, SerialNumber_F__c, Asset_return_time__c, Check_lost_Item_F__c, Rental_Apply_Equipment_Set__r.Received_ng_detail__c, Rental_Apply_Equipment_Set__r.Wei_Return_Finish__c, Rental_Apply_Equipment_Set__r.Received_Confirm__c, Check_lost_Item_Final__c, Return_DeliverySlip__c, Fixture_Name_F__c, Rental_Apply_Equipment_Set__r.Fixture_Set__r.Name, Rental_Apply_Equipment_Set__c, Fixture_QRCode_F__c, Rental_Apply_Equipment_Set__r.Rental_Apply__r.Name, 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__c, Arrival_in_wh__c, Asset__r.Pre_Reserve_RAES_Detail__c, Asset__r.Pre_Reserve_RAES_Detail__r.After_Inspection_time__c, Is_Body__c, CDSChargement__c, CDSType__c, Inspection_result_after_ng__c, Inspection_result_ng__c, Lost_item_giveup__c, Confirm_Lost_Date__c, CDS_complete__c, Loaner_accsessary__c from Rental_Apply_Equipment_Set_Detail__c where (Return_DeliverySlip__c = :slip.Id or Id in :esdIdMap.keySet()) and Cancel_Select__c = False order by Rental_Apply_Equipment_Set__r.Rental_Apply__r.Name, Rental_Apply_Equipment_Set__r.Name, Rental_Apply_Equipment_Set__c, Name]; esdList.clear(); Set sendedId = new Set(); for (Rental_Apply_Equipment_Set_Detail__c esd : eList) { EsdInfo esdinfo; if (esdIdMap.containsKey(esd.Id)) { //esdinfo = new EsdInfo(esd, esdIdMap.get(esd.Id)); esdinfo = new EsdInfo(esd, true); } else { esdinfo = new EsdInfo(esd, true); esdInfo.hasSended = true; //sendedId.add(esd.Rental_Apply_Equipment_Set__c); } if (String.isBlank(esd.Inspection_result_after__c) && String.isNotBlank(esd.Rental_Apply_Equipment_Set__r.Received_Confirm__c) && esd.Asset_return_time__c != null && esd.Arrival_in_wh__c != true) esdinfo.editable = true; esdList.add(esdInfo); } //List esList = [select Rental_Apply__r.Name, First_RAESD_Model_No_F__c, First_RAESD__r.SerialNumber_F__c, First_RAESD__r.Loaner_asset_no__c, Rental_Apply__c, Id, RAES_Status__c, Name, Shippment_loaner_time__c // from Rental_Apply_Equipment_Set__c // where Id in (select Rental_Apply_Equipment_Set__c from Rental_Apply_Equipment_Set_Detail__c where Return_DeliverySlip__c = :slip.Id or Id in :esdIdMap.keySet()) // AND Cancel_Select__c = false // order by Rental_Apply__r.Name, Id]; //raesList.clear(); //for (Rental_Apply_Equipment_Set__c raes : esList) { // EsInfo esinfo = new EsInfo(raes, sendedId.contains(raes.Id)); // raesList.add(esinfo); //} } return null; } public PageReference filljsQRAction() { List ids = ApplyId.split(','); //Set checkedIds = new Set(CheckedId.split(':')); CheckedId = null; List esList = [select Rental_Apply__r.Name, First_RAESD_Model_No_F__c, First_RAESD__r.SerialNumber_F__c, First_RAESD__r.Loaner_asset_no__c, Rental_Apply__c, Id, RAES_Status__c, Name, Shippment_loaner_time2__c from Rental_Apply_Equipment_Set__c where (Rental_Apply__r.Name in :ids or Id in :ids) //AND Cancel_Select__c = false order by Rental_Apply__r.Name, Id]; Map esMap = new Map(); Set esdIds = new Set(); for (Rental_Apply_Equipment_Set__c raes : esList) { esMap.put(raes.Id, raes); } for (EsdInfo raesd : esdList) { esdIds.add(raesd.rec.Id); } List eList = [ select Lost_item_Memo_Final__c, Lost_item_Memo__c, Rental_Apply_Equipment_Set__r.Wei_loaner_arranged__c, Rental_Apply__r.Asset_return_ng_num__c, Rental_Apply_Equipment_Set__r.Final_reply_day__c, NoItemReturn__c, SerialNumber_F__c, Asset_return_time__c, Check_lost_Item_F__c, Rental_Apply_Equipment_Set__r.Received_ng_detail__c, Rental_Apply_Equipment_Set__r.Wei_Return_Finish__c, Rental_Apply_Equipment_Set__r.Received_Confirm__c, Check_lost_Item_Final__c, Return_DeliverySlip__c, Fixture_Name_F__c, Rental_Apply_Equipment_Set__r.Fixture_Set__r.Name, Rental_Apply_Equipment_Set__c, Fixture_QRCode_F__c,Rental_Apply_Equipment_Set__r.Rental_Apply__r.Name, 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__c, Arrival_in_wh__c, Asset__r.Pre_Reserve_RAES_Detail__c, Asset__r.Pre_Reserve_RAES_Detail__r.After_Inspection_time__c, Is_Body__c, CDSChargement__c, CDSType__c, Inspection_result_after_ng__c, Inspection_result_ng__c, Lost_item_giveup__c, Confirm_Lost_Date__c, CDS_complete__c, Loaner_accsessary__c from Rental_Apply_Equipment_Set_Detail__c where Rental_Apply_Equipment_Set__c in :esMap.keySet() and DeliverySlip__c <> null and Shipment_request_time2__c <> null //and Rental_Apply_Equipment_Set__r.Received_Confirm__c <> null and Cancel_Select__c = False order by Rental_Apply_Equipment_Set__r.Rental_Apply__r.Name, Rental_Apply_Equipment_Set__r.Name, Rental_Apply_Equipment_Set__c, Name ]; //esdList.clear(); Set newEsIds = new Set(); for (Rental_Apply_Equipment_Set_Detail__c esd : eList) { //boolean checked = checkedIds.contains(esd.Id); if (!esdIds.contains(esd.Id)) { EsdInfo ei = new EsdInfo(esd, showTab2); //EsdInfo ei = new EsdInfo(esd, true); if (String.isBlank(esd.Inspection_result_after__c) && String.isNotBlank(esd.Rental_Apply_Equipment_Set__r.Received_Confirm__c) && esd.Asset_return_time__c != null && esd.Arrival_in_wh__c != true) ei.editable = true; esdList.add(ei); //newEsIds.add(esd.Rental_Apply_Equipment_Set__c); } } //for (String esId : newEsIds) { // raesList.add(new EsInfo(esMap.get(esId))); //} //for (EsdInfo raesd : esdList) { // if (checkedIds.contains(raesd.rec.Id)) { // raesd.isChecked = true; // } //} return null; } // 画面初始化 public PageReference init() { done_flg = false; showTab2 = (Userinfo.getProfileId() == Label.ProfileId_EquipmentCenter || Label.ProfileId_EquCenCheckAndDepot.contains(Userinfo.getProfileId()) || Label.ProfileId_EquCenAdmin.contains(Userinfo.getProfileId()) || Userinfo.getProfileId() == Label.ProfileId_SystemAdmin); //showTab2 = false; isEquipmentCenter = (Userinfo.getProfileId() == Label.ProfileId_EquipmentCenter || Userinfo.getProfileId() == Label.ProfileId_SystemAdmin); //isEquipmentCenter=false; es = new Rental_Apply_Equipment_Set__c(); slip = new FixtureDeliverySlip__c(); esdList = new List(); //raesList = new List(); Map esMap = new Map(); saveBtnDisabled = false; ReturnRefuse = true; ErrorMessage = ''; crossRegion = ''; if (Id != null) { system.debug('==================='+Id); List ids = Id.split(','); // 当前User String userid = Userinfo.getUserId(); User user = [select Id,Name,UserRole.Name,OCM_man_province_Rental__c from User where Id = :userid]; List esList; esList = [select Rental_Apply__r.Loaner_centre_mail_address__c , Rental_Apply__r.Name, First_RAESD_Model_No_F__c , First_RAESD__r.SerialNumber_F__c , First_RAESD__r.Loaner_asset_no__c , Rental_Apply__c, Id, RAES_Status__c //wangweipeng 2021/09/01 SFDC-C4H4BM start , Rental_Apply__r.RecordType.Name , Rental_Apply__r.RecordType.Id , Rental_Apply__r.HP_received_sign_rich__c , Rental_Apply__r.Split_Apply_Reason__c , Rental_Apply__r.Root_Rental_Apply__c //wangweipeng 2021/09/01 SFDC-C4H4BM end , Name , Shippment_loaner_time2__c , Rental_Apply__r.Cross_Region_Assign__c , Rental_Apply__r.ToAgency__c , Rental_Apply__r.OwnerId from Rental_Apply_Equipment_Set__c where (Rental_Apply__r.Name in :ids or Id in :ids) //AND Cancel_Select__c = false order by Rental_Apply__r.Name, Id]; //if (Step_status == '追加') { // List ids = Id.split(':'); // esList = [select Rental_Apply__r.Name, First_RAESD_Model_No_F__c, First_RAESD__r.SerialNumber_F__c, First_RAESD__r.Loaner_asset_no__c, Rental_Apply__c, Id, RAES_Status__c, Name, Shippment_loaner_time__c // from Rental_Apply_Equipment_Set__c where (Rental_Apply__r.Name in :ids or Id in :ids) // AND Cancel_Select__c = false // order by Rental_Apply__r.Name, Id]; //} else { // // 备品set // esList = [select Rental_Apply__r.Name, First_RAESD_Model_No_F__c, First_RAESD__r.SerialNumber_F__c, First_RAESD__r.Loaner_asset_no__c, Rental_Apply__c, Id, RAES_Status__c, Name, Shippment_loaner_time__c // from Rental_Apply_Equipment_Set__c // where (Rental_Apply__r.Name = :Id or Id = :Id) // AND Cancel_Select__c = false]; //} //if (Step_status == '明细') { slip.Wh_Staff__c = userid; slip.DeliveryType__c = '回寄'; //} //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) { String ra_RecordTypeId = DEVELOPERNAMEMAP.get('AgencyRequest').getRecordTypeId();//获取记录类型 ra_RecordTypeId = ra_RecordTypeId.substring(0,15); List owners = [SELECT OCM_man_province_Rental__c FROM User WHERE Id=:esList[0].Rental_Apply__r.OwnerId LIMIT 1]; if(owners.isEmpty()) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '申请者不存在!')); return null; } else { isSameCity = owners[0].OCM_man_province_Rental__c == esList[0].Rental_Apply__r.ToAgency__c; } boolean flag = false; for (Rental_Apply_Equipment_Set__c raes : esList) { //wangweipeng 2021/09/09 SFDC-C4H4BM start //判断 备品签收单上传记录 是否为空 if(String.isBlank(raes.Rental_Apply__r.HP_received_sign_rich__c)){ String recordTypeId = raes.Rental_Apply__r.RecordType.Id; recordTypeId = recordTypeId.substring(0,15); //判断记录类型是否为办事处,如果不是办事处证明当前借出备品单位主单,那么如果前端点击取消按钮时,跳转的id为当前借出备品单id if(!flag && ra_RecordTypeId != recordTypeId){ isAdvocateFollow = true;//提示信息区别 skipId = raes.Rental_Apply__c; flag = true; } if(!flag && ra_RecordTypeId == recordTypeId){//如果记录类型为办事处,当前单位从单,并且源申请单不为空,那么的跳转的id为从单的主单id,为空就跳转到当前借出备品单 if(String.isNotBlank(raes.Rental_Apply__r.Root_Rental_Apply__c)){ skipId = raes.Rental_Apply__r.Root_Rental_Apply__c; flag = true; }else{ isAdvocateFollow = true; skipId = raes.Rental_Apply__c; flag = true; } } if(!isMainReceivedSignRich){ isMainReceivedSignRich = true;//主单是否没有上传签收单,true 为没有上传 } } //wangweipeng 2021/09/09 SFDC-C4H4BM end esMap.put(raes.Id, raes); Raid = raes.Rental_Apply__c; // 跨区域分配 if (BPRegion == '') { if(String.isNotBlank(raes.Rental_Apply__r.ToAgency__c)) { BPRegion = raes.Rental_Apply__r.ToAgency__c; } else if (String.isNotBlank(raes.Rental_Apply__r.Loaner_centre_mail_address__c)) { String mail = raes.Rental_Apply__r.Loaner_centre_mail_address__c; if (mail == 'OCM_Asset@olympus.com.cn') { BPRegion = '北京 备品中心'; } else if (mail == 'OCM_AssetSH@olympus.com.cn') { BPRegion = '上海 备品中心'; } else if (mail == 'OCM_AssetGZ@olympus.com.cn') { BPRegion = '广州 备品中心'; } } } 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明细 List eList = [ select Lost_item_Memo_Final__c, Lost_item_Memo__c, Rental_Apply_Equipment_Set__r.Wei_loaner_arranged__c, Rental_Apply__r.Asset_return_ng_num__c, Rental_Apply_Equipment_Set__r.Final_reply_day__c, NoItemReturn__c, SerialNumber_F__c, Asset_return_time__c, Check_lost_Item_F__c, Rental_Apply_Equipment_Set__r.Received_ng_detail__c, Rental_Apply_Equipment_Set__r.Wei_Return_Finish__c, Rental_Apply_Equipment_Set__r.Received_Confirm__c, Check_lost_Item_Final__c, Return_DeliverySlip__c, Fixture_Name_F__c, Rental_Apply_Equipment_Set__r.Fixture_Set__r.Name, Rental_Apply_Equipment_Set__c, Fixture_QRCode_F__c, Loaner_asset_no__c, Rental_Apply_Equipment_Set__r.Rental_Apply__r.Name, 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__c, Arrival_in_wh__c, Asset__r.Pre_Reserve_RAES_Detail__c, Asset__r.Pre_Reserve_RAES_Detail__r.After_Inspection_time__c, Is_Body__c, CDSChargement__c, CDSType__c, Inspection_result_after_ng__c, Inspection_result_ng__c, Lost_item_giveup__c, Confirm_Lost_Date__c, CDS_complete__c, Loaner_accsessary__c from Rental_Apply_Equipment_Set_Detail__c where Rental_Apply_Equipment_Set__c in :esMap.keySet() and DeliverySlip__c <> null and Shipment_request_time2__c <> null //and Rental_Apply_Equipment_Set__r.Received_Confirm__c <> null and Cancel_Select__c = False order by Rental_Apply_Equipment_Set__r.Rental_Apply__r.Name, Rental_Apply_Equipment_Set__r.Name, Rental_Apply_Equipment_Set__c, Name ]; system.debug(eList); needCDS = false; String raesId = ''; for (Rental_Apply_Equipment_Set_Detail__c esd : eList) { EsdInfo ei = new EsdInfo(esd, showTab2); if (String.isBlank(esd.Inspection_result_after__c) && String.isNotBlank(esd.Rental_Apply_Equipment_Set__r.Received_Confirm__c) && esd.Asset_return_time__c != null && esd.Arrival_in_wh__c != true) ei.editable = true; esdList.add(ei); //if (raesId != (String)esd.Rental_Apply_Equipment_Set__c) { // EsInfo es = new EsInfo(esMap.get((String)esd.Rental_Apply_Equipment_Set__c)); // raesList.add(es); // raesId = esd.Rental_Apply_Equipment_Set__c; //} } //and Check_lost_Item__c = null and Return_DeliverySlip__c = null if (showTab2) { if (String.isBlank(Step_status)) { Step_status = '明细'; } } else { if (String.isBlank(Step_status)) { Step_status = '追加'; } } //if (String.isBlank(Step_status)) { // Step_status = '明细'; //} if (esdList.size() <= 0) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '没有备品set明细')); saveBtnDisabled = true; return null; } system.debug('=====' + Step_status); return null; } //wangweipeng 2021/09/09 SFDC-C4H4BM start //重定向到 public PageReference redirectPag(){ PageReference ref = new Pagereference('/' + skipId); ref.setRedirect(true); return ref; } //wangweipeng 2021/09/09 SFDC-C4H4BM end //// Step 切り替えボタン、发货前-检测 //public PageReference Shippment() { // Step_status = '运输单'; // return new PageReference('/apex/EquipmentSetShippmentReceived3?id=' + this.Id + '&type=' + this.SR_status + '&step=' + this.Step_status + '&open=' + this.open_type); //} // Step 切り替えボタン、发货前-检测 public PageReference ShippmentDetailAdd() { if (showTab2) Step_status = '明细'; Id uid = Userinfo.getUserId(); // slip.Wh_Staff__c = uid; //slip.DeliveryType__c = '回寄'; Set esIds = new Set(CheckedSetId.split(':')); List eList = new List(); List eList_dummy = new List(); //List eList2 = new List(); //if (!String.isBlank(CheckedId)) { // Set checkedIds = new Set(CheckedId.split(':')); // for (EsdInfo esd : esdList) { // boolean checked = checkedIds.contains(esd.rec.Id); // esd.isChecked = checked; // if (checked) { // if (String.isNotBlank(esd.rec.Check_lost_Item__c)) { // esd.rec.Lost_item_check_time__c = Datetime.now(); // esd.rec.Lost_item_check_staff__c = uid; // } // if (esd.rec.Check_lost_Item__c == '欠品') { // esd.rec.Return_DeliverySlip__c = null; // } // if (esd.rec.CDS_complete__c) { // esd.rec.CDS_complete_time__c = Datetime.now(); // esd.rec.CDS_staff__c = uid; // } // eList.add(esd.rec); // } // } //} if (slip.Id == null) { slip.Shippment_loaner_time__c = Datetime.now(); } boolean needDeliverySlip = false; boolean needDummyDeliverySlip = false; Set dummyNo = new Set(); for (EsdInfo esd : esdList) { //if (esd.rec.Check_lost_Item__c == '欠品') { // esd.rec.Return_DeliverySlip__c = null; // esd.rec.Lost_item_check_time__c = Datetime.now(); // esd.rec.Lost_item_check_staff__c = uid; // eList.add(esd.rec); //} else if (esd.rec.Check_lost_Item__c == 'Add') { // esd.rec.Check_lost_Item__c = null; // esd.isChecked = true; // eList.add(esd.rec); //} if (esIds.contains(esd.rec.Id)) { //esd.isChecked = true; if (esd.rec.Confirm_Lost_Date__c <> null) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '有确认遗失的保有设备不能回寄。')); Step_status = '追加'; done_flg = false; return null; } if (String.isBlank(esd.rec.Return_DeliverySlip__c) && !esd.rec.Lost_item_giveup__c && esd.rec.Check_lost_Item_F__c != '消耗') { needDeliverySlip = true; eList.add(esd.rec); } } if (esd.rec.NoItemReturn__c == true && String.isBlank(esd.rec.Return_DeliverySlip__c) && esd.rec.Check_lost_Item_F__c != '消耗' && !esd.rec.Lost_item_giveup__c) { needDummyDeliverySlip = true; eList_dummy.add(esd.rec); dummyNo.add(esd.rec.Rental_Apply_Equipment_Set__r.Rental_Apply__r.Name + '_Dummy'); } } //UnCheckedId = null; Map slip_dummy = new Map(); if (needDummyDeliverySlip) { List slipDs = [select Id, Name, DeliveryCompany_SlipNo__c,DeliveryType__c,Distributor_method__c,DeliveryCompany__c,Wh_Staff__c from FixtureDeliverySlip__c where Name in :dummyNo and DeliveryType__c = '回寄']; if (slipDs.size() > 0) { for (FixtureDeliverySlip__c dummy_slip : slipDs) { slip_dummy.put(dummy_slip.Name, dummy_slip); dummyNo.remove(dummy_slip.Name); } } if (dummyNo.size() > 0) { for (String dummy_name : dummyNo) { FixtureDeliverySlip__c dummy_slip = new FixtureDeliverySlip__c(); dummy_slip.Name = dummy_name; dummy_slip.DeliveryType__c = slip.DeliveryType__c; dummy_slip.Distributor_method__c = slip.Distributor_method__c; dummy_slip.DeliveryCompany__c = slip.DeliveryCompany__c; dummy_slip.Wh_Staff__c = slip.Wh_Staff__c; slip_dummy.put(dummy_name, dummy_slip); } } } Savepoint sp = Database.setSavepoint(); try { Datetime now = System.now(); if (needDeliverySlip) { //ControllerUtil.updRADeliverySlipDetail(slip); FixtureUtil.withoutUpsertObjects(new List{ slip }); for (Rental_Apply_Equipment_Set_Detail__c esd : eList) { esd.Return_DeliverySlip__c = slip.Id; esd.Asset_return_time__c = now; } //ControllerUtil.updRAEquipmentSetDetail(eList); if (!needDummyDeliverySlip) FixtureUtil.withoutUpsertObjects(eList); } if (needDummyDeliverySlip) { FixtureUtil.withoutUpsertObjects(slip_dummy.values()); for (Rental_Apply_Equipment_Set_Detail__c esd : eList_dummy) { FixtureDeliverySlip__c newslip = slip_dummy.get(esd.Rental_Apply_Equipment_Set__r.Rental_Apply__r.Name + '_Dummy'); esd.Return_DeliverySlip__c = newslip.Id; esd.Asset_return_time__c = System.now(); } if (!needDeliverySlip) { FixtureUtil.withoutUpsertObjects(eList_dummy); } else { eList.addAll(eList_dummy); FixtureUtil.withoutUpsertObjects(eList); } } searchSlip(); if (!showTab2) { done_flg = true; } else { done_flg = false; } } catch (Exception ex) { system.debug('=====' + ex.getMessage()); String msg = ex.getMessage(); if (msg != null && msg.contains('DUPLICATE_VALUE') && msg.contains('DeliveryCompany_SlipNo__c')) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '系统已存在相同的运输单。如果继续使用该运输单回寄,请输入运输单号检索,检索后再勾选配套回寄。')); } else { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ex.getMessage()+'( '+Step_status+' )')); } Database.rollback(sp); Step_status = '追加'; done_flg = false; return null; } return null; //return new PageReference('/apex/EquipmentSetShippmentReceived3?id=' + this.Id + '&step=' + this.Step_status); } // Step 切り替えボタン、发货-发货运输单号 等 public PageReference ShippmentAdd() { Step_status = '追加'; system.debug('========2esdList='+JSON.serialize(esdList)); //return new PageReference('/apex/EquipmentSetShippmentReceived3?id=' + this.Id + '&step=' + this.Step_status); return null; } public PageReference ShippmentDetail() { Step_status = '明细'; system.debug('========2esdList='+JSON.serialize(esdList)); //return new PageReference('/apex/EquipmentSetShippmentReceived3?id=' + this.Id + '&step=' + this.Step_status); return null; } public PageReference deleteDetail() { Rental_Apply_Equipment_Set_Detail__c updDetail = null; for (EsdInfo esd : esdList) { if (esd.rec.Id == UnCheckedId) { if (esd.hasSended) { esd.rec.Return_DeliverySlip__c = null; esd.rec.Asset_return_time__c = null; updDetail = esd.rec; } else { esd.isChecked = false; } } } UnCheckedId = null; if (updDetail != null) { Savepoint sp = Database.setSavepoint(); try { update updDetail; searchSlip(); } catch (Exception ex) { system.debug('=====' + ex.getMessage()); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ex.getMessage()+'( '+Step_status+' )')); Database.rollback(sp); return null; } } system.debug('========3esdList='+JSON.serialize(esdList)); return null; } // 保存按钮 public PageReference save() { //检查是否可以继续 String userid = Userinfo.getUserId(); List eList = new List(); Set assetIdForLockSet = new Set(); for (EsdInfo esdInfo : esdList) { if (esdInfo.isChecked && esdInfo.editable) { Rental_Apply_Equipment_Set_Detail__c esd = esdInfo.rec; if (String.isNotBlank(esd.Check_lost_Item_Final__c)) { //esd.Lost_item_check_staff_Final__c = userid; //esd.Lost_item_check_time_Final__c = system.now(); if (esd.Check_lost_Item_Final__c == '欠品' || esd.Check_lost_Item_Final__c == '消耗' ) { esd.Return_DeliverySlip__c = null; esd.CDS_complete__c = false; if (esd.Check_lost_Item_Final__c == '欠品') esd.NoItemReturn__c = false; //esd.Asset_return_time__c = null; } } else { esd.Lost_item_check_staff_Final__c = null; esd.Lost_item_check_time_Final__c = null; if (esd.Check_lost_Item__c == '欠品' || esd.Check_lost_Item__c == '消耗' ) { esd.Return_DeliverySlip__c = null; esd.CDS_complete__c = false; if (esd.Check_lost_Item__c == '欠品') esd.NoItemReturn__c = false; //esd.Asset_return_time__c = null; } if (String.isNotBlank(esd.Check_lost_Item__c)) { // OCM_OLY-435対応 //esd.Lost_item_check_staff__c = userid; //esd.Lost_item_check_time__c = system.now(); } else { esd.Lost_item_check_staff__c = null; esd.Lost_item_check_time__c = null; } } if (esd.Lost_item_giveup__c && esd.Check_lost_Item__c == null) { esd.Check_lost_Item__c = '欠品'; esd.Return_DeliverySlip__c = null; } if (esd.CDS_complete__c) { // OCM_OLY-435対応 //esd.CDS_complete_time__c = system.now(); //esd.CDS_staff__c = userid; } else { esd.CDS_complete_time__c = null; esd.CDS_staff__c = null; } eList.add(esd); assetIdForLockSet.add(esd.Asset__c); } } Boolean needSaveSet = false; Boolean needSaveDetail = false; Boolean needDeliverySlip = false; //for (Rental_Apply_Equipment_Set_Detail__c esd : eList) { // if (esd.Inspection_result__c <> null && esd.StockDown__c == false) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '备品set未下架,不能填写发货前检查结果')); // return null; // } //} if (Step_status == '明细') { needSaveDetail = true; } List assetIdForLockList = [SELECT Id FROM Asset WHERE Id = :assetIdForLockSet AND Asset_loaner_category__c != '耗材' AND RecordTypeId =:System.label.access_1 FOR UPDATE]; Savepoint sp = Database.setSavepoint(); try { //if (needSaveDetail) ControllerUtil.updRAEquipmentSetDetail(eList); if (needSaveDetail) FixtureUtil.withoutUpsertObjects(eList); //PageReference ref = new Pagereference('/apex/EquipmentSetShippmentReceived4?id=' + Id); //ref.setRedirect(true); //return ref; done_flg = true; searchSlip(); 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 EsInfo { // public Rental_apply_equipment_Set__c rec { get; set; } // public boolean isChecked { get; set; } // public EsInfo(Rental_apply_equipment_Set__c rec, boolean checked) { // this.rec = rec; // this.isChecked = checked; // } // public EsInfo(Rental_apply_equipment_Set__c rec) { // this(rec, false); // } //} public class EsdInfo { public Rental_apply_equipment_Set_Detail__c rec { get; set; } public String imageAssetUploadedTime { get; set; } public String imageSerialUploadedTime { get; set; } // 回库はSet単位で、明細一つ一つのquickCheck要らない public boolean quickCheck { get; set; } public boolean isChecked { get; set; } public boolean hasSended { get; set; } public boolean editable { get; set; } public boolean overtime { get; set; } public boolean showRaesCheck {get;set;} public EsdInfo(Rental_apply_equipment_Set_Detail__c rec, boolean checked) { this.rec = rec; this.isChecked = checked; this.hasSended = false; this.editable = false; this.overtime = false; this.showRaesCheck = rec.Rental_Apply_Equipment_Set__r.Wei_Return_Finish__c > 0 && rec.Rental_Apply_Equipment_Set__r.Received_Confirm__c != null && rec.Rental_Apply_Equipment_Set__r.Wei_loaner_arranged__c == 0; if (rec.Rental_Apply__r.Asset_return_ng_num__c > 0 && rec.Rental_Apply_Equipment_Set__r.Received_Confirm__c != 'NG' && rec.Rental_Apply_Equipment_Set__r.Final_reply_day__c < system.today()) { this.overtime = true; } 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'); } } public EsdInfo(Rental_apply_equipment_Set_Detail__c rec) { this(rec, false); } } }