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/ESignFormHandler.cls |  132 +++++++++++++++++++++++++++++++++++++------
 1 files changed, 113 insertions(+), 19 deletions(-)

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

--
Gitblit v1.9.1