From 19ae52ae3e06c44c646ae6b45dc2b0d7f2cead88 Mon Sep 17 00:00:00 2001 From: 李彤 <litong@prec-tech.com> Date: 星期一, 15 五月 2023 18:55:53 +0800 Subject: [PATCH] 招标项目终止 --- force-app/main/default/classes/TenderResultConfirmTaskBatch.cls | 3 force-app/main/default/aura/TerminateApp/TerminateAppController.js | 5 force-app/main/default/classes/TenderInformationHandler.cls | 122 ++++++++-- force-app/main/default/classes/TerminateController.cls | 198 ++++++++++++++++++ force-app/main/default/aura/TerminateApp/TerminateApp.auradoc | 6 force-app/main/default/aura/TerminateApp/TerminateAppHelper.js | 5 force-app/main/default/aura/TerminateApp/TerminateAppRenderer.js | 5 force-app/main/default/aura/TerminateApp/TerminateApp.app-meta.xml | 5 force-app/main/default/pages/Terminate.page | 25 ++ force-app/main/default/aura/TerminateApp/TerminateApp.app | 3 force-app/main/default/aura/TerminateApp/TerminateApp.css | 2 force-app/main/default/aura/TerminateApp/TerminateApp.svg | 7 force-app/main/default/classes/LostCancelReportHandler.cls | 89 +++++++- force-app/main/default/classes/TenderOpportunityLinkHandler.cls | 47 ++++ force-app/main/default/classes/TerminateControllerTest.cls | 113 ++++++++++ 15 files changed, 593 insertions(+), 42 deletions(-) diff --git a/force-app/main/default/aura/TerminateApp/TerminateApp.app b/force-app/main/default/aura/TerminateApp/TerminateApp.app new file mode 100644 index 0000000..b6aff2f --- /dev/null +++ b/force-app/main/default/aura/TerminateApp/TerminateApp.app @@ -0,0 +1,3 @@ +<aura:application access="public" extends="ltng:outApp"> + <aura:dependency resource="c:isTerminate"/> +</aura:application> \ No newline at end of file diff --git a/force-app/main/default/aura/TerminateApp/TerminateApp.app-meta.xml b/force-app/main/default/aura/TerminateApp/TerminateApp.app-meta.xml new file mode 100644 index 0000000..4dd34b9 --- /dev/null +++ b/force-app/main/default/aura/TerminateApp/TerminateApp.app-meta.xml @@ -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> \ No newline at end of file diff --git a/force-app/main/default/aura/TerminateApp/TerminateApp.auradoc b/force-app/main/default/aura/TerminateApp/TerminateApp.auradoc new file mode 100644 index 0000000..d0d6eb5 --- /dev/null +++ b/force-app/main/default/aura/TerminateApp/TerminateApp.auradoc @@ -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> \ No newline at end of file diff --git a/force-app/main/default/aura/TerminateApp/TerminateApp.css b/force-app/main/default/aura/TerminateApp/TerminateApp.css new file mode 100644 index 0000000..f407185 --- /dev/null +++ b/force-app/main/default/aura/TerminateApp/TerminateApp.css @@ -0,0 +1,2 @@ +.THIS { +} diff --git a/force-app/main/default/aura/TerminateApp/TerminateApp.svg b/force-app/main/default/aura/TerminateApp/TerminateApp.svg new file mode 100644 index 0000000..791b3c7 --- /dev/null +++ b/force-app/main/default/aura/TerminateApp/TerminateApp.svg @@ -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> \ No newline at end of file diff --git a/force-app/main/default/aura/TerminateApp/TerminateAppController.js b/force-app/main/default/aura/TerminateApp/TerminateAppController.js new file mode 100644 index 0000000..b235899 --- /dev/null +++ b/force-app/main/default/aura/TerminateApp/TerminateAppController.js @@ -0,0 +1,5 @@ +({ + myAction : function(component, event, helper) { + + } +}) diff --git a/force-app/main/default/aura/TerminateApp/TerminateAppHelper.js b/force-app/main/default/aura/TerminateApp/TerminateAppHelper.js new file mode 100644 index 0000000..f8a77e3 --- /dev/null +++ b/force-app/main/default/aura/TerminateApp/TerminateAppHelper.js @@ -0,0 +1,5 @@ +({ + helperMethod : function() { + + } +}) diff --git a/force-app/main/default/aura/TerminateApp/TerminateAppRenderer.js b/force-app/main/default/aura/TerminateApp/TerminateAppRenderer.js new file mode 100644 index 0000000..3a11ff5 --- /dev/null +++ b/force-app/main/default/aura/TerminateApp/TerminateAppRenderer.js @@ -0,0 +1,5 @@ +({ + +// Your renderer method overrides go here + +}) diff --git a/force-app/main/default/classes/LostCancelReportHandler.cls b/force-app/main/default/classes/LostCancelReportHandler.cls index ebce451..5044614 100644 --- a/force-app/main/default/classes/LostCancelReportHandler.cls +++ b/force-app/main/default/classes/LostCancelReportHandler.cls @@ -30,7 +30,7 @@ //2022-6-22 yjk 璇环璺熻繘浠诲姟 start protected override void afterInsert() { - updateTask(); + updateTask(); } // 2022-7-29 ssm XLIU-CGSC8R 銆愬鎵樸�慬鏀瑰杽銆戣浠烽噷鍒犻櫎鎵瑰噯鐨勫け鍗曟姤鍛婄姸鎬�1鑷姩鍙� @@ -41,14 +41,15 @@ private void updateTask(){ List<Id> oppIdList = new List<Id>(); - Set<Id> oppIdSet = new Set<Id>(); + Set<Id> oppIdSet = new Set<Id>(); 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,9 +260,13 @@ } 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 瀹屾垚'; + tsk.taskStatus__c = '03 瀹屾垚'; } update taskList; }// 20220720 ljh update @@ -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銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 start - opp.RivalHostsNumber__c = 0; + opp.RivalHostsNumber__c = opp.RivalHostsNumber__c != null ? opp.RivalHostsNumber__c : 0; //20220930 lt SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 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) { diff --git a/force-app/main/default/classes/TenderInformationHandler.cls b/force-app/main/default/classes/TenderInformationHandler.cls index de9c2b1..1e4df89 100644 --- a/force-app/main/default/classes/TenderInformationHandler.cls +++ b/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) { - for (Opportunity opp : opportunities) { - if (opp.Id == tlink.OpportunityId__c) { - if(tlink.RecordType.Name =='澶卞崟鎶ュ憡浠诲姟' && tlink.taskStatus__c !='03 瀹屾垚'){ - //涓嶅仛鎿嶄綔 - }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; - //opp.Closing_Bid_Date__c = null; - //20220718 you 璇环浠诲姟 end - } - } + update 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) { + //lt DB202304062844 20230515 椤圭洰缁堟娴佺▼寮�鍙� update !='03 瀹屾垚' --- == '02 鎺ュ彈' + if(tlink.RecordType.Name =='澶卞崟鎶ュ憡浠诲姟' && tlink.taskStatus__c == '02 鎺ュ彈'){ + upd_flg = false; + break; + //涓嶅仛鎿嶄綔 + // }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; + } } } + //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 + //濡傛灉椤圭洰闃舵鍙戠敓鍙樺寲 鎴栬�呴樁娈佃ˉ鍏呰鏄庡彂鐢熷彉鍖� 鎴栬�呯粓姝㈠鎵瑰彂鐢熷彉鍖栦笖瀹℃壒閫氳繃 鎶婃嫑鏍囬」鐩笂鐨処sReactionOpp__c璁剧疆涓簍rue + 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 } \ No newline at end of file diff --git a/force-app/main/default/classes/TenderOpportunityLinkHandler.cls b/force-app/main/default/classes/TenderOpportunityLinkHandler.cls index 197d4a5..128094a 100644 --- a/force-app/main/default/classes/TenderOpportunityLinkHandler.cls +++ b/force-app/main/default/classes/TenderOpportunityLinkHandler.cls @@ -10,12 +10,13 @@ this.newList = (List<Tender_Opportunity_Link__c>) Trigger.new; this.oldList = (List<Tender_Opportunity_Link__c>) Trigger.old; } - + protected override void afterInsert() { // 鍒ゆ柇鏄惁璺宠繃 + updateTerminateTender(this.newList); //lt 20230419 椤圭洰缁堟娴佺▼寮�鍙� add if (!StaticParameter.EscapeTOLinkTrigger) { updateTender(this.newList); - updateOppotunityByInsert(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) { diff --git a/force-app/main/default/classes/TenderResultConfirmTaskBatch.cls b/force-app/main/default/classes/TenderResultConfirmTaskBatch.cls index 4ea7996..6f2cf42 100644 --- a/force-app/main/default/classes/TenderResultConfirmTaskBatch.cls +++ b/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 diff --git a/force-app/main/default/classes/TerminateController.cls b/force-app/main/default/classes/TerminateController.cls new file mode 100644 index 0000000..72d28f1 --- /dev/null +++ b/force-app/main/default/classes/TerminateController.cls @@ -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绠�妗d---'+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;//鍏宠仈鍖婚櫌 + } + + // 鏌ヨ鐢ㄦ埛 鏍规嵁鐖禝D鐨勫�� + @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; + } + + +} \ No newline at end of file diff --git a/force-app/main/default/classes/TerminateControllerTest.cls b/force-app/main/default/classes/TerminateControllerTest.cls new file mode 100644 index 0000000..5bb5d79 --- /dev/null +++ b/force-app/main/default/classes/TerminateControllerTest.cls @@ -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(); + // 鏌ヨ鐢ㄦ埛 鏍规嵁鐖禝D鐨勫�� + 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(); + + + } + +} \ No newline at end of file diff --git a/force-app/main/default/pages/Terminate.page b/force-app/main/default/pages/Terminate.page new file mode 100644 index 0000000..cbc6072 --- /dev/null +++ b/force-app/main/default/pages/Terminate.page @@ -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> \ No newline at end of file -- Gitblit v1.9.1