force-app/main/default/aura/TerminateApp/TerminateApp.app
New file @@ -0,0 +1,3 @@ <aura:application access="public" extends="ltng:outApp"> <aura:dependency resource="c:isTerminate"/> </aura:application> force-app/main/default/aura/TerminateApp/TerminateApp.app-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <AuraDefinitionBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>56.0</apiVersion> <description>A Lightning Application Bundle</description> </AuraDefinitionBundle> force-app/main/default/aura/TerminateApp/TerminateApp.auradoc
New file @@ -0,0 +1,6 @@ <aura:documentation> <aura:description>Documentation</aura:description> <aura:example name="ExampleName" ref="exampleComponentName" label="Label"> Example Description </aura:example> </aura:documentation> force-app/main/default/aura/TerminateApp/TerminateApp.css
New file @@ -0,0 +1,2 @@ .THIS { } force-app/main/default/aura/TerminateApp/TerminateApp.svg
New file @@ -0,0 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg width="120px" height="120px" viewBox="0 0 120 120" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <path d="M120,108 C120,114.6 114.6,120 108,120 L12,120 C5.4,120 0,114.6 0,108 L0,12 C0,5.4 5.4,0 12,0 L108,0 C114.6,0 120,5.4 120,12 L120,108 L120,108 Z" id="Shape" fill="#2A739E"/> <path d="M77.7383308,20 L61.1640113,20 L44.7300055,63.2000173 L56.0543288,63.2000173 L40,99.623291 L72.7458388,54.5871812 L60.907727,54.5871812 L77.7383308,20 Z" id="Path-1" fill="#FFFFFF"/> </g> </svg> force-app/main/default/aura/TerminateApp/TerminateAppController.js
New file @@ -0,0 +1,5 @@ ({ myAction : function(component, event, helper) { } }) force-app/main/default/aura/TerminateApp/TerminateAppHelper.js
New file @@ -0,0 +1,5 @@ ({ helperMethod : function() { } }) force-app/main/default/aura/TerminateApp/TerminateAppRenderer.js
New file @@ -0,0 +1,5 @@ ({ // Your renderer method overrides go here }) force-app/main/default/classes/LostCancelReportHandler.cls
@@ -45,10 +45,11 @@ Set<Id> sdoppidSet = new Set<Id>(); List<Id> updateOppId = new List<Id>(); List<Opportunity> updateOpp = new List<Opportunity>(); Map<String,String> cancelMap = new Map<String,String>();//lt 20230425 招标终止 add for(Lost_cancel_report__c lcr : newList){ oppIdList.add(lcr.Opportunity__c); cancelMap.put(lcr.Opportunity__c, lcr.RecordType.Name);//lt 20230425 招标终止 add } // 20221202 ljh DB202211594688 start // List<task__c> taskList = [select id,taskStatus__c,OpportunityId__c from task__c where RecordType.Name ='中标结果确认' and taskStatus__c = '02 接受' and OpportunityId__c in :oppIdList]; @@ -57,8 +58,22 @@ // //updateOppId.add(tsk.OpportunityId__c); //20220823 you 没有任务时, // } // LoseListTask 失单报告任务 winBiddingTask 中标结果确认 List<task__c> taskList = [select id,taskStatus__c,OpportunityId__c,RecordType.Name from task__c where (RecordType.Name ='中标结果确认' or RecordType.Name ='失单报告任务') and OpportunityId__c in :oppIdList]; for(task__c tsk : taskList){ List<task__c> taskList = [select id,taskStatus__c,OpportunityId__c,RecordType.Name from task__c where (RecordType.Name ='中标结果确认' or RecordType.Name ='失单报告任务') and OpportunityId__c in :oppIdList]; // 20230508 ljh DB202305008316 start /*for(task__c tsk : taskList){ //lt 20230425 招标终止 start System.debug('---lt123---cancelMap:'+cancelMap); System.debug('---lt123---cancelMap.get(tsk.OpportunityId__c):'+cancelMap.get(tsk.OpportunityId__c)); if(cancelMap.containsKey(tsk.OpportunityId__c)){ if(cancelMap.get(tsk.OpportunityId__c) == 'PCL_Cancel_report'){ tsk.taskStatus__c = '04 取消'; tsk.cancelReasonSelect__c = '项目终止'; } }else //lt 20230425 招标终止 end if(tsk.RecordType.Name == '中标结果确认' && tsk.taskStatus__c == '02 接受'){ tsk.taskStatus__c = '03 完成'; } @@ -67,7 +82,28 @@ sdoppidSet.add(tsk.OpportunityId__c); } oppIdSet.add(tsk.OpportunityId__c); }*/ List<task__c> Uptask = new List<task__c>(); for(task__c tsk : taskList){ task__c temp = new task__c(); temp.Id = tsk.Id; if(cancelMap.containsKey(tsk.OpportunityId__c)){ if(cancelMap.get(tsk.OpportunityId__c) == 'PCL_Cancel_report'){ temp.taskStatus__c = '04 取消'; temp.cancelReasonSelect__c = '项目终止'; } }else if(tsk.RecordType.Name == '中标结果确认' && tsk.taskStatus__c == '02 接受'){ temp.taskStatus__c = '03 完成'; } if(tsk.RecordType.Name == '失单报告任务'){ sdoppidSet.add(tsk.OpportunityId__c); } oppIdSet.add(tsk.OpportunityId__c); Uptask.add(temp); } // 20230508 ljh DB202305008316 end // for(Id oppId : oppIdList){//20220823 you for(Id oppId : oppIdSet){ // 20221202 ljh DB202211594688 end @@ -89,9 +125,12 @@ updateOpp.add(opptemp); } update updateOpp; update taskList; // 20230508 ljh DB202305008316 start // update taskList; update Uptask; // 20230508 ljh DB202305008316 end } //2022-6-22 yjk 询价跟进任务 end @@ -191,11 +230,28 @@ //20220708 询价任务开发,结束失单任务状态,筛选需要的修改的失单任务 start Set<String> oppIdSet = new Set<String>(); Set<String> passOppIdSet = new Set<String>(); for (Lost_cancel_report__c n: newList) { if ((n.Report_Status__c != oldMap.get(n.Id).Report_Status__c) && n.Report_Status__c == '申请中') { oppIdSet.add(n.Opportunity__c); } if ((n.Report_Status__c != oldMap.get(n.Id).Report_Status__c) && n.Report_Status__c == '批准') { passOppIdSet.add(n.Opportunity__c); } } // 20230411 多失单报告合并,取出待合并的询价 start Map<String, Opportunity> mapOpps = new Map<String, Opportunity>(); List<Opportunity> lstOpps = [select Id, RivalHostsNumber__c, CompetitorProduct1__c, CompetitorProduct2__c, CompetitorProduct3__c, Lost_reason_main__c, Lost_Reason_Sub__c, Agencies__c, PCLLostBrands__c, of_lost_system_processor__c, LostPrices__c from Opportunity where Id in :passOppIdSet]; for(Opportunity opp : lstOpps) { mapOpps.put(opp.Id, opp); } System.debug('mapOpps: ' + mapOpps); // 20230411 多失单报告合并,取出待合并的询价 end // 20220720 ljh add 记录取消/失单报告提交时点的战略产品判断 start if(oppIdSet.size() > 0 ){ List<OpportunityLineItem> OppLIlist = [select Id,Key_product_147P_Text__c,Key_product_147P__c from OpportunityLineItem where OpportunityId in :oppIdSet]; @@ -204,7 +260,11 @@ } update OppLIlist; // 20220720 ljh add 记录取消/失单报告提交时点的战略产品判断 end List<task__c> taskList = [select id,taskStatus__c from task__c where RecordType.Name ='失单报告任务' and taskStatus__c = '02 接受' and OpportunityId__c in :oppIdSet]; List<task__c> taskList = [select id,taskStatus__c from task__c where RecordType.Name ='失单报告任务' and taskStatus__c = '02 接受' and OpportunityId__c in :oppIdSet]; for(task__c tsk : taskList){ tsk.taskStatus__c = '03 完成'; } @@ -231,11 +291,16 @@ List<String> ppList=new List<String>(); //失单品牌 // List<String> yyList=new List<String>(); //失单原因 //初始化 Opportunity opp=new Opportunity(); // 20230411 多失单报告合并,取出待合并的询价 start Opportunity opp = mapOpps != null && mapOpps.containsKey(arrMap.get(lcro).Opportunity__c) ? mapOpps.get(arrMap.get(lcro).Opportunity__c) : new Opportunity(); //20220930 lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 start opp.RivalHostsNumber__c = 0; opp.RivalHostsNumber__c = opp.RivalHostsNumber__c != null ? opp.RivalHostsNumber__c : 0; //20220930 lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 end opp.Id=arrMap.get(lcro).Opportunity__c; opp.PCLLostBrands__c=''; opp.Agencies__c=''; //Id ,品牌,经销商 opp.Id = String.isNotBlank(opp.Id) ? opp.Id : arrMap.get(lcro).Opportunity__c; opp.PCLLostBrands__c = String.isNotBlank(opp.PCLLostBrands__c) ? opp.PCLLostBrands__c : ''; opp.Agencies__c = String.isNotBlank(opp.Agencies__c) ? opp.Agencies__c : ''; System.debug('opp: ' + opp); // 20230411 多失单报告合并,取出待合并的询价 end // for产品 for (PCLLostProduct__c lcr : lcrList) { if (opp.Id==lcr.Opportunity__c) { force-app/main/default/classes/TenderInformationHandler.cls
@@ -40,6 +40,7 @@ } protected override void beforeUpdate() { SetIsReactionOpp(); //lt DB202304062844 20230515 项目终止流程开发 add //反逻辑删除 fxk changeRelateOppDate(); updateTenDel(); @@ -81,14 +82,16 @@ List<String> oppIds = new List<String>();//询价 // 获得要更新的询价 for (Tender_information__c record: newList) { if ( ( ('3-5:中标通知'.equals((oldMap.get(record.Id).subInfoType__c)) || '3-6:合同公告'.equals((oldMap.get(record.Id).subInfoType__c)) ) && ('3-1:废标公告'.equals(record.subInfoType__c) || '3-2:流标公告'.equals(record.subInfoType__c) )) || (!'3:结果'.equals(record.InfoType__c) && '3:结果'.equals((oldMap.get(record.Id).InfoType__c)))) { //lt 20230425 招标终止 add || ('批准'.equals(record.TerminateApprovalStatus__c) && !'批准'.equals((oldMap.get(record.Id).TerminateApprovalStatus__c))) if ( ( ('3-5:中标通知'.equals((oldMap.get(record.Id).subInfoType__c)) || '3-6:合同公告'.equals((oldMap.get(record.Id).subInfoType__c)) ) && ('3-1:废标公告'.equals(record.subInfoType__c) || '3-2:流标公告'.equals(record.subInfoType__c) )) || (!'3:结果'.equals(record.InfoType__c) && '3:结果'.equals((oldMap.get(record.Id).InfoType__c))) || ('批准'.equals(record.TerminateApprovalStatus__c) && !'批准'.equals((oldMap.get(record.Id).TerminateApprovalStatus__c)))) { Tenids.add(record.id); } } Map<String,String> InfoTypeMap = new Map<String,String>(); //判断是否是因为中标修改得 Map<String,String> TerminationStateMap = new Map<String,String>(); //lt 20230425 招标终止 add if(null!=Tenids && Tenids.size()>0){ List<Tender_Opportunity_Link__c> TenOppLinkList = [select id, Tender_information__c,Tender_information__r.InfoType__c, Opportunity__c from Tender_Opportunity_Link__c where Tender_information__c in :Tenids]; //lt 20230425 招标终止 add Tender_information__r.TerminateApprovalStatus__c, List<Tender_Opportunity_Link__c> TenOppLinkList = [select id, Tender_information__c,Tender_information__r.InfoType__c, Tender_information__r.TerminateApprovalStatus__c, Opportunity__c from Tender_Opportunity_Link__c where Tender_information__c in :Tenids]; if(null!=TenOppLinkList && TenOppLinkList.size()>0){ for(Tender_Opportunity_Link__c topl :TenOppLinkList){ String oppid =String.valueOf(topl.Opportunity__c); @@ -97,52 +100,105 @@ if (!oppIds.contains(topl.Opportunity__c)) { oppIds.add(topl.Opportunity__c); } if(!'3:结果'.equals(topl.Tender_information__r.InfoType__c)){ //lt DB202304062844 20230515 项目终止流程开发 update if(!'3:结果'.equals(topl.Tender_information__r.InfoType__c)) --- if(!'3:结果'.equals(NewMap.get(topl.Tender_information__c).InfoType__c)) if(!'3:结果'.equals(NewMap.get(topl.Tender_information__c).InfoType__c)){ InfoTypeMap.put(topl.Opportunity__c,topl.Tender_information__c); } //lt 20230425 招标终止 start System.debug('---lt123---topl.Tender_information__r.TerminateApprovalStatus__c:'+topl.Tender_information__r.TerminateApprovalStatus__c); if('批准'.equals(newMap.get(topl.Tender_information__c).TerminateApprovalStatus__c)){ TerminationStateMap.put(topl.Opportunity__c,topl.Tender_information__c); } //lt 20230425 招标终止 end } } } if (null!=oppTens && oppTens.size()>0) { //20221208 you DB202211594688 有确认任务的询价不清 List<Opportunity> opportunities = [select id, Bidding_Project_Name_Bid__c, Opp_Order__c from Opportunity where id in :oppIds]; List<task__c> taskList = [select id,taskStatus__c,RecordType.Name,Tender_information_Task__c,OpportunityId__c from task__c where ((RecordType.Name ='失单报告任务' and OpportunityId__c in:oppIds) or (RecordType.Name ='中标结果确认' and Opp_Tender__c in :oppTens)) and taskStatus__c <> '03 完成']; List<Opportunity> opportunities = [select id, Bidding_Project_Name_Bid__c, Opp_Order__c,ConfirmationofAward__c from Opportunity where id in :oppIds]; //lt 20230425 招标终止 add Tender_information_Task__r.TerminateApprovalStatus__c 20230510 add and taskStatus__c <> '04 取消' //lt DB202304062844 20230515 项目终止流程开发 update taskStatus__c <> '03 完成' and taskStatus__c <> '04 取消' --- taskStatus__c = '02 接受' List<task__c> taskList = [select id,taskStatus__c,RecordType.Name,Tender_information_Task__c, OpportunityId__c,Tender_information_Task__r.TerminateApprovalStatus__c from task__c where ((RecordType.Name ='失单报告任务' and OpportunityId__c in:oppIds) or (RecordType.Name ='中标结果确认' and Opp_Tender__c in :oppTens)) and taskStatus__c = '02 接受']; for(task__c tsk : taskList){ if(tsk.RecordType.Name =='失单报告任务' && oppIds.contains(tsk.OpportunityId__c) && tsk.taskStatus__c !='03 完成'){ System.debug('---lt123---TerminationStateMap:'+TerminationStateMap); System.debug('---lt123---tsk.Tender_information_Task__r.TerminateApprovalStatus__c:'+tsk.Tender_information_Task__r.TerminateApprovalStatus__c); //lt DB202304062844 20230515 项目终止流程开发 update !='03 完成' --- == '02 接受' if(tsk.RecordType.Name =='失单报告任务' && oppIds.contains(tsk.OpportunityId__c) && tsk.taskStatus__c == '02 接受'){ //不做操作 }else{ tsk.taskStatus__c = '04 取消'; tsk.cancelDate__c = date.today(); if(null!=InfoTypeMap && InfoTypeMap.containsKey(tsk.OpportunityId__c)){ tsk.cancelReasonSelect__c = '修改项目阶段'; }else{ } //lt 20230425 招标终止 start else if(null!=TerminationStateMap && TerminationStateMap.containsKey(tsk.OpportunityId__c)){ tsk.cancelReasonSelect__c = '项目终止'; } //lt 20230425 招标终止 end else{ tsk.cancelReasonSelect__c = '流标/废标'; } } } update taskList; if(taskList.size() > 0){ for (task__c tlink : taskList) { //lt DB202304062844 20230515 项目终止流程开发 start // if(taskList.size() > 0){ if(opportunities.size() > 0){ for (Opportunity opp : opportunities) { Boolean upd_flg = null!=TerminationStateMap && TerminationStateMap.containsKey(opp.Id) && opp.ConfirmationofAward__c == '竞争对手中标' ? false : true; if (!upd_flg) { continue; } for (task__c tlink : taskList) { if (opp.Id == tlink.OpportunityId__c) { if(tlink.RecordType.Name =='失单报告任务' && tlink.taskStatus__c !='03 完成'){ //lt DB202304062844 20230515 项目终止流程开发 update !='03 完成' --- == '02 接受' if(tlink.RecordType.Name =='失单报告任务' && tlink.taskStatus__c == '02 接受'){ upd_flg = false; break; //不做操作 }else{ //20220718 you 询价任务 start // }else{ // //20220718 you 询价任务 start // opp.ConfirmationofAward__c = null; // opp.Task_createTime__c = null; // opp.ConfirmationofAward_createTime__c =null; // opp.LostTask_comfirmTime__c =null; // opp.Is_ConfirmationofAward__c =null; // opp.LostTask_createTime__c =null; // //lt DB202304062844 20230515 项目终止流程开发 start // if(tlink.Tender_information_Task__r.TerminateApprovalStatus__c == '批准' && opp.ConfirmationofAward__c == 'OLY中标'){ // opp.Closing_Bid_Date__c = null; // } // //lt DB202304062844 20230515 项目终止流程开发 end // //opp.Closing_Bid_Date__c = null; // //20220718 you 询价任务 end } } } if (upd_flg) { //lt DB202304062844 20230515 项目终止流程开发 start if(null!=TerminationStateMap && TerminationStateMap.containsKey(opp.Id) && opp.ConfirmationofAward__c == 'OLY中标'){ opp.Closing_Bid_Date__c = null; } //lt DB202304062844 20230515 项目终止流程开发 end opp.ConfirmationofAward__c = null; opp.Task_createTime__c = null; opp.ConfirmationofAward_createTime__c =null; opp.LostTask_comfirmTime__c =null; opp.Is_ConfirmationofAward__c =null; opp.LostTask_createTime__c =null; //opp.Closing_Bid_Date__c = null; //20220718 you 询价任务 end } } } } } //lt DB202304062844 20230515 项目终止流程开发 end StaticParameter.EscapeOppandStaTrigger = true; //lt DB202304062844 20230515 项目终止流程开发 跳过询价trigger start update opportunities; StaticParameter.EscapeOppandStaTrigger = false; //lt DB202304062844 20230515 项目终止流程开发 end } } //20220718 you 询价任务 end @@ -1337,4 +1393,16 @@ } } **/ //lt DB202304062844 20230515 项目终止流程开发 start subInfoType__c //如果项目阶段发生变化 或者阶段补充说明发生变化 或者终止审批发生变化且审批通过 把招标项目上的IsReactionOpp__c设置为true public void SetIsReactionOpp() { for(Tender_information__c newTen : newList){ Tender_information__c oldTen = oldMap.get(newTen.Id); if(newTen.InfoType__c != oldTen.InfoType__c || newTen.subInfoType__c != oldTen.subInfoType__c || (newTen.TerminateApprovalStatus__c != oldTen.TerminateApprovalStatus__c && newTen.TerminateApprovalStatus__c == '批准')){ newTen.IsReactionOpp__c = true; } } } //lt DB202304062844 20230515 项目终止流程开发 end } force-app/main/default/classes/TenderOpportunityLinkHandler.cls
@@ -13,6 +13,7 @@ protected override void afterInsert() { // 判断是否跳过 updateTerminateTender(this.newList); //lt 20230419 项目终止流程开发 add if (!StaticParameter.EscapeTOLinkTrigger) { updateTender(this.newList); updateOppotunityByInsert(this.newList); @@ -43,6 +44,48 @@ } } //lt 20230419 项目终止流程开发 终止申请状态清除 add //项目终止流程开发 -- 清除招标项目终止申请的信息,项目重启标识打勾 public void updateTerminateTender(List<Tender_Opportunity_Link__c> records){ if (records != null && records.size() > 0){ List<String> tenders = new List<String>(); // 获得要更新的招标项目 for (Tender_Opportunity_Link__c record: records) { if (!tenders.contains(record.Tender_information__c)) { tenders.add(record.Tender_information__c); } } List<Tender_information__c> UpdateTenders = new List<Tender_information__c>(); if (tenders.size() > 0){ List<Tender_information__c> tenderList = [SELECT id, status__c, TerminateReason__c, IsTerminate__c, TerminateApprovalStatus__c, TerminateApprovalTime__c, ProjectRestartFLG__c,subInfoType__c FROM Tender_information__c WHERE id in :tenders]; if(tenderList.size() > 0){ for (Tender_information__c tender : tenderList){ //if(tender.status__c == '09.终止' && tender.TerminateReason__c != '经销商原因' && tender.subInfoType__c != '3-1:废标公告' && tender.subInfoType__c != '3-2:流标公告') if(tender.status__c == '09.终止'){ tender.ProjectRestartFLG__c = true; tender.IsTerminate__c = null; tender.TerminateApprovalTime__c = null; tender.TerminateApprovalStatus__c = null; UpdateTenders.add(tender); } } } } if(UpdateTenders.size() > 0){ update UpdateTenders; } } } // 更新招标信息 public void updateTender(List<Tender_Opportunity_Link__c> records) { if (records != null && records.size() > 0) { force-app/main/default/classes/TenderResultConfirmTaskBatch.cls
@@ -26,7 +26,8 @@ + 'Opportunity__r.ConfirmationofAward_createTime__c ' + 'FROM Tender_Opportunity_Link__c ' + 'WHERE Tender_information__r.InfoType__c = \'3:结果\' ' + 'AND (Tender_information__r.subInfoType__c = \'3-5:中标通知\' OR Tender_information__r.subInfoType__c = \'3-6:合同公告\') '; + 'AND (Tender_information__r.subInfoType__c = \'3-5:中标通知\' OR Tender_information__r.subInfoType__c = \'3-6:合同公告\') ' + 'AND Opportunity__r.ConfirmationofAward__c = null AND Tender_information__r.TerminateApprovalStatus__c != \'批准\' '; //lt DB202304062844 20230515 项目终止流程开发 add //+ 'AND Tender_information__r.RecordTypeId = \'01210000000VLUI\' '; //20220715 you 招标任务 start force-app/main/default/classes/TerminateController.cls
New file @@ -0,0 +1,198 @@ public with sharing class TerminateController { public TerminateController() { } //根据ID查询 招投标项目 @AuraEnabled public static string GetInspectById(String Id){ QueryWrapper query = new QueryWrapper(Tender_information__c.SObjectType); query.eq('Id', Id); List<Tender_information__c> arrays = DataBasePlus.listPlus(query); return JSON.serialize(arrays); } @AuraEnabled public static Boolean cannotModifyIsRelateProject(String Id){ Boolean cannotModify = false; String profileIds = System.Label.Tender_IsnotRelated_ModifyDisable; System.debug('---lt123简档Id---'+UserInfo.getProfileId()); // 判断当前用户简档 if (profileIds.contains(UserInfo.getProfileId())) { // 获取招标项目 判断相关性 Tender_information__c tender = [select Id, IsRelateProject__c from Tender_information__c where Id = :Id]; if (tender != null && '是'.equals(tender.IsRelateProject__c)) { cannotModify = true; } } return cannotModify; } //招投标项目列表字段 irrelevantReasons__c 所有的值 @AuraEnabled public static string GetIrrelevantReasons(){ String JsonData = CommonUtils.GetSelectedValues( Tender_information__c.irrelevantReasons__c.getDescribe()); return JsonData; } //招投标项目列表字段 TerminateReason__c 所有的值 @AuraEnabled public static string GetIrresponsibleReason(){ String JsonData = CommonUtils.GetSelectedValues( Tender_information__c.TerminateReason__c.getDescribe()); return JsonData; } //20220913 you SWAG-CJ3DS5 start //招投标项目列表字段 TerminateReason__c 所有的值 @AuraEnabled public static string GetproInvolvedManual(){ String JsonData = CommonUtils.GetSelectedValues( Tender_information__c.proInvolvedManual__c.getDescribe()); return JsonData; } //20220913 you SWAG-CJ3DS5 end // 产品类 public class Information { public String hospital;//关联医院 public String account;// 关联普通科室 public String department;//关联医院 } // 查询用户 根据父ID的值 @AuraEnabled public static string GetIsPrentIdArr(String Id){ return CommonUtils.GetAccountPrentID(Id); } //保存数据 JSONData 是 招投标项目 对象的 json格式的值 @AuraEnabled public static string SaveData(String JsonData,String Id,String checkboxValue){ try{ Tender_information__c temp = (Tender_information__c)JSON.deserialize(JsonData,Tender_information__c.class); System.debug('temp=='+temp); StaticParameter.EscapeOtherUpdateTenOwner = false; update temp; StaticParameter.EscapeOtherUpdateTenOwner = true; //String assvale=AssignValuesToOwner(Id,checkboxValue); }catch(Exception ex) { return ex.getMessage(); } return '成功'; } //保存 应标数据 JSONData 是 招投标项目 对象的 json格式的值 @AuraEnabled public static String SaveDataYB(String JsonData){ try{ Tender_information__c temp = (Tender_information__c)JSON.deserialize(JsonData,Tender_information__c.class); //if (temp.IsTerminate__c == '否') { temp.TerminateApprovalStatus__c = '草案中'; temp.ownerid = UserInfo.getUserId(); //}else{ // temp.TerminateApprovalStatus__c = null; // temp.irresponsibleReasonOther__c = null; // temp.TerminateReason__c = null; // temp.irresponseApplyTime__c = null; // temp.TerminateExtraContent__c = null; //} update temp; }catch(Exception ex) { return ex.getMessage(); } return '成功'; } //提交审核 应标数据 JSONData 是 招投标项目 对象的 json格式的值 @AuraEnabled public static String ChangeDataYB(String JsonData){ try{ Tender_information__c temp = (Tender_information__c)JSON.deserialize(JsonData,Tender_information__c.class); if (temp.IsTerminate__c == '是') { temp.TerminateApprovalStatus__c = '填写完毕'; temp.ownerid = UserInfo.getUserId(); } update temp; }catch(Exception ex) { return ex.getMessage(); } return '成功'; } //查询战略科室 @AuraEnabled public static String SearchZLKS(String content,String[] ParentId){ String jsonData = CommonUtils.GetZLKS(content,ParentId); return jsonData; } //查询医院 @AuraEnabled public static String SearchYY(String content){ String jsonData = CommonUtils.GetYY(content); return jsonData; } //查询父类 @AuraEnabled public static String SearchParent(String Id){ String jsonData = CommonUtils.GetParent(Id); return jsonData; } //查询医院下的科室 @AuraEnabled public static String SearchYYChilders(String content,String ParentId){ String jsonData = CommonUtils.GetYYChilders(content,ParentId); return jsonData; } //根据id查询医院 @AuraEnabled public static String SearchAccountById(String Id){ QueryWrapper query = new QueryWrapper(account.SObjectType); query.eq('Id',Id); List<account> arraysTemp = DataBasePlus.listPlus(query); return JSON.serialize(arraysTemp); } //根据id查询用户 @AuraEnabled public static String SearchUserById(String Id){ QueryWrapper query = new QueryWrapper(user.SObjectType); query.eq('Id',Id); List<user> arraysTemp = DataBasePlus.listPlus(query); return JSON.serialize(arraysTemp); } //判断当前登录用户 是否是 所有人 @AuraEnabled public static String CheckOwner(String Id){ String OwnerId = UserInfo.getUserId(); String sql = 'select Id, owner.Id ,Name from Tender_information__c where Id = :Id '; List<Tender_information__c> arrays = Database.query(sql); if(UserInfo.getProfileId() == System.Label.ProfileId_SystemAdmin) { return '1'+ '==' + '1'; } if(arrays.size()<1) { return '2'+ '==' + '1'; } return OwnerId + '==' + arrays[0].owner.Id; } } force-app/main/default/classes/TerminateControllerTest.cls
New file @@ -0,0 +1,113 @@ @isTest private class TerminateControllerTest { static testMethod void testMethod1() { //创建数据 //招投标项目 //创建招投标项目 TerminateController a=new TerminateController(); Tender_information__c Ten = new Tender_information__c(); Tender_information__c Ten2 = new Tender_information__c(); Ten.Name = '123456'; Ten.ProjectId__c = '38_99df2844cf784982acdc61d00d7a7dbb'; Ten.IsRelateProject__c = '是'; insert Ten; Ten2=Ten; Address_Level__c al = new Address_Level__c(); al.Name = '東京'; al.Level1_Code__c = 'CN-99'; al.Level1_Sys_No__c = '999999'; insert al; // 市 Address_Level2__c al2 = new Address_Level2__c(); al2.Level1_Code__c = 'CN-99'; al2.Level1_Sys_No__c = '999999'; al2.Level1_Name__c = '東京'; al2.Name = '渋谷区'; al2.Level2_Code__c = 'CN-9999'; al2.Level2_Sys_No__c = '9999999'; al2.Address_Level__c = al.id; insert al2; // 病院を作る Account hospital = new Account(); hospital.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'].id; hospital.Name = 'test hospital'; hospital.Is_Active__c = '有効'; hospital.Attribute_Type__c = '卫生部'; hospital.Speciality_Type__c = '综合医院'; hospital.Grade__c = '一级'; hospital.OCM_Category__c = 'SLTV'; hospital.Is_Medical__c = '医疗机构'; hospital.State_Master__c = al.id; hospital.City_Master__c = al2.id; hospital.Town__c = '东京'; insert hospital; // 戦略科室を得る Account[] strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_OTH']; // 診療科を作る Account dep = new Account(); dep.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_OTH'].id; dep.Name = 'test dep'; dep.AgentCode_Ext__c = '9999998'; dep.ParentId = strategicDep[0].Id; dep.Department_Class__c = strategicDep[0].Id; dep.Hospital__c = hospital.Id; insert dep; String[] ids = new String[10]; // ids.Add('0011000000V97G7AAJ'); ids.Add(hospital.Id); //根据ID查询 招投标项目 TerminateController.GetInspectById(Ten.Id); TerminateController.cannotModifyIsRelateProject(Ten.Id); //招投标项目列表字段 irrelevantReasons__c 所有的值 TerminateController.GetIrrelevantReasons(); //招投标项目列表字段 irresponsibleReason__c 所有的值 TerminateController.GetIrresponsibleReason(); // 查询用户 根据父ID的值 TerminateController.GetIsPrentIdArr(hospital.Id); //保存数据 JSONData 是 招投标项目 对象的 json格式的值 String JSONData = JSON.serialize(Ten); String checkboxValue = '01210000000QemLAAS;01210000000QezZAAS'; TerminateController.SaveData(JSONData,Ten.Id,checkboxValue); TerminateController.SaveData('0',Ten.Id,checkboxValue); //保存 应标数据 JSONData 是 招投标项目 对象的 json格式的值 ten.IsRelateProject__c = '是'; JSONData = JSON.serialize(Ten); Ten2.IsRelateProject__c = '否'; String JSONData2 = JSON.serialize(Ten2); TerminateController.SaveDataYB(JSONData); TerminateController.SaveDataYB(JSONData2); TerminateController.SaveDataYB('0'); //提交审核 应标数据 JSONData 是 招投标项目 对象的 json格式的值 TerminateController.ChangeDataYB(JSONData); JSONData = JSON.serialize(Ten); TerminateController.ChangeDataYB(JSONData); //查询战略科室 TerminateController.SearchZLKS('test',ids); //查询医院 TerminateController.SearchYY('test'); //查询普通科室 // TerminateController.SearchPTKS('test',''); //查询普通科室 有医院限制的 // TerminateController.SearchPTKSByYYParent('test',hospital.Id); //查询父类 TerminateController.SearchParent(hospital.Id); //查询医院下的科室 TerminateController.SearchYYChilders('',''); //根据id查询 TerminateController.SearchAccountById(hospital.Id); // TerminateController.SearchYH('123',ids); TerminateController.SearchUserById('0011000000V97G7AAJ'); TerminateController.CheckOwner(Ten.Id); TerminateController.GetproInvolvedManual(); } } force-app/main/default/pages/Terminate.page
New file @@ -0,0 +1,25 @@ <apex:page showHeader="false" sidebar="false" id="yb" title="项目终止" lightningStylesheets="true"> <apex:includeLightning /> <div style="width:100%;height:100%;" id="TerminateAPP" /> <script> $Lightning.use("c:TerminateAPP", function () { $Lightning.createComponent("c:isTerminate", {}, "TerminateAPP", function (cmp) { console.log('Component created, do something cool here'); }); }); var interval = setInterval(()=>{ var hrefStr = window.location.href; if (hrefStr.indexOf("Refresh") != -1) { var arr = hrefStr.split("=="); window.opener.parent.location.href = "/"+arr[1]; top.window.close(); clearInterval(interval); } },1000); </script> </apex:page>