binxie
2023-06-26 00e147ec892cb1e89d0698787a8c60da1014cdb7
force-app/main/default/classes/LexOutboundorderImportController.cls
@@ -50,22 +50,29 @@
        res.status = 'Success';
        res.code = 200;
        res.msg = '';
        System.debug('res:' + res);
        return res;
    }
    @AuraEnabled
    public static ResponseBodyLWC importCSVFile(String base64Data, String sqlagencyProType, String userWorkLocation, String accountName) {
    public static ResponseBodyLWC importCSVFile(
        String base64DataLwc,
        String sqlagencyProTypeLwc,
        String userWorkLocationLwc,
        String accountNameLwc
    ) {
        System.debug('enter importCSVFile');
        ResponseBodyLWC res = new ResponseBodyLWC();
        Map<String, object> data = new Map<String, object>();
        res.entity = data;
        errorMsg = '';
        sqlagencyProType = sqlagencyProType;
        userWorkLocation = userWorkLocation;
        accountName = accountName;
        base64Data = EncodingUtil.urlDecode(base64Data, 'UTF-8');
        sqlagencyProType = sqlagencyProTypeLwc;
        userWorkLocation = userWorkLocationLwc;
        accountName = accountNameLwc;
        String base64Data = EncodingUtil.urlDecode(base64DataLwc, 'UTF-8');
        csvFileBody = EncodingUtil.base64Decode(base64Data);
        product2conMap = new Map<String, String>();
        messageCount = 0;
        errormessage = null;
@@ -96,7 +103,7 @@
                            barcodePieceMap.put(csvRecordData[6], Integer.valueOf(csvRecordData[7]));
                        }
                    }
                    String[] csvRecordDataStr = new List<String>(13);
                    String[] csvRecordDataStr = new String[13];
                    for (Integer j = 0; j < csvRecordData.size(); j++) {
                        csvRecordDataStr[j] = csvRecordData[j];
                    }
@@ -157,21 +164,21 @@
                        // ApexPages.addmessage(
                        //     new ApexPages.message(ApexPages.severity.ERROR, 'Barcode ' + bc + ' 不存在或单位错误,请确认。')
                        // );
                        errorMsg += 'Barcode ' + bc + ' 不存在或单位错误,请确认。\n';
                        errorMsg += 'Barcode ' + bc + ' 不存在或单位错误,请确认。<br />';
                        saveFLGbln = true;
                        messageCount++;
                    } else if (exitpieceBarcodeMap.containsKey(bc) && exitpieceBarcodeMap.get(bc) < barcodePieceMap.get(bc)) {
                        if (messageCount >= 100)
                            break;
                        // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'Barcode ' + bc + ' 库存不足,请确认。'));
                        errorMsg += 'Barcode ' + bc + ' 库存不足,请确认。\n';
                        errorMsg += 'Barcode ' + bc + ' 库存不足,请确认。<br />';
                        saveFLGbln = true;
                        messageCount++;
                    }
                }
            } catch (Exception e) {
                //ApexPages.addMessages(e);
                errorMsg += e.getMessage();
                errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';';
                //return new ResponseBodyLWC('Error', 500, e.getMessage()+e.getStackTraceString(), '');
            }
            getorderinfo();
@@ -182,8 +189,10 @@
            }
            data.put('orderRecords', orderRecords);
            data.put('saveFLGbln', saveFLGbln);
            data.put('csvRecordStr',csvRecordStr);
            data.put('barcodeList',barcodeList);
            data.put('csvRecordStr', csvRecordStr);
            data.put('barcodeList', barcodeList);
            data.put('secondAgencyMap', secondAgencyMap);
            data.put('hospitalSysMap', hospitalSysMap);
            res.status = 'Success';
            res.code = 200;
            res.msg = errorMsg;
@@ -210,7 +219,7 @@
                    // ApexPages.addmessage(
                    //     new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + csvRecordData[0] + '出货目的为空,请确认。')
                    // );
                    errorMsg += '出库单 ' + csvRecordData[0] + '出货目的为空,请确认。\n';
                    errorMsg += '出库单 ' + csvRecordData[0] + '出货目的为空,请确认。<br />';
                    saveFLGbln = true;
                    messageCount++;
                }
@@ -224,7 +233,7 @@
                    // ApexPages.addmessage(
                    //     new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + cocObj.Name + '的产品中,存在出库日期为空,请确认。')
                    // );
                    errorMsg += '出库单 ' + cocObj.Name + '的产品中,存在出库日期为空,请确认。\n';
                    errorMsg += '出库单 ' + cocObj.Name + '的产品中,存在出库日期为空,请确认。<br />';
                    saveFLGbln = true;
                    messageCount++;
                } else {
@@ -238,7 +247,7 @@
            }
        } catch (Exception e) {
            //return new ResponseBodyLWC('Error', 500, e.getMessage(), '');
            errorMsg += e.getMessage();
            errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';';
        }
    }
@@ -260,7 +269,7 @@
                // ApexPages.addmessage(
                //     new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '医院相关信息不能空,请确认。')
                // );
                errorMsg += '出库单' + ass.order.Name + '医院相关信息不能空,请确认。\n';
                errorMsg += '出库单' + ass.order.Name + '医院相关信息不能空,请确认。<br />';
                messageCount++;
                saveFLGbln = true;
                //return null;
@@ -272,7 +281,7 @@
                    // ApexPages.addmessage(
                    //     new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '经销商信息不能空,请确认。')
                    // );
                    errorMsg += '出库单' + ass.order.Name + '经销商信息不能空,请确认。\n';
                    errorMsg += '出库单' + ass.order.Name + '经销商信息不能空,请确认。<br />';
                    messageCount++;
                    saveFLGbln = true;
                }
@@ -284,7 +293,7 @@
                    // ApexPages.addmessage(
                    //     new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '不需要二级经销商,请确认。')
                    // );
                    errorMsg += '出库单' + ass.order.Name + '不需要二级经销商,请确认。\n';
                    errorMsg += '出库单' + ass.order.Name + '不需要二级经销商,请确认。<br />';
                    messageCount++;
                    saveFLGbln = true;
                }
@@ -296,7 +305,7 @@
                    // ApexPages.addmessage(
                    //     new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '经销商信息不能空,请确认。')
                    // );
                    errorMsg += '出库单' + ass.order.Name + '经销商信息不能空,请确认。\n';
                    errorMsg += '出库单' + ass.order.Name + '经销商信息不能空,请确认。<br />';
                    messageCount++;
                    saveFLGbln = true;
                }
@@ -310,12 +319,13 @@
                    // ApexPages.addmessage(
                    //     new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '不需要医院相关信息,请确认。')
                    // );
                    errorMsg += '出库单' + ass.order.Name + '不需要医院相关信息,请确认。\n';
                    errorMsg += '出库单' + ass.order.Name + '不需要医院相关信息,请确认。<br />';
                    messageCount++;
                    saveFLGbln = true;
                }
            }
        }
        System.debug('accountName = ' + accountName);
        List<Agency_Hospital_Link__c> hospitalInfo = [
            SELECT Hospital__c, Hospital__r.Management_Code__c, Hospital__r.Name
            FROM Agency_Hospital_Link__c
@@ -333,6 +343,8 @@
            secondAgencyMap.put(safo.Dealer_subordinate__r.Name, safo.Dealer_subordinate__c);
        }
        //出库单信息验证
        System.debug('hospitalconMap = ' + hospitalconMap);
        System.debug('hospitalSysMap = ' + hospitalSysMap);
        for (String widget : hospitalconMap.keySet()) {
            if (!hospitalSysMap.containsKey(widget)) {
                if (messageCount >= 100)
@@ -352,7 +364,7 @@
                    hospitalconMap.get(widget) +
                    ' 的医院编码' +
                    widget +
                    ' 不存在或者不是本经销商负责的医院,请确认。\n';
                    ' 不存在或者不是本经销商负责的医院,请确认。<br />';
                saveFLGbln = true;
            }
        }
@@ -382,7 +394,7 @@
                    //         ' 不存在出库单位,请确认。'
                    //     )
                    // );
                    errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '的barcode ' + cod2Obj.Bar_Code__c + ' 不存在出库单位,请确认。\n';
                    errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '的barcode ' + cod2Obj.Bar_Code__c + ' 不存在出库单位,请确认。<br />';
                    saveFLGbln = true;
                    messageCount++;
                } else if (String.valueOf(csvRecordData[9]) != '盒' && String.valueOf(csvRecordData[9]) != '个') {
@@ -410,7 +422,7 @@
                    // ApexPages.addmessage(
                    //     new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + cod2Obj.TracingCode__c + '产品出货单价为空,请确认。')
                    // );
                    errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '产品出货单价为空,请确认。\n';
                    errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '产品出货单价为空,请确认。<br />';
                    saveFLGbln = true;
                    messageCount++;
                } else if (String.isNotBlank(csvRecordData[8])) {
@@ -429,7 +441,7 @@
                        //         '产品出货单价不能为0,请确认。'
                        //     )
                        // );
                        errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '产品出货单价不能为0,请确认。\n';
                        errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '产品出货单价不能为0,请确认。<br />';
                        saveFLGbln = true;
                        messageCount++;
                    } else {
@@ -447,7 +459,7 @@
                    //         '的产品中,存在barcode为空,请确认。'
                    //     )
                    // );
                    errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '的产品中,存在barcode为空,请确认。\n';
                    errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '的产品中,存在barcode为空,请确认。<br />';
                    saveFLGbln = true;
                    messageCount++;
                } else if (String.isBlank(csvRecordData[12])) {
@@ -488,7 +500,7 @@
            }
        } catch (Exception e) {
            //return new ResponseBodyLWC('Error', 500, e.getMessage(), '');
            errorMsg += e.getMessage();
            errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';';
        }
    }
@@ -507,7 +519,7 @@
                    // ApexPages.addmessage(
                    //     new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + csvRecordData[0] + '产品出货数量为空,请确认。')
                    // );
                    errorMsg += '出库单 ' + csvRecordData[0] + '产品出货数量为空,请确认。\n';
                    errorMsg += '出库单 ' + csvRecordData[0] + '产品出货数量为空,请确认。<br />';
                    saveFLGbln = true;
                    messageCount++;
                } else if (Decimal.valueOf(csvRecordData[7]) > 1 && String.valueOf(csvRecordData[9]) == '盒') {
@@ -521,7 +533,7 @@
                    //         '存在单位是盒,产品出货数量大于1,请确认。'
                    //     )
                    // );
                    errorMsg += '出库单 ' + csvRecordData[0] + '存在单位是盒,产品出货数量大于1,请确认。\n';
                    errorMsg += '出库单 ' + csvRecordData[0] + '存在单位是盒,产品出货数量大于1,请确认。<br />';
                    saveFLGbln = true;
                    messageCount++;
                } else {
@@ -536,7 +548,7 @@
                    // ApexPages.addmessage(
                    //     new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + csvRecordData[0] + '产品出货单价为空,请确认。')
                    // );
                    errorMsg += '出库单 ' + csvRecordData[0] + '出库单 ' + csvRecordData[0] + '产品出货单价为空,请确认。\n';
                    errorMsg += '出库单 ' + csvRecordData[0] + '出库单 ' + csvRecordData[0] + '产品出货单价为空,请确认。<br />';
                    saveFLGbln = true;
                    messageCount++;
                }
@@ -551,28 +563,50 @@
            }
        } catch (Exception e) {
            //return new ResponseBodyLWC('Error', 500, e.getMessage(), '');
            errorMsg += e.getMessage();
            errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';';
        }
    }
    @AuraEnabled
    public static ResponseBodyLWC dataImport(List<String[]> csvRecordStr,List<ConsumableorderdetailsInfo> orderRecords,String sqlagencyProType, String userWorkLocation, String accountName) {
    public static ResponseBodyLWC dataImport(
        List<String[]> csvRecordStrLwc,
        String orderRecordsLwc,
        String sqlagencyProTypeLwc,
        String userWorkLocationLwc,
        String accountNameLwc,
        String accountidLwc,
        String agencyProTypeLwc,
        Map<String, String> secondAgencyMapLwc,
        Map<String, String> hospitalSysMapLwc
    ) {
        List<ConsumableorderdetailsInfo> orderdetRecords = new List<ConsumableorderdetailsInfo>();
        List<ConsumableorderdetailsInfo> orderdet2BoxRecords = new List<ConsumableorderdetailsInfo>();
        List<ConsumableorderdetailsInfo> orderdet2PieceRecords = new List<ConsumableorderdetailsInfo>();
        product2conMap = new Map<String, String>();
        ResponseBodyLWC res = new ResponseBodyLWC();
        Map<String, object> data = new Map<String, object>();
        res.entity = data;
        csvRecordStr = csvRecordStr;
        orderRecords = orderRecords;
        sqlagencyProType = sqlagencyProType;
        userWorkLocation = userWorkLocation;
        accountName = accountName;
        errorMessage = '';
        csvRecordStr = csvRecordStrLwc;
        orderRecords = (List<ConsumableorderdetailsInfo>) JSON.deserialize(orderRecordsLwc, List<ConsumableorderdetailsInfo>.class);
        System.debug('orderRecords = ' + orderRecords);
        sqlagencyProType = sqlagencyProTypeLwc;
        userWorkLocation = userWorkLocationLwc;
        accountName = accountNameLwc;
        secondAgencyMap = secondAgencyMapLwc;
        hospitalSysMap = hospitalSysMapLwc;
        accountid = accountidLwc;
        agencyProType = agencyProTypeLwc;
        System.debug('agencyProType = ' + agencyProType);
        errorMsg = '';
        System.debug('csvRecordStr = ' + csvRecordStr);
        orderdetRecords = getorderdetList(csvRecordStr);
        orderdet2BoxRecords = getorderdet2BoxList(csvRecordStr);
        orderdet2PieceRecords = getorderdet2pieceList(csvRecordStr);
        System.debug('orderdetRecords = ' + orderdetRecords);
        System.debug('orderdet2BoxRecords = ' + orderdet2BoxRecords);
        System.debug('orderdet2PieceRecords = ' + orderdet2PieceRecords);
        Savepoint sp = Database.setSavepoint();
        try {
            Map<String, String> orderInfoMap = new Map<String, String>();
@@ -591,6 +625,7 @@
                ass.order.RecordTypeId = System.Label.RT_ConOrder_Sale;
                coc.add(ass.order);
            }
            System.debug('coc = ' + coc);
            if (coc.size() > 0) {
                insert coc;
            }
@@ -615,6 +650,7 @@
                    }
                }
            }
            System.debug('cod = ' + cod);
            if (cod.size() > 0) {
                insert cod;
            }
@@ -705,7 +741,7 @@
            Database.rollback(sp);
            // ApexPages.addMessages(e);
            // return null;
            return new ResponseBodyLWC('Error', 500, e.getMessage()+e.getStackTraceString(), '');
            return new ResponseBodyLWC('Error', 500, e.getMessage() + e.getStackTraceString(), '');
        }
    }
@@ -718,9 +754,7 @@
                string[] csvRecordData = csvRecordStr[i];
                if (orderdetMap.containsKey(csvRecordData[0] + csvRecordData[12] + csvRecordData[9])) {
                    orderdetMap.put(
                        csvRecordData[0] +
                        csvRecordData[12] +
                        csvRecordData[9],
                        csvRecordData[0] + csvRecordData[12] + csvRecordData[9],
                        orderdetMap.get(csvRecordData[0] + csvRecordData[12] + csvRecordData[9]) + Decimal.valueOf(csvRecordData[7])
                    );
                    continue;
@@ -745,11 +779,13 @@
                    ass.orderdetails1.Shipment_Count__c = orderdetMap.get(ass.orderName + ass.productName + ass.orderdetails1.Box_Piece__c);
                }
            }
            System.debug('orderdetRecords = ' + orderdetRecords);
            return orderdetRecords;
        } catch (Exception e) {
            // ApexPages.addMessages(e);
            // return null;
            errorMsg += e.getMessage();
            errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';';
            System.debug('orderdetRecords = null ' + e.getLineNumber());
            return null;
        }
    }
@@ -787,7 +823,7 @@
        } catch (Exception e) {
            // ApexPages.addMessages(e);
            // return null;
            errorMsg += e.getMessage();
            errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';';
            return null;
        }
    }
@@ -827,7 +863,7 @@
            return null;
        }
    }
    @TestVisible
    class ConsumableorderdetailsInfo implements Comparable {
        @AuraEnabled
        public Consumable_order__c order { get; set; }