1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
/**
     * @Author    lijinhuan
     * @DateTime  2022-12-28T18:25:42+0800
     * 测试类:FrameNumUploadControllerTest 
*/
global class  SetFrameNumManageWebService {
    // 2023-07-31 zhangchunxu add @AuraEnabled
    @AuraEnabled
    /**
     * @fuction   [关联数据]
     * @Author    lijinhuan
     * @DateTime  2023-01-10T11:06:10+0800
     */ 
    WebService static String updateFrameNumManag(String Id) {
        Id execBTId = Database.executeBatch(new SetFrameNumManageBatch(Id), 1);
        return '1';
    }
    // 2023-07-31 zhangchunxu add @AuraEnabled
    @AuraEnabled
    /**
     * @fuction   [批量删除]
     * @Author    lijinhuan
     * @DateTime  2023-01-10T11:06:10+0800
     */
    WebService static String BatchDelete(List<String> idList) {
        Savepoint sp = Database.setSavepoint();
        try{
            //sf删除
            Database.delete(idList); 
            return 'success';
        }catch(Exception e){
            Database.rollback(sp);
            System.debug('失败原因是 : ' + e.getMessage());
            return '失败原因是 : ' + e.getMessage();
        }
    }
    // 2023-07-31 zhangchunxu add @AuraEnabled
    @AuraEnabled
    /**
     * @fuction   [生成机身号管理对象数据]
     * @Author    lijinhuan0
     * @DateTime  2023-02-07T11:06:1+0800
     */
    WebService static String insertFrameNumManag(String Id,String esId) {
 
        // 进口单证  kyb 20231122 DB202311302316  增加发货日设置 start
        Set<Date> dateset = new Set<Date>();
        Map<Date, String> olycals = new Map<Date, String>();
        // 进口单证  kyb 20231122 DB202311302316 增加发货日设置 end
 
        // return Id+';'+esId;
        // 20231017 ljh DB202308311963 update start
        // Map<String,Statu_Achievements_DN_details__c> sandMap = new Map<String,Statu_Achievements_DN_details__c>();
        Map<String,List<Statu_Achievements_DN_details__c>> sandMap = new Map<String,List<Statu_Achievements_DN_details__c>>();
        // 20231017 ljh DB202308311963 update end
        Map<String,Statu_Achievements_DN_details__c> UpdateSandMap = new Map<String,Statu_Achievements_DN_details__c>();
        Map<String,String> UpdateFIdMap = new Map<String,String>();
        try{
             // 查询明细 在机身号管理中有没,没有生成,有更新 签收单、发货DN明细、保有设备
            for(Statu_Achievements_DN_details__c dn:[SELECT Id,SerialNumber__c,asset__c,
                                                        Statu_Achievements_DN__c,SerialNoorLotNo_Raw__c,TracingCodeRawSys__c,
                                                        OTCode_Raw__c,asset__r.Name,QTY__c,Statu_Achievements_DN__r.Name
                                                        // 进口单证 kyb 20231122 DB202311302316 增加发货日设置 start
                                                        , Statu_Achievements_DN__r.DeliveryDate__c 
                                                        // 进口单证 kyb 20231122 DB202311302316 增加发货日设置 end
                                                        FROM Statu_Achievements_DN_details__c
                                                        WHERE Statu_Achievements_DN__c =:Id ]){
                // 20230915 ljh DB202308311963 start
                // sandMap.put(dn.TracingCode_Raw__c,dn);
                List<Statu_Achievements_DN_details__c> tempObjList;
                if(sandMap.containsKey(dn.TracingCodeRawSys__c)){
                    tempObjList = sandMap.get(dn.TracingCodeRawSys__c);
                }else{
                    tempObjList = new List<Statu_Achievements_DN_details__c>();
                }
                tempObjList.add(dn);                        
                sandMap.put(dn.TracingCodeRawSys__c,tempObjList);
                // 20230915 ljh DB202308311963 end
                // 取所有发货日 kyb 20231122 DB202311302316 start
                dateset.add(dn.Statu_Achievements_DN__r.DeliveryDate__c);
                // 取所有发货日 kyb 20231122 DB202311302316 end
            }
            for(FrameNumManage__c f:[SELECT Id,ManagementCode__c  FROM FrameNumManage__c WHERE ManagementCode__c in :sandMap.keySet()]){
                // 更新机身号管理
                // 20231017 DB202308311963 start
                // UpdateSandMap.put(f.ManagementCode__c,sandMap.get(f.ManagementCode__c));
                UpdateSandMap.put(f.ManagementCode__c,sandMap.get(f.ManagementCode__c)[0]);
                // 20231017 DB202308311963 end
                UpdateFIdMap.put(f.ManagementCode__c, f.Id);
                sandMap.remove(f.ManagementCode__c);
            }
            // 取发货日的奥林巴斯日历  kyb 20231122 DB202311302316 start
            for (OlympusCalendar__c oc : [select Id, Date__c from OlympusCalendar__c where Date__c in :dateset]) {
                olycals.put(oc.Date__c, oc.Id);
            }
            // 取发货日的奥林巴斯日历  kyb 20231122 DB202311302316 end
            if(sandMap.size() > 0 || UpdateSandMap.size() > 0){
                List<FrameNumManage__c> infnmList = new List<FrameNumManage__c>();
                // 20231017 ljh DB202308311963 start
                for (String skey:sandMap.keySet()) {
                    Integer qty =  sandMap.get(skey).size();
                    Statu_Achievements_DN_details__c s = sandMap.get(skey)[0];
                // for (Statu_Achievements_DN_details__c s:sandMap.values()) {
                    FrameNumManage__c temp = new FrameNumManage__c();
                    // 20230915 ljh DB202308311963 start
                    // 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.Name = s.TracingCodeRawSys__c;
                    temp.ManagementCode__c = s.TracingCodeRawSys__c;
                    temp.SerialNumberS__c = s.SerialNoorLotNo_Raw__c+'('+s.TracingCodeRawSys__c+')';
                    // 20230915 ljh DB202308311963 end
                    temp.SerialNumber__c = s.SerialNoorLotNo_Raw__c;
                    // 20231017 ljh DB202308311963 start
                    // temp.Num__c = s.QTY__c;
                    temp.Num__c = qty;
                    // 20231017 ljh DB202308311963 end
                    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 = esId;
 
 
                    // 设置发货日和奥林巴斯日历 kyb 20231122 DB202311302316 start
                    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;
                    // 设置发货日和奥林巴斯日历 kyb 20231122 DB202311302316 send
                    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()) {
                        // 20230915 ljh DB202308311963 start
                        // if(UpdateFIdMap.get(s.TracingCode_Raw__c) != null ){
                        if(UpdateFIdMap.get(s.TracingCodeRawSys__c) != null ){
                        // 20230915 ljh DB202308311963 end
                            FrameNumManage__c temp = new FrameNumManage__c();
                            // 20230915 ljh DB202308311963 start
                            // temp.id = UpdateFIdMap.get(s.TracingCode_Raw__c);
                            temp.id = UpdateFIdMap.get(s.TracingCodeRawSys__c);
                            // 20230915 ljh DB202308311963 end
                            temp.Statu_Achievements_DN_details__c = s.Id;
                            temp.Asset__c = s.asset__c;
                            temp.signInForm__c = esId;
                            upfnmList.add(temp);
                        }
                    }
                    if(upfnmList.size() > 0 ){
                        update upfnmList;
                    }
                }
                // return '1';
            }
            return '1';
            // else{
            //     return '数据已经关联,没有需要关联的数据';
            // }
               
        }catch(Exception e){
            // Database.rollback(sp);
            System.debug('失败原因是 : ' + e.getMessage());
            return '失败原因是 : ' + e.getMessage();
        }
    }
}