From e4185f503d973b28f95725908e3fad155cfbf088 Mon Sep 17 00:00:00 2001 From: 沙世明 <shashiming@prec-tech.com> Date: 星期三, 22 三月 2023 11:55:32 +0800 Subject: [PATCH] 进口单证发货日逻辑 --- force-app/main/default/classes/FrameNumUploadControllerTest.cls-meta.xml | 5 force-app/main/default/classes/FrameNumManageHandler.cls | 93 ++++ force-app/main/default/classes/SetFrameNumManageBatch.cls | 276 ++++++++++-- force-app/main/default/classes/FrameNumManageHandler.cls-meta.xml | 5 force-app/main/default/classes/DNDetailsHandler.cls-meta.xml | 5 force-app/main/default/classes/ESignFormHandler.cls | 132 +++++ force-app/main/default/classes/DNDetailsHandler.cls | 121 +++++ force-app/main/default/classes/FrameNumUploadControllerTest.cls | 654 +++++++++++++++++++++++++++++ 8 files changed, 1,218 insertions(+), 73 deletions(-) diff --git a/force-app/main/default/classes/DNDetailsHandler.cls b/force-app/main/default/classes/DNDetailsHandler.cls new file mode 100644 index 0000000..1ad9d58 --- /dev/null +++ b/force-app/main/default/classes/DNDetailsHandler.cls @@ -0,0 +1,121 @@ +/** + * @Author lijinhuan + * @DateTime 2023-02-07T17:49:45+0800 + * 娴嬭瘯绫伙細FrameNumUploadControllerTest +*/ +public without sharing class DNDetailsHandler extends Oly_TriggerHandler { + + private Map<Id, Statu_Achievements_DN_details__c > newMap; + private Map<Id, Statu_Achievements_DN_details__c > oldMap; + private List<Statu_Achievements_DN_details__c > newList; + private List<Statu_Achievements_DN_details__c > oldList; + public DNDetailsHandler() { + this.newMap = (Map<Id, Statu_Achievements_DN_details__c >) Trigger.newMap; + this.oldMap = (Map<Id, Statu_Achievements_DN_details__c >) Trigger.oldMap; + this.newList = (List<Statu_Achievements_DN_details__c >) Trigger.new; + this.oldList = (List<Statu_Achievements_DN_details__c >) Trigger.old; + } + protected override void afterInsert() { + insertFrameNumManag(); + } + protected override void afterUpdate() { + // insertFrameNumManag(); // 娴嬭瘯鐢� + } + + protected override void afterDelete() { + + } + + protected override void beforeInsert() { + } + + protected override void beforeUpdate() { + + } + + protected override void beforeDelete() { + // 杩涘彛鍗曡瘉 start + // 鍒犻櫎杩涘彛鍗曡瘉鏁版嵁 + deleteFrameNumManage(); + // 杩涘彛鍗曡瘉 end + } + + private Void insertFrameNumManag(){ + Set<String> IdSet = new Set<String>(); + // 杩涘彛鍗曡瘉 澧炲姞鍙戣揣鏃ヨ缃� start + Set<Date> dateset = new Set<Date>(); + Map<Date, String> olycals = new Map<Date, String>(); + // 杩涘彛鍗曡瘉 澧炲姞鍙戣揣鏃ヨ缃� end + Map<String,Id> eSignFormMap = new Map<String,Id>(); + Map<String,String> DNMap = new Map<String,String>(); + for (Statu_Achievements_DN_details__c nObj : newList) { + IdSet.add(nObj.Id); + } + Map<String,Statu_Achievements_DN_details__c> sandMap = new Map<String,Statu_Achievements_DN_details__c>(); + // 鏌ヨ鏄庣粏 鍦ㄦ満韬紪鐮佷腑鏈夋病锛屾病鏈夌敓鎴� + for(Statu_Achievements_DN_details__c dn:[SELECT Id,SerialNumber__c,asset__c, + Statu_Achievements_DN__c,SerialNoorLotNo_Raw__c,TracingCode_Raw__c, + OTCode_Raw__c,asset__r.Name,QTY__c,Statu_Achievements_DN__r.Name + // 杩涘彛鍗曡瘉 澧炲姞鍙戣揣鏃ヨ缃� start + , Statu_Achievements_DN__r.DeliveryDate__c + // 杩涘彛鍗曡瘉 澧炲姞鍙戣揣鏃ヨ缃� end + FROM Statu_Achievements_DN_details__c + WHERE Id =:IdSet ]){ + sandMap.put(dn.TracingCode_Raw__c,dn); + DNMap.put(dn.TracingCode_Raw__c,dn.Statu_Achievements_DN__r.Name); + // 鍙栨墍鏈夊彂璐ф棩 + dateset.add(dn.Statu_Achievements_DN__r.DeliveryDate__c); + } + for(FrameNumManage__c f:[SELECT ManagementCode__c FROM FrameNumManage__c WHERE ManagementCode__c in :sandMap.keySet()]){ + sandMap.remove(f.ManagementCode__c); + } + for(eSignForm__c es:[SELECT Id,DNName__c FROM eSignForm__c WHERE DNName__c IN: DNMap.values()]){ + for(String key:DNMap.keySet()){ + if(DNMap.get(key) == es.DNName__c){ + eSignFormMap.put(key,es.Id); + } + } + } + // 鍙栧彂璐ф棩鐨勫ゥ鏋楀反鏂棩鍘� + for (OlympusCalendar__c oc : [select Id, Date__c from OlympusCalendar__c where Date__c in :dateset]) { + olycals.put(oc.Date__c, oc.Id); + } + + if(sandMap.size() > 0){ + List<FrameNumManage__c> infnmList = new List<FrameNumManage__c>(); + for (Statu_Achievements_DN_details__c s:sandMap.values()) { + if(eSignFormMap.get(s.TracingCode_Raw__c) != null){ + FrameNumManage__c temp = new FrameNumManage__c(); + temp.Name = s.TracingCode_Raw__c; + temp.ManagementCode__c = s.TracingCode_Raw__c; + temp.SerialNumberS__c = s.SerialNoorLotNo_Raw__c+'('+s.TracingCode_Raw__c+')'; + temp.SerialNumber__c = s.SerialNoorLotNo_Raw__c; + temp.Num__c = s.QTY__c; + temp.CheckOutNo__c = s.Statu_Achievements_DN__r.Name.subString(2);//鍙戣揣DN 鐨刵ame鍘绘帀鍓嶄袱浣嶇殑 00 + + temp.Statu_Achievements_DN_details__c = s.Id; + temp.Asset__c = s.asset__c; + temp.signInForm__c = eSignFormMap.get(s.TracingCode_Raw__c); + + // 璁剧疆鍙戣揣鏃ュ拰濂ユ灄宸存柉鏃ュ巻 + temp.DeliveryDate__c = s.Statu_Achievements_DN__r.DeliveryDate__c; + temp.DeliveryDate_select__c = temp.DeliveryDate__c != null && olycals.size() > 0 && String.isNotBlank(olycals.get(temp.DeliveryDate__c)) ? olycals.get(temp.DeliveryDate__c) : null; + + temp.Material__c = s.OTCode_Raw__c; + temp.MaterialDepict__c = s.asset__r.Name; + infnmList.add(temp); + } + } + if(infnmList.size() > 0){ + insert infnmList; + } + } + } + + private void deleteFrameNumManage() { + List<FrameNumManage__c> rnmList = [select Id from FrameNumManage__c where Statu_Achievements_DN_details__c in :oldMap.keySet()]; + if (rnmList != null && rnmList.size() > 0) { + delete rnmList; + } + } +} \ No newline at end of file diff --git a/force-app/main/default/classes/DNDetailsHandler.cls-meta.xml b/force-app/main/default/classes/DNDetailsHandler.cls-meta.xml new file mode 100644 index 0000000..db9bf8c --- /dev/null +++ b/force-app/main/default/classes/DNDetailsHandler.cls-meta.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> + <apiVersion>48.0</apiVersion> + <status>Active</status> +</ApexClass> diff --git a/force-app/main/default/classes/ESignFormHandler.cls b/force-app/main/default/classes/ESignFormHandler.cls index 85b0ad6..e474d4c 100644 --- a/force-app/main/default/classes/ESignFormHandler.cls +++ b/force-app/main/default/classes/ESignFormHandler.cls @@ -1,8 +1,11 @@ +/* + 20230302 ljh 娴嬭瘯绫� ESignFormHandlerTest 鍙互 FrameNumUploadControllerTest 涔熷彲浠� + */ public without sharing class ESignFormHandler extends Oly_TriggerHandler { - private Map<Id, eSignForm__c> newMap; - private Map<Id, eSignForm__c> oldMap; - private List<eSignForm__c> newList; - private List<eSignForm__c> oldList; + private Map<Id, eSignForm__c> newMap; + private Map<Id, eSignForm__c> oldMap; + private List<eSignForm__c> newList; + private List<eSignForm__c> oldList; public ESignFormHandler() { @@ -20,11 +23,15 @@ beforeExecute(); } protected override void afterInsert() { - afterExecute(); + // afterExecute(); + // 杩涘彛鍗曡瘉 start + // 绛炬敹鍗曠敓鎴愬悗鎻掑叆杩涘彛鍗曡瘉瀵瑰簲鐨勬暟鎹� + insertFrameNumManage(); + // 杩涘彛鍗曡瘉 end } protected override void afterUpdate() { - afterExecute(); + // afterExecute(); } private void beforeExecute() { @@ -32,7 +39,7 @@ for(eSignForm__c nObj : newList) { //DN鍙蜂笉涓虹┖ if(String.isNotBlank(nObj.DNNameNo0__c)){ - Blob bodyBlob=Blob.valueOf(nObj.DNNameNo0__c); + Blob bodyBlob=Blob.valueOf(nObj.DNNameNo0__c); nObj.DNName0_base64__c =String.valueOf(EncodingUtil.base64Encode(bodyBlob)); } //缁忛攢鍟嗙鐞嗙紪鐮佷笉涓虹┖ @@ -43,22 +50,109 @@ } } - private void afterExecute() { - List<eSignFormEntry__c> eSignFormEntryList = new List<eSignFormEntry__c>(); + // private void afterExecute() { + // List<eSignFormEntry__c> eSignFormEntryList = new List<eSignFormEntry__c>(); - for (eSignForm__c eSignForm : newList) { + // for (eSignForm__c eSignForm : newList) { - if(eSignForm.finalUpadteFrom__c != null){ - eSignFormEntry__c es = new eSignFormEntry__c(); - es.id = eSignForm.finalUpadteFrom__c; - es.IsHandled__c = true; - eSignFormEntryList.add(es); - } + // if(eSignForm.finalUpadteFrom__c != null){ + // eSignFormEntry__c es = new eSignFormEntry__c(); + // es.id = eSignForm.finalUpadteFrom__c; + // es.IsHandled__c = true; + // eSignFormEntryList.add(es); + // } + // } + // if(eSignFormEntryList.size() > 0){ + // update eSignFormEntryList; + // } + // } + + private void insertFrameNumManage() { + Set<String> IdSet = new Set<String>(); + // 杩涘彛鍗曡瘉 澧炲姞鍙戣揣鏃ヨ缃� start + Set<Date> dateset = new Set<Date>(); + Map<Date, String> olycals = new Map<Date, String>(); + // 杩涘彛鍗曡瘉 澧炲姞鍙戣揣鏃ヨ缃� end + Map<String,Id> eSignFormMap = new Map<String,Id>(); + Map<String,String> DNMap = new Map<String,String>(); + for (eSignForm__c nObj : newList) { + IdSet.add(nObj.Statu_Achievements_DN__c); + } + Map<String,Statu_Achievements_DN_details__c> sandMap = new Map<String,Statu_Achievements_DN_details__c>(); + Map<String,Statu_Achievements_DN_details__c> UpdateSandMap = new Map<String,Statu_Achievements_DN_details__c>(); + Map<String,String> UpdateFIdMap = new Map<String,String>(); + // 鏌ヨ鏄庣粏 鍦ㄦ満韬彿绠$悊涓湁娌★紝娌℃湁鐢熸垚,鏈夋洿鏂� 绛炬敹鍗曘�佸彂璐N鏄庣粏銆佷繚鏈夎澶� + for(Statu_Achievements_DN_details__c dn:[SELECT Id,SerialNumber__c,asset__c, + Statu_Achievements_DN__c,SerialNoorLotNo_Raw__c,TracingCode_Raw__c, + OTCode_Raw__c,asset__r.Name,QTY__c,Statu_Achievements_DN__r.Name + // 杩涘彛鍗曡瘉 澧炲姞鍙戣揣鏃ヨ缃� start + , Statu_Achievements_DN__r.DeliveryDate__c + // 杩涘彛鍗曡瘉 澧炲姞鍙戣揣鏃ヨ缃� end + FROM Statu_Achievements_DN_details__c + WHERE Statu_Achievements_DN__c =:IdSet ]){ + sandMap.put(dn.TracingCode_Raw__c,dn); + DNMap.put(dn.TracingCode_Raw__c,dn.Statu_Achievements_DN__r.Name); + // 鍙栨墍鏈夊彂璐ф棩 + dateset.add(dn.Statu_Achievements_DN__r.DeliveryDate__c); + } + for(FrameNumManage__c f:[SELECT Id,ManagementCode__c FROM FrameNumManage__c WHERE ManagementCode__c in :sandMap.keySet()]){ + // 鏇存柊鏈鸿韩鍙风鐞� + UpdateSandMap.put(f.ManagementCode__c,sandMap.get(f.ManagementCode__c)); + UpdateFIdMap.put(f.ManagementCode__c, f.Id); + sandMap.remove(f.ManagementCode__c); + } + for(eSignForm__c es: newList){ + for(String key:DNMap.keySet()){ + if(DNMap.get(key) == es.DNName__c){ + eSignFormMap.put(key,es.Id); + } + } + } + // 鍙栧彂璐ф棩鐨勫ゥ鏋楀反鏂棩鍘� + for (OlympusCalendar__c oc : [select Id, Date__c from OlympusCalendar__c where Date__c in :dateset]) { + olycals.put(oc.Date__c, oc.Id); + } + if(sandMap.size() > 0){ + List<FrameNumManage__c> infnmList = new List<FrameNumManage__c>(); + for (Statu_Achievements_DN_details__c s:sandMap.values()) { + FrameNumManage__c temp = new FrameNumManage__c(); + temp.Name = s.TracingCode_Raw__c; + temp.ManagementCode__c = s.TracingCode_Raw__c; + temp.SerialNumberS__c = s.SerialNoorLotNo_Raw__c+'('+s.TracingCode_Raw__c+')'; + temp.SerialNumber__c = s.SerialNoorLotNo_Raw__c; + temp.Num__c = s.QTY__c; + temp.CheckOutNo__c = s.Statu_Achievements_DN__r.Name.subString(2);//鍙戣揣DN 鐨刵ame鍘绘帀鍓嶄袱浣嶇殑 00 + + temp.Statu_Achievements_DN_details__c = s.Id; + temp.Asset__c = s.asset__c; + temp.signInForm__c = eSignFormMap.get(s.TracingCode_Raw__c); + + // 璁剧疆鍙戣揣鏃ュ拰濂ユ灄宸存柉鏃ュ巻 + temp.DeliveryDate__c = s.Statu_Achievements_DN__r.DeliveryDate__c; + temp.DeliveryDate_select__c = temp.DeliveryDate__c != null && olycals.size() > 0 && String.isNotBlank(olycals.get(temp.DeliveryDate__c)) ? olycals.get(temp.DeliveryDate__c) : null; + + temp.Material__c = s.OTCode_Raw__c; + temp.MaterialDepict__c = s.asset__r.Name; + infnmList.add(temp); } - if(eSignFormEntryList.size() > 0){ - update eSignFormEntryList; - } + if(infnmList.size() > 0){ + insert infnmList; + // Database.executeBatch(new SetFrameNumManageBatch(), 100); + } + } + if(UpdateSandMap.size() > 0){ + List<FrameNumManage__c> upfnmList = new List<FrameNumManage__c>(); + for (Statu_Achievements_DN_details__c s:UpdateSandMap.values()) { + FrameNumManage__c temp = new FrameNumManage__c(); + temp.id = UpdateFIdMap.get(s.TracingCode_Raw__c); + temp.Statu_Achievements_DN_details__c = s.Id; + temp.Asset__c = s.asset__c; + temp.signInForm__c = eSignFormMap.get(s.TracingCode_Raw__c); + upfnmList.add(temp); + } + update upfnmList; + } } } \ No newline at end of file diff --git a/force-app/main/default/classes/FrameNumManageHandler.cls b/force-app/main/default/classes/FrameNumManageHandler.cls new file mode 100644 index 0000000..e99d708 --- /dev/null +++ b/force-app/main/default/classes/FrameNumManageHandler.cls @@ -0,0 +1,93 @@ +/** + * @Author lijinhuan + * @DateTime 2022-12-14T17:01:14+0800 + * 娴嬭瘯绫伙細FrameNumUploadControllerTest +*/ +public without sharing class FrameNumManageHandler extends Oly_TriggerHandler { + + private Map<Id, FrameNumManage__c > newMap; + private Map<Id, FrameNumManage__c > oldMap; + private List<FrameNumManage__c > newList; + private List<FrameNumManage__c > oldList; + public FrameNumManageHandler() { + this.newMap = (Map<Id, FrameNumManage__c >) Trigger.newMap; + this.oldMap = (Map<Id, FrameNumManage__c >) Trigger.oldMap; + this.newList = (List<FrameNumManage__c >) Trigger.new; + this.oldList = (List<FrameNumManage__c >) Trigger.old; + } + protected override void afterInsert() { + // 杩涘彛鍗曡瘉 澧炲姞鍙戣揣鏃ヨ缃� start + updateAsset(); + // 杩涘彛鍗曡瘉 澧炲姞鍙戣揣鏃ヨ缃� end + } + protected override void afterUpdate() { + updateAsset(); + } + + protected override void beforeInsert() { + } + + protected override void beforeUpdate() { + IsChange(); + } + private Void updateAsset(){ + Map<String,FrameNumManage__c> FrameNumManageMap = new Map<String,FrameNumManage__c>(); + for (FrameNumManage__c nObj : newList) { + FrameNumManage__c oObj = oldMap != null ? oldMap.get(nObj.Id) : null; + if( String.isNotBlank(nObj.Asset__c) + && ( oObj == null + || nObj.Asset__c != oObj.Asset__c + || nObj.ApplyList_Select__c != oObj.ApplyList_Select__c + || nObj.InspectionCard_Select__c != oObj.InspectionCard_Select__c + || nObj.ApplyList__c != oObj.ApplyList__c + || nObj.InspectionCard__c != oObj.InspectionCard__c + || nObj.ScanDate__c != oObj.ScanDate__c + || nObj.ScanDate_select__c != oObj.ScanDate_select__c + || nObj.DeliveryDate__c != oObj.DeliveryDate__c + || nObj.DeliveryDate_select__c != oObj.DeliveryDate_select__c + ) + ){ + FrameNumManageMap.put(nObj.Asset__c,nObj); + } + } + if(FrameNumManageMap.size() > 0 ){ + List<Asset> AssetList = [select id,ApplyList__c,InspectionCard__c from Asset where id in :FrameNumManageMap.keySet()]; + List<Asset> upAssetList = new List<Asset>(); + for(Asset ass:AssetList){ + if( (ass.ApplyList__c == null || + (ass.ApplyList__c != null && ass.ApplyList__c != FrameNumManageMap.get(ass.Id).ApplyList_NoHave__c)) + || (ass.InspectionCard__c == null || + (ass.InspectionCard__c != null && ass.InspectionCard__c != FrameNumManageMap.get(ass.Id).InspectionCard_NoHave__c)) + ){ + Asset tempAsset = new Asset(); + tempAsset.Id = ass.Id; + if(ass.ApplyList__c == null || + (ass.ApplyList__c != null && ass.ApplyList__c != FrameNumManageMap.get(ass.Id).ApplyList_NoHave__c)){ + tempAsset.ApplyList__c = FrameNumManageMap.get(ass.Id).ApplyList_NoHave__c; + } + if(ass.InspectionCard__c == null || + (ass.InspectionCard__c != null && ass.InspectionCard__c != FrameNumManageMap.get(ass.Id).InspectionCard_NoHave__c)){ + tempAsset.InspectionCard__c = FrameNumManageMap.get(ass.Id).InspectionCard_NoHave__c; + } + + upAssetList.add(tempAsset); + } + } + if(upAssetList.size() > 0){ + StaticParameter.EscapeVMCTrigger = true; + update upAssetList; + StaticParameter.EscapeVMCTrigger = false; + } + } + } + private Void IsChange(){ + for (FrameNumManage__c nObj : newList) { + FrameNumManage__c oObj = oldMap.get(nObj.Id); + if((nObj.ApplyList__c != oObj.ApplyList__c) + ||(nObj.InspectionCard__c != oObj.InspectionCard__c) + ){ + nObj.IsChange__c = true; + } + } + } +} \ No newline at end of file diff --git a/force-app/main/default/classes/FrameNumManageHandler.cls-meta.xml b/force-app/main/default/classes/FrameNumManageHandler.cls-meta.xml new file mode 100644 index 0000000..db9bf8c --- /dev/null +++ b/force-app/main/default/classes/FrameNumManageHandler.cls-meta.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> + <apiVersion>48.0</apiVersion> + <status>Active</status> +</ApexClass> diff --git a/force-app/main/default/classes/FrameNumUploadControllerTest.cls b/force-app/main/default/classes/FrameNumUploadControllerTest.cls new file mode 100644 index 0000000..ad4c03f --- /dev/null +++ b/force-app/main/default/classes/FrameNumUploadControllerTest.cls @@ -0,0 +1,654 @@ +/** + * @Author lijinhuan +*/ +@isTest +private class FrameNumUploadControllerTest { + static testMethod void testMethod1() { + StaticParameter.EscapeNFM001AgencyContractTrigger = true; + StaticParameter.EscapeNFM001Trigger = true; + Oly_TriggerHandler.bypass(ContactTriggerHandler.class.getName()); + Oly_TriggerHandler.bypass(AgencyHospitalHandler.class.getName()); + + List < RecordType > rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' + and Name = '鐥呴櫌' + ]; + if (rectCo.size() == 0) { + return; + } + List < RecordType > rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' + and Name = '鎴︾暐绉戝鍒嗛 鍛煎惛绉�' + ]; + if (rectSct.size() == 0) { + return; + } + List < RecordType > rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' + and Name = '瑷虹檪绉� 娑堝寲绉�' + ]; + if (rectDpt.size() == 0) { + return; + } + //绛炬敹鍗曟渶缁堢敤鎴疯褰曠被鍨� + List < RecordType > recordTypeList = [select Id from RecordType where IsActive = true and SobjectType = 'Account' + and Name = '鎴︾暐绉戝鍒嗛 鍛煎惛绉�' + ]; + if (recordTypeList.size() == 0) { + return; + } + // 鐪� + Address_Level__c al = new Address_Level__c(); + al.Name = '鏉变含'; + al.Level1_Code__c = 'CN-99'; + al.Level1_Sys_No__c = '999999'; + upsert 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; + upsert al2; + // 浜у搧 + Product2 prd = new Product2(); + prd.ProductCode_Ext__c = 'N2656630'; + prd.ProductCode = 'N2656630'; + prd.Name = 'N2656630'; + prd.Manual_Entry__c = false; + upsert prd; + //瀹㈡埛鍖婚櫌 + Account company = new Account(); + company.RecordTypeId = rectCo[0].Id; + company.Name = 'NFM008TestCompany'; + upsert company; + Account section = new Account(); + section.RecordTypeId = rectSct[0].Id; + section.Name = '*'; + section.Department_Class_Label__c = '娑堝寲绉�'; + section.ParentId = company.Id; + section.Hospital_Department_Class__c = company.Id; + upsert section; + Account depart = new Account(); + depart.RecordTypeId = rectDpt[0].Id; + depart.Name = '*'; + depart.Department_Name__c = 'NFM008TestDepart'; + depart.ParentId = section.Id; + depart.Department_Class__c = section.Id; + depart.Hospital__c = company.Id; + upsert depart; + //绛炬敹鍗曟渶缁堢敤鎴疯褰曠被鍨� + Account recordType = new Account(); + recordType.RecordTypeId = recordTypeList[0].Id; + recordType.Name = '*'; + recordType.Department_Class_Label__c = '娑堝寲绉�'; + recordType.ParentId = company.Id; + recordType.Hospital_Department_Class__c = company.Id; + upsert recordType; + RecordType rectOpp = [select id from RecordType where IsActive = true and SobjectType = 'Opportunity' + and DeveloperName = 'Opportunity' + ]; + //璇环 + Opportunity opp = new Opportunity(Name = 'testOpp1', StageName = '寮曞悎', CloseDate = Date.today(), AccountId = depart.Id, Sales_Root__c = '璨╁2搴�', Competitor__c = 'A', Click_Close_Date__c = null, RecordType = rectOpp); + upsert opp; + //娉ㄦ畫 + Statu_Achievements__c Sac = new Statu_Achievements__c(name = 'zhucan_one', Opportunity__c = opp.id, DeliveryDate__c = Date.today(), ContractNO__c = 'ContractNO1', ContractAmount__c = 100); + insert Sac; + //淇濇湁璁惧 + Asset assnew = new Asset(Asset_Owner__c = 'Olympus'); + assnew.Backorder__c = Sac.Id; + // assnew.Order_number__c = Sac.Id; + assnew.RecordTypeId = System.Label.Asset_RecordType; + assnew.SerialNumber = '22K'; + assnew.Name = 'NA-201SX-4021:涓�娆℃�т娇鐢ㄥ惛寮曟椿妫�閽�'; + assnew.Product2Id = prd.Id; + assnew.Hospital__c = company.Id; + assnew.Department_Class__c = section.Id; + assnew.AccountId = depart.Id; + assnew.Asset_Owner__c = '鍖婚櫌璧勪骇'; + assnew.Quantity = 1; + assnew.Status = '鏈夊簱瀛�'; + assnew.Manage_type__c = '涓綋绠$悊'; + assnew.Internal_asset_location__c = '鍖椾含 澶囧搧涓績'; + assnew.Loaner_accsessary__c = true; + assnew.Delete_Flag__c = false; + assnew.Freeze_sign__c = false; + assnew.Out_of_wh__c = 0; + assnew.CIC_call_back_check__c = true; + assnew.Product_Serial_No__c = 'N2656630:22K(KVWMX)'; + assnew.TracingCode__c = 'KVWMX'; // 鈥� + assnew.Posting_Date__c = Date.valueOf('2021-08-20'); + + upsert assnew; + //鍙戣揣DN + Statu_Achievements_DN__c statuAchievementsDN = new Statu_Achievements_DN__c(); + statuAchievementsDN.Statu_Achievements__c = Sac.Id; + statuAchievementsDN.DeliveryDate__c = Date.valueOf('2021-08-20'); + statuAchievementsDN.Name = '2021082049'; + statuAchievementsDN.endUser__c = recordType.Id; + upsert statuAchievementsDN; + //鍙戣揣DN鏄庣粏 + Statu_Achievements_DN_details__c statuAchievementsDNDetails = new Statu_Achievements_DN_details__c(); + statuAchievementsDNDetails.Statu_Achievements_DN__c = statuAchievementsDN.Id; + statuAchievementsDNDetails.Name = 'z1c200000292wse'; + statuAchievementsDNDetails.asset__c = assnew.Id; + statuAchievementsDNDetails.SerialNoorLotNo_Raw__c = '22K'; // 鈥� + statuAchievementsDNDetails.TracingCode_Raw__c = 'KVWMX'; // 鈥� + upsert statuAchievementsDNDetails; + // Olympus鏃ュ巻 + OlympusCalendar__c OlympusCalendar = new OlympusCalendar__c(); + OlympusCalendar.Date__c = Date.valueOf('2021-08-20'); + upsert OlympusCalendar; + OlympusCalendar__c OlympusCalendar2 = new OlympusCalendar__c(); + OlympusCalendar2.Date__c = Date.valueOf('2022-05-10'); + upsert OlympusCalendar2; + // + FileAddress__c file = new FileAddress__c(); + + file.DownloadLink__c ='url123&fileName=Contact'; + file.FileName__c ='FY2305-ET01-3.pdf';//鈥� + file.ViewLink__c ='url123'; + file.ParentRecordId__c ='FrameNumManage'; // 鈥� + file.AWS_File_Key__c = '123'; + insert file; + + PageReference ref = new PageReference('/apex/FrameNumUpload'); + String csvStr = '鍑哄簱鍗曞彿,鐗╂枡,鐗╂枡鎻忚堪,鏈鸿韩鍙�/鎵规鍙�,鏁伴噺,鎵弿鏃ユ湡,绠$悊缂栧彿,鎶ュ叧鍝佸悕,鍒嗙被,鍑鸿瘉,鎶ュ叧鍗�,鍟嗘璇�,璧峰鏃�,缁撴潫鏃�'; + csvStr += '\r\n'; + String csvStrOk = csvStr+ '65289024,N2656630,NA-201SX-4021:涓�娆℃�т娇鐢ㄥ惛寮曟椿妫�閽�,22K,1,2022/05/10,KVWMX,涓�娆℃�т娇鐢ㄥ惛寮曟椿妫�閽�,ET,鏄�,FY2305-ET01-3,FY2305-ET01-3,2022/05/10,2022/05/14'; + String csvStrErr = csvStr+ '65289024,N2656630,NA-201SX-4021:涓�娆℃�т娇鐢ㄥ惛寮曟椿妫�閽�,22K,1,2022/05/10,KVWMX,涓�娆℃�т娇鐢ㄥ惛寮曟椿妫�閽�,ET1111,鏄笉鏄�,FY2305-ET01-3,FY2305-ET01-3,2022/05/10,2022/05/14'; + + FrameNumUploadController Controller = new FrameNumUploadController(); + ref.getParameters().put('csvData', csvStrErr); + Test.setCurrentPage(ref); + Controller.importCSVFile(); + + ref.getParameters().put('csvData', csvStrOk); + Test.setCurrentPage(ref); + Controller.importCSVFile(); + + List<FrameNumManage__c> FrameNumManageList = [select Id,InspectionCard__c from FrameNumManage__c]; + System.assertEquals(1, FrameNumManageList.size()); + FrameNumManageList[0].InspectionCard__c = '涓嶈'; + update FrameNumManageList; + SetFrameNumManageWebService.updateFrameNumManag(FrameNumManageList[0].Id);// 鍏宠仈鏁版嵁 鎸夐挳 + } + + // 涓轰簡 SetFrameNumManageWebService 鎵归噺鍒犻櫎鎸夐挳 + static testMethod void testMethod2() { + StaticParameter.EscapeNFM001AgencyContractTrigger = true; + StaticParameter.EscapeNFM001Trigger = true; + Oly_TriggerHandler.bypass(ContactTriggerHandler.class.getName()); + Oly_TriggerHandler.bypass(AgencyHospitalHandler.class.getName()); + + List < RecordType > rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' + and Name = '鐥呴櫌' + ]; + if (rectCo.size() == 0) { + return; + } + List < RecordType > rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' + and Name = '鎴︾暐绉戝鍒嗛 鍛煎惛绉�' + ]; + if (rectSct.size() == 0) { + return; + } + List < RecordType > rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' + and Name = '瑷虹檪绉� 娑堝寲绉�' + ]; + if (rectDpt.size() == 0) { + return; + } + //绛炬敹鍗曟渶缁堢敤鎴疯褰曠被鍨� + List < RecordType > recordTypeList = [select Id from RecordType where IsActive = true and SobjectType = 'Account' + and Name = '鎴︾暐绉戝鍒嗛 鍛煎惛绉�' + ]; + if (recordTypeList.size() == 0) { + return; + } + // 鐪� + Address_Level__c al = new Address_Level__c(); + al.Name = '鏉变含'; + al.Level1_Code__c = 'CN-99'; + al.Level1_Sys_No__c = '999999'; + upsert 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; + upsert al2; + // 浜у搧 + Product2 prd = new Product2(); + prd.ProductCode_Ext__c = 'N2656630'; + prd.ProductCode = 'N2656630'; + prd.Name = 'N2656630'; + prd.Manual_Entry__c = false; + upsert prd; + //瀹㈡埛鍖婚櫌 + Account company = new Account(); + company.RecordTypeId = rectCo[0].Id; + company.Name = 'NFM008TestCompany'; + upsert company; + Account section = new Account(); + section.RecordTypeId = rectSct[0].Id; + section.Name = '*'; + section.Department_Class_Label__c = '娑堝寲绉�'; + section.ParentId = company.Id; + section.Hospital_Department_Class__c = company.Id; + upsert section; + Account depart = new Account(); + depart.RecordTypeId = rectDpt[0].Id; + depart.Name = '*'; + depart.Department_Name__c = 'NFM008TestDepart'; + depart.ParentId = section.Id; + depart.Department_Class__c = section.Id; + depart.Hospital__c = company.Id; + upsert depart; + //绛炬敹鍗曟渶缁堢敤鎴疯褰曠被鍨� + Account recordType = new Account(); + recordType.RecordTypeId = recordTypeList[0].Id; + recordType.Name = '*'; + recordType.Department_Class_Label__c = '娑堝寲绉�'; + recordType.ParentId = company.Id; + recordType.Hospital_Department_Class__c = company.Id; + upsert recordType; + RecordType rectOpp = [select id from RecordType where IsActive = true and SobjectType = 'Opportunity' + and DeveloperName = 'Opportunity' + ]; + //璇环 + Opportunity opp = new Opportunity(Name = 'testOpp1', StageName = '寮曞悎', CloseDate = Date.today(), AccountId = depart.Id, Sales_Root__c = '璨╁2搴�', Competitor__c = 'A', Click_Close_Date__c = null, RecordType = rectOpp); + upsert opp; + //娉ㄦ畫 + Statu_Achievements__c Sac = new Statu_Achievements__c(name = 'zhucan_one', Opportunity__c = opp.id, DeliveryDate__c = Date.today(), ContractNO__c = 'ContractNO1', ContractAmount__c = 100); + insert Sac; + //淇濇湁璁惧 + Asset assnew = new Asset(Asset_Owner__c = 'Olympus'); + assnew.Backorder__c = Sac.Id; + // assnew.Order_number__c = Sac.Id; + assnew.RecordTypeId = System.Label.Asset_RecordType; + assnew.SerialNumber = '22K'; + assnew.Name = 'NA-201SX-4021:涓�娆℃�т娇鐢ㄥ惛寮曟椿妫�閽�'; + assnew.Product2Id = prd.Id; + assnew.Hospital__c = company.Id; + assnew.Department_Class__c = section.Id; + assnew.AccountId = depart.Id; + assnew.Asset_Owner__c = '鍖婚櫌璧勪骇'; + assnew.Quantity = 1; + assnew.Status = '鏈夊簱瀛�'; + assnew.Manage_type__c = '涓綋绠$悊'; + assnew.Internal_asset_location__c = '鍖椾含 澶囧搧涓績'; + assnew.Loaner_accsessary__c = true; + assnew.Delete_Flag__c = false; + assnew.Freeze_sign__c = false; + assnew.Out_of_wh__c = 0; + assnew.CIC_call_back_check__c = true; + assnew.Product_Serial_No__c = 'N2656630:22K(KVWMX)'; + + upsert assnew; + //鍙戣揣DN + Statu_Achievements_DN__c statuAchievementsDN = new Statu_Achievements_DN__c(); + statuAchievementsDN.Statu_Achievements__c = Sac.Id; + statuAchievementsDN.Name = '2021082049'; + statuAchievementsDN.endUser__c = recordType.Id; + upsert statuAchievementsDN; + //鍙戣揣DN鏄庣粏 + Statu_Achievements_DN_details__c statuAchievementsDNDetails = new Statu_Achievements_DN_details__c(); + statuAchievementsDNDetails.Statu_Achievements_DN__c = statuAchievementsDN.Id; + statuAchievementsDNDetails.Name = 'z1c200000292wse'; + statuAchievementsDNDetails.asset__c = assnew.Id; + statuAchievementsDNDetails.SerialNoorLotNo_Raw__c = '22K'; // 鈥� + statuAchievementsDNDetails.TracingCode_Raw__c = 'KVWMX'; // 鈥� + upsert statuAchievementsDNDetails; + + // + FileAddress__c file = new FileAddress__c(); + + file.DownloadLink__c ='url123&fileName=Contact'; + file.FileName__c ='FY2305-ET01-3.pdf';//鈥� + file.ViewLink__c ='url123'; + file.ParentRecordId__c ='FrameNumManage'; // 鈥� + file.AWS_File_Key__c = '123'; + insert file; + + PageReference ref = new PageReference('/apex/FrameNumUpload'); + String csvStr = '鍑哄簱鍗曞彿,鐗╂枡,鐗╂枡鎻忚堪,鏈鸿韩鍙�/鎵规鍙�,鏁伴噺,鎵弿鏃ユ湡,绠$悊缂栧彿,鎶ュ叧鍝佸悕,鍒嗙被,鍑鸿瘉,鎶ュ叧鍗�,鍟嗘璇�,璧峰鏃�,缁撴潫鏃�,涓婁紶鏃�'; + csvStr += '\r\n'; + String csvStrOk = csvStr+ '65289024,N2656630,NA-201SX-4021 : 涓�娆℃�т娇鐢ㄥ惛寮曟椿妫�閽�,22K,1,2022/5/10,KVWMX,涓�娆℃�т娇鐢ㄥ惛寮曟椿妫�閽�,ET,鏄�,FY2305-ET01-3,FY2305-ET01-3,2022/5/10,2022/5/14,2022/6/14'; + String csvStrErr = csvStr+ '65289024,N2656630,NA-201SX-4021 : 涓�娆℃�т娇鐢ㄥ惛寮曟椿妫�閽�,22K,1,2022/5/10,KVWMX,涓�娆℃�т娇鐢ㄥ惛寮曟椿妫�閽�,ET1111,鏄�,FY2305-ET01-3,FY2305-ET01-3,2022/5/10,2022/5/14,2022/6/14'; + + ref.getParameters().put('csvData', csvStrErr); + Test.setCurrentPage(ref); + FrameNumUploadController Controller = new FrameNumUploadController(); + Controller.importCSVFile(); + + ref.getParameters().put('csvData', csvStrOk); + Test.setCurrentPage(ref); + Controller.importCSVFile(); + + List<FrameNumManage__c> FrameNumManageList = [select Id,InspectionCard__c from FrameNumManage__c]; + System.assertEquals(1, FrameNumManageList.size()); + // 姝e父鍒犻櫎 + List<String> Ids = new List<String>{FrameNumManageList[0].Id}; + SetFrameNumManageWebService.BatchDelete(Ids); // 鎵归噺鍒犻櫎 鎸夐挳 + // catch + List<String> IdsErr = new List<String>{'aaaaaaaaaaaaa'}; + SetFrameNumManageWebService.BatchDelete(IdsErr); + } + + // 鍏宠仈杩涘彛鍗曡瘉 鎸夐挳 + static testMethod void testMethod3() { + StaticParameter.EscapeNFM001AgencyContractTrigger = true; + StaticParameter.EscapeNFM001Trigger = true; + Oly_TriggerHandler.bypass(ContactTriggerHandler.class.getName()); + Oly_TriggerHandler.bypass(AgencyHospitalHandler.class.getName()); + + Oly_TriggerHandler.bypass(ESignFormHandler.class.getName()); + + List < RecordType > rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' + and Name = '鐥呴櫌' + ]; + if (rectCo.size() == 0) { + return; + } + List < RecordType > rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' + and Name = '鎴︾暐绉戝鍒嗛 鍛煎惛绉�' + ]; + if (rectSct.size() == 0) { + return; + } + List < RecordType > rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' + and Name = '瑷虹檪绉� 娑堝寲绉�' + ]; + if (rectDpt.size() == 0) { + return; + } + //绛炬敹鍗曟渶缁堢敤鎴疯褰曠被鍨� + List < RecordType > recordTypeList = [select Id from RecordType where IsActive = true and SobjectType = 'Account' + and Name = '鎴︾暐绉戝鍒嗛 鍛煎惛绉�' + ]; + if (recordTypeList.size() == 0) { + return; + } + // 鐪� + Address_Level__c al = new Address_Level__c(); + al.Name = '鏉变含'; + al.Level1_Code__c = 'CN-99'; + al.Level1_Sys_No__c = '999999'; + upsert 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; + upsert al2; + // 浜у搧 + Product2 prd = new Product2(); + prd.ProductCode_Ext__c = 'N2656630'; + prd.ProductCode = 'N2656630'; + prd.Name = 'N2656630'; + prd.Manual_Entry__c = false; + upsert prd; + //瀹㈡埛鍖婚櫌 + Account company = new Account(); + company.RecordTypeId = rectCo[0].Id; + company.Name = 'NFM008TestCompany'; + upsert company; + Account section = new Account(); + section.RecordTypeId = rectSct[0].Id; + section.Name = '*'; + section.Department_Class_Label__c = '娑堝寲绉�'; + section.ParentId = company.Id; + section.Hospital_Department_Class__c = company.Id; + upsert section; + Account depart = new Account(); + depart.RecordTypeId = rectDpt[0].Id; + depart.Name = '*'; + depart.Department_Name__c = 'NFM008TestDepart'; + depart.ParentId = section.Id; + depart.Department_Class__c = section.Id; + depart.Hospital__c = company.Id; + upsert depart; + //绛炬敹鍗曟渶缁堢敤鎴疯褰曠被鍨� + Account recordType = new Account(); + recordType.RecordTypeId = recordTypeList[0].Id; + recordType.Name = '*'; + recordType.Department_Class_Label__c = '娑堝寲绉�'; + recordType.ParentId = company.Id; + recordType.Hospital_Department_Class__c = company.Id; + upsert recordType; + RecordType rectOpp = [select id from RecordType where IsActive = true and SobjectType = 'Opportunity' + and DeveloperName = 'Opportunity' + ]; + //璇环 + Opportunity opp = new Opportunity(Name = 'testOpp1', StageName = '寮曞悎', CloseDate = Date.today(), AccountId = depart.Id, Sales_Root__c = '璨╁2搴�', Competitor__c = 'A', Click_Close_Date__c = null, RecordType = rectOpp); + upsert opp; + //娉ㄦ畫 + Statu_Achievements__c Sac = new Statu_Achievements__c(name = 'zhucan_one', Opportunity__c = opp.id, DeliveryDate__c = Date.today(), ContractNO__c = 'ContractNO1', ContractAmount__c = 100); + insert Sac; + //淇濇湁璁惧 + Asset assnew = new Asset(Asset_Owner__c = 'Olympus'); + assnew.Backorder__c = Sac.Id; + // assnew.Order_number__c = Sac.Id; + assnew.RecordTypeId = System.Label.Asset_RecordType; + assnew.SerialNumber = '22K'; + assnew.Name = 'NA-201SX-4021:涓�娆℃�т娇鐢ㄥ惛寮曟椿妫�閽�'; + assnew.Product2Id = prd.Id; + assnew.Hospital__c = company.Id; + assnew.Department_Class__c = section.Id; + assnew.AccountId = depart.Id; + assnew.Asset_Owner__c = '鍖婚櫌璧勪骇'; + assnew.Quantity = 1; + assnew.Status = '鏈夊簱瀛�'; + assnew.Manage_type__c = '涓綋绠$悊'; + assnew.Internal_asset_location__c = '鍖椾含 澶囧搧涓績'; + assnew.Loaner_accsessary__c = true; + assnew.Delete_Flag__c = false; + assnew.Freeze_sign__c = false; + assnew.Out_of_wh__c = 0; + assnew.CIC_call_back_check__c = true; + assnew.Product_Serial_No__c = 'N2656630:22K(KVWMX)'; + + upsert assnew; + //鍙戣揣DN + Statu_Achievements_DN__c statuAchievementsDN = new Statu_Achievements_DN__c(); + statuAchievementsDN.Statu_Achievements__c = Sac.Id; + statuAchievementsDN.Name = '2021082049'; + statuAchievementsDN.endUser__c = recordType.Id; + upsert statuAchievementsDN; + //鍙戣揣DN鏄庣粏 + Statu_Achievements_DN_details__c statuAchievementsDNDetails = new Statu_Achievements_DN_details__c(); + statuAchievementsDNDetails.Statu_Achievements_DN__c = statuAchievementsDN.Id; + statuAchievementsDNDetails.Name = 'z1c200000292wse'; + statuAchievementsDNDetails.asset__c = assnew.Id; + statuAchievementsDNDetails.SerialNoorLotNo_Raw__c = '22K'; // 鈥� + statuAchievementsDNDetails.TracingCode_Raw__c = 'KVWMX'; // 鈥� + upsert statuAchievementsDNDetails; + + // 绛炬敹鍗� + //鏂板缓鐢靛瓙绛炬敹鍗� + eSignForm__c eSignForm = new eSignForm__c(); + eSignForm.Statu_Achievements__c = Sac.Id; + eSignForm.Statu_Achievements_DN__c = statuAchievementsDN.Id; + eSignForm.Name = '::娴嬭瘯鐢靛瓙绛炬敹鍗�'; + eSignForm.DNName__c = '2021082049'; + eSignForm.AccessoriesQualified__c = true; + eSignForm.handleOpinionAgency__c = '鍝囧搱鍝堝搱鍝堝搱鍝堝搱鍝�'; + eSignForm.agencyScanDay__c = Date.today(); + eSignForm.agencySignUpDate__c =Date.today(); + eSignForm.agencyConfirmDate__c = Date.today(); + + insert eSignForm; + + SetFrameNumManageWebService.insertFrameNumManag(statuAchievementsDN.Id,eSignForm.Id);// 鎻掑叆 + SetFrameNumManageWebService.insertFrameNumManag(statuAchievementsDN.Id,eSignForm.Id);// 鏇存柊 + // 瑙﹀彂鍣� DNDetailsHandler 娴嬭瘯绫� + update statuAchievementsDNDetails; + // delete statuAchievementsDNDetails; + List<Statu_Achievements_DN_details__c> temList = [select Id from Statu_Achievements_DN_details__c where id = :statuAchievementsDNDetails.Id]; + System.assertEquals(1, temList.size()); + delete temList; + List<Statu_Achievements_DN_details__c> temList1 = [select Id from Statu_Achievements_DN_details__c where id = :statuAchievementsDNDetails.Id]; + System.assertEquals(0, temList1.size()); + + } + // 瑙﹀彂鍣� DNDetailsHandler 娴嬭瘯绫� + static testMethod void testMethod4() { + StaticParameter.EscapeNFM001AgencyContractTrigger = true; + StaticParameter.EscapeNFM001Trigger = true; + Oly_TriggerHandler.bypass(ContactTriggerHandler.class.getName()); + Oly_TriggerHandler.bypass(AgencyHospitalHandler.class.getName()); + + Oly_TriggerHandler.bypass(ESignFormHandler.class.getName()); + + List < RecordType > rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' + and Name = '鐥呴櫌' + ]; + if (rectCo.size() == 0) { + return; + } + List < RecordType > rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' + and Name = '鎴︾暐绉戝鍒嗛 鍛煎惛绉�' + ]; + if (rectSct.size() == 0) { + return; + } + List < RecordType > rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' + and Name = '瑷虹檪绉� 娑堝寲绉�' + ]; + if (rectDpt.size() == 0) { + return; + } + //绛炬敹鍗曟渶缁堢敤鎴疯褰曠被鍨� + List < RecordType > recordTypeList = [select Id from RecordType where IsActive = true and SobjectType = 'Account' + and Name = '鎴︾暐绉戝鍒嗛 鍛煎惛绉�' + ]; + if (recordTypeList.size() == 0) { + return; + } + // 鐪� + Address_Level__c al = new Address_Level__c(); + al.Name = '鏉变含'; + al.Level1_Code__c = 'CN-99'; + al.Level1_Sys_No__c = '999999'; + upsert 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; + upsert al2; + // 浜у搧 + Product2 prd = new Product2(); + prd.ProductCode_Ext__c = 'N2656630'; + prd.ProductCode = 'N2656630'; + prd.Name = 'N2656630'; + prd.Manual_Entry__c = false; + upsert prd; + //瀹㈡埛鍖婚櫌 + Account company = new Account(); + company.RecordTypeId = rectCo[0].Id; + company.Name = 'NFM008TestCompany'; + upsert company; + Account section = new Account(); + section.RecordTypeId = rectSct[0].Id; + section.Name = '*'; + section.Department_Class_Label__c = '娑堝寲绉�'; + section.ParentId = company.Id; + section.Hospital_Department_Class__c = company.Id; + upsert section; + Account depart = new Account(); + depart.RecordTypeId = rectDpt[0].Id; + depart.Name = '*'; + depart.Department_Name__c = 'NFM008TestDepart'; + depart.ParentId = section.Id; + depart.Department_Class__c = section.Id; + depart.Hospital__c = company.Id; + upsert depart; + //绛炬敹鍗曟渶缁堢敤鎴疯褰曠被鍨� + Account recordType = new Account(); + recordType.RecordTypeId = recordTypeList[0].Id; + recordType.Name = '*'; + recordType.Department_Class_Label__c = '娑堝寲绉�'; + recordType.ParentId = company.Id; + recordType.Hospital_Department_Class__c = company.Id; + upsert recordType; + RecordType rectOpp = [select id from RecordType where IsActive = true and SobjectType = 'Opportunity' + and DeveloperName = 'Opportunity' + ]; + //璇环 + Opportunity opp = new Opportunity(Name = 'testOpp1', StageName = '寮曞悎', CloseDate = Date.today(), AccountId = depart.Id, Sales_Root__c = '璨╁2搴�', Competitor__c = 'A', Click_Close_Date__c = null, RecordType = rectOpp); + upsert opp; + //娉ㄦ畫 + Statu_Achievements__c Sac = new Statu_Achievements__c(name = 'zhucan_one', Opportunity__c = opp.id, DeliveryDate__c = Date.today(), ContractNO__c = 'ContractNO1', ContractAmount__c = 100); + insert Sac; + //淇濇湁璁惧 + Asset assnew = new Asset(Asset_Owner__c = 'Olympus'); + assnew.Backorder__c = Sac.Id; + // assnew.Order_number__c = Sac.Id; + assnew.RecordTypeId = System.Label.Asset_RecordType; + assnew.SerialNumber = '22K'; + assnew.Name = 'NA-201SX-4021:涓�娆℃�т娇鐢ㄥ惛寮曟椿妫�閽�'; + assnew.Product2Id = prd.Id; + assnew.Hospital__c = company.Id; + assnew.Department_Class__c = section.Id; + assnew.AccountId = depart.Id; + assnew.Asset_Owner__c = '鍖婚櫌璧勪骇'; + assnew.Quantity = 1; + assnew.Status = '鏈夊簱瀛�'; + assnew.Manage_type__c = '涓綋绠$悊'; + assnew.Internal_asset_location__c = '鍖椾含 澶囧搧涓績'; + assnew.Loaner_accsessary__c = true; + assnew.Delete_Flag__c = false; + assnew.Freeze_sign__c = false; + assnew.Out_of_wh__c = 0; + assnew.CIC_call_back_check__c = true; + assnew.Product_Serial_No__c = 'N2656630:22K(KVWMX)'; + + upsert assnew; + + //鍙戣揣DN + Statu_Achievements_DN__c statuAchievementsDN = new Statu_Achievements_DN__c(); + statuAchievementsDN.Statu_Achievements__c = Sac.Id; + statuAchievementsDN.Name = '2021082049'; + statuAchievementsDN.endUser__c = recordType.Id; + upsert statuAchievementsDN; + // 绛炬敹鍗� + //鏂板缓鐢靛瓙绛炬敹鍗� + eSignForm__c eSignForm = new eSignForm__c(); + eSignForm.Statu_Achievements__c = Sac.Id; + eSignForm.Statu_Achievements_DN__c = statuAchievementsDN.Id; + eSignForm.Name = '::娴嬭瘯鐢靛瓙绛炬敹鍗�'; + eSignForm.DNName__c = '2021082049'; + eSignForm.AccessoriesQualified__c = true; + eSignForm.handleOpinionAgency__c = '鍝囧搱鍝堝搱鍝堝搱鍝堝搱鍝�'; + eSignForm.agencyScanDay__c = Date.today(); + eSignForm.agencySignUpDate__c =Date.today(); + eSignForm.agencyConfirmDate__c = Date.today(); + + insert eSignForm; + + + //鍙戣揣DN鏄庣粏 + Statu_Achievements_DN_details__c statuAchievementsDNDetails = new Statu_Achievements_DN_details__c(); + statuAchievementsDNDetails.Statu_Achievements_DN__c = statuAchievementsDN.Id; + statuAchievementsDNDetails.Name = 'z1c200000292wse'; + statuAchievementsDNDetails.asset__c = assnew.Id; + statuAchievementsDNDetails.SerialNoorLotNo_Raw__c = '22K'; // 鈥� + statuAchievementsDNDetails.TracingCode_Raw__c = 'KVWMX'; // 鈥� + upsert statuAchievementsDNDetails; + } + +} \ No newline at end of file diff --git a/force-app/main/default/classes/FrameNumUploadControllerTest.cls-meta.xml b/force-app/main/default/classes/FrameNumUploadControllerTest.cls-meta.xml new file mode 100644 index 0000000..db9bf8c --- /dev/null +++ b/force-app/main/default/classes/FrameNumUploadControllerTest.cls-meta.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> + <apiVersion>48.0</apiVersion> + <status>Active</status> +</ApexClass> diff --git a/force-app/main/default/classes/SetFrameNumManageBatch.cls b/force-app/main/default/classes/SetFrameNumManageBatch.cls index 4125e8a..5950b1e 100644 --- a/force-app/main/default/classes/SetFrameNumManageBatch.cls +++ b/force-app/main/default/classes/SetFrameNumManageBatch.cls @@ -2,27 +2,57 @@ * [SetFrameNumManageBatch 杩涘彛鍗曡瘉涓婁紶鍚庢煡鎵惧瓧娈礲atch鏇存柊] * @Author lijinhuan * @DateTime 2022-11-04T18:31:03+0800 - * @return [] + * 娴嬭瘯绫伙細FrameNumUploadControllerTest */ -global without sharing class SetFrameNumManageBatch implements Database.Batchable<sObject> { +global without sharing class SetFrameNumManageBatch implements Database.Batchable<sObject>, Database.Stateful{ public String query; + public String Id; + + //閭欢淇℃伅 + List<String> emailMessages = new List<String>(); + + //鎶ラ敊鐨勮繘鍙e崟璇両d + String logStr = '杩涘彛鍗曡瘉 : '; + //鎶ラ敊淇℃伅 + String errorStr = ''; + //鎬讳欢鏁� + Integer totalCount = 0; + // 澶辫触浠舵暟 + Integer failedCount = 0; global SetFrameNumManageBatch() { this.query = query; } + global SetFrameNumManageBatch(String Id) { + this.query = query; + this.Id = Id; + } + global Database.QueryLocator start(Database.BatchableContext bc) { - query = 'select Id,SerialNumberS__c,InspectionCard__c,ApplyList__c from FrameNumManage__c where '; - // query += '('; - query += ' signInForm__c = null '; - query += ' OR Statu_Achievements_DN_details__c = null '; - query += ' OR Asset__c = null '; - query += ' OR (InspectionCard_Select__c = null AND InspectionCard__c != null AND InspectionCard__c !=\'涓嶅嚭璇乗')'; - query += ' OR (InspectionCard_Select__c != null AND (InspectionCard__c =\'涓嶅嚭璇乗' OR InspectionCard__c = null))';// 娓呯┖ - query += ' OR (ApplyList_Select__c = null AND ApplyList__c != null)'; - query += ' OR (ApplyList_Select__c != null AND ApplyList__c = null)';// 娓呯┖ - // query += ')'; - // query += ' AND id = \'a5D9D0000000WqF\''; + query = 'select Id,ManagementCode__c,InspectionCard__c,InspectionCard_Select__c,ApplyList__c,ApplyList_Select__c,'; + // query += 'Statu_Achievements_DN_details__c,signInForm__c,Asset__c,ManagementCode__c,IsChange__c '; + query += 'Asset__c,ScanDate__c,ScanDate_select__c,IsChange__c, DeliveryDate__c, DeliveryDate_select__c '; + // query += 'IsChange__c '; + query += ' from FrameNumManage__c where '; + if(String.isNotBlank(Id)){ + query += ' id = :Id'; + }else{ + // query += ' signInForm__c = null '; + // query += ' OR Statu_Achievements_DN_details__c = null '; + + // query += '((signInForm__c = null OR Statu_Achievements_DN_details__c = null) AND AssertRecordType__c != \'Shipment\') '; + // query += ' OR Asset__c = null '; + // + query += ' Asset__c = null '; + query += ' OR (InspectionCard_Select__c = null AND InspectionCard__c != null AND InspectionCard__c !=\'涓嶈\')'; + // query += ' (InspectionCard_Select__c = null AND InspectionCard__c != null AND InspectionCard__c != \'\' AND InspectionCard__c !=\'涓嶈\')'; + query += ' OR (InspectionCard_Select__c != null AND (InspectionCard__c =\'涓嶈\' OR InspectionCard__c = null OR InspectionCard__c = \'\'))';// 娓呯┖ + query += ' OR (ApplyList_Select__c = null AND ApplyList__c != null AND ApplyList__c != \'\')'; + query += ' OR (ApplyList_Select__c != null AND (ApplyList__c = null OR ApplyList__c =\'\'))';// 娓呯┖ + query += ' OR (ScanDate__c != null AND ScanDate_select__c = null)'; + query += ' OR IsChange__c = true'; + } return Database.getQueryLocator(query); } @@ -31,48 +61,82 @@ Map<String,String> ApplyListMap = new Map<String,String>(); Map<String,Id> InspectionCardIdMap = new Map<String,Id>(); Map<String,Id> ApplyListIdMap = new Map<String,Id>(); - Set<String> SerialNumberSet = new Set<String>(); - Set<Id> clearSet = new Set<Id>(); + Set<String> TracingCodeSet = new Set<String>(); + Set<String> TracingCodeAssetSet = new Set<String>(); + Map<Id,String> clearMap = new Map<Id,String>(); + Set<Date> ScanDateSet = new Set<Date>(); + Map<Id,FrameNumManage__c> oldMap = new Map<Id,FrameNumManage__c>(); + try{ for(FrameNumManage__c fnm:fnmList){ // 娓呯┖ - if(String.isBlank(fnm.ApplyList__c) - || String.isBlank(fnm.InspectionCard__c) - ||(!String.isBlank(fnm.InspectionCard__c) && fnm.InspectionCard__c == '涓嶅嚭璇�')){ - clearSet.add(fnm.Id); - }else{ - //璧嬪�� - SerialNumberSet.add(fnm.SerialNumberS__c); - InspectionCardMap.put(fnm.SerialNumberS__c,fnm.InspectionCard__c); - ApplyListMap.put(fnm.SerialNumberS__c,fnm.ApplyList__c); + // 0 all 1:ApplyList_Select__c 2:InspectionCard_Select__c + if( + ((String.isBlank(fnm.ApplyList__c) ||(!String.isBlank(fnm.ApplyList__c) && fnm.ApplyList__c == '涓嶈')) &&!String.isBlank(fnm.ApplyList_Select__c)) + && ((String.isBlank(fnm.InspectionCard__c) ||(!String.isBlank(fnm.InspectionCard__c) && fnm.InspectionCard__c == '涓嶈')) &&!String.isBlank(fnm.InspectionCard_Select__c)) + ){ + clearMap.put(fnm.Id,'0'); + }else if((String.isBlank(fnm.ApplyList__c) ||(!String.isBlank(fnm.ApplyList__c) && fnm.ApplyList__c == '涓嶈')) &&!String.isBlank(fnm.ApplyList_Select__c)){ + clearMap.put(fnm.Id,'1'); + }else if((String.isBlank(fnm.InspectionCard__c) ||(!String.isBlank(fnm.InspectionCard__c) && fnm.InspectionCard__c == '涓嶈')) &&!String.isBlank(fnm.InspectionCard_Select__c)){ + clearMap.put(fnm.Id,'2'); + } + //璧嬪�� + // if(String.isBlank(fnm.signInForm__c) || String.isBlank(fnm.Statu_Achievements_DN_details__c)){ + // TracingCodeSet.add(fnm.ManagementCode__c); //绛炬敹鍗� 鍙戣揣DN鏄庣粏鐢� + // } + // System.debug('zheli03:'+String.isBlank(fnm.Asset__c)); + if(String.isBlank(fnm.Asset__c)){ + TracingCodeAssetSet.add(fnm.ManagementCode__c);// 淇濇湁璁惧鐢� } + // System.debug('zheli02:'+TracingCodeAssetSet); + InspectionCardMap.put(fnm.ManagementCode__c,fnm.InspectionCard__c); + ApplyListMap.put(fnm.ManagementCode__c,fnm.ApplyList__c); + if(fnm.ScanDate__c != null){ + ScanDateSet.add(fnm.ScanDate__c); + } + oldMap.put(fnm.Id,fnm); } // 鍙戣揣DN鏄庣粏 - Map<String,Id> DNdetailMap = new Map<String,Id>(); - Map<String,String> DNMap = new Map<String,String>(); - for(Statu_Achievements_DN_details__c dn:[SELECT Id,SerialNumber__c,Statu_Achievements_DN__c,Statu_Achievements_DN__r.Name FROM Statu_Achievements_DN_details__c WHERE SerialNumber__c IN: SerialNumberSet]){ - DNdetailMap.put(dn.SerialNumber__c,dn.Id); - DNMap.put(dn.SerialNumber__c,dn.Statu_Achievements_DN__r.Name); - } - // 绛炬敹鍗� - Map<String,Id> eSignFormMap = new Map<String,Id>(); - for(eSignForm__c es:[SELECT Id,DNName__c FROM eSignForm__c WHERE DNName__c IN: DNMap.values()]){ - for(String key:DNMap.keySet()){ - if(DNMap.get(key) == es.DNName__c){ - eSignFormMap.put(key,es.Id); - } - } - } + // Map<String,Id> DNdetailMap = new Map<String,Id>(); + // Map<String,String> DNMap = new Map<String,String>(); + // Map<String,Id> AssetMap = new Map<String,Id>(); + // for(Statu_Achievements_DN_details__c dn:[SELECT Id,TracingCode_Raw__c,Statu_Achievements_DN__c,Statu_Achievements_DN__r.Name,asset__c FROM Statu_Achievements_DN_details__c WHERE TracingCode_Raw__c IN: TracingCodeSet]){ + // DNdetailMap.put(dn.TracingCode_Raw__c,dn.Id); + // AssetMap.put(dn.TracingCode_Raw__c,dn.asset__c); + // DNMap.put(dn.TracingCode_Raw__c,dn.Statu_Achievements_DN__r.Name); + // } + // // 绛炬敹鍗� + // Map<String,Id> eSignFormMap = new Map<String,Id>(); + // for(eSignForm__c es:[SELECT Id,DNName__c FROM eSignForm__c WHERE DNName__c IN: DNMap.values()]){ + // for(String key:DNMap.keySet()){ + // if(DNMap.get(key) == es.DNName__c){ + // eSignFormMap.put(key,es.Id); + // } + // } + // } + // System.debug('zheli01:'+TracingCodeAssetSet); // 淇濇湁璁惧 Map<String,Id> AssetMap = new Map<String,Id>(); - for(Asset ass:[SELECT Id,SerialNumber FROM Asset WHERE SerialNumber IN: SerialNumberSet]){ - AssetMap.put(ass.SerialNumber,ass.Id); + Map<String, Asset> AssetDatas = new Map<String, Asset>(); + // 杩涘彛鍗曡瘉 澧炲姞鍙戣揣鏃ヨ缃� start + for(Asset ass:[SELECT Id,TracingCode__c,Posting_Date__c FROM Asset WHERE TracingCode__c IN: TracingCodeAssetSet]){ + if(!AssetMap.containsKey(ass.TracingCode__c)){ + AssetMap.put(ass.TracingCode__c,ass.Id); + AssetDatas.put(ass.TracingCode__c,ass); + } + if (ass.Posting_Date__c != null) { + ScanDateSet.add(ass.Posting_Date__c); + } + // AssetMap.put(ass.TracingCode__c,ass.Id); } + // 杩涘彛鍗曡瘉 澧炲姞鍙戣揣鏃ヨ缃� end + // System.debug('zheli00:'+AssetMap); + // 鍟嗘璇� InspectionCard_Select__c 鎶ュ叧鍗� ApplyList_Select__c Set<String> FilesNameSet = new Set<String>(); FilesNameSet.addAll(InspectionCardMap.values()); FilesNameSet.addAll(ApplyListMap.values()); - // 鍟嗘璇� InspectionCard_Select__c 鎶ュ叧鍗� ApplyList_Select__c - for(FileAddress__c fa:[SELECT Id,OnlyFileName__c FROM FileAddress__c WHERE OnlyFileName__c IN: FilesNameSet]){ + for(FileAddress__c fa:[SELECT Id,OnlyFileName__c FROM FileAddress__c WHERE ParentRecordId__c = 'FrameNumManage' AND OnlyFileName__c IN: FilesNameSet]){ for(String key:InspectionCardMap.keySet()){ if(InspectionCardMap.get(key) == fa.OnlyFileName__c){ InspectionCardIdMap.put(key,fa.Id); @@ -82,31 +146,135 @@ } } } + // 鎵弿鏃ユ湡 + Map<Date,Id> ScanDateMap = new Map<Date,Id>(); + for(OlympusCalendar__c oc:[SELECT Id,Date__c FROM OlympusCalendar__c WHERE Date__c IN: ScanDateSet]){ + ScanDateMap.put(oc.Date__c,oc.Id); + } // 鏈�鍚庢暣鍚� List<FrameNumManage__c> upFnmList = new List<FrameNumManage__c>(); for(FrameNumManage__c fnm:fnmList){ FrameNumManage__c temp = new FrameNumManage__c(); temp.Id = fnm.Id; - if(clearSet.contains(fnm.Id)){ - temp.InspectionCard_Select__c = null; - temp.ApplyList_Select__c = null; - }else{ - temp.Statu_Achievements_DN_details__c = DNdetailMap.get(fnm.SerialNumberS__c); - temp.signInForm__c = eSignFormMap.get(fnm.SerialNumberS__c); - temp.Asset__c = AssetMap.get(fnm.SerialNumberS__c); - temp.InspectionCard_Select__c = InspectionCardIdMap.get(fnm.SerialNumberS__c); - temp.ApplyList_Select__c = ApplyListIdMap.get(fnm.SerialNumberS__c); + // if(DNdetailMap.size() > 0 && DNdetailMap.containsKey(fnm.ManagementCode__c)){ + // temp.Statu_Achievements_DN_details__c = DNdetailMap.get(fnm.ManagementCode__c); + // } + // if(eSignFormMap.size() > 0 && eSignFormMap.containsKey(fnm.ManagementCode__c)){ + // temp.signInForm__c = eSignFormMap.get(fnm.ManagementCode__c); + // } + if(AssetMap.size() > 0 && AssetMap.containsKey(fnm.ManagementCode__c)){ + temp.Asset__c = AssetMap.get(fnm.ManagementCode__c); + // 杩涘彛鍗曡瘉 澧炲姞鍙戣揣鏃ヨ缃� start + if(String.isNotBlank(temp.Asset__c) && AssetDatas.get(fnm.ManagementCode__c) != null && AssetDatas.get(fnm.ManagementCode__c).Posting_Date__c != null){ + temp.DeliveryDate__c = AssetDatas.get(fnm.ManagementCode__c).Posting_Date__c; + temp.DeliveryDate_select__c = ScanDateMap.get(AssetDatas.get(fnm.ManagementCode__c).Posting_Date__c); + } + // 杩涘彛鍗曡瘉 澧炲姞鍙戣揣鏃ヨ缃� end } - upFnmList.add(temp); + if(ScanDateMap.size() > 0 && ScanDateMap.containsKey(fnm.ScanDate__c)){ + temp.ScanDate_Select__c = ScanDateMap.get(fnm.ScanDate__c); + } + if(clearMap.containsKey(fnm.Id)){ + if(clearMap.get(fnm.Id) == '0'){ + temp.ApplyList_Select__c = null; + temp.InspectionCard_Select__c = null; + }else if(clearMap.get(fnm.Id) == '1'){ + temp.ApplyList_Select__c = null; + }else if(clearMap.get(fnm.Id) == '2'){ + temp.InspectionCard_Select__c = null; + } + }else{ + temp.InspectionCard_Select__c = InspectionCardIdMap.get(fnm.ManagementCode__c); + temp.ApplyList_Select__c = ApplyListIdMap.get(fnm.ManagementCode__c); + } + temp.IsChange__c = false; + // 鏈夊彉鍖栨墠鏇存柊 + // if(!(temp.Statu_Achievements_DN_details__c == oldMap.get(temp.Id).Statu_Achievements_DN_details__c + // && temp.signInForm__c == oldMap.get(temp.Id).signInForm__c + // && temp.Asset__c == oldMap.get(temp.Id).Asset__c + // && temp.ApplyList_Select__c == oldMap.get(temp.Id).ApplyList_Select__c + // && temp.InspectionCard_Select__c == oldMap.get(temp.Id).InspectionCard_Select__c + // && temp.IsChange__c == oldMap.get(temp.Id).IsChange__c + // )){ + // if(!(temp.ApplyList_Select__c == oldMap.get(temp.Id).ApplyList_Select__c + // && temp.InspectionCard_Select__c == oldMap.get(temp.Id).InspectionCard_Select__c + // && temp.IsChange__c == oldMap.get(temp.Id).IsChange__c + // )){ + if(!(temp.ApplyList_Select__c == oldMap.get(temp.Id).ApplyList_Select__c + && temp.InspectionCard_Select__c == oldMap.get(temp.Id).InspectionCard_Select__c + && temp.IsChange__c == oldMap.get(temp.Id).IsChange__c + && temp.Asset__c == oldMap.get(temp.Id).Asset__c + && temp.ScanDate_Select__c == oldMap.get(temp.Id).ScanDate_Select__c + )){ + // System.debug('zheli99'); + upFnmList.add(temp); + } } // System.debug('zhelieupFnmList:'+upFnmList.size()); if(upFnmList.size() > 0){ - update upFnmList; + // update upFnmList; + List<Database.SaveResult> saveResults = Database.update(upFnmList,false); + //鎬绘暟 + totalCount += saveResults.size(); + for(Integer i = 0;i<saveResults.size();i++) { + if(!saveResults.get(i).isSuccess() ){ + logStr += upFnmList.get(i).id +' ,'; + errorStr += '澶辫触杩涘彛鍗曡瘉 :'+upFnmList.get(i).id+' 澶辫触鍘熷洜:'+ String.ValueOf(saveResults.get(i).getErrors()[0]).split(';')[2].split('=')[1] + +' : '+String.ValueOf(saveResults.get(i).getErrors()[0]).split(';')[1].split('=')[1] + '\r\n'; + failedCount++ ; + } + } + } + + }catch(Exception ex){ + errorStr += 'Batch鎵ц杩囩▼涓嚭鐜伴敊璇�: ' + ex.getStackTraceString(); } } global void finish(Database.BatchableContext BC) { + BatchIF_Log__c IfLog = new BatchIF_Log__c(); + IfLog.Type__c = 'SetFrameNumManageBatchErrorLog'; + if (logStr.length() > 60000) { + logStr = logStr.substring(0, 60000); + } + IfLog.Log__c = logStr; + IfLog.Log__c += '\n end'; + if (errorStr.length() > 60000) { + IfLog.ErrorLog__c = errorStr.substring(0, 60000); + } else { + IfLog.ErrorLog__c = errorStr.substring(0, errorStr.length()); + } + + insert IfLog; + + emailMessages.add('澶辫触鏃ュ織ID涓猴細' + IfLog.Id + '\r\n澶辫触淇℃伅:\r\n'+errorStr); + + //鍙戦�侀偖浠� + sendFieldEmail(); + } + // 鍙戦�佹彁閱掗偖浠� + private void sendFieldEmail() { + PretechBatchEmailUtil be = new PretechBatchEmailUtil(); + String[] toList = new String[] {UserInfo.getUserEmail()}; + String title = '杩涘彛鍗曡瘉鏁版嵁鍏宠仈鏇存柊澶辫触'; + String[] ccList = new String[]{}; + String ccEmail = System.Label.EmailAlert; + if(ccEmail.length() > 0){ + for(String email : ccEmail.split(',')){ + ccList.add(email); + } + } + if (System.Test.isRunningTest()) { + be.successMail('', 1); + } + if (emailMessages.size() > 0 && failedCount > 0) { + be.failedMail(toList, ccList, title, this.emailMessages.get(0)+'\n', + totalCount, totalCount - failedCount, failedCount,'',false); + if(!Test.isRunningTest()){ + be.send(); + } + } } } \ No newline at end of file -- Gitblit v1.9.1