public without sharing class LoanerApplicationStockUpCheckController { // 基础Url public String baseUrl { get; private set; } // 样机借出申请ID public String laId { get; private set; } public loaner_application__c la { get; private set; } /* 画面步骤 * 下架:StockDown * */ public String step { get; private set; } // 明细Bean public List dataLines { get; set; } // 明细行数 public Integer getDatalineSize() { return dataLines == null ? 0 : dataLines.size(); } public LoanerApplicationStockUpCheckController() { 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,Status__c,Equipment_Type__c from loaner_application__c where Id = :laId]; if (laList.size() == 0) { return null; } la = laList[0]; // 样机借出申请明细取得 String sql_select = 'select Id,loaner_manage_place__c,StockUpRemark__c, SerialNumber__c, Internal_Asset_number__c, OTCODE__c, ECCode__c , Inspection_result_after__c,RAESD_Status__c,LOANER__c,LOANER__r.RecordType.Id,LOANER__r.Name,LOANER__r.Remarks2__c'; String sql_where = ' where loaner_application__c = :laId '; if (step == 'StockUpCheck') { 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); if (lads.size() == 0) { return null; } // 明细Bean作成 Integer cnt = 0; for (loaner_application_detail__c lad : lads) { cnt += 1; DataLineBean dataLine = new DataLineBean(cnt, lad); dataLines.add(dataLine); } return null; } public PageReference saveBtn() { // 根据step更新样机借出申请明细状态 List updList = new List(); List assList = new List(); if(dataLines.size()>0){ for (DataLineBean dataLine : dataLines) { if (dataLine.checkFlag == true) { loaner_application_detail__c lad = dataLine.lad; Asset loa = new Asset(id = lad.LOANER__c); if (step == 'StockUpCheck') { lad.Inspection_result_after__c = dataLine.lad.Inspection_result_after__c; lad.After_Inspection_Date__c = Date.today(); if('NG-修理' == dataLine.lad.Inspection_result_after__c){ if(lad.StockUpRemark__c == null || lad.StockUpRemark__c == ''){ ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '请填写NG-修理备注')); return null; } lad.RAESD_Status__c = '待修理'; if(lad.LOANER__r.RecordType.Id == System.label.Asset_Record_Type1){ loa.status = '待修理'; if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' || la.Equipment_Type__c == 'IE' || la.Equipment_Type__c == 'BS'){ loa.Rental_Customer__c = null; loa.Rental_Start_Date__c = null; loa.Rental_end_Date__c = null; loa.Loaner__c = null; if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' ){ loa.loaner_place__c = lad.loaner_manage_place__c; } } } }else if('NG-废弃' == dataLine.lad.Inspection_result_after__c){ if(lad.StockUpRemark__c == null || lad.StockUpRemark__c == ''){ ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '请填写NG-废弃备注')); return null; } lad.StockUp__c = true; lad.Arrival_wh_Date__c = Date.today(); lad.RAESD_Status__c = '待废弃'; if(lad.LOANER__r.RecordType.Id == System.label.Asset_Record_Type1){ loa.status = '待废弃'; if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' || la.Equipment_Type__c == 'IE' || la.Equipment_Type__c == 'BS'){ loa.Rental_Customer__c = null; loa.Rental_Start_Date__c = null; loa.Rental_end_Date__c = null; loa.Loaner__c = null; if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' ){ loa.loaner_place__c = lad.loaner_manage_place__c; } } } }else if('Ok' == dataLine.lad.Inspection_result_after__c){ lad.StockUp__c = true; lad.Arrival_wh_Date__c = Date.today(); lad.RAESD_Status__c = '已回库'; if(lad.LOANER__r.RecordType.Id == System.label.Asset_Record_Type1){ loa.status = '在库'; if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' || la.Equipment_Type__c == 'IE' || la.Equipment_Type__c == 'BS'){ loa.Rental_Customer__c = null; loa.Rental_Start_Date__c = null; loa.Rental_end_Date__c = null; loa.Loaner__c = null; if(la.Equipment_Type__c== 'NDT' || la.Equipment_Type__c == 'ANI' ){ loa.loaner_place__c = lad.loaner_manage_place__c; } } } }else{ ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '请选择上架检查状态')); return null; } } updList.add(lad); if(lad.LOANER__r.RecordType.Id == System.label.Asset_Record_Type1){ assList.add(loa); } } } Savepoint sp = Database.setSavepoint(); try { if (updList.size() > 0) { if(la.Status__c != '完毕'/* && la.Status__c != '全部回收'*/){ System.debug(la.Status__c); la.Status__c = LoanerOrderState.getOrderStater(la.Id); System.debug(la.Status__c); update la; } update updList; update assList; }else{ ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '请选择上架检查的样机')); return null; } } catch (Exception ex) { Database.rollback(sp); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ex.getMessage() + ' | Line:' + ex.getLineNumber())); return null; } } // 返回样机借出申请画面 String url = baseUrl; url += '\\' + laId; return new Pagereference(url); } public PageReference cancelBtn() { // 返回样机借出申请画面 String url = baseUrl; url += '\\' + laId; return new Pagereference(url); return null; } public class DataLineBean { // 是否选择 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) { checkFlag = false; lineNo = in_no; lad = in_lad; } } }