public without sharing class LoanerLendDeliverController { // 基础Url public String baseUrl { get; private set; } // 样机借出申请ID public String laId { get; private set; } public loaner_application__c lac {get;private set;} public loaner_application__c la { get; private set; } public Set laSet {get; private set;} /* 画面步骤 * 下架:StockDown * */ public String step { get; private set; } // 明细Bean public List dataLines { get; set; } public List lad1s {get; private set;} // 明细行数 public Integer getDatalineSize() { return dataLines == null ? 0 : dataLines.size(); } public LoanerLendDeliverController() { laId = System.currentPageReference().getParameters().get('id'); step = System.currentPageReference().getParameters().get('step'); } public PageReference init() { // 基础Url baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); String path = URL.getCurrentRequestUrl().getPath(); if (path.indexOf('/apex') > 0) { baseUrl += path.substring(0,path.indexOf('/apex')); } else if (path.indexOf('production/') > 0) { baseUrl += '/production'; } // 明细Bean dataLines = new List(); if (String.isBlank(laId) == true) { return null; } if (String.isBlank(step) == true) { return null; } // 样机借出申请取得 List laList = [select Id,Return_Trake_Staff__c,Return_Track_Company__c,Return_Track_Number__c,Status__c,Equipment_Type__c from loaner_application__c where Id = :laId]; if (laList.size() == 0) { return null; } la = laList[0]; lac = new loaner_application__c(); User temp = [select id,Name from User where id = :UserInfo.getUserId()]; lac.Return_Trake_Staff__c = temp.Name; List benId = new List(); // 样机借出申请明细取得 String sql_select = 'select Id,loaner_application__c, SerialNumber__c, Receipt_Status__c,Internal_Asset_number__c, OTCODE__c, ECCode__c,LOANER__c,LOANER__r.RecordType.Id,loaner_application__r.Loaner_AgreementPDF__c,LOANER__r.Name,LOANER__r.Remarks2__c'; String sql_where = ' where loaner_application__c = :laId '; if (step == 'LoanerLend') { sql_where += ' and RAESD_Status__c in (\'申请者已收货\',\'申请者已装机确认\')'; } else { return null; } String sql_full = sql_select + ' from loaner_application_detail__c ' + sql_where; List lads = Database.query(sql_full); System.debug('========1========'+lads); if (lads.size() == 0) { return null; }else{ for(loaner_application_detail__c loan : lads){ benId.add(loan.id); } } //获取记录该信息的明细 lad1s = [select Id,loaner_Agent__c,loaner_application__r.loaner_request_number__c ,loaner_application__r.Owner.Name,LendPrimary_Name__c,SerialNumber__c, Internal_Asset_number__c, OTCODE__c, ECCode__c,LOANER__c,loaner_application__c,LOANER__r.RecordType.Id,loaner_application__r.Loaner_AgreementPDF__c,loaner_application__r.pickup_time__c,loaner_application__r.Agent__c,loaner_application__r.Rental_Start_Date__c,loaner_application__r.Rental_end_Date__c from loaner_application_detail__c where LendPrimary_Name__c = :benId and RAESD_Status__c = '已批准']; List lad2s = new List(); System.debug('==========2======='+lad1s); if(lad1s.size() == 0){ return null; } Integer cnt = 0; for(loaner_application_detail__c i : lad1s){ for(loaner_application_detail__c j : lads){ if(j.id == i.LendPrimary_Name__c){ System.debug('==============3========='+i.LendPrimary_Name__c); lad2s.add(j); cnt += 1; System.debug('转借代理商:'+i.loaner_Agent__c); //DataLineBean dataLine = new DataLineBean(cnt, j,i.loaner_application__r.Loaner_AgreementPDF__c == true ? '已上传' : '未上传'); DataLineBean dataLine = new DataLineBean(cnt, j,i.loaner_application__r.Loaner_AgreementPDF__c,i.loaner_Agent__c,i.loaner_application__r.loaner_request_number__c); dataLines.add(dataLine); } } } // 明细Bean作成 /* Integer cnt = 0; for (loaner_application_detail__c lad : lad2s) { cnt += 1; DataLineBean dataLine = new DataLineBean(cnt, lad); dataLines.add(dataLine); } */ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, String.valueOf(lad1s))); return null; } public PageReference saveBtn() { laSet = new Set(); List updList = new List(); List assList = new List(); Integer count = 0; boolean pickupFalg = false; if(dataLines.size() >0){ Loaner_Express__c le = this.createExpress('发货'); Loaner_Express__c rle = this.createExpress('回寄'); for (DataLineBean dataLine : dataLines) { if (dataLine.checkFlag == true) { if(dataLine.PDFflag == false){ ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '借用方未上传借用协议,不能进行转借发货。')); if(le != null ){ delete le; le = null; } if(rle != null){ delete rle; rle = null; } return null; } loaner_application_detail__c lad = dataLine.lad; if(lad.Receipt_Status__c != 'OK' && lad.Receipt_Status__c == null){ lad.Receipt_Status__c = 'OK'; lad.Receipt_Date__c = Date.today(); } //发货方明细 //日期 lad.Asset_Return_Date__c = Date.today(); lad.Received_loaner_Date__c = Date.today(); lad.After_Inspection_Date__c = Date.today(); lad.Arrival_wh_Date__c = Date.today(); lad.inTime__c = Datetime.now(); lad.RAESD_Status__c = '已回库'; //上架检查 lad.StockUp__c = true; lad.Check_lost_Item__c = 'OK'; lad.Inspection_result_after__c = 'OK'; for(loaner_application_detail__c temp : lad1s){ if(temp.LendPrimary_Name__c == lad.id){ //收货方明细 temp.StockDown__c = true; temp.outTime__c = Datetime.now(); temp.StockDown_Date__c = Date.today(); temp.Shipment_Request_Date__c = Date.today(); temp.Pre_inspection_Date__c = Date.today(); temp.Inspection_result__c ='OK'; if(temp.loaner_application__r.pickup_time__c == null){ if(lac.Return_Track_Company__c == null || lac.Return_Track_Company__c == ''){ ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '请填写物流公司')); if(le != null ){ delete le; le = null; } if(rle != null){ delete rle; rle = null; } return null; } if(lac.Return_Trake_Staff__c == null || lac.Return_Trake_Staff__c == '' ){ ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '请填写发货人')); if(le != null ){ delete le; le = null; } if(rle != null){ delete rle; rle = null; } return null; } temp.Loaner_Express__c = le.id; temp.delivery_company__c = lac.Return_Track_Company__c; temp.Tracking_Number__c = lac.Return_Track_Number__c; temp.RAESD_Status__c = '已出库'; //发货方明细回寄物流信息 lad.Return_Trake_Staff__c = lac.Return_Trake_Staff__c; lad.Return_Track_Number__c = lac.Return_Track_Number__c; lad.Return_Track_Company__c = lac.Return_Track_Company__c; lad.Return_Express__c = rle.id; if(temp.LOANER__r.RecordType.Id == System.label.Asset_Record_Type1){ if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' || la.Equipment_Type__c == 'BS'){ Asset loa = new Asset(id = lad.LOANER__c); loa.Loaner__c = temp.loaner_application__r.Owner.Name; loa.Rental_Customer__c = temp.loaner_application__r.Agent__c; loa.Rental_Start_Date__c = temp.loaner_application__r.Rental_Start_Date__c; loa.Rental_end_Date__c = temp.loaner_application__r.Rental_end_Date__c; assList.add(loa); } } if(laSet.size()>1){ ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '您选择的样机不只属于一个转借单')); if(le != null ){ delete le; le = null; } if(rle != null){ delete rle; rle = null; } return null; } updList.add(temp); updList.add(lad); laSet.add(temp.loaner_application__c); count++; }else{ lad.Return_Trake_Staff__c = lac.Return_Trake_Staff__c; temp.Receipt_Status__c = 'OK'; temp.Receipt_Date__c = Date.today(); temp.RAESD_Status__c = '申请者已收货'; if(temp.LOANER__r.RecordType.Id == System.label.Asset_Record_Type1){ if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' || la.Equipment_Type__c == 'BS'){ Asset loa = new Asset(id = lad.LOANER__c); loa.Rental_Customer__c = temp.loaner_application__r.Agent__c; loa.Rental_Start_Date__c = temp.loaner_application__r.Rental_Start_Date__c; loa.Rental_end_Date__c = temp.loaner_application__r.Rental_end_Date__c; assList.add(loa); } } if(laSet.size()>1){ ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '您选择的样机不只属于一个转借单')); if(le != null ){ delete le; le = null; } if(rle != null){ delete rle; rle = null; } return null; } pickupFalg = true; updList.add(temp); updList.add(lad); laSet.add(temp.loaner_application__c); if(le != null ){ delete le; le = null; } if(rle != null){ delete rle; rle = null; } } } } } } if(!pickupFalg){ User temp = [select id,Name from User where id = :UserInfo.getUserId()]; rle.Return_Sender__c = lac.Return_Trake_Staff__c; rle.Asset_Return_Date__c = Date.today(); rle.Return_LogisticsCompany__c = lac.Return_Track_Company__c; rle.Return_LogisticsNumber__c = lac.Return_Track_Number__c; rle.LendOrder__c = le.id; rle.IsLendOrder__c = true; rle.loaner_application__c = dataLines[0].lad.loaner_application__c; le.Consignor_LogisticsNumber__c = lac.Return_Track_Number__c; le.Consignor_LogisticsCompany__c =lac.Return_Track_Company__c; le.consignor__c = temp.id; le.Shipment_Request_Date__c = Date.today(); le.NotReceivingNum__c = count; le.IsLendOrder__c = true; le.loaner_application__c = lad1s[0].loaner_application__c; } Savepoint sp = Database.setSavepoint(); try { if (updList.size() > 0) { update updList; if(la.Status__c != '完毕'){ la.Status__c = LoanerOrderState.getOrderStater(la.Id); if(la.Status__c == '全部回寄') la.Asset_Return_Date_All__c = Date.today(); if(la.Status__c == '全部回收'){ la.Asset_Return_Date_All__c = Date.today(); la.LoanerClosedDateAll__c = Date.today(); if (la.Equipment_Type__c == 'NDT' || la.Equipment_Type__c == 'ANI') { PrototypeToThaw.UserUnfreeze(la.Id); } } la.Asset_Return_Date_All__c = Date.today(); update la; } List templa = new List(); for(String loanerId : laSet){ loaner_application__c newla = new loaner_application__c(); newla.id = loanerId; newla.Status__c = LoanerOrderState.getOrderStater(loanerId); if(newla.Status__c == '部分发货') newla.Shipping_Finished_Date__c = Date.today(); if(newla.Status__c == ' 全部发货' || newla.Status__c == '申请者已收货'){ newla.Shipping_Finished_Date__c = Date.today(); newla.Shipping_Finished_Date_All__c = Date.today(); } templa.add(newla); } update templa; if(!pickupFalg){ update le; update rle; } if(assList.size()>0){ update assList; } }else{ if(le != null ){ delete le; le = null; } if(rle != null){ delete rle; rle = null; } ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '请选择出库的样机')); return null; } } catch (Exception ex) { Database.rollback(sp); if(le != null ){ delete le; le = null; } if(rle != null){ delete rle; rle = null; } ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ex.getMessage() + ' | Line:' + ex.getLineNumber())); return null; } } //return null; // 返回样机借出申请画面 String url = baseUrl; url += '\\' + laId; return new Pagereference(url); } public Loaner_Express__c createExpress(String str){ Date temp = Date.today(); Loaner_Express__c le = new Loaner_Express__c(); le.loaner_application__c = laId; le.Name = temp.day()+ '日'+str+'物流单'; if(str.equals('回寄')) le.IsDeliveryLogistics__c = false; try{ insert le; }catch(Exception ex){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ex.getMessage() + ' | Line:' + ex.getLineNumber())); } return le; } public PageReference cancelBtn() { // 返回样机借出申请画面 String url = baseUrl; url += '\\' + laId; return new Pagereference(url); } public class DataLineBean { //转借单号 public String num{get;set;} //转借代理商 public String ltc{get;set;} // public String PDFflag {get; set;} public boolean PDFflag{get; set;} // 是否选择 public boolean checkFlag { get; set; } // 行号 public Integer lineNo { get; private set; } // 样机借出申请明细 public loaner_application_detail__c lad { get; set; } //public DataLineBean(Integer in_no, loaner_application_detail__c in_lad,String in_PDFflag) { public DataLineBean(Integer in_no, loaner_application_detail__c in_lad,boolean in_PDFflag,String in_ltc,String in_num) { PDFflag = in_PDFflag; checkFlag = false; lineNo = in_no; lad = in_lad; ltc = in_ltc; num = in_num; } } public PageReference sos() { Integer i=1; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; return null; } }