From 3962c2bb0435484b60a3e408e4738d792e249a53 Mon Sep 17 00:00:00 2001
From: buli <137736985@qq.com>
Date: 星期一, 05 六月 2023 11:09:55 +0800
Subject: [PATCH] LEX CommunityNewCmp

---
 force-app/main/default/classes/LexOutboundorderImportController.cls |  919 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 919 insertions(+), 0 deletions(-)

diff --git a/force-app/main/default/classes/LexOutboundorderImportController.cls b/force-app/main/default/classes/LexOutboundorderImportController.cls
new file mode 100644
index 0000000..a1f00f6
--- /dev/null
+++ b/force-app/main/default/classes/LexOutboundorderImportController.cls
@@ -0,0 +1,919 @@
+public without sharing class LexOutboundorderImportController {
+    //缁忛攢鍟嗕骇鍝佸垎绫�
+    public static String agencyProType { get; set; }
+    private static String sqlagencyProType;
+    public static Blob csvFileBody { get; set; }
+    public static string csvAsString { get; set; }
+    public static String[] csvFileLines { get; set; }
+    public static List<ConsumableorderdetailsInfo> orderRecords { get; set; }
+    public static List<String[]> csvRecordStr { get; set; }
+    public static Map<String, String> hospitalconMap { get; set; }
+    public static Map<String, String> product2conMap { get; set; }
+    public static Map<String, String> hospitalSysMap { get; set; }
+    public static Map<String, String> secondAgencyMap { get; set; }
+    private static String accountid { get; set; }
+    private static String accountName { get; set; }
+    private static Integer messageCount;
+    public static boolean saveFLGbln { get; set; }
+    private static List<String> barcodeList { get; set; }
+    private static List<String> barcodePieceList { get; set; }
+    public static Map<String, Integer> barcodePieceMap { get; set; }
+    public static boolean errorflg { get; set; }
+    public static String errorMessage { get; set; }
+    private static String userWorkLocation { get; set; }
+    public static String errorMsg { get; set; }
+
+    @AuraEnabled
+    public static ResponseBodyLWC init() {
+        ResponseBodyLWC res = new ResponseBodyLWC();
+        Map<String, object> data = new Map<String, object>();
+        res.entity = data;
+        messageCount = 0;
+        errorflg = false;
+        errorMessage = null;
+        User useracc = [SELECT accountid, Work_Location__c, UserPro_Type__c FROM user WHERE id = :UserInfo.getUserId()];
+        accountid = Useracc.accountid;
+        userWorkLocation = Useracc.Work_Location__c;
+        agencyProType = Useracc.UserPro_Type__c;
+        if (String.isBlank(Useracc.UserPro_Type__c)) {
+            agencyProType = 'ET';
+        }
+        sqlagencyProType = '%' + agencyProType + '%';
+        Account accountInfo = [SELECT Name FROM account WHERE id = :accountid];
+        accountName = accountInfo.name;
+
+        data.put('accountid', accountid);
+        data.put('userWorkLocation', userWorkLocation);
+        data.put('agencyProType', agencyProType);
+        data.put('accountName', accountName);
+        data.put('sqlagencyProType', sqlagencyProType);
+        res.status = 'Success';
+        res.code = 200;
+        res.msg = '';
+        return res;
+    }
+
+    @AuraEnabled
+    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 = 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;
+        saveFLGbln = false;
+        csvRecordStr = new List<String[]>();
+        barcodeList = new List<String>();
+        barcodePieceMap = new Map<String, Integer>();
+        barcodePieceList = new List<String>();
+        orderRecords = new List<ConsumableorderdetailsInfo>();
+        hospitalconMap = new Map<String, String>();
+        if (csvFileBody == null) {
+            errorflg = true;
+            saveFLGbln = true;
+            // errormessage = '璇诲彇鍐呭涓虹┖銆�';
+            return new ResponseBodyLWC('Error', 500, '璇诲彇鍐呭涓虹┖銆�', '');
+        } else {
+            //浜у搧鏁版嵁鏌ユ壘
+            map<string, string> orderNameMap = new Map<string, string>();
+            try {
+                csvAsString = csvFileBody.toString();
+                csvFileLines = csvAsString.split('\n');
+                for (Integer i = 0; i < csvFileLines.size(); i++) {
+                    string[] csvRecordData = csvFileLines[i].split(',');
+                    if (String.isNotBlank(csvRecordData[6])) {
+                        barcodeList.add(csvRecordData[6]);
+                        if (String.valueOf(csvRecordData[9]) == '涓�') {
+                            barcodePieceList.add(csvRecordData[6]);
+                            barcodePieceMap.put(csvRecordData[6], Integer.valueOf(csvRecordData[7]));
+                        }
+                    }
+                    String[] csvRecordDataStr = new List<String>(13);
+                    for (Integer j = 0; j < csvRecordData.size(); j++) {
+                        csvRecordDataStr[j] = csvRecordData[j];
+                    }
+                    if (i == 0) {
+                        csvRecordDataStr[12] = '浜у搧';
+                    } else {
+                        csvRecordDataStr[12] = '';
+                    }
+                    csvRecordStr.add(csvRecordDataStr);
+                }
+                Map<String, String> productBarcodeMap = new Map<String, String>();
+                List<Consumable_order_details2__c> cOrderDet = [
+                    SELECT Id, Bar_Code__c, Name, Consumable_Product__c, Box_Piece__c
+                    FROM Consumable_order_details2__c
+                    WHERE
+                        Dealer_Arrive__c = TRUE
+                        AND Dealer_Shipment__c = FALSE
+                        AND Dealer_Saled__c = FALSE
+                        AND Lose_Flag__c = FALSE
+                        AND Bar_Code__c IN :barcodeList
+                        AND Product_Type__c LIKE :sqlagencyProType
+                        AND Arrive_Owner_Work_Location__c = :userWorkLocation
+                        AND Dealer_Info_text__c = :accountName
+                ];
+                for (Consumable_order_details2__c pdinfo : cOrderDet) {
+                    productBarcodeMap.put(pdinfo.Bar_Code__c, pdinfo.Consumable_Product__c);
+                }
+                for (String[] csvlistStr : csvRecordStr) {
+                    if (productBarcodeMap.containsKey(csvlistStr[6])) {
+                        csvlistStr[12] = productBarcodeMap.get(csvlistStr[6]);
+                    } else {
+                    }
+                }
+                //妫�绱㈠瓨鍦ㄦ媶鐩掍骇鍝佹暟閲�
+                Map<String, Integer> exitpieceBarcodeMap = new Map<String, Integer>();
+                AggregateResult[] pieceOrderDet = [
+                    SELECT count(Id) cnt, Bar_Code__c
+                    FROM Consumable_order_details2__c
+                    WHERE
+                        Dealer_Arrive__c = TRUE
+                        AND Dealer_Shipment__c = FALSE
+                        AND Dealer_Saled__c = FALSE
+                        AND Lose_Flag__c = FALSE
+                        AND Bar_Code__c IN :barcodePieceList
+                        AND Product_Type__c LIKE :sqlagencyProType
+                        AND Dealer_Info_text__c = :accountName
+                        AND Arrive_Owner_Work_Location__c = :userWorkLocation
+                        AND Box_Piece__c = '涓�'
+                    GROUP BY Bar_Code__c
+                ];
+                for (AggregateResult ar : pieceOrderDet) {
+                    exitpieceBarcodeMap.put(String.valueOf(ar.get('Bar_Code__c')), Integer.valueOf(ar.get('cnt')));
+                }
+                for (String bc : barcodePieceList) {
+                    if (!exitpieceBarcodeMap.containsKey(bc)) {
+                        if (messageCount >= 100)
+                            break;
+                        // ApexPages.addmessage(
+                        //     new ApexPages.message(ApexPages.severity.ERROR, 'Barcode ' + bc + ' 涓嶅瓨鍦ㄦ垨鍗曚綅閿欒锛岃纭銆�')
+                        // );
+                        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 + ' 搴撳瓨涓嶈冻锛岃纭銆�<br />';
+                        saveFLGbln = true;
+                        messageCount++;
+                    }
+                }
+            } catch (Exception e) {
+                //ApexPages.addMessages(e);
+                errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';';
+                //return new ResponseBodyLWC('Error', 500, e.getMessage()+e.getStackTraceString(), '');
+            }
+            getorderinfo();
+            dataInfoconfim();
+            getorderdet2info(csvRecordStr);
+            if (saveFLGbln == false) {
+                getorderdetinfo(csvRecordStr);
+            }
+            data.put('orderRecords', orderRecords);
+            data.put('saveFLGbln', saveFLGbln);
+            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;
+            return res;
+        }
+    }
+
+    public static void getorderinfo() {
+        map<string, string> orderNameMap = new Map<string, string>();
+        try {
+            csvAsString = csvFileBody.toString();
+            csvFileLines = csvAsString.split('\n');
+            for (Integer i = 1; i < csvFileLines.size(); i++) {
+                Consumable_order__c cocObj = new Consumable_order__c();
+                string[] csvRecordData = csvFileLines[i].split(',');
+                if (orderNameMap.containsKey(csvRecordData[0]))
+                    continue;
+                cocObj.Name = csvRecordData[0];
+                if (String.isNotBlank(csvRecordData[1])) {
+                    cocObj.SummonsForDirction__c = csvRecordData[1];
+                } else {
+                    if (messageCount >= 100)
+                        break;
+                    // ApexPages.addmessage(
+                    //     new ApexPages.message(ApexPages.severity.ERROR, '鍑哄簱鍗� ' + csvRecordData[0] + '鍑鸿揣鐩殑涓虹┖锛岃纭銆�')
+                    // );
+                    errorMsg += '鍑哄簱鍗� ' + csvRecordData[0] + '鍑鸿揣鐩殑涓虹┖锛岃纭銆�<br />';
+                    saveFLGbln = true;
+                    messageCount++;
+                }
+                cocObj.Order_Attachment__c = csvRecordData[2];
+                cocObj.Order_Indication__c = csvRecordData[3];
+                cocObj.Order_ForCustomerText__c = csvRecordData[4];
+                cocObj.Invoice_Note__c = csvRecordData[5];
+                if (String.isBlank(csvRecordData[11])) {
+                    if (messageCount >= 100)
+                        break;
+                    // ApexPages.addmessage(
+                    //     new ApexPages.message(ApexPages.severity.ERROR, '鍑哄簱鍗� ' + cocObj.Name + '鐨勪骇鍝佷腑锛屽瓨鍦ㄥ嚭搴撴棩鏈熶负绌猴紝璇风‘璁ゃ��')
+                    // );
+                    errorMsg += '鍑哄簱鍗� ' + cocObj.Name + '鐨勪骇鍝佷腑锛屽瓨鍦ㄥ嚭搴撴棩鏈熶负绌猴紝璇风‘璁ゃ��<br />';
+                    saveFLGbln = true;
+                    messageCount++;
+                } else {
+                    cocObj.Outbound_Date__c = Date.parse(csvRecordData[11].trim());
+                }
+                if (String.isNotEmpty(csvRecordData[2])) {
+                    hospitalconMap.put(csvRecordData[2].trim(), csvRecordData[0].trim());
+                }
+                orderNameMap.put(csvRecordData[0], csvRecordData[0]);
+                orderRecords.add(new ConsumableorderdetailsInfo(cocObj));
+            }
+        } catch (Exception e) {
+            //return new ResponseBodyLWC('Error', 500, e.getMessage(), '');
+            errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';';
+        }
+    }
+
+    public static void dataInfoconfim() {
+        //纭鍖婚櫌淇℃伅
+        hospitalSysMap = new Map<String, String>();
+        secondAgencyMap = new Map<String, String>();
+        for (ConsumableorderdetailsInfo ass : orderRecords) {
+            if (
+                (ass.order.SummonsForDirction__c == '閿�鍞粰浜岀骇缁忛攢鍟�' ||
+                ass.order.SummonsForDirction__c == '鐩存帴閿�鍞粰鍖婚櫌' ||
+                ass.order.SummonsForDirction__c == '鍖婚櫌璇曠敤') &&
+                (String.isBlank(ass.hospitalName) ||
+                String.isBlank(ass.hospitalCode) ||
+                String.isBlank(ass.order.Order_ForCustomerText__c))
+            ) {
+                if (messageCount >= 100)
+                    break;
+                // ApexPages.addmessage(
+                //     new ApexPages.message(ApexPages.severity.ERROR, '鍑哄簱鍗�' + ass.order.Name + '鍖婚櫌鐩稿叧淇℃伅涓嶈兘绌猴紝璇风‘璁ゃ��')
+                // );
+                errorMsg += '鍑哄簱鍗�' + ass.order.Name + '鍖婚櫌鐩稿叧淇℃伅涓嶈兘绌猴紝璇风‘璁ゃ��<br />';
+                messageCount++;
+                saveFLGbln = true;
+                //return null;
+            }
+            if (ass.order.SummonsForDirction__c == '閿�鍞粰浜岀骇缁忛攢鍟�') {
+                if (String.isBlank(ass.agencyName)) {
+                    if (messageCount >= 100)
+                        break;
+                    // ApexPages.addmessage(
+                    //     new ApexPages.message(ApexPages.severity.ERROR, '鍑哄簱鍗�' + ass.order.Name + '缁忛攢鍟嗕俊鎭笉鑳界┖锛岃纭銆�')
+                    // );
+                    errorMsg += '鍑哄簱鍗�' + ass.order.Name + '缁忛攢鍟嗕俊鎭笉鑳界┖锛岃纭銆�<br />';
+                    messageCount++;
+                    saveFLGbln = true;
+                }
+            }
+            if (ass.order.SummonsForDirction__c == '鐩存帴閿�鍞粰鍖婚櫌') {
+                if (String.isNotBlank(ass.agencyName)) {
+                    if (messageCount >= 100)
+                        break;
+                    // ApexPages.addmessage(
+                    //     new ApexPages.message(ApexPages.severity.ERROR, '鍑哄簱鍗�' + ass.order.Name + '涓嶉渶瑕佷簩绾х粡閿�鍟嗭紝璇风‘璁ゃ��')
+                    // );
+                    errorMsg += '鍑哄簱鍗�' + ass.order.Name + '涓嶉渶瑕佷簩绾х粡閿�鍟嗭紝璇风‘璁ゃ��<br />';
+                    messageCount++;
+                    saveFLGbln = true;
+                }
+            }
+            if (ass.order.SummonsForDirction__c == '浜掔浉璋冭揣') {
+                if (String.isBlank(ass.agencyName)) {
+                    if (messageCount >= 100)
+                        break;
+                    // ApexPages.addmessage(
+                    //     new ApexPages.message(ApexPages.severity.ERROR, '鍑哄簱鍗�' + ass.order.Name + '缁忛攢鍟嗕俊鎭笉鑳界┖锛岃纭銆�')
+                    // );
+                    errorMsg += '鍑哄簱鍗�' + ass.order.Name + '缁忛攢鍟嗕俊鎭笉鑳界┖锛岃纭銆�<br />';
+                    messageCount++;
+                    saveFLGbln = true;
+                }
+                if (
+                    String.isNotBlank(ass.hospitalName) ||
+                    String.isNotBlank(ass.hospitalCode) ||
+                    String.isNotBlank(ass.order.Order_ForCustomerText__c)
+                ) {
+                    if (messageCount >= 100)
+                        break;
+                    // ApexPages.addmessage(
+                    //     new ApexPages.message(ApexPages.severity.ERROR, '鍑哄簱鍗�' + ass.order.Name + '涓嶉渶瑕佸尰闄㈢浉鍏充俊鎭紝璇风‘璁ゃ��')
+                    // );
+                    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
+            WHERE Agency__r.Name = :accountName
+        ];
+        List<Dealer_elationship__c> secondAgencyInfo = [
+            SELECT Dealer_subordinate__c, Dealer_subordinate__r.Name
+            FROM Dealer_elationship__c
+            WHERE Dealer_principal__r.Name = :accountName
+        ];
+        for (Agency_Hospital_Link__c hpinfo : hospitalInfo) {
+            hospitalSysMap.put(hpinfo.Hospital__r.Management_Code__c, hpinfo.Hospital__c);
+        }
+        for (Dealer_elationship__c safo : secondAgencyInfo) {
+            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)
+                    break;
+                // ApexPages.addmessage(
+                //     new ApexPages.message(
+                //         ApexPages.severity.ERROR,
+                //         '鍑哄簱鍗� ' +
+                //         hospitalconMap.get(widget) +
+                //         ' 鐨勫尰闄㈢紪鐮�' +
+                //         widget +
+                //         ' 涓嶅瓨鍦ㄦ垨鑰呬笉鏄湰缁忛攢鍟嗚礋璐g殑鍖婚櫌锛岃纭銆�'
+                //     )
+                // );
+                errorMsg +=
+                    '鍑哄簱鍗� ' +
+                    hospitalconMap.get(widget) +
+                    ' 鐨勫尰闄㈢紪鐮�' +
+                    widget +
+                    ' 涓嶅瓨鍦ㄦ垨鑰呬笉鏄湰缁忛攢鍟嗚礋璐g殑鍖婚櫌锛岃纭銆�<br />';
+                saveFLGbln = true;
+            }
+        }
+    }
+
+    public static void getorderdet2info(List<String[]> csvRecordStr) {
+        barcodeList = new List<String>();
+        try {
+            for (Integer i = 1; i < csvRecordStr.size(); i++) {
+                Consumable_Order_details2__c cod2Obj = new Consumable_Order_details2__c();
+                string[] csvRecordData = csvRecordStr[i];
+                cod2Obj.TracingCode__c = csvRecordData[0];
+                cod2Obj.Bar_Code__c = csvRecordData[6];
+                if (String.isNotBlank(csvRecordData[6])) {
+                    barcodeList.add(csvRecordData[6]);
+                }
+                if (String.isBlank(csvRecordData[9])) {
+                    if (messageCount >= 100)
+                        break;
+                    // ApexPages.addmessage(
+                    //     new ApexPages.message(
+                    //         ApexPages.severity.ERROR,
+                    //         '鍑哄簱鍗� ' +
+                    //         cod2Obj.TracingCode__c +
+                    //         '鐨刡arcode ' +
+                    //         cod2Obj.Bar_Code__c +
+                    //         ' 涓嶅瓨鍦ㄥ嚭搴撳崟浣嶏紝璇风‘璁ゃ��'
+                    //     )
+                    // );
+                    errorMsg += '鍑哄簱鍗� ' + cod2Obj.TracingCode__c + '鐨刡arcode ' + cod2Obj.Bar_Code__c + ' 涓嶅瓨鍦ㄥ嚭搴撳崟浣嶏紝璇风‘璁ゃ��<br />';
+                    saveFLGbln = true;
+                    messageCount++;
+                } else if (String.valueOf(csvRecordData[9]) != '鐩�' && String.valueOf(csvRecordData[9]) != '涓�') {
+                    if (messageCount >= 100)
+                        break;
+                    // ApexPages.addmessage(
+                    //     new ApexPages.message(
+                    //         ApexPages.severity.ERROR,
+                    //         '鍑哄簱鍗� ' +
+                    //         cod2Obj.TracingCode__c +
+                    //         '鐨刡arcode ' +
+                    //         cod2Obj.Bar_Code__c +
+                    //         ' 鍑哄簱鍗曚綅涓嶆纭紝璇风‘璁ゃ��'
+                    //     )
+                    // );
+                    errorMsg += '鍑哄簱鍗� ' + cod2Obj.TracingCode__c + '鐨刡arcode ' + cod2Obj.Bar_Code__c + ' 鍑哄簱鍗曚綅涓嶆纭紝璇风‘璁ゃ��';
+                    saveFLGbln = true;
+                    messageCount++;
+                } else {
+                    cod2Obj.Box_Piece__c = csvRecordData[9];
+                }
+                if (String.isBlank(csvRecordData[8])) {
+                    if (messageCount >= 100)
+                        break;
+                    // ApexPages.addmessage(
+                    //     new ApexPages.message(ApexPages.severity.ERROR, '鍑哄簱鍗� ' + cod2Obj.TracingCode__c + '浜у搧鍑鸿揣鍗曚环涓虹┖锛岃纭銆�')
+                    // );
+                    errorMsg += '鍑哄簱鍗� ' + cod2Obj.TracingCode__c + '浜у搧鍑鸿揣鍗曚环涓虹┖锛岃纭銆�<br />';
+                    saveFLGbln = true;
+                    messageCount++;
+                } else if (String.isNotBlank(csvRecordData[8])) {
+                    if (
+                        Decimal.valueOf(csvRecordData[8]) == 0 &&
+                        (String.valueOf(csvRecordData[1]) == '鐩存帴閿�鍞粰鍖婚櫌' ||
+                        String.valueOf(csvRecordData[1]) == '閿�鍞粰浜岀骇缁忛攢鍟�')
+                    ) {
+                        if (messageCount >= 100)
+                            break;
+                        // ApexPages.addmessage(
+                        //     new ApexPages.message(
+                        //         ApexPages.severity.ERROR,
+                        //         '鍑哄簱鍗� ' +
+                        //         cod2Obj.TracingCode__c +
+                        //         '浜у搧鍑鸿揣鍗曚环涓嶈兘涓�0锛岃纭銆�'
+                        //     )
+                        // );
+                        errorMsg += '鍑哄簱鍗� ' + cod2Obj.TracingCode__c + '浜у搧鍑鸿揣鍗曚环涓嶈兘涓�0锛岃纭銆�<br />';
+                        saveFLGbln = true;
+                        messageCount++;
+                    } else {
+                        cod2Obj.Delivery_List_RMB__c = Decimal.valueOf(csvRecordData[8]);
+                    }
+                }
+                if (String.isBlank(csvRecordData[6])) {
+                    if (messageCount >= 100)
+                        break;
+                    // ApexPages.addmessage(
+                    //     new ApexPages.message(
+                    //         ApexPages.severity.ERROR,
+                    //         '鍑哄簱鍗� ' +
+                    //         cod2Obj.TracingCode__c +
+                    //         '鐨勪骇鍝佷腑锛屽瓨鍦╞arcode涓虹┖锛岃纭銆�'
+                    //     )
+                    // );
+                    errorMsg += '鍑哄簱鍗� ' + cod2Obj.TracingCode__c + '鐨勪骇鍝佷腑锛屽瓨鍦╞arcode涓虹┖锛岃纭銆�<br />';
+                    saveFLGbln = true;
+                    messageCount++;
+                } else if (String.isBlank(csvRecordData[12])) {
+                    if (messageCount >= 100)
+                        break;
+                    // ApexPages.addmessage(
+                    //     new ApexPages.message(
+                    //         ApexPages.severity.ERROR,
+                    //         '鍑哄簱鍗� ' +
+                    //         cod2Obj.TracingCode__c +
+                    //         '鐨刡arcode ' +
+                    //         cod2Obj.Bar_Code__c +
+                    //         ' 涓嶅瓨鍦ㄦ垨涓嶆槸鍦ㄥ簱浜у搧锛岃纭銆�'
+                    //     )
+                    // );
+                    errorMsg += '鍑哄簱鍗� ' + cod2Obj.TracingCode__c + '鐨刡arcode ' + cod2Obj.Bar_Code__c + ' 涓嶅瓨鍦ㄦ垨涓嶆槸鍦ㄥ簱浜у搧锛岃纭銆�';
+                    saveFLGbln = true;
+                    messageCount++;
+                }
+                cod2Obj.Return_reason__c = csvRecordData[12];
+                if (String.isBlank(csvRecordData[11])) {
+                    if (messageCount >= 100)
+                        break;
+                    // ApexPages.addmessage(
+                    //     new ApexPages.message(
+                    //         ApexPages.severity.ERROR,
+                    //         '鍑哄簱鍗� ' +
+                    //         cod2Obj.TracingCode__c +
+                    //         '鐨勪骇鍝佷腑锛屽瓨鍦ㄥ嚭搴撴棩鏈熶负绌猴紝璇风‘璁ゃ��'
+                    //     )
+                    // );
+                    errorMsg += '鍑哄簱鍗� ' + cod2Obj.TracingCode__c + '鐨勪骇鍝佷腑锛屽瓨鍦ㄥ嚭搴撴棩鏈熶负绌猴紝璇风‘璁ゃ��';
+                    saveFLGbln = true;
+                    messageCount++;
+                } else {
+                    cod2Obj.Send_Date__c = Date.parse(csvRecordData[11].trim());
+                }
+            }
+        } catch (Exception e) {
+            //return new ResponseBodyLWC('Error', 500, e.getMessage(), '');
+            errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';';
+        }
+    }
+
+    public static void getorderdetinfo(List<String[]> csvRecordStr) {
+        map<string, string> orderdetMap = new Map<string, string>();
+        try {
+            for (Integer i = 1; i < csvRecordStr.size(); i++) {
+                Consumable_Orderdetails__c codObj = new Consumable_Orderdetails__c();
+                string[] csvRecordData = csvRecordStr[i];
+                if (orderdetMap.containsKey(csvRecordData[0] + csvRecordData[12]))
+                    continue;
+                codObj.Remarks__c = csvRecordData[0];
+                if (String.isBlank(csvRecordData[7])) {
+                    if (messageCount >= 100)
+                        break;
+                    // ApexPages.addmessage(
+                    //     new ApexPages.message(ApexPages.severity.ERROR, '鍑哄簱鍗� ' + csvRecordData[0] + '浜у搧鍑鸿揣鏁伴噺涓虹┖锛岃纭銆�')
+                    // );
+                    errorMsg += '鍑哄簱鍗� ' + csvRecordData[0] + '浜у搧鍑鸿揣鏁伴噺涓虹┖锛岃纭銆�<br />';
+                    saveFLGbln = true;
+                    messageCount++;
+                } else if (Decimal.valueOf(csvRecordData[7]) > 1 && String.valueOf(csvRecordData[9]) == '鐩�') {
+                    if (messageCount >= 100)
+                        break;
+                    // ApexPages.addmessage(
+                    //     new ApexPages.message(
+                    //         ApexPages.severity.ERROR,
+                    //         '鍑哄簱鍗� ' +
+                    //         csvRecordData[0] +
+                    //         '瀛樺湪鍗曚綅鏄洅锛屼骇鍝佸嚭璐ф暟閲忓ぇ浜�1锛岃纭銆�'
+                    //     )
+                    // );
+                    errorMsg += '鍑哄簱鍗� ' + csvRecordData[0] + '瀛樺湪鍗曚綅鏄洅锛屼骇鍝佸嚭璐ф暟閲忓ぇ浜�1锛岃纭銆�<br />';
+                    saveFLGbln = true;
+                    messageCount++;
+                } else {
+                    codObj.Shipment_Count__c = Decimal.valueOf(csvRecordData[7]);
+                }
+                codObj.Box_Piece__c = csvRecordData[9];
+                if (String.isNotBlank(csvRecordData[8])) {
+                    codObj.Delivery_List_RMB__c = Decimal.valueOf(csvRecordData[8]);
+                } else {
+                    if (messageCount >= 100)
+                        break;
+                    // ApexPages.addmessage(
+                    //     new ApexPages.message(ApexPages.severity.ERROR, '鍑哄簱鍗� ' + csvRecordData[0] + '浜у搧鍑鸿揣鍗曚环涓虹┖锛岃纭銆�')
+                    // );
+                    errorMsg += '鍑哄簱鍗� ' + csvRecordData[0] + '鍑哄簱鍗� ' + csvRecordData[0] + '浜у搧鍑鸿揣鍗曚环涓虹┖锛岃纭銆�<br />';
+                    saveFLGbln = true;
+                    messageCount++;
+                }
+                //if(String.isNotBlank(csvRecordData[10])){
+                // codObj.Unitprice_To_agency__c = Decimal.valueOf(csvRecordData[10]);
+                //}
+                codObj.Lose_reason__c = csvRecordData[12];
+                codObj.Used_date__c = Date.parse(csvRecordData[11].trim());
+                product2conMap.put(csvRecordData[12].trim(), csvRecordData[12].trim());
+                orderdetMap.put(csvRecordData[0] + csvRecordData[12], csvRecordData[0] + csvRecordData[12]);
+                //orderdetRecords.add(new ConsumableorderdetailsInfo(codObj));
+            }
+        } catch (Exception e) {
+            //return new ResponseBodyLWC('Error', 500, e.getMessage(), '');
+            errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';';
+        }
+    }
+
+    @AuraEnabled
+    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 = 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>();
+            List<Consumable_order__c> coc = new List<Consumable_order__c>();
+            for (ConsumableorderdetailsInfo ass : orderRecords) {
+                ass.order.Order_type__c = '浼犵エ';
+                ass.order.SummonsStatus_c__c = '宸插畬鎴�';
+                ass.order.Order_ProType__c = agencyProType;
+                ass.order.Dealer_Info__c = accountid;
+                ass.order.Order_ForHospital__c = hospitalSysMap.get(ass.hospitalCode);
+                if (secondAgencyMap.containsKey(ass.agencyName)) {
+                    ass.order.Order_ForDealer__c = secondAgencyMap.get(ass.agencyName);
+                } else {
+                    ass.order.Order_ForDealerText__c = ass.agencyName;
+                }
+                ass.order.RecordTypeId = System.Label.RT_ConOrder_Sale;
+                coc.add(ass.order);
+            }
+            System.debug('coc = ' + coc);
+            if (coc.size() > 0) {
+                insert coc;
+            }
+            for (Consumable_order__c order : coc) {
+                orderInfoMap.put(order.Name, order.Id);
+            }
+            List<Consumable_Orderdetails__c> cod = new List<Consumable_Orderdetails__c>();
+            for (String field : orderInfoMap.keySet()) {
+                Integer i = 1;
+                for (ConsumableorderdetailsInfo ass : orderdetRecords) {
+                    if (ass.orderName == field) {
+                        String str = string.valueOf(i);
+                        if (str.length() == 1) {
+                            str = '0' + str;
+                        }
+                        ass.orderdetails1.Name = ass.orderName + '-' + str;
+                        ass.orderdetails1.Consumable_order__c = orderInfoMap.get(ass.orderName);
+                        ass.orderdetails1.Consumable_Product__c = ass.productName;
+                        ass.orderdetails1.RecordTypeId = System.Label.RT_ConOrderDetail1_Sale;
+                        cod.add(ass.orderdetails1);
+                        i++;
+                    }
+                }
+            }
+            System.debug('cod = ' + cod);
+            if (cod.size() > 0) {
+                insert cod;
+            }
+            //鐩掔殑鏁版嵁妫�绱�
+            List<Consumable_Order_details2__c> cod2List = new List<Consumable_Order_details2__c>();
+            List<Consumable_order_details2__c> cOrderDet = [
+                SELECT Id, Bar_Code__c, Name, Consumable_Product__c, Box_Piece__c
+                FROM Consumable_order_details2__c
+                WHERE
+                    Dealer_Arrive__c = TRUE
+                    AND Dealer_Shipment__c = FALSE
+                    AND Dealer_Saled__c = FALSE
+                    AND Lose_Flag__c = FALSE
+                    AND Bar_Code__c IN :barcodeList
+                    AND Product_Type__c LIKE :sqlagencyProType
+                    AND Dealer_Info_text__c = :accountName
+                    AND Arrive_Owner_Work_Location__c = :userWorkLocation
+                    AND Box_Piece__c = '鐩�'
+            ];
+            for (ConsumableorderdetailsInfo ass : orderdet2BoxRecords) {
+                Integer idx = 0;
+                for (Consumable_order_details2__c codtest : cOrderDet) {
+                    Consumable_Order_details2__c cod2 = new Consumable_Order_details2__c();
+                    if (codtest.Bar_Code__c == ass.orderdetails2.Bar_Code__c) {
+                        cod2 = codtest;
+                        cod2.Consumable_Sale_order__c = orderInfoMap.get(ass.orderName);
+                        cod2.Consumable_ZS_order__c = orderInfoMap.get(ass.orderName);
+                        cod2.Used_date__c = ass.orderdetails2.Used_date__c;
+                        cod2.Send_Date__c = ass.orderdetails2.Send_Date__c;
+                        //cod2.Unitprice_To_agency__c = ass.orderdetails2.Unitprice_To_agency__c;
+                        cod2.Delivery_List_RMB__c = ass.orderdetails2.Delivery_List_RMB__c;
+                        cod2List.add(cod2);
+                        cOrderDet.remove(idx);
+                        break;
+                    }
+                    idx++;
+                }
+            }
+
+            //涓殑鏁版嵁妫�绱�
+            List<Consumable_order_details2__c> cOrderDetPiece = [
+                SELECT Id, Bar_Code__c, RemoveBox_No__c, Name, Consumable_Product__c, Box_Piece__c
+                FROM Consumable_order_details2__c
+                WHERE
+                    Dealer_Arrive__c = TRUE
+                    AND Dealer_Shipment__c = FALSE
+                    AND Dealer_Saled__c = FALSE
+                    AND Lose_Flag__c = FALSE
+                    AND Arrive_Owner_Work_Location__c = :userWorkLocation
+                    AND Bar_Code__c IN :barcodePieceList
+                    AND Product_Type__c LIKE :sqlagencyProType
+                    AND Dealer_Info_text__c = :accountName
+                    AND Box_Piece__c = '涓�'
+                ORDER BY Bar_Code__c, RemoveBox_No__c DESC
+            ];
+            for (ConsumableorderdetailsInfo ass : orderdet2PieceRecords) {
+                Decimal idy = 1;
+                for (Integer idx = 0; idx < cOrderDetPiece.size(); idx++) {
+                    Consumable_Order_details2__c cod2 = new Consumable_Order_details2__c();
+                    if (cOrderDetPiece[idx].Bar_Code__c == ass.orderdetails2.Bar_Code__c && idy <= ass.pieceCount) {
+                        cod2 = cOrderDetPiece[idx].Clone();
+                        cod2.Id = cOrderDetPiece[idx].Id;
+                        cod2.Consumable_Sale_order__c = orderInfoMap.get(ass.orderName);
+                        cod2.Consumable_ZS_order__c = orderInfoMap.get(ass.orderName);
+                        cod2.Used_date__c = ass.orderdetails2.Used_date__c;
+                        cod2.Send_Date__c = ass.orderdetails2.Send_Date__c;
+                        //cod2.Unitprice_To_agency__c = ass.orderdetails2.Unitprice_To_agency__c;
+                        cod2.Delivery_List_RMB__c = ass.orderdetails2.Delivery_List_RMB__c;
+                        cod2List.add(cod2);
+                        cOrderDetPiece[idx].Bar_Code__c = '';
+                        idy++;
+                        //break;
+                    }
+                }
+            }
+            if (cod2List.size() > 0) {
+                update cod2List;
+            }
+            errorflg = true;
+            //errorMessage = '淇濆瓨瀹屾垚銆�';
+            saveFLGbln = true;
+
+            res.status = 'Success';
+            res.code = 200;
+            res.msg = errorMsg;
+            return res;
+        } catch (Exception e) {
+            Database.rollback(sp);
+            // ApexPages.addMessages(e);
+            // return null;
+            return new ResponseBodyLWC('Error', 500, e.getMessage() + e.getStackTraceString(), '');
+        }
+    }
+
+    public static List<ConsumableorderdetailsInfo> getorderdetList(List<String[]> csvRecordStr) {
+        List<ConsumableorderdetailsInfo> orderdetRecords = new List<ConsumableorderdetailsInfo>();
+        map<string, Decimal> orderdetMap = new Map<string, Decimal>();
+        try {
+            for (Integer i = 1; i < csvRecordStr.size(); i++) {
+                Consumable_Orderdetails__c codObj = new Consumable_Orderdetails__c();
+                string[] csvRecordData = csvRecordStr[i];
+                if (orderdetMap.containsKey(csvRecordData[0] + csvRecordData[12] + csvRecordData[9])) {
+                    orderdetMap.put(
+                        csvRecordData[0] +
+                        csvRecordData[12] +
+                        csvRecordData[9],
+                        orderdetMap.get(csvRecordData[0] + csvRecordData[12] + csvRecordData[9]) + Decimal.valueOf(csvRecordData[7])
+                    );
+                    continue;
+                } else {
+                    orderdetMap.put(csvRecordData[0] + csvRecordData[12] + csvRecordData[9], Decimal.valueOf(csvRecordData[7]));
+                }
+                codObj.Remarks__c = csvRecordData[0];
+                codObj.Shipment_Count__c = Decimal.valueOf(csvRecordData[7]);
+                codObj.Box_Piece__c = csvRecordData[9];
+                if (String.isNotBlank(csvRecordData[8])) {
+                    codObj.Delivery_List_RMB__c = Decimal.valueOf(csvRecordData[8]);
+                }
+                codObj.Lose_reason__c = csvRecordData[12];
+                if (String.isNotBlank(csvRecordData[11])) {
+                    codObj.Used_date__c = Date.parse(csvRecordData[11].trim());
+                }
+                product2conMap.put(csvRecordData[12].trim(), csvRecordData[12].trim());
+                orderdetRecords.add(new ConsumableorderdetailsInfo(codObj));
+            }
+            for (ConsumableorderdetailsInfo ass : orderdetRecords) {
+                if (orderdetMap.containsKey(ass.orderName + ass.productName + ass.orderdetails1.Box_Piece__c)) {
+                    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() + ' ' + e.getLineNumber() + ';';
+            System.debug('orderdetRecords = null '  + e.getLineNumber());
+            return null;
+        }
+    }
+
+    public static List<ConsumableorderdetailsInfo> getorderdet2BoxList(List<String[]> csvRecordStr) {
+        barcodeList = new List<String>();
+        List<ConsumableorderdetailsInfo> orderdet2BoxRecords = new List<ConsumableorderdetailsInfo>();
+        try {
+            for (Integer i = 1; i < csvRecordStr.size(); i++) {
+                string[] csvRecordData = csvRecordStr[i];
+                if (String.valueOf(csvRecordData[9]) == '鐩�') {
+                    Consumable_Order_details2__c cod2Obj = new Consumable_Order_details2__c();
+                    cod2Obj.TracingCode__c = csvRecordData[0];
+                    cod2Obj.Bar_Code__c = csvRecordData[6];
+                    if (String.isNotBlank(csvRecordData[6])) {
+                        barcodeList.add(csvRecordData[6]);
+                    }
+                    cod2Obj.Box_Piece__c = csvRecordData[9];
+                    if (String.isNotBlank(csvRecordData[8])) {
+                        cod2Obj.Delivery_List_RMB__c = Decimal.valueOf(csvRecordData[8]);
+                    }
+                    //if(String.isNotBlank(csvRecordData[10])){
+                    //  cod2Obj.Unitprice_To_agency__c = Decimal.valueOf(csvRecordData[10]);
+                    //}
+                    cod2Obj.Return_reason__c = csvRecordData[12];
+                    if (String.valueOf(csvRecordData[1]) == '閿�鍞粰浜岀骇缁忛攢鍟�' || String.valueOf(csvRecordData[1]) == '鐩存帴閿�鍞粰鍖婚櫌') {
+                        cod2Obj.Used_date__c = Date.parse(csvRecordData[11].trim());
+                    } else {
+                        cod2Obj.Send_Date__c = Date.parse(csvRecordData[11].trim());
+                    }
+                    orderdet2BoxRecords.add(new ConsumableorderdetailsInfo(cod2Obj));
+                }
+            }
+            return orderdet2BoxRecords;
+        } catch (Exception e) {
+            // ApexPages.addMessages(e);
+            // return null;
+            errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';';
+            return null;
+        }
+    }
+
+    public static List<ConsumableorderdetailsInfo> getorderdet2pieceList(List<String[]> csvRecordStr) {
+        barcodePieceList = new List<String>();
+        List<ConsumableorderdetailsInfo> orderdet2PieceRecords = new List<ConsumableorderdetailsInfo>();
+        try {
+            for (Integer i = 1; i < csvRecordStr.size(); i++) {
+                string[] csvRecordData = csvRecordStr[i];
+                if (String.valueOf(csvRecordData[9]) == '涓�') {
+                    Consumable_Order_details2__c cod2Obj = new Consumable_Order_details2__c();
+                    cod2Obj.TracingCode__c = csvRecordData[0];
+                    cod2Obj.Bar_Code__c = csvRecordData[6];
+                    if (String.isNotBlank(csvRecordData[6])) {
+                        barcodePieceList.add(csvRecordData[6]);
+                    }
+                    cod2Obj.Box_Piece__c = csvRecordData[9];
+                    if (String.isNotBlank(csvRecordData[8])) {
+                        cod2Obj.Delivery_List_RMB__c = Decimal.valueOf(csvRecordData[8]);
+                    }
+                    cod2Obj.Return_reason__c = csvRecordData[12];
+                    if (String.valueOf(csvRecordData[1]) == '閿�鍞粰浜岀骇缁忛攢鍟�' || String.valueOf(csvRecordData[1]) == '鐩存帴閿�鍞粰鍖婚櫌') {
+                        cod2Obj.Used_date__c = Date.parse(csvRecordData[11].trim());
+                    } else {
+                        cod2Obj.Send_Date__c = Date.parse(csvRecordData[11].trim());
+                    }
+                    cod2Obj.Rrturn_count__c = Decimal.valueOf(csvRecordData[7]);
+                    orderdet2PieceRecords.add(new ConsumableorderdetailsInfo(cod2Obj));
+                }
+            }
+            return orderdet2PieceRecords;
+        } catch (Exception e) {
+            // ApexPages.addMessages(e);
+            // return null;
+            errorMsg += e.getMessage();
+            return null;
+        }
+    }
+
+    class ConsumableorderdetailsInfo implements Comparable {
+        @AuraEnabled
+        public Consumable_order__c order { get; set; }
+        @AuraEnabled
+        public Consumable_orderdetails__c orderdetails1 { get; set; }
+        @AuraEnabled
+        public Consumable_order_details2__c orderdetails2 { get; set; }
+        @AuraEnabled
+        public String orderName { get; set; }
+        @AuraEnabled
+        public String hospitalCode { get; set; }
+        @AuraEnabled
+        public String hospitalName { get; set; }
+        @AuraEnabled
+        public String agencyName { get; set; }
+        @AuraEnabled
+        public String productName { get; set; }
+        @AuraEnabled
+        public Decimal pieceCount { get; set; }
+        // 鍙栧埌鐨勮鍗曚俊鎭�
+        public ConsumableorderdetailsInfo(Consumable_order__c e) {
+            order = e;
+            hospitalCode = e.Order_Attachment__c;
+            hospitalName = e.Order_Indication__c;
+            agencyName = e.Invoice_Note__c;
+            e.Order_Attachment__c = '';
+            e.Order_Indication__c = '';
+            e.Invoice_Note__c = '';
+        }
+        // 鍙栧埌鐨勮鍗曟槑缁�
+        public ConsumableorderdetailsInfo(Consumable_orderdetails__c e) {
+            orderdetails1 = e;
+            orderName = e.Remarks__c;
+            productName = e.Lose_reason__c;
+            e.Lose_reason__c = '';
+            e.Remarks__c = '';
+        }
+        // 鍙栧埌鐨勪骇鍝佹槑缁�
+        public ConsumableorderdetailsInfo(Consumable_order_details2__c e) {
+            orderdetails2 = e;
+            orderName = e.TracingCode__c;
+            productName = e.Return_reason__c;
+            pieceCount = e.Rrturn_count__c;
+            e.TracingCode__c = '';
+            e.Return_reason__c = '';
+            e.Rrturn_count__c = null;
+        }
+        public Integer compareTo(Object compareTo) {
+            return null;
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.1