GWY
2022-05-21 a3460549533111815e7f73d6cef601a58031525d
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
public without sharing class LoanerOrderState {
 
    public static String getOrderStater(String laId){
 
        Integer ngNum = [select count() from loaner_application_detail__c where loaner_application__c = :laId and Receipt_Status__c = 'NG' and Asset_Return_Date__c != null ];
        loaner_application__c la = [select id,Count_ApplicantReceived__c,Count_Received__c,Count_NG_SendBack__c,Detail_count__c,Count_NG__c from loaner_application__c where id = :laId];
        if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '已批准'] > 0){
            return '已批准';
        }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '已出库指示'] > 0){
            return '已出库指示';
        }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '已下架'] > 0){
            return '已下架';
        }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '出库前已检测'] > 0 
            && [select count() from loaner_application_detail__c where loaner_application__c = :laId and Shipment_Request_Date__c != null] ==  0){
            return '出库前已检测';
        }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '出库前已检测'] > 0 
            && [select count() from loaner_application_detail__c where loaner_application__c = :laId and Shipment_Request_Date__c != null] > 0){
            return '部分发货';
        }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '已出库'] > 0 
            && [select count() from loaner_application_detail__c where loaner_application__c = :laId and Asset_Return_Date__c != null] == ngNum){
            return '全部发货';
        }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '申请者已收货'] > 0 
            && [select count() from loaner_application_detail__c where loaner_application__c = :laId and Asset_Return_Date__c != null] == ngNum){
            return '申请者已收货';
        }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '申请者已装机确认'] > 0 
            && [select count() from loaner_application_detail__c where loaner_application__c = :laId and Asset_Return_Date__c != null] == ngNum){
            return '申请者已装机确认';
        }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c in ('申请者已装机确认','申请者收货NG','已出库','申请者已收货')] > 0 
            && [select count() from loaner_application_detail__c where loaner_application__c = :laId and Asset_Return_Date__c != null] > 0){
            return '部分回寄';
        }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '已回寄'] > 0){
            return '全部回寄';
        }else if([select count() from loaner_application_detail__c where loaner_application__c = :laId and RAESD_Status__c = '欠品中'] > 0){
            return '欠品确认中';
        }else{
            system.debug(la);
            system.debug(ngNum);
            if(la.Detail_count__c == la.Count_NG__c){
                if(la.Count_Received__c == la.Detail_count__c){
 
                }else if(la.Count_NG_SendBack__c == la.Detail_count__c){
                    return '全部回寄';
                }else if(la.Count_ApplicantReceived__c == la.Detail_count__c && la.Count_NG_SendBack__c > 0){
                    return '部分回寄';
                }else {
                    return '申请者已收货';
                }
            }
            return '全部回收';
        }
    }
 
    public static Map<String ,String> getOrderStater1(List<String> laIdList){
        Map<String,List<loaner_application_detail__c>> laDatailMap = new Map<String,List<loaner_application_detail__c>>();
        Map<String,String> laStatuMap = new Map<String,String>();
        
        List<loaner_application_detail__c> allLadList = [select id,loaner_application__c,RAESD_Status__c,Shipment_Request_Date__c,Asset_Return_Date__c,Receipt_Status__c from loaner_application_detail__c where loaner_application__c = :laIdList];
 
        for(String laId : laIdList){
            List<loaner_application_detail__c> ladList = new List<loaner_application_detail__c>();
            for(loaner_application_detail__c lad : allLadList){
                if(lad.loaner_application__c == laId){
                    ladList.add(lad);
                }
            }
            laDatailMap.put(laId, ladList);
        }
 
        for(String laId : laIdList){
            List<loaner_application_detail__c> ladList = laDatailMap.get(laId);
            Integer returnNgNum = 0;    //收货ng且回寄
            Integer requestDateNum = 0;    //出库日期
            Integer returnDateNum = 0;    //回寄日期
 
            Integer indicateNum = 0;    //出库指示
            Integer stockDownNum = 0;     //下架
            Integer inspectionNum = 0;    //下架检查
            Integer shipmentNum = 0;    //出库
            Integer receiptNum = 0;        //收货
            Integer receiptNgNum =0;     //收货Ng 
            Integer confirmNum = 0;        //装机确认
            Integer returnNum = 0;        //回寄
            Integer lostNum = 0;        //欠品
 
            for(loaner_application_detail__c lad : ladList){
                if(lad.RAESD_Status__c == '已出库指示'){
                    indicateNum++;
                }else if(lad.RAESD_Status__c == '已下架'){
                    stockDownNum++;
                }else if(lad.RAESD_Status__c == '出库前已检测'){
                    inspectionNum++;
                }else if(lad.RAESD_Status__c == '已出库'){
                    shipmentNum++;
                }else if(lad.RAESD_Status__c == '申请者已收货'){
                    receiptNum++;
                }else if(lad.RAESD_Status__c == '申请者收货NG'){
                    receiptNgNum++;
                }else if(lad.RAESD_Status__c == '申请者已装机确认'){
                    confirmNum++;
                }else if(lad.RAESD_Status__c == '已回寄'){
                    returnNum++;
                }else if(lad.RAESD_Status__c == '欠品中'){
                    lostNum++;
                }
 
                if(lad.Shipment_Request_Date__c != null ){
                    requestDateNum++;
                }
 
                if(lad.Asset_Return_Date__c != null ){
                    returnDateNum++;
                    if(lad.Receipt_Status__c == 'NG'){
                        returnNgNum++;
                    }
                }
            }
            if(indicateNum> 0){
                laStatuMap.put(laId,'已出库指示');
            }else if(stockDownNum > 0){
                laStatuMap.put(laId, '已下架');
            }else if(inspectionNum > 0 && requestDateNum ==  0){
                laStatuMap.put(laId, '出库前已检测') ;
            }else if(inspectionNum > 0 && requestDateNum > 0){
                laStatuMap.put(laId, '部分发货');
            }else if(shipmentNum > 0 && returnDateNum == returnNgNum){
                laStatuMap.put(laId, '全部发货');
            }else if(receiptNum > 0 && returnDateNum == returnNgNum){
                laStatuMap.put(laId, '申请者已收货');
            }else if(confirmNum > 0 && returnDateNum == returnNgNum){
                laStatuMap.put(laId, '申请者已装机确认');
            }else if((confirmNum+receiptNgNum+shipmentNum+receiptNum) > 0 && returnDateNum > 0){
                laStatuMap.put(laId, '部分回寄');
            }else if(returnNum > 0){
                laStatuMap.put(laId, '全部回寄');
            }else if(lostNum > 0){
                laStatuMap.put(laId, '欠品确认中');
            }else{
                laStatuMap.put(laId, '全部回收');
            }
 
        }
        system.debug(laStatuMap);
        return laStatuMap;
    }
}