高章伟
2023-03-03 d8dc84a3d56df839895f1c417a4d9cbee763d262
force-app/main/default/classes/ESignFormHandler.cls
@@ -1,8 +1,8 @@
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() {
@@ -21,6 +21,10 @@
    }
    protected override void afterInsert() {
        afterExecute();
        // 进口单证 start
        // 签收单生成后插入进口单证对应的数据
        insertFrameNumManage();
        // 进口单证 end
    }
     protected override void afterUpdate() {
@@ -32,7 +36,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));
            }
            //经销商管理编码不为空
@@ -61,4 +65,74 @@
            update eSignFormEntryList;
        }        
    }
    private void insertFrameNumManage() {
        Set<String> IdSet = new Set<String>();
        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>();
        // 查询明细 在机身号管理中有没,没有生成,有更新 签收单、发货DN明细、保有设备
        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
                    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);
        }
        for(FrameNumManage__c f:[SELECT Id,ManagementCode__c  FROM FrameNumManage__c WHERE ManagementCode__c in :sandMap.keySet()]){
            sandMap.remove(f.ManagementCode__c);
            // 更新机身号管理
            UpdateSandMap.put(f.ManagementCode__c,sandMap.get(f.ManagementCode__c));
            UpdateFIdMap.put(f.ManagementCode__c, f.Id);
        }
        for(eSignForm__c es: newList){
            for(String key:DNMap.keySet()){
                if(DNMap.get(key) == es.DNName__c){
                    eSignFormMap.put(key,es.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 的name去掉前两位的 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.Material__c = s.OTCode_Raw__c;
                temp.MaterialDepict__c = s.asset__r.Name;
                infnmList.add(temp);
            }
            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;
        }
    }
}