public with sharing class NewDiagnosisPartController { public Diagnosis_Part__c diagnosisPart {get; set;} public String swoId {get; set;} public String diagnosisPartId {get; set;} public String baseUrl { get; set; } public String rtUrl { get; set; } public Boolean pageClose{ get; set; } public Boolean DELIVERED_isCheck{get;set;} public Boolean RETURNED_isCheck{get;set;} public NewDiagnosisPartController() { swoId = System.currentPageReference().getParameters().get('swoId'); diagnosisPartId = System.currentPageReference().getParameters().get('id'); } public NewDiagnosisPartController(ApexPages.StandardController controller) { swoId = System.currentPageReference().getParameters().get('swoId'); diagnosisPartId = System.currentPageReference().getParameters().get('id'); 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'; } rtUrl = System.currentPageReference().getParameters().get('retURL'); } public void init() { DELIVERED_isCheck = false; RETURNED_isCheck = false; if (String.isNotBlank(diagnosisPartId)) { Schema.DescribeSobjectResult repairPartType = Diagnosis_Part__c.sObjectType.getDescribe(); Map repairPart_fields = repairPartType.fields.getMap(); String soql_repair = 'select '; String fields = ''; for (String field : repairPart_fields.keySet()) { if (fields.length() > 0) { fields += ', '; } fields += field; } soql_repair += fields; soql_repair += ' from Diagnosis_Part__c where Id = \'' + diagnosisPartId + '\''; diagnosisPart = Database.query(soql_repair); DELIVERED_isCheck = diagnosisPart.DELIVERED__c; RETURNED_isCheck = diagnosisPart.RETURNED__c; } else { diagnosisPart = new Diagnosis_Part__c(); } if (String.isNotBlank(swoId)) { diagnosisPart.SWO__c = swoId; } } public void save() { Boolean isSave = true; if(diagnosisPart.DELIVERED__c == false && DELIVERED_isCheck == true){ diagnosisPart.DELIVERED__c.addError('DELIVERED 不允许取消勾选'); isSave = false; } if(diagnosisPart.RETURNED__c == false && RETURNED_isCheck == true){ diagnosisPart.RETURNED__c.addError('RETURNED 不允许取消勾选'); isSave = false; } if(!isSave){ return; } String productId = diagnosisPart.Product__c; if (String.isNotBlank(productId)) { Product2 product = [SELECT Id, Name, Product_ECCode__c, Description FROM Product2 WHERE Id = :productId limit 1]; diagnosisPart.PART_NUMBER__c = product.Product_ECCode__c; diagnosisPart.DESCRIPTION__c = product.Description; } pageClose = false; if (diagnosisPart.DELIVERED__c == false && String.isBlank(diagnosisPart.Id)) { Boolean isUpdateSwo = false; List swoList = [select Id,Diagnose_part_not_delievered_1__c,Diagnose_part_not_delievered_2__c,Diagnose_part_not_delievered_3__c from SWO__c where Id=:diagnosisPart.SWO__c]; System.debug('swoList.size():'+swoList.size()); if (swoList!=null && swoList.size()!=0) { SWO__c swo = swoList[0]; if(String.isBlank(swo.Diagnose_part_not_delievered_1__c)){ isUpdateSwo = true; swo.Diagnose_part_not_delievered_1__c = diagnosisPart.PART_NUMBER__c; }else if(String.isBlank(swo.Diagnose_part_not_delievered_2__c)){ isUpdateSwo = true; swo.Diagnose_part_not_delievered_2__c = diagnosisPart.PART_NUMBER__c; }else if(String.isBlank(swo.Diagnose_part_not_delievered_3__c)){ isUpdateSwo = true; swo.Diagnose_part_not_delievered_3__c = diagnosisPart.PART_NUMBER__c; } System.debug('swo.Id:'+swo.Id); if(isUpdateSwo) update swo; } } upsert diagnosisPart; pageClose = true; System.debug('id:' + diagnosisPart.Id); diagnosisPartId = diagnosisPart.Id; return; } public PageReference deleteAction() { if (String.isNotBlank(diagnosisPart.Id)) { delete diagnosisPart; } return ReturnSWO(); } public PageReference ReturnSWO() { String swoId = diagnosisPart.SWO__c; String url = '/apex/SWOPage?id=' + swoId + '&type=Diagnosis'; PageReference ref = new Pagereference(url); ref.setRedirect(true); return ref; } }