/* *@Description: *@Author: Dennis Rodman *@Date: 2022-03-10 10:26:47 */ global without sharing class NewRepairController { public String layoutSectionsStr {get; set;}//for dynamic add readonly attribute public List layoutSections{set;get;} public String awsToken{set;get;} public static Map schemaMap = Schema.getGlobalDescribe(); public static String sobjectTypeValue = 'Repair__c'; public Boolean isNewMode{set;get;} public String rtTypeId {get; set;} public String AWSDataId{set;get;} public String DecryptAWSDataId{set;get;} public String ContactAWSDataId{set;get;} public List encryptedAPIList{set;get;} // 当前页面中的加密字段集合 public List layoutEncryptedAPIList{private set;get;} public String staticResource {get; set;} public String staticResourceContact {get; set;} public String staticResourceAddress {get; set;} public String requiredFieldAPIListStr {get; set;} public String fieldAPIToLabelMapStr {get; set;} public String Input_Required_Field_Msg{set;get;} public String PIPL_Name_Label{set;get;} public String PIPL_Input_Account_Error_Msg{set;get;} public String sobjectPrefix{set;get;} public String sobjecttypeForFrontEnd{set;get;} public String sobjectId{set;get;} public String workLocationSelect{set;get;} public String RepairSubOrderAWSDataId{set;get;} public String staticResourceRepairSubOrder{set;get;} public String VLookUpFieldsJson{get;private set;} //zhj MEBG新方案改造 2022-11-29 start public String staticResourceV2 {get; set;} //zhj MEBG新方案改造 2022-11-29 end public NewRepairController(ApexPages.StandardController controller) { sobjectId = [SELECT CustomObjectId,CustomObjectName FROM CustomObjectUserLicenseMetrics where CustomObjectName ='Repair' limit 1].CustomObjectId; isNewMode = true; Input_Required_Field_Msg = Label.Input_Required_Field_Msg; PIPL_Name_Label = Label.PIPL_Name_Label; PIPL_Input_Account_Error_Msg = label.PIPL_Input_Account_Error_Msg; sobjecttypeForFrontEnd = sobjectTypeValue; layoutEncryptedAPIList = new List(); //获取所有字段 List fieldList = new List(Schema.getGlobalDescribe().get('Repair__c').getDescribe().fields.getMap().keyset()); // Add fields to controller. This is to avoid the SOQL error in visualforce page if(!Test.isRunningTest()){ controller.addFields(fieldList); } SObject obj = controller.getRecord(); System.debug(LoggingLevel.INFO, '*** obj: ' + obj); if(obj.Id != null){ //更新 isNewMode = false; Repair__c repairData = [select Id,RecordTypeId,AWS_Data_Id__c,Address_AWS_Data_Id__c,Contact_AWS_Data_Id__c,Address_Contacts_Encrypt__c,Address_Contacts_Name_Encrypt__c,Address_Telephone_Encrypt__c,Address_ZipCode_Encrypt__c,Detailed_Address_Encrypt__c from Repair__c where id =: obj.Id]; rtTypeId = repairData.RecordTypeId; AWSDataId = repairData.AWS_Data_Id__c; DecryptAWSDataId = String.valueOf(repairData.Address_AWS_Data_Id__c); ContactAWSDataId = String.valueOf(repairData.Contact_AWS_Data_Id__c); }else{ //新建 // //修理品返送地 // if(mso.containsKey('00N10000006P6SM')){ // controller.getRecord().put('SalesOfficeCode_selection__c',mso.get('00N10000006P6SM')); // } // if(mso.containsKey('00N10000002FH86')){ // //controller.getRecord().put('On_site_repair__c',mso.get('00N10000002FH86')); // //Repair_Source__c // controller.getRecord().put('Repair_Source__c',mso.get('00N10000002FH86')); // } // if(mso.containsKey('00N10000006P6Rn')){ // controller.getRecord().put('work_location_select__c',mso.get('00N10000006P6Rn')); // workLocationSelect = mso.get('00N10000006P6Rn'); // System.debug('workLocationSelect = ' + workLocationSelect); // } // //问题内容描述00N10000002Dx6I // if(mso.containsKey('00N10000002Dx6I')){ // controller.getRecord().put('Repair_Detail__c',mso.get('00N10000002Dx6I')); // } // //问题联络收到日00N10000008rsVQ // if(mso.containsKey('00N10000008rsVQ')){ // String o = mso.get('00N10000008rsVQ'); // controller.getRecord().put('DateReceiptQuestions__c',(String.isBlank(o)||String.isEmpty(o))? null:Date.valueOf(o.replace('/', '-'))); // } // //是否有死亡、伤害、感染00N10000008rsW7 // if(mso.containsKey('00N10000008rsW7')){ // controller.getRecord().put('ifDeadHurt__c',mso.get('00N10000008rsW7')); // } // //是否和这次的产品故障有关00N10000008rsVw // if(mso.containsKey('00N10000008rsVw')){ // controller.getRecord().put('ProductFailureRelated__c',mso.get('00N10000008rsVw')); // } // //医院有没有向政府机关报告不良事件或疑似不良事件00N10000008rsW2 // if(mso.containsKey('00N10000008rsW2')){ // controller.getRecord().put('ReportAdverseEvents__c',mso.get('00N10000008rsW2')); // } // //做的是哪个项目00N10000008rsW6 // if(mso.containsKey('00N10000008rsW6')){ // controller.getRecord().put('WhatProject__c',mso.get('00N10000008rsW6')); // } // //手术/检查名称00N10000008rsVk // if(mso.containsKey('00N10000008rsVk')){ // controller.getRecord().put('OperationOrExaminationName__c',mso.get('00N10000008rsVk')); // } // //是否有发生断裂或脱落00N10000008rsVN // if(mso.containsKey('00N10000008rsVN')){ // controller.getRecord().put('BreakORFallOff__c',mso.get('00N10000008rsVN')); // } // //配套使用产品00N10000008rsW4 // if(mso.containsKey('00N10000008rsW4')){ // controller.getRecord().put('SupportingProducts__c',mso.get('00N10000008rsW4')); // } // //发现故障后,医院对患者的处理情况00N10000008rsVL // if(mso.containsKey('00N10000008rsVL')){ // controller.getRecord().put('AfterFailureInformation__c',mso.get('00N10000008rsVL')); // } // //发现故障现象后,有延误15分钟以上的手术实施的情况发生吗00N10000008rsVR // if(mso.containsKey('00N10000008rsVR')){ // controller.getRecord().put('Delay15Min__c',mso.get('00N10000008rsVR')); // } // //信息是从医院的谁那里得到的00N10000008rsVZ // if(mso.containsKey('00N10000008rsVZ')){ // controller.getRecord().put('InformationFrom__c',mso.get('00N10000008rsVZ')); // } // //在医院,故障发生的频率是多少00N10000008rsVT // if(mso.containsKey('00N10000008rsVT')){ // controller.getRecord().put('FailureQInHospital__c',mso.get('00N10000008rsVT')); // } // //问题发生时间情况00N10000008rsVv // if(mso.containsKey('00N10000008rsVv')){ // controller.getRecord().put('ProblemOccurred__c',mso.get('00N10000008rsVv')); // } // //是否用该产品完成了手术/检查00N10000008rsW5 // if(mso.containsKey('00N10000008rsW5')){ // if(mso.get('00N10000008rsW5') != 'undefined'){ // controller.getRecord().put('UseFailProductFinish__c',mso.get('00N10000008rsW5')); // } // } // //故障发生日00N10000002Dx5y // if(mso.containsKey('00N10000002Dx5y')){ // String o = mso.get('00N10000002Dx5y'); // controller.getRecord().put('Failure_Occurrence_Date__c',(String.isBlank(o)||String.isEmpty(o))? null:Date.valueOf(o.replace('/', '-'))); // } // //修理委托者(FSE)CF00N10000002EMHw_lkid 问题 // if(mso.containsKey('CF00N10000002EMHw_lkid')){ // controller.getRecord().put('Incharge_Staff__c',mso.get('CF00N10000002EMHw_lkid')); // } // //原修理受付番号00N1m000005gt1l 问题 // if(mso.containsKey('00N1m000005gt1l')){ // controller.getRecord().put('Old_Name__c',mso.get('00N1m000005gt1l')); // } // //设备型号CF00N10000002Dx1X_lkid // if(mso.containsKey('CF00N10000002Dx1X_lkid')){ // controller.getRecord().put('Delivered_Product__c',mso.get('CF00N10000002Dx1X_lkid')); // } // //维修委托书号码00N10000006P1dw // if(mso.containsKey('00N10000006P1dw')){ // controller.getRecord().put('PaperRepairRequestNo__c',mso.get('00N10000006P1dw')); // } // //市场多年保修 有偿/无偿修理00N10000008rG4p // if(mso.containsKey('00N10000008rG4p')){ // controller.getRecord().put('RepairCostType__c',mso.get('00N10000008rG4p')); // } // //服务方式00N10000002F6dW // if(mso.containsKey('00N10000002F6dW')){ // controller.getRecord().put('On_site_repair__c',mso.get('00N10000002F6dW')); // } // //返品方式00N1m000004QmcJ 问题 // if(mso.containsKey('00N1m000004QmcJ')){ // controller.getRecord().put('Returns_Product_way__c',mso.get('00N1m000004QmcJ')); // } // //问题内容描述(图片)00N10000008rsVuEAI 问题 // if(mso.containsKey('00N10000008rsVuEAI')){ // controller.getRecord().put('ProblemDescription__c',mso.get('00N10000008rsVuEAI')); // } // //如果是测试环境 问题 // Boolean isTest = NFMUtil.isSandbox(); // //报修人00N1m0000054ufW // String RepairApplicant = isTest==true?'00N1m0000054ufW':'00N10000009H1rQ'; // if(mso.containsKey(RepairApplicant)){ // controller.getRecord().put('RepairApplicant__c',mso.get(RepairApplicant)); // } // //报修人医院00N1m0000054ufU // String RepairApplicantHospital = isTest==true?'00N1m0000054ufU':'00N10000009H1rP'; // if(mso.containsKey(RepairApplicantHospital)){ // controller.getRecord().put('RepairApplicantHospital__c',mso.get(RepairApplicantHospital)); // } // //报修人科室00N1m0000054ufT // String RepairApplicantDepartment = isTest==true?'00N1m0000054ufT':'00N10000009H1rO'; // if(mso.containsKey(RepairApplicantDepartment)){ // controller.getRecord().put('RepairApplicantDepartment__c',mso.get(RepairApplicantDepartment)); // } // //报修子单CF00N1m0000054ufZ_lkid // String RepairSubOrder = isTest==true?'CF00N1m0000054ufZ_lkid':'CF00N10000009H1rR_lkid'; // if(mso.containsKey(RepairSubOrder)){ // controller.getRecord().put('RepairSubOrder__c',mso.get(RepairSubOrder)); // //查询AWSDataId // List rso = [select AWS_Data_Id__c from RepairSubOrder__c where Id=:mso.get(RepairSubOrder)]; // if(rso.size() > 0){ // RepairSubOrderAWSDataId = rso[0].AWS_Data_Id__c; // } // } // //报修发起日 // String RepairTime = isTest==true?'00N1m0000054ufa':'00N10000009H1rS'; // if(mso.containsKey(RepairTime)){ // String o = mso.get(RepairTime); // controller.getRecord().put('RepairTime__c',(String.isBlank(o)||String.isEmpty(o))? null:Date.valueOf(o.replace('/', '-'))); // } // //报修单受理日ReceiverTime__c // String ReceiverTime = isTest==true?'00N1m0000054ufS':'00N10000009H1rN'; // if(mso.containsKey(ReceiverTime)){ // String o = mso.get(ReceiverTime); // controller.getRecord().put('ReceiverTime__c',(String.isBlank(o)||String.isEmpty(o))? null:Date.valueOf(o.replace('/', '-'))); // } // //计划上门日 // String PlannedVisitDay = isTest==true?'00N1m000005SRiF':'00N10000009H1rM'; // if(mso.containsKey(PlannedVisitDay)){ // String o = mso.get(PlannedVisitDay); // controller.getRecord().put('PlannedVisitDay__c',(String.isBlank(o)||String.isEmpty(o))? null:Date.valueOf(o.replace('/', '-'))); // } // //一次上门日 // String ActualVisitDateFirst = isTest==true?'00N1m000005SRiK':'00N10000009H1r6'; // if(mso.containsKey(ActualVisitDateFirst)){ // String o = mso.get(ActualVisitDateFirst); // controller.getRecord().put('ActualVisitDateFirst__c',(String.isBlank(o)||String.isEmpty(o))? null:Date.valueOf(o.replace('/', '-'))); // } // //二次上门日 // String ActualVisitDateSecond = isTest==true?'00N1m000005SRiP':'00N10000009H1r7'; // if(mso.containsKey(ActualVisitDateSecond)){ // String o = mso.get(ActualVisitDateSecond); // controller.getRecord().put('ActualVisitDateSecond__c',(String.isBlank(o)||String.isEmpty(o))? null:Date.valueOf(o.replace('/', '-'))); // } // //三次上门日 // String ActualVisitDateThird = isTest==true?'00N1m000005SRiU':'00N10000009H1r8'; // if(mso.containsKey(ActualVisitDateThird)){ // String o = mso.get(ActualVisitDateThird); // controller.getRecord().put('ActualVisitDateThird__c',(String.isBlank(o)||String.isEmpty(o))? null:Date.valueOf(o.replace('/', '-'))); // } // //移动端申请修理日 // String SubOrderCompleteDate = isTest==true?'00N1m000005SRmg':'00N10000009H1ri'; // if(mso.containsKey(SubOrderCompleteDate)){ // String o = mso.get(SubOrderCompleteDate); // controller.getRecord().put('SubOrderCompleteDate__c',(String.isBlank(o)||String.isEmpty(o))? null:Date.valueOf(o.replace('/', '-'))); // } // //报修单处理完成日 // String SubOrderCreatedDate = isTest==true?'00N1m000005SRmW':'00N10000009H1rj'; // if(mso.containsKey(SubOrderCreatedDate)){ // String o = mso.get(SubOrderCreatedDate); // controller.getRecord().put('SubOrderCreatedDate__c',(String.isBlank(o)||String.isEmpty(o))? null:Date.valueOf(o.replace('/', '-'))); // } // //送修物流方式00N1m0000054ufE // if(mso.containsKey('00N1m0000054ufE')){ // controller.getRecord().put('DeliveryLogisticsMode__c',mso.get('00N1m0000054ufE')); // } // //送修物流最新状态00N1m0000054ufk // if(mso.containsKey('00N1m0000054ufk')){ // controller.getRecord().put('LogisticsLatestStatus__c',mso.get('00N1m0000054ufk')); // } // //送修物流单号00N1m0000054ufF // if(mso.containsKey('00N1m0000054ufF')){ // controller.getRecord().put('DeliveryLogisticsNo__c',mso.get('00N1m0000054ufF')); // } // //送修物流信息备注00N1m0000054ufD // if(mso.containsKey('00N1m0000054ufD')){ // controller.getRecord().put('DeliveryLogisticsAnnotation__c',mso.get('00N1m0000054ufD')); // } // //超时报告的理由00N10000008rsVS // if(mso.containsKey('00N10000008rsVS')){ // controller.getRecord().put('DelayReportReason__c',mso.get('00N10000008rsVS')); // } Map mso = ApexPages.currentPage().getParameters(); system.debug('mso='+mso); AssignValueFromUrl(mso,controller.getRecord()); //通过id查 问题 //PIPL zhj 2022-11-11 start //从报修子单过来00N10000009H1rR if (mso.containsKey(System.label.repair_parameter_1)) { //niwu -CF00N10000009H1rR_lkid String repairSubOrderId = mso.get(System.label.repair_parameter_1); System.debug('repairSubOrderId = ' + repairSubOrderId); //查询AWSDataId List rso = [select AWS_Data_Id__c from RepairSubOrder__c where Id=:repairSubOrderId]; if(rso.size() > 0){ RepairSubOrderAWSDataId = rso[0].AWS_Data_Id__c; } } //PIPL zhj 2022-11-11 end List rc = new List(); system.debug('retURL=' + mso.containsKey('retURL')); if (mso.containsKey('retURL')) { String RepairId = mso.get('retURL').substring(1); System.debug('RepairId = ' + RepairId); rc = [select Hospital__c,Department_Class__c,Account__c,Dealer__c,Incharge_Staff_Contact__c,Incharge_Staff__c, RepairSubOrder__c,On_Call_ID__c,QIS_ID__c, InsReport__c,Rental_Apply_Equipment_Set_Detail__c from Repair__c where id =:RepairId ]; System.debug('rc = ' + rc); if(rc.size() > 0){ //医院 controller.getRecord().put('Hospital__c',rc[0].Hospital__c); //战略科室分类 controller.getRecord().put('Department_Class__c',rc[0].Department_Class__c); //科室 controller.getRecord().put('Account__c',rc[0].Account__c); //经销商名 controller.getRecord().put('Dealer__c',rc[0].Dealer__c); //修理委托者(员工) controller.getRecord().put('Incharge_Staff_Contact__c',rc[0].Incharge_Staff_Contact__c); //修理委托者(FSE) controller.getRecord().put('Incharge_Staff__c',rc[0].Incharge_Staff__c); //报修子单RepairSubOrder__c controller.getRecord().put('RepairSubOrder__c',rc[0].RepairSubOrder__c); //查询AWSDataId List rso = [select AWS_Data_Id__c from RepairSubOrder__c where Id=:rc[0].RepairSubOrder__c]; if(rso.size() > 0){ RepairSubOrderAWSDataId = rso[0].AWS_Data_Id__c; } //On-Call号码On_Call_ID__c controller.getRecord().put('On_Call_ID__c',rc[0].On_Call_ID__c); //QIS号码QIS_ID__c controller.getRecord().put('QIS_ID__c',rc[0].QIS_ID__c); //点检报告书InsReport__c controller.getRecord().put('InsReport__c',rc[0].InsReport__c); //借出备品配套一览明细Rental_Apply_Equipment_Set_Detail__c controller.getRecord().put('Rental_Apply_Equipment_Set_Detail__c',rc[0].Rental_Apply_Equipment_Set_Detail__c); } } rtTypeId = ApexPages.currentPage().getParameters().get('RecordType'); if(String.isBlank(rtTypeId)||String.isEmpty(rtTypeId)){ List rtList = new List([select Id,DeveloperName from RecordType where SobjectType ='Repair__c' and DeveloperName ='Repair']); rtTypeId = rtList[0].Id; } } System.debug(LoggingLevel.INFO, '*** rtTypeId: ' + rtTypeId); LayoutDescriberHelper.LayoutWrapper LayoutWrapperValue = LayoutDescriberHelper.describeSectionWithFieldsWrapper(rtTypeId, 'Repair__c','classic'); layoutSections = LayoutWrapperValue.layoutSections; System.debug(LoggingLevel.INFO, '*** layoutSections: ' + layoutSections); layoutSectionsStr = JSON.serialize(layoutSections); //for dynamic add readonly attribute List requiredFieldAPIList = LayoutWrapperValue.requiredFieldAPIList; Map fieldAPIToLabelMap = LayoutWrapperValue.fieldAPIToLabelMap; requiredFieldAPIListStr = JSON.serialize(requiredFieldAPIList); fieldAPIToLabelMapStr = JSON.serialize(fieldAPIToLabelMap); PIHelper.PIIntegration piIntegration = PIHelper.getPIIntegrationInfo('Repair__c'); PIHelper.PIIntegration piIntegrationAddress = PIHelper.getPIIntegrationInfo('Address__c'); PIHelper.PIIntegration piIntegrationContact = PIHelper.getPIIntegrationInfo('Contact'); PIHelper.PIIntegration piIntegrationRepairSubOrder = PIHelper.getPIIntegrationInfo('RepairSubOrder__c'); staticResource = JSON.serialize(piIntegration); //zhj MEBG新方案改造 2022-11-29 start staticResourceV2 = JSON.serialize(PIHelper.getPIIntegrationInfo('Repair__cV2')); //zhj MEBG新方案改造 2022-11-29 end staticResourceAddress = JSON.serialize(piIntegrationAddress); staticResourceContact = JSON.serialize(piIntegrationContact); staticResourceRepairSubOrder = JSON.serialize(piIntegrationRepairSubOrder); encryptedAPIList = piIntegration.PIFields; sobjectPrefix = piIntegration.sobjectPrefix; //2023 08 18 张赫阳 添加permissonset start Schema.SObjectType sobjectSchema = schemaMap.get(sobjectTypeValue); Map fieldMap = sobjectSchema.getDescribe().fields.getMap(); //2023 08 18 张赫阳 添加permissonset en //获取lookup字段 List VLookUpFields = new List(); for (LayoutDescriberHelper.LayoutSection ls : layoutSections) { for (LayoutDescriberHelper.LayoutField lf : ls.layoutFields) { if (lf.fieldAPI != '' && lf.fieldType == 'reference') { VLookUpFields.add(lf.fieldAPI); } //在view解密section中只需显示当前layout中的加密字段 if (encryptedAPIList.contains(lf.fieldAPI)) { //2023 08 18 张赫阳 添加permissonset start if(fieldMap.get(lf.fieldAPI).getDescribe().isAccessible()){ //2023 08 18 张赫阳 添加permissonset end layoutEncryptedAPIList.add(lf.fieldAPI); } } } } VLookUpFieldsJson = Json.serialize(VLookUpFields); } global class Response{ public String recordId{set;get;} public String message{set;get;} public String status{set;get;} } @RemoteAction global static Response EncryptUpdate(string rid){ system.debug('rid='+rid); Response r = new Response(); List reps = new List(); if(Test.isRunningTest()){ if(rid==System.Label.piplCon_1){ reps.add(new Repair__c(Id=System.Label.piplCon_1,Encrypt_Update_Flag__c=true)); }else{ reps.add(new Repair__c(Id=System.label.piplCon_1,Encrypt_Update_Flag__c=false)); } }else{ reps = [select id,Encrypt_Update_Flag__c from Repair__c where id =:rid]; } if(reps.size()==0){ r.status = 'failed'; r.message = '符合条件的数据未找到'; return r; } Repair__c rep = reps[0]; if(!rep.Encrypt_Update_Flag__c){ r.status = 'success'; r.message = ''; return r; } //zhj MEBG新方案改造 2022-11-29 start //boolean b = AWSServiceTool2.EncryptPushData(new string[]{rid}); System.debug('AWSServiceTool2V2.EncryptPushDataRepair start'); //AWSServiceTool2V2.EncryptPushDataRepair(rid); boolean b = false; if(!Test.isRunningTest()){ b = AWSServiceTool2V2.EncryptPushDataRepair(rid); } //zhj MEBG新方案改造 2022-11-29 end rep.Encrypt_Update_Flag__c = false; if(!Test.isRunningTest()){ update rep; } r.status = b ? 'success' : 'failed'; r.message = b ? '' : '加密推送失败'; r.recordId = rid; return r; } @RemoteAction global static Response saveRepair(String repairJson,String transId,Boolean isNew) { System.debug('Repair__c Info:' + JSON.serialize(repairJson)); //1. Prepare the payload for Repair__c Schema.SObjectType repairSchema = schemaMap.get(sobjectTypeValue); Map fieldAPIToTypeMap = repairSchema.getDescribe().fields.getMap(); Map fieldValueMap = (Map)JSON.deserializeUntyped(repairJson); Repair__c repairInfo = new Repair__c(); Boolean updateRepairCheck = false; //自定义格式转换 for (String fieldAPI: fieldValueMap.keySet()) { system.debug('field API'+fieldAPI); if(!fieldAPIToTypeMap.containskey(fieldAPI)){ continue; } Schema.DisplayType fielddataType = fieldAPIToTypeMap.get(fieldAPI).getDescribe().getType(); String fieldValue = String.valueOf(fieldValueMap.get(fieldAPI)); if(String.valueOf(fielddataType)=='DATE'){ repairInfo.put(fieldAPI,(String.isBlank(fieldValue)||String.isEmpty(fieldValue))? null:Date.valueOf(fieldValue.replace('/', '-'))); }else if(String.valueOf(fielddataType)=='DATETIME'){ if(String.isNotBlank(fieldValue)&&fieldValue.contains('T')){ fieldValue = fieldValue.replace('T',' '); repairInfo.put(fieldAPI, Datetime.valueOfGmt(fieldValue)); }else if(String.isNotBlank(fieldValue)) { fieldValue = fieldValue.replace('/', '-') + ':00'; System.debug('fieldValue = ' + fieldValue); repairInfo.put(fieldAPI, Datetime.valueOf(fieldValue)); }else{ repairInfo.put(fieldAPI, null); } }else if(String.valueOf(fielddataType)=='PERCENT'||String.valueOf(fielddataType)=='CURRENCY'||String.valueOf(fielddataType)=='Number'||String.valueOf(fielddataType)=='DOUBLE' ){ repairInfo.put(fieldAPI, (String.isBlank(fieldValue)||String.isEmpty(fieldValue))?null:Decimal.valueOf(fieldValue.replace(',', ''))); } else if(String.valueof(fielddataType)=='BOOLEAN'){ //check repair check value if(fieldAPI == 'Return_Without_Repair__c'&&Boolean.valueof(fieldValueMap.get(fieldAPI))){ updateRepairCheck = true; } repairInfo.put(fieldAPI, fieldValueMap.get(fieldAPI)); }else { repairInfo.put(fieldAPI, String.valueOf(fieldValueMap.get(fieldAPI))); } } //2. Save Record Process String status = 'success'; Response resp = new Response(); Savepoint sp = Database.setSavepoint(); String rid = ''; try{ System.debug('abcde'); if(isNew){ System.debug('repairInfozhj = ' + repairInfo); insert repairInfo; }else{ System.debug('into update'); String awsDataId = (String)repairInfo.get('AWS_Data_Id__c'); System.debug('awsDataId = ' + awsDataId); Repair__c[] repairs = [select id,Return_Without_Repair_Reason__c,SAP_Transfer_time__c from Repair__c where AWS_Data_Id__c =:awsDataId]; if(!updateRepairCheck){ repairInfo.put('Return_Without_Repair_Reason__c',repairs[0].Return_Without_Repair_Reason__c); } if(repairs!=null&&repairs[0]!=null){ repairInfo.put('SAP_Transfer_time__c',repairs[0].SAP_Transfer_time__c); } System.debug('repairs[0].id = ' + repairs[0].id); repairInfo.put('Id',repairs[0].id);//For testing; update repairInfo; } rid=repairInfo.Id; PIHelper.saveTransLog(sobjectTypeValue,(String)repairInfo.get('AWS_Data_Id__c'),rid,transId, repairJson ,status,''); resp.recordId = repairInfo.Id; resp.message = ''; resp.status = status; System.debug('resp from sfdx back-end' + resp); return resp; } catch(DmlException e) { rid=repairInfo.Id; Integer index = 0; System.debug(e.getNumDml()); System.debug(e.getDmlFields(index)); System.debug(e.getDmlId(index)); System.debug(e.getDmlIndex(index)); System.debug(e.getDmlMessage(index)); System.debug(e.getDmlStatusCode(index)); System.debug(e.getDmlType(index)); system.debug(e.getMessage()); system.debug(e.getStackTraceString()); System.debug('into catch'+e.getMessage()); Database.rollback(sp); resp.status = 'Exception'; resp.message ='保存失败,原因:'+ e.getDmlMessage(index); PIHelper.saveTransLog(sobjectTypeValue,(String)repairInfo.get('AWS_Data_Id__c'),rid,transId, repairJson ,status,e.getMessage()+e.getStackTraceString()); return resp; } catch(Exception e) { System.debug('into catch'+e.getMessage()); Database.rollback(sp); status = 'fail'; PIHelper.saveTransLog(sobjectTypeValue,(String)repairInfo.get('AWS_Data_Id__c'),rid,transId, repairJson ,status,e.getMessage()+e.getStackTraceString()); resp.message = e.getMessage(); resp.status = status; return resp; } } // 从url参数赋值到当前页面 public static void AssignValueFromUrl(Map mso, sobject sobj){ String sobject_name = sobj.getSObjectType().getDescribe().getName(); Map temp = new Map(); Map fdm = new Map(); List fds = [SELECT Id, DurableId, QualifiedApiName,ValueTypeId , EntityDefinitionId, NamespacePrefix,EntityDefinition.NamespacePrefix, DeveloperName, MasterLabel, Label FROM FieldDefinition where EntityDefinition.QualifiedApiName = :sobject_name]; for(FieldDefinition fd : fds){ //system.debug(fd.DurableId); fdm.put(fd.DurableId.split('\\.')[1],fd); } for(string key : mso.keySet()){ if (key.toLowerCase() == 'id') { System.debug('skip id assign'); continue; } string new_key = key; system.debug('new_key='+new_key); if(new_key.contains('_lkid')){ new_key = new_key.replace('_lkid', ''); new_key = new_key.substring(2); }else{ if(temp.containsKey(new_key)){ continue; } } system.debug('now new_key='+new_key); if(fdm.containsKey(new_key)){ system.debug('fdm.get(new_key)='+fdm.get(new_key)); string val_str = mso.get(key); system.debug('val_str='+val_str); /*无需做decode,sf内部已经做好 try{ val_str = EncodingUtil.urlDecode(mso.get(key),'UTF-8'); }catch(Exception e){ continue; system.debug('Exception from get Key:'+e.getMessage()); system.debug(e.getStackTraceString()); } */ object val = null; string type_id = fdm.get(new_key).ValueTypeId; // address, boolean, date, datetime, double, id, location, string, time if(string.isBlank(val_str)){ val = null; }else if(type_id == 'boolean'){ if(val_str == '1'){ val = true; }else{ val = boolean.valueOf(val_str); } }else if(type_id == 'date'){ // try{ val = date.parse(val_str); }catch(Exception e){ system.debug('val_str='+val_str); system.debug(e.getMessage()); system.debug(e.getStackTraceString()); try{ val = date.valueOf(val_str); }catch(Exception ee){ system.debug('val_str='+val_str); system.debug(ee.getMessage()); system.debug(ee.getStackTraceString()); continue; } } }else if(type_id == 'datetime'){ // try{ val = datetime.parse(val_str); }catch(Exception e){ system.debug('val_str='+val_str); system.debug(e.getMessage()); system.debug(e.getStackTraceString()); try{ val = datetime.valueOf(val_str); }catch(Exception ee){ system.debug('val_str='+val_str); system.debug(ee.getMessage()); system.debug(ee.getStackTraceString()); continue; } } }else if(type_id == 'double' || type_id == 'number'){ try{ val = decimal.valueOf(val_str.replace(',', '')); }catch(Exception ee){ system.debug('val_str='+val_str); system.debug(ee.getMessage()); system.debug(ee.getStackTraceString()); continue; } }else if(type_id == 'id' || type_id == 'string'){ val = val_str; }else{ system.debug('type_id='+type_id+' is not support to convert'); continue; } temp.put(fdm.get(new_key).QualifiedApiName,val); }else{ system.debug(key+' is not in fdm'); } } for(string key : temp.keySet()){ system.debug('assign '+key+'='+temp.get(key)); try{ sobj.put(key, temp.get(key)); }catch(Exception e){ system.debug(e.getMessage()); system.debug(e.getStackTraceString()); } } } }