buli
2023-07-05 af7b716a60d889acea95560abba0e46eee008b8f
force-app/main/default/classes/LexOutboundorderImportController.cls
@@ -31,7 +31,11 @@
        messageCount = 0;
        errorflg = false;
        errorMessage = null;
        User useracc = [SELECT accountid, Work_Location__c, UserPro_Type__c FROM user WHERE id = :UserInfo.getUserId()];
    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;
@@ -50,6 +54,7 @@
        res.status = 'Success';
        res.code = 200;
        res.msg = '';
    System.debug('res:' + res);
        return res;
    }
@@ -99,10 +104,13 @@
                        barcodeList.add(csvRecordData[6]);
                        if (String.valueOf(csvRecordData[9]) == '个') {
                            barcodePieceList.add(csvRecordData[6]);
                            barcodePieceMap.put(csvRecordData[6], Integer.valueOf(csvRecordData[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];
                    }
@@ -128,7 +136,10 @@
                        AND Dealer_Info_text__c = :accountName
                ];
                for (Consumable_order_details2__c pdinfo : cOrderDet) {
                    productBarcodeMap.put(pdinfo.Bar_Code__c, pdinfo.Consumable_Product__c);
          productBarcodeMap.put(
            pdinfo.Bar_Code__c,
            pdinfo.Consumable_Product__c
          );
                }
                for (String[] csvlistStr : csvRecordStr) {
                    if (productBarcodeMap.containsKey(csvlistStr[6])) {
@@ -154,7 +165,10 @@
                    GROUP BY Bar_Code__c
                ];
                for (AggregateResult ar : pieceOrderDet) {
                    exitpieceBarcodeMap.put(String.valueOf(ar.get('Bar_Code__c')), Integer.valueOf(ar.get('cnt')));
          exitpieceBarcodeMap.put(
            String.valueOf(ar.get('Bar_Code__c')),
            Integer.valueOf(ar.get('cnt'))
          );
                }
                for (String bc : barcodePieceList) {
                    if (!exitpieceBarcodeMap.containsKey(bc)) {
@@ -166,7 +180,10 @@
                        errorMsg += 'Barcode ' + bc + ' 不存在或单位错误,请确认。<br />';
                        saveFLGbln = true;
                        messageCount++;
                    } else if (exitpieceBarcodeMap.containsKey(bc) && exitpieceBarcodeMap.get(bc) < barcodePieceMap.get(bc)) {
          } 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 + ' 库存不足,请确认。'));
@@ -218,7 +235,10 @@
                    // ApexPages.addmessage(
                    //     new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + csvRecordData[0] + '出货目的为空,请确认。')
                    // );
                    errorMsg += '出库单 ' + csvRecordData[0] + '出货目的为空,请确认。<br />';
          errorMsg +=
            '出库单 ' +
            csvRecordData[0] +
            '出货目的为空,请确认。<br />';
                    saveFLGbln = true;
                    messageCount++;
                }
@@ -232,7 +252,10 @@
                    // ApexPages.addmessage(
                    //     new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + cocObj.Name + '的产品中,存在出库日期为空,请确认。')
                    // );
                    errorMsg += '出库单 ' + cocObj.Name + '的产品中,存在出库日期为空,请确认。<br />';
          errorMsg +=
            '出库单 ' +
            cocObj.Name +
            '的产品中,存在出库日期为空,请确认。<br />';
                    saveFLGbln = true;
                    messageCount++;
                } else {
@@ -268,7 +291,10 @@
                // ApexPages.addmessage(
                //     new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '医院相关信息不能空,请确认。')
                // );
                errorMsg += '出库单' + ass.order.Name + '医院相关信息不能空,请确认。<br />';
        errorMsg +=
          '出库单' +
          ass.order.Name +
          '医院相关信息不能空,请确认。<br />';
                messageCount++;
                saveFLGbln = true;
                //return null;
@@ -280,7 +306,10 @@
                    // ApexPages.addmessage(
                    //     new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '经销商信息不能空,请确认。')
                    // );
                    errorMsg += '出库单' + ass.order.Name + '经销商信息不能空,请确认。<br />';
          errorMsg +=
            '出库单' +
            ass.order.Name +
            '经销商信息不能空,请确认。<br />';
                    messageCount++;
                    saveFLGbln = true;
                }
@@ -292,7 +321,10 @@
                    // ApexPages.addmessage(
                    //     new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '不需要二级经销商,请确认。')
                    // );
                    errorMsg += '出库单' + ass.order.Name + '不需要二级经销商,请确认。<br />';
          errorMsg +=
            '出库单' +
            ass.order.Name +
            '不需要二级经销商,请确认。<br />';
                    messageCount++;
                    saveFLGbln = true;
                }
@@ -304,7 +336,10 @@
                    // ApexPages.addmessage(
                    //     new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '经销商信息不能空,请确认。')
                    // );
                    errorMsg += '出库单' + ass.order.Name + '经销商信息不能空,请确认。<br />';
          errorMsg +=
            '出库单' +
            ass.order.Name +
            '经销商信息不能空,请确认。<br />';
                    messageCount++;
                    saveFLGbln = true;
                }
@@ -318,7 +353,10 @@
                    // ApexPages.addmessage(
                    //     new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '不需要医院相关信息,请确认。')
                    // );
                    errorMsg += '出库单' + ass.order.Name + '不需要医院相关信息,请确认。<br />';
          errorMsg +=
            '出库单' +
            ass.order.Name +
            '不需要医院相关信息,请确认。<br />';
                    messageCount++;
                    saveFLGbln = true;
                }
@@ -336,10 +374,16 @@
            WHERE Dealer_principal__r.Name = :accountName
        ];
        for (Agency_Hospital_Link__c hpinfo : hospitalInfo) {
            hospitalSysMap.put(hpinfo.Hospital__r.Management_Code__c, hpinfo.Hospital__c);
      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);
      secondAgencyMap.put(
        safo.Dealer_subordinate__r.Name,
        safo.Dealer_subordinate__c
      );
        }
        //出库单信息验证
        System.debug('hospitalconMap = ' + hospitalconMap);
@@ -393,10 +437,18 @@
                    //         ' 不存在出库单位,请确认。'
                    //     )
                    // );
                    errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '的barcode ' + cod2Obj.Bar_Code__c + ' 不存在出库单位,请确认。<br />';
          errorMsg +=
            '出库单 ' +
            cod2Obj.TracingCode__c +
            '的barcode ' +
            cod2Obj.Bar_Code__c +
            ' 不存在出库单位,请确认。<br />';
                    saveFLGbln = true;
                    messageCount++;
                } else if (String.valueOf(csvRecordData[9]) != '盒' && String.valueOf(csvRecordData[9]) != '个') {
        } else if (
          String.valueOf(csvRecordData[9]) != '盒' &&
          String.valueOf(csvRecordData[9]) != '个'
        ) {
                    if (messageCount >= 100)
                        break;
                    // ApexPages.addmessage(
@@ -409,7 +461,12 @@
                    //         ' 出库单位不正确,请确认。'
                    //     )
                    // );
                    errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '的barcode ' + cod2Obj.Bar_Code__c + ' 出库单位不正确,请确认。';
          errorMsg +=
            '出库单 ' +
            cod2Obj.TracingCode__c +
            '的barcode ' +
            cod2Obj.Bar_Code__c +
            ' 出库单位不正确,请确认。';
                    saveFLGbln = true;
                    messageCount++;
                } else {
@@ -421,7 +478,10 @@
                    // ApexPages.addmessage(
                    //     new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + cod2Obj.TracingCode__c + '产品出货单价为空,请确认。')
                    // );
                    errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '产品出货单价为空,请确认。<br />';
          errorMsg +=
            '出库单 ' +
            cod2Obj.TracingCode__c +
            '产品出货单价为空,请确认。<br />';
                    saveFLGbln = true;
                    messageCount++;
                } else if (String.isNotBlank(csvRecordData[8])) {
@@ -440,7 +500,10 @@
                        //         '产品出货单价不能为0,请确认。'
                        //     )
                        // );
                        errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '产品出货单价不能为0,请确认。<br />';
            errorMsg +=
              '出库单 ' +
              cod2Obj.TracingCode__c +
              '产品出货单价不能为0,请确认。<br />';
                        saveFLGbln = true;
                        messageCount++;
                    } else {
@@ -458,7 +521,10 @@
                    //         '的产品中,存在barcode为空,请确认。'
                    //     )
                    // );
                    errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '的产品中,存在barcode为空,请确认。<br />';
          errorMsg +=
            '出库单 ' +
            cod2Obj.TracingCode__c +
            '的产品中,存在barcode为空,请确认。<br />';
                    saveFLGbln = true;
                    messageCount++;
                } else if (String.isBlank(csvRecordData[12])) {
@@ -474,7 +540,12 @@
                    //         ' 不存在或不是在库产品,请确认。'
                    //     )
                    // );
                    errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '的barcode ' + cod2Obj.Bar_Code__c + ' 不存在或不是在库产品,请确认。';
          errorMsg +=
            '出库单 ' +
            cod2Obj.TracingCode__c +
            '的barcode ' +
            cod2Obj.Bar_Code__c +
            ' 不存在或不是在库产品,请确认。';
                    saveFLGbln = true;
                    messageCount++;
                }
@@ -490,7 +561,10 @@
                    //         '的产品中,存在出库日期为空,请确认。'
                    //     )
                    // );
                    errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '的产品中,存在出库日期为空,请确认。';
          errorMsg +=
            '出库单 ' +
            cod2Obj.TracingCode__c +
            '的产品中,存在出库日期为空,请确认。';
                    saveFLGbln = true;
                    messageCount++;
                } else {
@@ -518,10 +592,16 @@
                    // ApexPages.addmessage(
                    //     new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + csvRecordData[0] + '产品出货数量为空,请确认。')
                    // );
                    errorMsg += '出库单 ' + csvRecordData[0] + '产品出货数量为空,请确认。<br />';
          errorMsg +=
            '出库单 ' +
            csvRecordData[0] +
            '产品出货数量为空,请确认。<br />';
                    saveFLGbln = true;
                    messageCount++;
                } else if (Decimal.valueOf(csvRecordData[7]) > 1 && String.valueOf(csvRecordData[9]) == '盒') {
        } else if (
          Decimal.valueOf(csvRecordData[7]) > 1 &&
          String.valueOf(csvRecordData[9]) == '盒'
        ) {
                    if (messageCount >= 100)
                        break;
                    // ApexPages.addmessage(
@@ -532,7 +612,10 @@
                    //         '存在单位是盒,产品出货数量大于1,请确认。'
                    //     )
                    // );
                    errorMsg += '出库单 ' + csvRecordData[0] + '存在单位是盒,产品出货数量大于1,请确认。<br />';
          errorMsg +=
            '出库单 ' +
            csvRecordData[0] +
            '存在单位是盒,产品出货数量大于1,请确认。<br />';
                    saveFLGbln = true;
                    messageCount++;
                } else {
@@ -547,7 +630,12 @@
                    // ApexPages.addmessage(
                    //     new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + csvRecordData[0] + '产品出货单价为空,请确认。')
                    // );
                    errorMsg += '出库单 ' + csvRecordData[0] + '出库单 ' + csvRecordData[0] + '产品出货单价为空,请确认。<br />';
          errorMsg +=
            '出库单 ' +
            csvRecordData[0] +
            '出库单 ' +
            csvRecordData[0] +
            '产品出货单价为空,请确认。<br />';
                    saveFLGbln = true;
                    messageCount++;
                }
@@ -557,7 +645,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]);
        orderdetMap.put(
          csvRecordData[0] + csvRecordData[12],
          csvRecordData[0] + csvRecordData[12]
        );
                //orderdetRecords.add(new ConsumableorderdetailsInfo(codObj));
            }
        } catch (Exception e) {
@@ -587,7 +678,10 @@
        res.entity = data;
        csvRecordStr = csvRecordStrLwc;
        orderRecords = (List<ConsumableorderdetailsInfo>)JSON.deserialize(orderRecordsLwc, List<ConsumableorderdetailsInfo>.class);
    orderRecords = (List<ConsumableorderdetailsInfo>) JSON.deserialize(
      orderRecordsLwc,
      List<ConsumableorderdetailsInfo>.class
    );
        System.debug('orderRecords = ' + orderRecords);
        sqlagencyProType = sqlagencyProTypeLwc;
        userWorkLocation = userWorkLocationLwc;
@@ -641,7 +735,9 @@
                            str = '0' + str;
                        }
                        ass.orderdetails1.Name = ass.orderName + '-' + str;
                        ass.orderdetails1.Consumable_order__c = orderInfoMap.get(ass.orderName);
            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);
@@ -691,7 +787,13 @@
            //个的数据检索
            List<Consumable_order_details2__c> cOrderDetPiece = [
                SELECT Id, Bar_Code__c, RemoveBox_No__c, Name, Consumable_Product__c, Box_Piece__c
        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
@@ -709,7 +811,10 @@
                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) {
          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);
@@ -740,27 +845,41 @@
            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(),
        ''
      );
        }
    }
    public static List<ConsumableorderdetailsInfo> getorderdetList(List<String[]> csvRecordStr) {
  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])) {
        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])
            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]));
          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]);
@@ -776,8 +895,14 @@
                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);
        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);
@@ -791,7 +916,9 @@
        }
    }
    public static List<ConsumableorderdetailsInfo> getorderdet2BoxList(List<String[]> csvRecordStr) {
  public static List<ConsumableorderdetailsInfo> getorderdet2BoxList(
    List<String[]> csvRecordStr
  ) {
        barcodeList = new List<String>();
        List<ConsumableorderdetailsInfo> orderdet2BoxRecords = new List<ConsumableorderdetailsInfo>();
        try {
@@ -812,7 +939,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]) == '直接销售给医院') {
          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());
@@ -829,7 +959,9 @@
        }
    }
    public static List<ConsumableorderdetailsInfo> getorderdet2pieceList(List<String[]> csvRecordStr) {
  public static List<ConsumableorderdetailsInfo> getorderdet2pieceList(
    List<String[]> csvRecordStr
  ) {
        barcodePieceList = new List<String>();
        List<ConsumableorderdetailsInfo> orderdet2PieceRecords = new List<ConsumableorderdetailsInfo>();
        try {
@@ -847,7 +979,10 @@
                        cod2Obj.Delivery_List_RMB__c = Decimal.valueOf(csvRecordData[8]);
                    }
                    cod2Obj.Return_reason__c = csvRecordData[12];
                    if (String.valueOf(csvRecordData[1]) == '销售给二级经销商' || String.valueOf(csvRecordData[1]) == '直接销售给医院') {
          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());
@@ -864,7 +999,7 @@
            return null;
        }
    }
  @TestVisible
    class ConsumableorderdetailsInfo implements Comparable {
        @AuraEnabled
        public Consumable_order__c order { get; set; }