buli
2023-07-05 af7b716a60d889acea95560abba0e46eee008b8f
force-app/main/default/classes/LexConsumableAccountController.cls
@@ -34,7 +34,11 @@
    //初始化
    @AuraEnabled
    public static ResponseBodyLWC init(Integer pageSizeLWC, Integer pageTokenLWC, String fiscalYear) {
  public static ResponseBodyLWC init(
    Integer pageSizeLWC,
    Integer pageTokenLWC,
    String fiscalYear
  ) {
        try {
            ResponseBodyLWC res = new ResponseBodyLWC();
            Map<String, object> data = new Map<String, object>();
@@ -43,8 +47,13 @@
            pageSize = pageSizeLWC;
            pageToken = pageTokenLWC > 2000 ? 2000 : pageTokenLWC;
            User Useracc = [SELECT accountid, UserPro_Type__c FROM user WHERE id = :UserInfo.getUserId()];
            accountId = [SELECT id, Name FROM account WHERE id = :Useracc.accountid].id;
      User Useracc = [
        SELECT accountid, UserPro_Type__c
        FROM user
        WHERE id = :UserInfo.getUserId()
      ];
      accountId = [SELECT id, Name FROM account WHERE id = :Useracc.accountid]
      .id;
            agencyProType = Useracc.UserPro_Type__c;
            if (String.isBlank(Useracc.UserPro_Type__c)) {
                agencyProType = 'ET';
@@ -73,7 +82,9 @@
                    id IN (
                        SELECT Hospital__c
                        FROM Agency_Hospital_Link__c
                        WHERE Agency__c = :accountId AND Hosptial_Type__c LIKE :agencyProTypestr
            WHERE
              Agency__c = :accountId
              AND Hosptial_Type__c LIKE :agencyProTypestr
                    )
            ];
            totalCount = allSelectAccount.size();
@@ -99,17 +110,23 @@
                    id IN (
                        SELECT Hospital__c
                        FROM Agency_Hospital_Link__c
                        WHERE Agency__c = :accountId AND Hosptial_Type__c LIKE :agencyProTypestr
            WHERE
              Agency__c = :accountId
              AND Hosptial_Type__c LIKE :agencyProTypestr
                    )
                LIMIT :pageSize
            ];
            System.debug('selectAccList = ' + selectAccList);
            PaginatedAccounts paginatedAccounts = new PaginatedAccounts();
            paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount) ? pageToken + pageSize : null;
      paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount)
        ? pageToken + pageSize
        : null;
            paginatedAccounts.recordStart = pageToken + 1;
            paginatedAccounts.pageNumber = pageToken / pageSize + 1;
            Integer recordEnd = pageSize * paginatedAccounts.pageNumber;
            paginatedAccounts.recordEnd = totalCount >= recordEnd ? recordEnd : totalCount;
      paginatedAccounts.recordEnd = totalCount >= recordEnd
        ? recordEnd
        : totalCount;
            paginatedAccounts.totalRecords = totalCount;
            //销量前十的客户
@@ -148,29 +165,77 @@
            System.debug('fiscalYear = ' + fiscalYear);
            if (fiscalYear == 'thisYear') {
                AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(thisDatetime, nextDatetime);
                topInfo.saleAmount = Decimal.valueOf(String.valueOf(saleAmountList[0].get('saleAmount')));
        AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(
          thisDatetime,
          nextDatetime
        );
        topInfo.saleAmount = Decimal.valueOf(
          String.valueOf(saleAmountList[0].get('saleAmount'))
        );
                System.debug('topInfo.saleAmount = ' + topInfo.saleAmount);
                arList = LexConsumableAccountSOQL.getAccountBySales(thisDatetime, nextDatetime);
        arList = LexConsumableAccountSOQL.getAccountBySales(
          thisDatetime,
          nextDatetime
        );
            } else if (fiscalYear == 'lastYear') {
                AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(lastDatetime, thisDatetime2);
                topInfo.saleAmount = Decimal.valueOf(String.valueOf(saleAmountList[0].get('saleAmount')));
        AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(
          lastDatetime,
          thisDatetime2
        );
        topInfo.saleAmount = Decimal.valueOf(
          String.valueOf(saleAmountList[0].get('saleAmount'))
        );
                System.debug('topInfo.saleAmount = ' + topInfo.saleAmount);
                arList = LexConsumableAccountSOQL.getAccountBySales(lastDatetime, thisDatetime2);
        arList = LexConsumableAccountSOQL.getAccountBySales(
          lastDatetime,
          thisDatetime2
        );
            } else {
                AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(lastDatetime, nextDatetime);
                topInfo.saleAmount = Decimal.valueOf(String.valueOf(saleAmountList[0].get('saleAmount')));
        AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(
          lastDatetime,
          nextDatetime
        );
        topInfo.saleAmount = Decimal.valueOf(
          String.valueOf(saleAmountList[0].get('saleAmount'))
        );
                System.debug('topInfo.saleAmount = ' + topInfo.saleAmount);
                arList = LexConsumableAccountSOQL.getAccountBySales(lastDatetime, nextDatetime);
        arList = LexConsumableAccountSOQL.getAccountBySales(
          lastDatetime,
          nextDatetime
        );
            }
      // Map<String,Decimal> mapTemp = new Map<String,Decimal>();
      // for (AggregateResult ar : arList) {
      //     if(!mapTemp.get(String.valueOf(ar.get('hospitalName')))){
      //         mapTemp.put(String.valueOf(ar.get('hospitalName'),Decimal.valueOf(String.valueOf(ar.get('thisAmount')))));
      //     }else {
      //         Decimal decimal = mapTemp.get(String.valueOf(ar.get('hospitalName')));
      //         decimal += Decimal.valueOf(String.valueOf(ar.get('thisAmount')));
      //         mapTemp.put(String.valueOf(ar.get('hospitalName'),decimal));
      //     }
      // }
      // System.debug('mapTemp = ' + mapTemp);
      // //排序Decimal从大到小
      // List<Decimal> decimalList = new List<Decimal>(mapTemp.values());
      // decimalList.sort((a, b) => b.compareTo(a));
      // Map<String, Decimal> sortedMap = new Map<String, Decimal>();
      // for (String key : mapTemp.keySet()) {
      //     sortedMap.put(key, mapTemp.get(key));
      // }
      // System.debug('Sorted Map: ' + sortedMap);
            //查询客户信息(名称,省,县)
      System.debug('arList = ' + arList);
            List<String> accountList = new List<String>();
            for (AggregateResult ar : arList) {
                System.debug('thisAmount = ' + String.valueOf(ar.get('thisAmount')));
                if(String.valueOf(ar.get('thisAmount')) != '0.0'){
                    accountList.add(String.valueOf(ar.get('hospitalName')));
                    topInfo.deList.add(Decimal.valueOf(String.valueOf(ar.get('thisAmount'))));
          accountList.add(String.valueOf(ar.get('Order_ForHospital__c')));
          topInfo.deList.add(
            Decimal.valueOf(String.valueOf(ar.get('thisAmount')))
          );
                }
            }
@@ -194,14 +259,14 @@
                    Town__c,
                    Phone
                FROM Account
                WHERE Name = :accountList
        WHERE Id = :accountList
            ];
            List<Account> acListTemp = new List<Account>();
            for (String s : accountList) {
                for (Account a : acList) {
                    if (s == a.Name) {
          if (s == a.id) {
                        acListTemp.add(a);
                    }
                }
@@ -220,7 +285,12 @@
            res.msg = '';
            return res;
        } catch (Exception e) {
            return new ResponseBodyLWC('Error', 500, e.getMessage() + e.getLineNumber(), '');
      return new ResponseBodyLWC(
        'Error',
        500,
        e.getMessage() + e.getLineNumber(),
        ''
      );
        }
    }
@@ -248,36 +318,61 @@
            System.debug('lastYear = ' + lastYear);
            if (fiscalYear == 'thisYear') {
                AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(thisDatetime, nextDatetime);
        AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(
          thisDatetime,
          nextDatetime
        );
                if(saleAmountList[0].get('saleAmount') != null){
                    topInfo.saleAmount = Decimal.valueOf(String.valueOf(saleAmountList[0].get('saleAmount')));
          topInfo.saleAmount = Decimal.valueOf(
            String.valueOf(saleAmountList[0].get('saleAmount'))
          );
                    System.debug('topInfo.saleAmount = ' + topInfo.saleAmount);
                }
                arList = LexConsumableAccountSOQL.getAccountBySales(thisDatetime, nextDatetime);
        arList = LexConsumableAccountSOQL.getAccountBySales(
          thisDatetime,
          nextDatetime
        );
            } else if (fiscalYear == 'lastYear') {
                AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(lastDatetime, thisDatetime2);
        AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(
          lastDatetime,
          thisDatetime2
        );
                if(saleAmountList[0].get('saleAmount') != null){
                    topInfo.saleAmount = Decimal.valueOf(String.valueOf(saleAmountList[0].get('saleAmount')));
          topInfo.saleAmount = Decimal.valueOf(
            String.valueOf(saleAmountList[0].get('saleAmount'))
          );
                    System.debug('topInfo.saleAmount = ' + topInfo.saleAmount);
                }
                arList = LexConsumableAccountSOQL.getAccountBySales(lastDatetime, thisDatetime2);
        arList = LexConsumableAccountSOQL.getAccountBySales(
          lastDatetime,
          thisDatetime2
        );
            } else {
                AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(lastDatetime, nextDatetime);
        AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(
          lastDatetime,
          nextDatetime
        );
                if(saleAmountList[0].get('saleAmount') != null){
                    topInfo.saleAmount = Decimal.valueOf(String.valueOf(saleAmountList[0].get('saleAmount')));
          topInfo.saleAmount = Decimal.valueOf(
            String.valueOf(saleAmountList[0].get('saleAmount'))
          );
                    System.debug('topInfo.saleAmount = ' + topInfo.saleAmount);
                }
                arList = LexConsumableAccountSOQL.getAccountBySales(lastDatetime, nextDatetime);
        arList = LexConsumableAccountSOQL.getAccountBySales(
          lastDatetime,
          nextDatetime
        );
            }
            //查询客户信息(名称,省,县)
            List<String> accountList = new List<String>();
            for (AggregateResult ar : arList) {
                System.debug('thisAmount = ' + String.valueOf(ar.get('thisAmount')));
                if(String.valueOf(ar.get('thisAmount')) != '0.0'){
                    accountList.add(String.valueOf(ar.get('hospitalName')));
                    topInfo.deList.add(Decimal.valueOf(String.valueOf(ar.get('thisAmount'))));
          accountList.add(String.valueOf(ar.get('Order_ForHospital__c')));
          topInfo.deList.add(
            Decimal.valueOf(String.valueOf(ar.get('thisAmount')))
          );
                }
            }
            System.debug('accountList = ' + accountList);
            System.debug('topInfo = ' + topInfo);
@@ -298,12 +393,12 @@
                    Town__c,
                    Phone
                FROM Account
                WHERE Name = :accountList
        WHERE Id = :accountList
            ];
            List<Account> acListTemp = new List<Account>();
            for (String s : accountList) {
                for (Account a : acList) {
                    if (s == a.Name) {
          if (s == a.id) {
                        acListTemp.add(a);
                    }
                }
@@ -315,7 +410,12 @@
            res.msg = '';
            return res;
        } catch (Exception e) {
            return new ResponseBodyLWC('Error', 500, e.getMessage() + e.getLineNumber(), '');
      return new ResponseBodyLWC(
        'Error',
        500,
        e.getMessage() + e.getLineNumber(),
        ''
      );
        }
    }
@@ -347,8 +447,11 @@
            List<Account> allSelectAccount = Database.query(soql);
            totalCount = allSelectAccount.size();
      String nullFL = sortOrder.toLowerCase() == 'asc'
        ? 'NULLS FIRST'
        : 'NULLS LAST';
            if (String.isNotBlank(sortField)) {
                soql += ' order by ' + sortField + ' ' + sortOrder;
        soql += ' order by ' + sortField + ' ' + sortOrder + ' ' + nullFL;
            }
            soql += ' limit ' + pagesize + ' offset ' + pageToken;
            System.debug('soql2+++++++ ' + soql);
@@ -356,11 +459,15 @@
            System.debug('selectAccList = ' + selectAccList);
            PaginatedAccounts paginatedAccounts = new PaginatedAccounts();
            paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount) ? pageToken + pageSize : null;
      paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount)
        ? pageToken + pageSize
        : null;
            paginatedAccounts.recordStart = pageToken + 1;
            paginatedAccounts.pageNumber = pageToken / pageSize + 1;
            Integer recordEnd = pageSize * paginatedAccounts.pageNumber;
            paginatedAccounts.recordEnd = totalCount >= recordEnd ? recordEnd : totalCount;
      paginatedAccounts.recordEnd = totalCount >= recordEnd
        ? recordEnd
        : totalCount;
            paginatedAccounts.totalRecords = totalCount;
            data.put('pageRecords', selectAccList);
@@ -370,14 +477,26 @@
            res.msg = '';
            return res;
        } catch (Exception e) {
            return new ResponseBodyLWC('Error', 500, e.getMessage() + ' ' + e.getLineNumber(), '');
      return new ResponseBodyLWC(
        'Error',
        500,
        e.getMessage() + ' ' + e.getLineNumber(),
        ''
      );
        }
    }
    //sql文作成
    private static String makeSoql(String viewName, String accountId) {
        Date st = Date.today().addDays(-7).toStartOfWeek();
        lastweekstart = Datetime.newInstance(st.year(), st.month(), st.day(), 8, 0, 0);
    lastweekstart = Datetime.newInstance(
      st.year(),
      st.month(),
      st.day(),
      8,
      0,
      0
    );
        lastweekend = lastweekstart.addDays(7);
        String soql = 'SELECT id,Name,State_Master__c,Salesdepartment_HP__c,CreatedDate,Is_Active__c,RecordType.Name,State_Master__r.Name,City_Master__r.Name';
        soql += ' ,Grade__c,OCM_Category__c,City_Master__c,Town__c,Phone FROM Account';