public with sharing class lexPCLLostReportLwcController { public static string oppId { get; set; } public static string lostReportId { get; set; } // 当前页面状态 Create,View and Edit, MarketEdit public static string pageStatus { get; set; } // 失单,部分失单 public static string lostType {get; set;} public static Set deleteBrandIDSet = new Set(); public static string submitFlag {get; set;} public static LostReport LostReport {get; set;} public static integer brandNo {get; set;} public static integer brandCount {get; set;} // add tcm 20211122 start // add tcm 20211122 end @AuraEnabled(cacheable=true) public static Id getUserProfileId() { Id profileId = [SELECT ProfileId FROM User WHERE Id = :UserInfo.getUserId()].ProfileId; return profileId; } @AuraEnabled public static String getPickList(String objectName, String fieldName) { List> lstPickvals = new List>(); List results = Schema.describeSObjects(new List{objectName}); for(Schema.DescribeSobjectResult res : results) { for (Schema.PicklistEntry entry : res.fields.getMap().get(fieldName).getDescribe().getPicklistValues()) { if (entry.isActive()) { lstPickvals.add(new Map{'label' => entry.getValue(), 'value' => entry.getValue()}); } } } Map>> pickList = new Map>>(); List> zhuji = new List>(); List> jingzi = new List>(); List> xixiaoji = new List>(); List> guangyuan = new List>(); List> xiaojingzhong = new List>(); List> nengliang = new List>(); List> qita = new List>(); Map empty = new Map{'label' => '--无--', 'value' => ''}; zhuji.add(empty); jingzi.add(empty); xiaojingzhong.add(empty); nengliang.add(empty); qita.add(empty); for (Integer i = 0; i < lstPickvals.size(); i++) { if ((i >= 0 && i <= 6) || i == 38) { zhuji.add(lstPickvals[i]); } if ((i >= 7 && i <= 23) || i == 38) { jingzi.add(lstPickvals[i]); } if ((i >= 24 && i <= 29) || i == 35|| i == 38) { xiaojingzhong.add(lstPickvals[i]); } if ((i >= 30 && i <= 34) || i == 38) { nengliang.add(lstPickvals[i]); } if (i == 36) { guangyuan.add(lstPickvals[i]); } if (i == 37) { xixiaoji.add(lstPickvals[i]); } if (i == 38) { qita.add(lstPickvals[i]); } } pickList.put('主机', zhuji); pickList.put('镜子', jingzi); pickList.put('小镜种', xiaojingzhong); pickList.put('能量', nengliang); pickList.put('洗消机', xixiaoji); pickList.put('光源', guangyuan); pickList.put('其他', qita); pickList.put('全部',lstPickvals); return JSON.serialize(pickList); } @AuraEnabled public static Map init (string oppId1,string lostReportId1,string pageStatus1,string lostType1,string submitFlag1){ try { oppId = oppId1; lostReportId = lostReportId1; pageStatus = pageStatus1; lostType = lostType1; submitFlag = submitFlag1; return init1(); } catch (Exception e) { return new Map(); } } // 初始化 public static Map init1(){ Map maps = new Map(); if(string.isblank(pageStatus)) { // 这里需要报错没有传参数 maps.put('message', '页面出错,请刷新后重试!'); return maps; } else if(pageStatus.equals('Create')) { if(string.isBlank(oppId)) { // 这里报错创建时候必须有询价 maps.put('message', '创建失单报告时,请重询价页面创建'); return maps; } list opplist = [select id,Name, Sales_assistant_ID__c, //chenjingwu 20231108 Start StageName, //chenjingwu 20231108 End Sales_manager_departmentID__c,Sales_owner_buchangID__c from opportunity where id =: oppId limit 1]; if( opplist.size() == 0) { pageStatus = null; maps.put('message', '您没有询价的查看权限,无法创建失单报告!'); return maps; } Schema.DescribeSObjectResult s = Lost_cancel_report__c.sObjectType.getDescribe(); if( !s.isCreateable()) { maps.put('message', '您不能创建失单/部分失单报告!'); return maps; } Lost_cancel_report__c tempLostReport = new Lost_cancel_report__c(LostType__c= lostType, Opportunity__c = oppId, Sales_assistant__c = opplist[0].Sales_assistant_ID__c, Manager_sales__c = opplist[0].Sales_manager_departmentID__c, Buchang_sales__c = opplist[0].Sales_owner_buchangID__c, Submit_Day__c = date.today(), Report_Status__c = '草案'); LostReport = new LostReport(tempLostReport); brandCount = 1; //chenjingwu 20231108 Start RecordType recordType1 = [select Id from RecordType where Name = '询价取消报告']; List lostList = [select Id from Lost_cancel_report__c where Opportunity__c =: oppId and RecordTypeId !=: recordType1.Id]; List cancelList = [select Id from Lost_cancel_report__c where Opportunity__c =: oppId and RecordTypeId =: recordType1.Id and Report_Status__c != '草案']; if(lostList.size() > 0){ maps.put('message', '该询价已有失单报告'); return maps; } if(cancelList.size() > 0){ maps.put('message', '已经有提交的取消报告,不可新建失单报告'); return maps; } //chenjingwu 0116 start Id systemManger = (ID)System.label.lexPcl_1; if(userinfo.getProfileId() == systemManger){ LostReport.isManger = true; } //chenjingwu 0116 end if(opplist[0].StageName == '注残' || opplist[0].StageName == '出荷' || opplist[0].StageName == '完了'){ LostReport.isPartOfLost = true; } //chenjingwu 20231108 End } else if(pageStatus.equals('View') || pageStatus.equals('Edit')) { system.debug('edit1'); if(string.isBlank(lostReportId)) { pageStatus = null; maps.put('message', '您没有查看这个失单/部分失单报告的权限!'); return maps; } // //chenjingwu 20231108 Start // list opplist = // [select id,Name, // Sales_assistant_ID__c, // StageName, // Sales_manager_departmentID__c,Sales_owner_buchangID__c // from opportunity // where id =: oppId // limit 1]; // if(opplist[0].StageName == '注残' || opplist[0].StageName == '出荷' || opplist[0].StageName == '完了'){ // LostReport.isPartOfLost = true; // } // //chenjingwu 20231108 Start system.debug('edit2'); list lostReportList = [select id,of_lost_system_processor__c, Lost_reason_main__c, Lost_Reason_Sub__c,Lost_By_Company__c, LostTotalAmount__c,LostType__c, Report_Status__c,Sales_assistant__c, TotalAmountLost__c, InclusionUltrasound__c, //20230506 lt DB202304618804 包含超声 ModifyAfterApproval__c,Approved_Day__c,//20230814 lt DB202308068183 失单报告审批节点增加助理审批节点 add Opportunity__c, Opportunity__r.Sales_assistant_ID__c, //chenjingwu 20231108 Start Opportunity__r.StageName, //chenjingwu 20231108 End Opportunity__r.Sales_manager_departmentID__c, Manager_sales__c,recordtypeid,recordtype.DeveloperName from Lost_cancel_report__c where id =: lostReportId limit 1]; System.debug('chenjingwu' + lostReportList); if(lostReportList.size() == 0) { pageStatus = null; maps.put('message', '您没有查看这个失单/部分失单报告的权限!'); return maps; } lostReportList[0].Sales_assistant__c = lostReportList[0].Opportunity__r.Sales_assistant_ID__c; lostReportList[0].Manager_sales__c = lostReportList[0].Opportunity__r.Sales_manager_departmentID__c; if(lostReportList[0].recordtype.DeveloperName.equals('PCL_Lost_report')) { lostReportList[0].LostType__c ='失单'; }else if(lostReportList[0].recordtype.DeveloperName.equals('PCL_PartLost_report')) { lostReportList[0].LostType__c ='部分失单'; } // 权限,如果当前状态不是草案中,那么需要跳转到只读页面 //原:!'草案'.equals(lostReportList[0].Report_Status__c) && userinfo.getProfileId() != (ID) '00e10000000Y3o5AAC' // 20230814 lt DB202308068183 失单报告审批节点增加助理审批节点 end 改if条件 Id systemManger = (ID)System.label.lexPcl_1; Id system2S1 = (ID)System.label.lexPcl_2; Id system2S6 = (ID)System.label.lexPcl_3; Id system2S4 = (ID)System.label.lexPcl_4; if( !('草案'.equals(lostReportList[0].Report_Status__c) || userinfo.getProfileId() == systemManger ||('批准'.equals(lostReportList[0].Report_Status__c) && (userinfo.getProfileId() == system2S1 || userinfo.getProfileId() == system2S6 || userinfo.getProfileId() == system2S4)) ) ){ pageStatus = 'View'; } oppId = lostReportList[0].Opportunity__c; system.debug('edit3'); list selectlostBrandList = [ select id, LostPrice__c, Lost_By_Company__c, Lost_reason_main__c,Lost_Reason_Sub__c,Name,Agency__c, AgencyMannual__c, Lost_cancel_report__c,Lost_By_Company_Mannual__c,ChannelSpecificReasons__c, ( select id,PCLLostBrand__c,LostProduct__c, isSpec__c, LostProduct__r.Name, LostProductMannual__c, //SWAG-C6P9PX lt 20210913 add ProductCategory__c, //chenjingwu 20231109 Start LostProduct__r.isDomestic__c, //chenjingwu 20231109 End //chenjingwu 20231225 Start Function__c, //chenjingwu 20231225 End ProductClass__c, //add tcm 20211123 Quantity__c,Name, LostBrandName__c from PCLLostBrand__c.PCLLostBrandProduct__r) from PCLLostBrand__c where Lost_cancel_report__c =: lostReportId ]; if(selectlostBrandList.size() == 0 ) { LostReport = new LostReport(lostReportList[0]); brandCount = 1; }else{ system.debug('edit4:'+selectlostBrandList[0]); brandCount = 0; list LostBrandList = new list(); for(PCLLostBrand__c templostBrand : selectlostBrandList) { list tempProductList = new list(); integer productCount = 0; system.debug('check products:'+ (templostBrand.PCLLostBrandProduct__r != null) + '|' + (templostBrand.PCLLostBrandProduct__r.size() > 0)); if (templostBrand.PCLLostBrandProduct__r != null && templostBrand.PCLLostBrandProduct__r.size() > 0) { for( PCLLostProduct__c tempProduct: templostBrand.PCLLostBrandProduct__r) { PCLLostProducts pro = new PCLLostProducts(productCount,tempProduct); if(tempProduct.LostProduct__r.Name != null){ pro.productName = tempProduct.LostProduct__r.Name; } //chenjingwu 20231225 Start if(tempProduct.ProductCategory__c == 'SP主机'){ pro.gongNengFlag = true; } //chenjingwu 20231225 End //chenjingwu 20231109 Start // if(tempProduct.LostProduct__r.isDomestic__c == '进口' || tempProduct.LostProduct__r.isDomestic__c == '' || tempProduct.LostProduct__r.isDomestic__c == null){ // pro.isJinKou = true; // } if(tempProduct.LostProduct__r.isDomestic__c == false){ pro.isJinKou = true; } //chenjingwu 20231109 Start tempProductList.add(pro); productCount++; } } else { PCLLostProducts newProduct = new PCLLostProducts(); if ('其他'.equals(templostBrand.Lost_By_Company__c) && templostBrand.Lost_By_Company_Mannual__c != null && !''.equals(templostBrand.Lost_By_Company_Mannual__c)) { newProduct.LostProductss.LostBrandName__c = templostBrand.Lost_By_Company_Mannual__c; } else { newProduct.LostProductss.LostBrandName__c = templostBrand.Lost_By_Company__c; } system.debug('aaa4+++'+templostBrand.Lost_By_Company_Mannual__c); tempProductList.add(newProduct); productCount++; } LostBrand br = new LostBrand(brandCount,tempProductList, templostBrand); // chenjingwu 20240118 start for(PCLLostProducts pro:tempProductList){ if(true == pro.gongNengFlag){ br.brandGongNengFlag = true; } } // chenjingwu 20240118 end //chenjingwu 20231221 start // if(tempLostBrand.ChannelSpecificReasons__c != null){ // br.reasonFlag = true; // } if(tempLostBrand.ChannelSpecificReasons__c != null ||tempLostBrand.Lost_reason_main__c == '渠道因素' || tempLostBrand.Lost_Reason_Sub__c == '渠道因素'){ br.reasonFlag = true; } //chenjingwu 20231221 end LostBrandList.add(br); brandCount++; } LostReport = new LostReport(lostReportList[0],LostBrandList); system.debug('LostReport.LostBrands:'+LostReport.LostBrands); } //chenjingwu 0116 start Id systemManger1 = (ID)System.label.lexPcl_1; if(userinfo.getProfileId() == systemManger1){ LostReport.isManger = true; } //chenjingwu 0116 end //chenjingwu 20231108 Start if(lostReportList[0].Opportunity__r.StageName == '注残' || lostReportList[0].Opportunity__r.StageName == '出荷' || lostReportList[0].Opportunity__r.StageName == '完了'){ LostReport.isPartOfLost = true; } //chenjingwu 20231108 End } brandNo = 0; // 读取竞争对手品牌 // BrandmapSet(); if (lostReportId != null) { // List pros = [ // SELECT // ProcessDefinition.Name, // ( // SELECT // Id, // StepStatus, // IsPending, // Comments, // CreatedDate, // Actor.Name, // OriginalActor.Name, // ProcessNode.Name FROM StepsAndWorkitems order by IsPending DESC, CreatedDate DESC // ) // FROM ProcessInstance where TargetObjectId =:LostReport.lostReport.id order by CreatedDate DESC // ]; // List items = new List(); // for(ProcessInstance pro: pros){ // items.add(pro.StepsAndWorkitems); // } // LostReport.approvalHistorys = items; List pros = [ SELECT ProcessDefinition.Name, ( SELECT Id, StepStatus, IsPending, Comments, CreatedDate, Actor.Name, OriginalActor.Name, ProcessNode.Name FROM StepsAndWorkitems order by IsPending DESC, CreatedDate DESC ) FROM ProcessInstance where TargetObjectId =:LostReport.lostReport.id order by CreatedDate DESC ]; if(pros.size() > 0){ List items = new List(); maps.put('allowUserId',pros[0].StepsAndWorkitems[0].Actor.Id); maps.put('userProfileId',UserInfo.getProfileId()); for(ProcessInstance pro: pros){ items.addAll(pro.StepsAndWorkitems); } for(ProcessInstanceHistory pro: pros[0].StepsAndWorkitems){ if(pro.StepStatus == 'Started'){ maps.put('submitUserId',pro.ActorId); } } LostReport.approvalHistorys = items; }else{ List items = new List(); LostReport.approvalHistorys = items; } }else{ List items = new List(); LostReport.approvalHistorys = items; } if(string.isNotEmpty(submitFlag)) { maps.put('message', '提交成功!'); maps.put('LostReport', LostReport); return maps; } // List> col = new List>(); // Map ele = new Map(); // LostReport.LostBrands[0].columns.add(); maps.put('LostReport', LostReport); maps.put('userId',UserInfo.getUserId()); return maps; } @AuraEnabled public static String searchBrands(){ String ObjectApi_name = 'PCLLostBrand__c'; String Field_name = 'Lost_By_Company__c'; //From the Object Api name retrieving the SObject Schema.SObjectType targetType = Schema.getGlobalDescribe().get(ObjectApi_name); Sobject Object_name = targetType.newSObject(); //grab the sobject that was passed Schema.sObjectType sobject_type = Object_name.getSObjectType(); //describe the sobject Schema.DescribeSObjectResult sobject_describe = sobject_type.getDescribe(); //get a map of fields for the passed sobject Map field_map = sobject_describe.fields.getMap(); //grab the list of picklist values for the passed field on the sobject List pick_list_values = field_map.get(Field_name).getDescribe().getPickListValues(); List> lstPickvals = new List>(); for (Schema.PicklistEntry a : pick_list_values) { //for all values in the picklist list lstPickvals.add(new Map{'label' => a.getValue(), 'value' => a.getValue()}); } String jsonStr = JSON.serialize(lstPickvals); return jsonStr; } @AuraEnabled public static string searchBatchIfForProduct(String productName){ try { List transfer = [select Internal_value__c from BatchIF_Transfer__c where Dropped_Flag__c = false and Table__c = 'PCLLostBrand__c' and Column__c = 'Lost_By_Company__c' and External_value__c =: productName]; if(transfer.size() > 0){ return transfer[0].Internal_value__c; }else{ return null; } } catch (Exception e) { return e.getMessage(); } } // 数据录入 @AuraEnabled public static Map dataEntry(String report1,List deleteBrandIdList,List deleteProductIdList){ // LostReport report = (LostReport)JSON.deserializeUntyped(report1, LostReport.class); LostReport report = (LostReport)JSON.deserialize(report1, LostReport.class); Map messageMap = new Map (); system.debug('save---start:'); Savepoint sp = Database.setSavepoint(); // 待完成,这里需要把第一个品牌的信息赋值到这个失单报告上去,还有需要把各个品牌金额汇总加起来; //system.debug('LostReport.LostBrands:'+LostReport.LostBrands); // 设置记录类型 report.lostReport.recordTypeID = report.lostReport.LostType__c== '失单'?Schema.SObjectType.Lost_cancel_report__c.getRecordTypeInfosByDeveloperName().get('PCL_Lost_report').getRecordTypeId() : Schema.SObjectType.Lost_cancel_report__c.getRecordTypeInfosByDeveloperName().get('PCL_PartLost_report').getRecordTypeId(); report.lostReport.LostTotalAmount__c = 0; report.lostReport.of_lost_system_processor__c = 0; report.lostReport.TotalAmountLost__c = 0; report.lostReport.Lost_reason_main__c = null; report.lostReport.Lost_Reason_Sub__c = null; report.lostReport.Lost_By_Company__c = null; //批准日不为空时给修改后再批准赋值 if(report.lostReport.Approved_Day__c != null){ report.lostReport.ModifyAfterApproval__c = true; } for(LostBrand tempLostBrand : report.LostBrands) { if(string.isNotBlank(tempLostBrand.lostBrand.Lost_By_Company__c)) { report.lostReport.LostTotalAmount__c += tempLostBrand.lostBrand.LostPrice__c; Decimal med = tempLostBrand.lostBrand.LostPrice__c/1.13/1000; Decimal med1 = med.setScale(2); // System.debug('---lt123不含税数值(人工)Decimal---'+med); // System.debug('---lt123不含税数值(人工)Decimal两位小数---'+med1); report.lostReport.TotalAmountLost__c += med1; report.lostReport.Lost_reason_main__c = report.lostReport.Lost_reason_main__c == null ? tempLostBrand.lostBrand.Lost_reason_main__c : report.lostReport.Lost_reason_main__c; report.lostReport.Lost_Reason_Sub__c = report.lostReport.Lost_Reason_Sub__c == null ? tempLostBrand.lostBrand.Lost_Reason_Sub__c : report.lostReport.Lost_Reason_Sub__c; report.lostReport.Lost_By_Company__c = report.lostReport.Lost_By_Company__c == null ? tempLostBrand.lostBrand.Lost_By_Company__c : report.lostReport.Lost_By_Company__c; for( PCLLostProducts tempLostProduct : tempLostBrand.LostProducts) { if(tempLostProduct.LostProductss.Quantity__c !=null && tempLostProduct.LostProductss.Quantity__c >0) { report.lostReport.of_lost_system_processor__c += tempLostProduct.LostProductss.Quantity__c; } } } } upsert report.lostReport; String reportId = report.lostReport.Id; messageMap.put('reportId', reportId); // 需要插入更新的失单品牌 map upsertLostBrandMap = new map(); // 需要删掉的失单品牌 map deleteLostBrandMap = new map(); // 需要插入更新的失单型号,key是品牌编号+型号编号,value是需要更新的失单型号 map upsertLostProductMap = new map(); // 需要删掉的失单品牌 list deleteLostProductList = new list(); Integer lineNo = 0; for(LostBrand tempLostBrand : report.LostBrands ) { // 如果有失单品牌,那么就要插入更新; system.debug('tempLostBrand.lostBrand.Lost_By_Company__c:'+tempLostBrand.lostBrand.Lost_By_Company__c); if(string.isNotBlank(tempLostBrand.lostBrand.Lost_By_Company__c)) { upsertLostBrandMap.put(lineNo,tempLostBrand.lostBrand); tempLostBrand.lostBrand.Lost_cancel_report__c = report.lostReport.Id; tempLostBrand.lostBrand.Name = tempLostBrand.lostBrand.Lost_By_Company__c; integer tempNo = 0; for( PCLLostProducts tempLostProduct : tempLostBrand.LostProducts) { system.debug('Name:'+ tempLostProduct.LostProductss.Name ); if(tempLostProduct.LostProductss.Quantity__c !=null && tempLostProduct.LostProductss.Quantity__c >0) { tempLostProduct.LostProductss.Name = tempLostBrand.lostBrand.Name + tempLostProduct.LostProductss.Quantity__c; upsertLostProductMap.put(lineNo +':'+ tempNo,tempLostProduct.LostProductss); }else if(string.isNotBlank(tempLostProduct.LostProductss.Id)) { deleteLostProductList.add(tempLostProduct.LostProductss); } tempNo++; } } // 如果没有品牌,但是有id, 这样数据需要删除 else if(string.isNotBlank(tempLostBrand.lostBrand.Id )) { deleteLostBrandMap.put(lineNo,tempLostBrand.lostBrand); // 这里可能需要也判断一下失单型号有没有需要删掉 } lineNo++; } if(upsertLostBrandMap.size()>0) { upsert upsertLostBrandMap.values(); } for( string productNo :upsertLostProductMap.keyset()) { PCLLostProduct__c tempLostProduct = upsertLostProductMap.get(productNo); integer brandNo = integer.valueof(productNo.split(':')[0]); tempLostProduct.PCLLostBrand__c = upsertLostBrandMap.get(brandNo).Id; } if(upsertLostProductMap.size()>0) { upsert upsertLostProductMap.values(); } if(deleteLostBrandMap.size()>0) { delete deleteLostBrandMap.values(); for(PCLLostBrand__c pcl: deleteLostBrandMap.values()) { pcl.Id = null; } } if (deleteProductIdList.size()>0) { database.delete(deleteProductIdList); } if (deleteBrandIdList.size()>0) { database.delete(deleteBrandIdList); } if(deleteLostProductList.size()>0) { delete deleteLostProductList; for(PCLLostProduct__c pclp: deleteLostProductList) { pclp.Id = null; } } if(deleteBrandIDSet.size() > 0) { list tempdeleteIDlist = new list(); tempdeleteIDlist.addall(deleteBrandIDSet); database.delete(tempdeleteIDlist); } for(integer brandNumber =0; brandNumber< report.LostBrands.size(); brandNumber++) { LostBrand tempLostBrand = report.LostBrands.get(brandNumber); if(tempLostBrand.lostBrand.Id == null) { report.LostBrands.remove(brandNumber); brandNumber--; continue; } for(integer productNumber = 0; productNumber< tempLostBrand.LostProducts.size(); productNumber++) { PCLLostProducts tempLostProduct = tempLostBrand.LostProducts.get(productNumber); if(tempLostProduct.LostProductss.Id == null) { tempLostBrand.LostProducts.remove(productNumber); productNumber--; continue; } } } List pros = [ SELECT ProcessDefinition.Name, ( SELECT Id, StepStatus, IsPending, Comments, CreatedDate, Actor.Name, OriginalActor.Name, ProcessNode.Name FROM StepsAndWorkitems order by IsPending DESC, CreatedDate DESC ) FROM ProcessInstance where TargetObjectId =:reportId order by CreatedDate DESC ]; List items = new List(); for(ProcessInstance pro: pros){ items.addAll(pro.StepsAndWorkitems); } if(items.size() > 0){ report.approvalHistorys = items; }else{ List items1 = new List(); report.approvalHistorys = items1; } // lostReportId = report.lostReport.id; system.debug('save---end:'); messageMap.put('LostReport',JSON.serialize(report)); return messageMap; } // 提交 @AuraEnabled public static Map submit(String reportStatus,Boolean modifyAfterApproval,String reportId){ // LostReport report = (LostReport)JSON.deserialize(report1, LostReport.class); Savepoint sp = Database.setSavepoint(); Map objs = new Map(); try{ Map messages = new Map(); if(!'草案'.equals(reportStatus) && modifyAfterApproval == false) { messages.put('error', '只有在草案中才能提交申请!'); return messages; } //生产环境bug修改 陈京武 20231105 Start Lost_Cancel_Report__c report1 = [ select Opportunity__c from Lost_Cancel_Report__c where Id =: reportId ]; Opportunity opp = [ select Cnt_Lost_cancel_report__c, Cnt_Lost_cancel_Draft__c from Opportunity where Id =: report1.Opportunity__c ]; RecordType recordType1 = [select Id from RecordType where Name = '询价取消报告']; List repList = [select Id from Lost_cancel_report__c where Opportunity__c =: opp.Id and RecordTypeId =: recordType1.Id and Report_Status__c != '草案']; if(repList.size() > 0){ messages.put('error', '已经有提交的取消报告,不可提交失单报告'); return messages; } //生产环境bug修改 陈京武 20231105 End Lost_cancel_report__c report = new Lost_cancel_report__c(); report.Id = reportId; report.Report_Status__c = '提交'; update report; // Approval.ProcessSubmitRequest psr = new Approval.ProcessSubmitRequest(); // psr.setObjectId(reportId); // Approval.ProcessResult submitResult = Approval.process(psr); objs.put('uri', '/apex/PCLLostReportPage'); objs.put('Id', reportId); objs.put('pageStatus', 'View'); objs.put('submitFlag', '1'); List pros = [ SELECT ProcessDefinition.Name, ( SELECT Id, StepStatus, IsPending, Comments, CreatedDate, Actor.Name, OriginalActor.Name, ProcessNode.Name FROM StepsAndWorkitems order by IsPending DESC, CreatedDate DESC ) FROM ProcessInstance where TargetObjectId =:reportId order by CreatedDate DESC ]; List items = new List(); for(ProcessInstance pro:pros){ items.addAll(pro.StepsAndWorkitems); } objs.put('approvalHistorys',items); return objs; }catch(DmlException e) { Database.rollback(sp); //生产环境bug修改 陈京武 20231105 Start // if (e.getMessage().contains(',')) { // String exc = '' + e.getMessage(); // Integer left = exc.indexOf(':') + 1; // Integer right = exc.lastIndexOf(':'); // String str = exc.substring(left,right); // left = str.indexOf(',') + 1; // String newStr = str.substring(left); // objs.put('error',newStr); // return objs; // }else { // objs.put('error',e.getMessage()); // return objs; // } objs.put('error',e.getDmlMessage(0)); return objs; //生产环境bug修改 陈京武 20231105 End }catch(Exception ex) { objs.put('error',ex.getMessage()); return objs; } } // +++++++++++++++++++++++++++++++++++++++++++++++++++++++ @AuraEnabled public static LostBrand getNewLostBrand(Integer lineNo){ LostBrand lostBrand = null; try { //report.LostBrands.add(new LostBrand(report.LostBrands.size())); lostBrand = new LostBrand(lineNo); } catch (Exception e) { System.debug(e.getMessage()); } return lostBrand; } @AuraEnabled public static PCLLostProducts getNewLostProduct(Integer lineNo2){ PCLLostProducts pro = null; try { pro = new PCLLostProducts(lineNo2); } catch (Exception e) { System.debug(e.getMessage()); } return pro; } // update tcm 20211125 添加型号时自动带出品牌 end // 页面的数据结构 public class LostReport { @AuraEnabled public Lost_cancel_report__c lostReport { get; set; } @AuraEnabled public list LostBrands { get; set; } @AuraEnabled public list approvalHistorys { get; set; } //chenjingwu 20231108 Start @AuraEnabled public Boolean isPartOfLost = false; //chenjingwu 20231108 End //chenjingwu 0116 start @AuraEnabled public Boolean isManger = false; //chenjingwu 0116 end public LostReport(){ lostReport = new Lost_cancel_report__c(); LostBrands = new list {new LostBrand(0)}; approvalHistorys = new list(); } public LostReport(Lost_cancel_report__c lostReport){ this.lostReport = lostReport; LostBrands = new list {new LostBrand(0)}; approvalHistorys = new list(); } public LostReport(Lost_cancel_report__c lostReport, list LostBrands){ this.lostReport = lostReport; this.LostBrands = LostBrands; approvalHistorys = new list(); } } public class LostBrand { @AuraEnabled public PCLLostBrand__c lostBrand; @AuraEnabled public Boolean isGuoChan; @AuraEnabled public Integer lineNo; @AuraEnabled public list LostProducts; @AuraEnabled public Integer ProductSize; @AuraEnabled public Boolean reasonFlag = false; @AuraEnabled public String brandTitle; //chenjingwu 20230117 start @AuraEnabled public Boolean brandGongNengFlag; //chenjingwu 20230117 end //chenjingwu 20231107 Start @AuraEnabled public List> reasonOptions = new List>(); //chenjingwu 20231107 End public LostBrand( integer lineNo ){ lostBrand = new PCLLostBrand__c(); this.lineNo = lineNo; this.brandTitle = '失单品牌' + (lineNo + 1); LostProducts = new list {new PCLLostProducts()}; ProductSize = 1; lostBrand = new PCLLostBrand__c(); } public LostBrand( integer lineNo, list LostProducts ){ lostBrand = new PCLLostBrand__c(); this.lineNo = lineNo; this.brandTitle = '失单品牌' + (lineNo + 1); this.LostProducts = LostProducts; ProductSize = LostProducts.size(); } public LostBrand( integer lineNo, list LostProducts, PCLLostBrand__c lostBrand){ this.lostBrand = lostBrand; this.lineNo = lineNo; this.brandTitle = '失单品牌' + (lineNo + 1); this.LostProducts = LostProducts; ProductSize = LostProducts.size(); } } // add tcm 20211119 start public class PCLLostProducts { @AuraEnabled public Integer lineNo2; @AuraEnabled public PCLLostProduct__c LostProductss; @AuraEnabled public Boolean bool; @AuraEnabled public String productName; @AuraEnabled public Boolean isJinKou; //chenjingwu 20231225 start @AuraEnabled public Boolean gongNengFlag; //chenjingwu 20231225 end @AuraEnabled public List> productOptions = new List>(); public PCLLostProducts() { this.lineNo2 = 0; this.LostProductss=new PCLLostProduct__c(); } public PCLLostProducts(Integer lineNo2) { this.lineNo2 = lineNo2; this.LostProductss=new PCLLostProduct__c(); } public PCLLostProducts(Integer lineNo2,PCLLostProduct__c LostProductss) { this.lineNo2 = lineNo2; this.LostProductss=LostProductss; if (LostProductss.LostProduct__c != null) { this.bool = true; } } } @AuraEnabled public static string searchProduct(String lostProduct){ Product2 prd = null; try { prd = [select Id ,ProductClass__c , ProductCategory__c //chenjingwu 20231109 Start ,isDomestic__c //chenjingwu 20231109 End from Product2 where Id =:lostProduct]; } catch (Exception e) { return e.getMessage(); } return JSON.serialize(prd); } // @AuraEnabled // public static Boolean searchAllProductIsGuoChan(String lostReport){ // LostReport report = (LostReport)JSON.deserialize(lostReport,LostReport.class); // Map // List proList = [select Id // ,ProductClass__c // , ProductCategory__c // ,isDomestic__c from Product2 where Id in: recordIdList]; // Boolean flag = false; // for (Product2 pro : proList) { // if(pro.isDomestic__c == '国产'){ // flag // } // } // } // add tcm 20211118 end @AuraEnabled public static String submitForApproval(String recordId, String comments,String action){ try { List workItems = [ SELECT Id, ProcessInstanceId FROM ProcessInstanceWorkitem WHERE ProcessInstance.TargetObjectId = :recordId ]; Approval.ProcessWorkitemRequest req = new Approval.ProcessWorkitemRequest(); req.setWorkitemId(workItems.get(0).Id); req.setAction(action); req.setComments(comments); Approval.ProcessResult result = Approval.process(req); return null; } catch (Exception e) { return e.getMessage(); } } @AuraEnabled public static String reassignStep(String recordId, String newActorId ){ try { List workItemList = [SELECT ActorId FROM ProcessInstanceWorkitem WHERE ProcessInstance.TargetObjectId = : recordId]; ApprovalHistoryUtil.reassignStep(workItemList, newActorId); return null; } catch (Exception e) { return e.getMessage(); } } }