buli
2023-07-14 744f42c5496e656a1f9927740a3b37c0b97a6cba
force-app/main/default/classes/LexOutboundorderImportController.cls
@@ -31,11 +31,7 @@
    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;
@@ -104,10 +100,7 @@
            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 String[13];
@@ -136,10 +129,7 @@
            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])) {
@@ -165,10 +155,7 @@
          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)) {
@@ -180,10 +167,7 @@
            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 + ' 库存不足,请确认。'));
@@ -235,10 +219,7 @@
          // ApexPages.addmessage(
          //     new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + csvRecordData[0] + '出货目的为空,请确认。')
          // );
          errorMsg +=
            '出库单 ' +
            csvRecordData[0] +
            '出货目的为空,请确认。<br />';
                    errorMsg += '出库单 ' + csvRecordData[0] + '出货目的为空,请确认。<br />';
          saveFLGbln = true;
          messageCount++;
        }
@@ -252,10 +233,7 @@
          // ApexPages.addmessage(
          //     new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + cocObj.Name + '的产品中,存在出库日期为空,请确认。')
          // );
          errorMsg +=
            '出库单 ' +
            cocObj.Name +
            '的产品中,存在出库日期为空,请确认。<br />';
                    errorMsg += '出库单 ' + cocObj.Name + '的产品中,存在出库日期为空,请确认。<br />';
          saveFLGbln = true;
          messageCount++;
        } else {
@@ -291,10 +269,7 @@
        // 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;
@@ -306,10 +281,7 @@
          // ApexPages.addmessage(
          //     new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '经销商信息不能空,请确认。')
          // );
          errorMsg +=
            '出库单' +
            ass.order.Name +
            '经销商信息不能空,请确认。<br />';
                    errorMsg += '出库单' + ass.order.Name + '经销商信息不能空,请确认。<br />';
          messageCount++;
          saveFLGbln = true;
        }
@@ -321,10 +293,7 @@
          // 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 +305,7 @@
          // ApexPages.addmessage(
          //     new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '经销商信息不能空,请确认。')
          // );
          errorMsg +=
            '出库单' +
            ass.order.Name +
            '经销商信息不能空,请确认。<br />';
                    errorMsg += '出库单' + ass.order.Name + '经销商信息不能空,请确认。<br />';
          messageCount++;
          saveFLGbln = true;
        }
@@ -353,10 +319,7 @@
          // ApexPages.addmessage(
          //     new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '不需要医院相关信息,请确认。')
          // );
          errorMsg +=
            '出库单' +
            ass.order.Name +
            '不需要医院相关信息,请确认。<br />';
                    errorMsg += '出库单' + ass.order.Name + '不需要医院相关信息,请确认。<br />';
          messageCount++;
          saveFLGbln = true;
        }
@@ -374,16 +337,10 @@
      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);
@@ -437,18 +394,10 @@
          //         ' 不存在出库单位,请确认。'
          //     )
          // );
          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(
@@ -461,12 +410,7 @@
          //         ' 出库单位不正确,请确认。'
          //     )
          // );
          errorMsg +=
            '出库单 ' +
            cod2Obj.TracingCode__c +
            '的barcode ' +
            cod2Obj.Bar_Code__c +
            ' 出库单位不正确,请确认。';
                    errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '的barcode ' + cod2Obj.Bar_Code__c + ' 出库单位不正确,请确认。';
          saveFLGbln = true;
          messageCount++;
        } else {
@@ -478,10 +422,7 @@
          // 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])) {
@@ -500,10 +441,7 @@
            //         '产品出货单价不能为0,请确认。'
            //     )
            // );
            errorMsg +=
              '出库单 ' +
              cod2Obj.TracingCode__c +
              '产品出货单价不能为0,请确认。<br />';
                        errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '产品出货单价不能为0,请确认。<br />';
            saveFLGbln = true;
            messageCount++;
          } else {
@@ -521,10 +459,7 @@
          //         '的产品中,存在barcode为空,请确认。'
          //     )
          // );
          errorMsg +=
            '出库单 ' +
            cod2Obj.TracingCode__c +
            '的产品中,存在barcode为空,请确认。<br />';
                    errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '的产品中,存在barcode为空,请确认。<br />';
          saveFLGbln = true;
          messageCount++;
        } else if (String.isBlank(csvRecordData[12])) {
@@ -540,12 +475,7 @@
          //         ' 不存在或不是在库产品,请确认。'
          //     )
          // );
          errorMsg +=
            '出库单 ' +
            cod2Obj.TracingCode__c +
            '的barcode ' +
            cod2Obj.Bar_Code__c +
            ' 不存在或不是在库产品,请确认。';
                    errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '的barcode ' + cod2Obj.Bar_Code__c + ' 不存在或不是在库产品,请确认。';
          saveFLGbln = true;
          messageCount++;
        }
@@ -561,10 +491,7 @@
          //         '的产品中,存在出库日期为空,请确认。'
          //     )
          // );
          errorMsg +=
            '出库单 ' +
            cod2Obj.TracingCode__c +
            '的产品中,存在出库日期为空,请确认。';
                    errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '的产品中,存在出库日期为空,请确认。';
          saveFLGbln = true;
          messageCount++;
        } else {
@@ -592,16 +519,10 @@
          // 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(
@@ -612,10 +533,7 @@
          //         '存在单位是盒,产品出货数量大于1,请确认。'
          //     )
          // );
          errorMsg +=
            '出库单 ' +
            csvRecordData[0] +
            '存在单位是盒,产品出货数量大于1,请确认。<br />';
                    errorMsg += '出库单 ' + csvRecordData[0] + '存在单位是盒,产品出货数量大于1,请确认。<br />';
          saveFLGbln = true;
          messageCount++;
        } else {
@@ -630,12 +548,7 @@
          // 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++;
        }
@@ -645,10 +558,7 @@
        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) {
@@ -678,10 +588,7 @@
    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;
@@ -735,9 +642,7 @@
              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);
@@ -787,13 +692,7 @@
      //个的数据检索
      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
@@ -811,10 +710,7 @@
        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);
@@ -845,41 +741,25 @@
      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])
                        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]);
@@ -895,14 +775,8 @@
        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);
@@ -916,9 +790,7 @@
    }
  }
  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 {
@@ -939,10 +811,7 @@
          //  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());
@@ -959,9 +828,7 @@
    }
  }
  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 {
@@ -979,10 +846,7 @@
            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());