From 41ad0c0840a6135b7acf2280f0eebdc29bf6479b Mon Sep 17 00:00:00 2001
From: buli <137736985@qq.com>
Date: 星期二, 30 五月 2023 14:25:11 +0800
Subject: [PATCH] backup0530

---
 force-app/main/default/classes/LexConsumableAccountController.cls |  271 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 266 insertions(+), 5 deletions(-)

diff --git a/force-app/main/default/classes/LexConsumableAccountController.cls b/force-app/main/default/classes/LexConsumableAccountController.cls
index b966c13..8d03987 100644
--- a/force-app/main/default/classes/LexConsumableAccountController.cls
+++ b/force-app/main/default/classes/LexConsumableAccountController.cls
@@ -34,7 +34,7 @@
 
     //鍒濆鍖�
     @AuraEnabled
-    public static ResponseBodyLWC init(Integer pageSizeLWC, Integer pageTokenLWC) {
+    public static ResponseBodyLWC init(Integer pageSizeLWC, Integer pageTokenLWC, String fiscalYear) {
         try {
             ResponseBodyLWC res = new ResponseBodyLWC();
             Map<String, object> data = new Map<String, object>();
@@ -113,6 +113,112 @@
             paginatedAccounts.totalRecords = totalCount;
 
             //閿�閲忓墠鍗佺殑瀹㈡埛
+            // List<Account> acList = [
+            //     SELECT
+            //         id,
+            //         Name,
+            //         State_Master__c,
+            //         State_Master__r.Name,
+            //         Salesdepartment_HP__c,
+            //         CreatedDate,
+            //         Is_Active__c,
+            //         RecordType.Name,
+            //         Grade__c,
+            //         OCM_Category__c,
+            //         City_Master__c,
+            //         City_Master__r.Name,
+            //         Town__c,
+            //         Phone
+            //     FROM Account
+            //     WHERE State_Master__r.Name != '' AND City_Master__r.Name != '' AND Is_Active__c = '鏈夊姽' AND RecordType.Name = '鐥呴櫌'
+            //     LIMIT 10
+            // ];
+            TopInfo topInfo = new TopInfo();
+
+            Date today = Date.today();
+            Integer lastYear = today.year() - 1;
+            Integer thisYear = today.year();
+            Integer nextYear = today.year() + 1;
+            Date lastDatetime = Date.newInstance(lastYear, 4, 1);
+            Date thisDatetime = Date.newInstance(thisYear, 4, 1);
+            Date thisDatetime2 = Date.newInstance(thisYear, 4, 1);
+            Date nextDatetime = Date.newInstance(nextYear, 4, 1);
+
+            AggregateResult[] arList = null;
+
+            System.debug('fiscalYear = ' + fiscalYear);
+            if (fiscalYear == 'thisYear') {
+                AggregateResult[] saleAmountList = [
+                    SELECT sum(Sale_amount__c) saleAmount
+                    FROM Consumable_Orderdetails__c
+                    WHERE CreatedDate >= :thisDatetime AND CreatedDate < :nextDatetime
+                ];
+                topInfo.saleAmount = Decimal.valueOf(String.valueOf(saleAmountList[0].get('saleAmount')));
+                System.debug('topInfo.saleAmount = ' + topInfo.saleAmount);
+                arList = [
+                    SELECT count(id), Consumable_order__r.Order_ForHospital__r.name hospitalName, sum(Sale_amount__c) thisAmount
+                    FROM Consumable_Orderdetails__c
+                    WHERE
+                        CreatedDate >= :thisDatetime
+                        AND CreatedDate < :nextDatetime
+                        AND Consumable_order__r.Order_ForHospital__r.name != ''
+                    GROUP BY Consumable_order__r.Order_ForHospital__r.Name
+                    ORDER BY sum(Sale_amount__c) DESC
+                    LIMIT 10
+                ];
+            } else if (fiscalYear == 'lastYear') {
+                AggregateResult[] saleAmountList = [
+                    SELECT sum(Sale_amount__c) saleAmount
+                    FROM Consumable_Orderdetails__c
+                    WHERE CreatedDate >= :lastDatetime AND CreatedDate < :thisDatetime2
+                ];
+                topInfo.saleAmount = Decimal.valueOf(String.valueOf(saleAmountList[0].get('saleAmount')));
+                System.debug('topInfo.saleAmount = ' + topInfo.saleAmount);
+                arList = [
+                    SELECT count(id), Consumable_order__r.Order_ForHospital__r.name hospitalName, sum(Sale_amount__c) thisAmount
+                    FROM Consumable_Orderdetails__c
+                    WHERE
+                        CreatedDate >= :lastDatetime
+                        AND CreatedDate < :thisDatetime2
+                        AND Consumable_order__r.Order_ForHospital__r.name != ''
+                    GROUP BY Consumable_order__r.Order_ForHospital__r.Name
+                    ORDER BY sum(Sale_amount__c) DESC
+                    LIMIT 10
+                ];
+            } else {
+                AggregateResult[] saleAmountList = [
+                    SELECT sum(Sale_amount__c) saleAmount
+                    FROM Consumable_Orderdetails__c
+                    WHERE CreatedDate >= :lastDatetime AND CreatedDate < :nextDatetime
+                ];
+                topInfo.saleAmount = Decimal.valueOf(String.valueOf(saleAmountList[0].get('saleAmount')));
+                System.debug('topInfo.saleAmount = ' + topInfo.saleAmount);
+                arList = [
+                    SELECT count(id), Consumable_order__r.Order_ForHospital__r.name hospitalName, sum(Sale_amount__c) thisAmount
+                    FROM Consumable_Orderdetails__c
+                    WHERE
+                        CreatedDate >= :lastDatetime
+                        AND CreatedDate < :nextDatetime
+                        AND Consumable_order__r.Order_ForHospital__r.name != ''
+                    GROUP BY Consumable_order__r.Order_ForHospital__r.Name
+                    ORDER BY sum(Sale_amount__c) DESC
+                    LIMIT 10
+                ];
+            }
+
+            //鏌ヨ瀹㈡埛淇℃伅锛堝悕绉帮紝鐪侊紝鍘匡級
+            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'))));  
+                }
+            }
+
+            System.debug('accountList = ' + accountList);
+            System.debug('topInfo = ' + topInfo);
+
             List<Account> acList = [
                 SELECT
                     id,
@@ -130,10 +236,22 @@
                     Town__c,
                     Phone
                 FROM Account
-                WHERE State_Master__r.Name != '' AND City_Master__r.Name != '' AND Is_Active__c = '鏈夊姽' AND RecordType.Name = '鐥呴櫌'
-                LIMIT 10
+                WHERE Name = :accountList
             ];
-            data.put('acList', acList);
+
+            List<Account> acListTemp = new List<Account>();
+
+            for (String s : accountList) {
+                for (Account a : acList) {
+                    if (s == a.Name) {
+                        acListTemp.add(a);
+                    }
+                }
+            }
+
+            topInfo.acList = acListTemp;
+
+            data.put('topInfo', topInfo);
             data.put('pageRecords', selectAccList);
             data.put('paginatedAccounts', paginatedAccounts);
             data.put('accountId', accountId);
@@ -144,7 +262,135 @@
             res.msg = '';
             return res;
         } catch (Exception e) {
-            return new ResponseBodyLWC('Error', 500, e.getMessage(), '');
+            return new ResponseBodyLWC('Error', 500, e.getMessage() + e.getLineNumber(), '');
+        }
+    }
+
+    @AuraEnabled
+    public static ResponseBodyLWC changeFiscalYearView(String fiscalYear) {
+        ResponseBodyLWC res = new ResponseBodyLWC();
+        Map<String, object> data = new Map<String, object>();
+        res.entity = data;
+        try {
+            TopInfo topInfo = new TopInfo();
+
+            Date today = Date.today();
+            Integer lastYear = today.year() - 1;
+            Integer thisYear = today.year();
+            Integer nextYear = today.year() + 1;
+            Date lastDatetime = Date.newInstance(lastYear, 4, 1);
+            Date thisDatetime = Date.newInstance(thisYear, 4, 1);
+            Date thisDatetime2 = Date.newInstance(thisYear, 4, 1);
+            Date nextDatetime = Date.newInstance(nextYear, 4, 1);
+
+            AggregateResult[] arList = null;
+
+            System.debug('fiscalYear = ' + fiscalYear);
+            if (fiscalYear == 'thisYear') {
+                AggregateResult[] saleAmountList = [
+                    SELECT sum(Sale_amount__c) saleAmount
+                    FROM Consumable_Orderdetails__c
+                    WHERE CreatedDate >= :thisDatetime AND CreatedDate < :nextDatetime
+                ];
+                topInfo.saleAmount = Decimal.valueOf(String.valueOf(saleAmountList[0].get('saleAmount')));
+                System.debug('topInfo.saleAmount = ' + topInfo.saleAmount);
+                arList = [
+                    SELECT count(id), Consumable_order__r.Order_ForHospital__r.name hospitalName, sum(Sale_amount__c) thisAmount
+                    FROM Consumable_Orderdetails__c
+                    WHERE
+                        CreatedDate >= :thisDatetime
+                        AND CreatedDate < :nextDatetime
+                        AND Consumable_order__r.Order_ForHospital__r.name != ''
+                    GROUP BY Consumable_order__r.Order_ForHospital__r.Name
+                    ORDER BY sum(Sale_amount__c) DESC
+                    LIMIT 10
+                ];
+            } else if (fiscalYear == 'lastYear') {
+                AggregateResult[] saleAmountList = [
+                    SELECT sum(Sale_amount__c) saleAmount
+                    FROM Consumable_Orderdetails__c
+                    WHERE CreatedDate >= :lastDatetime AND CreatedDate < :thisDatetime2
+                ];
+                topInfo.saleAmount = Decimal.valueOf(String.valueOf(saleAmountList[0].get('saleAmount')));
+                System.debug('topInfo.saleAmount = ' + topInfo.saleAmount);
+                arList = [
+                    SELECT count(id), Consumable_order__r.Order_ForHospital__r.name hospitalName, sum(Sale_amount__c) thisAmount
+                    FROM Consumable_Orderdetails__c
+                    WHERE
+                        CreatedDate >= :lastDatetime
+                        AND CreatedDate < :thisDatetime2
+                        AND Consumable_order__r.Order_ForHospital__r.name != ''
+                    GROUP BY Consumable_order__r.Order_ForHospital__r.Name
+                    ORDER BY sum(Sale_amount__c) DESC
+                    LIMIT 10
+                ];
+            } else {
+                AggregateResult[] saleAmountList = [
+                    SELECT sum(Sale_amount__c) saleAmount
+                    FROM Consumable_Orderdetails__c
+                    WHERE CreatedDate >= :lastDatetime AND CreatedDate < :nextDatetime
+                ];
+                topInfo.saleAmount = Decimal.valueOf(String.valueOf(saleAmountList[0].get('saleAmount')));
+                System.debug('topInfo.saleAmount = ' + topInfo.saleAmount);
+                arList = [
+                    SELECT count(id), Consumable_order__r.Order_ForHospital__r.name hospitalName, sum(Sale_amount__c) thisAmount
+                    FROM Consumable_Orderdetails__c
+                    WHERE
+                        CreatedDate >= :lastDatetime
+                        AND CreatedDate < :nextDatetime
+                        AND Consumable_order__r.Order_ForHospital__r.name != ''
+                    GROUP BY Consumable_order__r.Order_ForHospital__r.Name
+                    ORDER BY sum(Sale_amount__c) DESC
+                    LIMIT 10
+                ];
+            }
+            //鏌ヨ瀹㈡埛淇℃伅锛堝悕绉帮紝鐪侊紝鍘匡級
+            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'))));
+                }
+                
+            }
+            System.debug('accountList = ' + accountList);
+            System.debug('topInfo = ' + topInfo);
+            List<Account> acList = [
+                SELECT
+                    id,
+                    Name,
+                    State_Master__c,
+                    State_Master__r.Name,
+                    Salesdepartment_HP__c,
+                    CreatedDate,
+                    Is_Active__c,
+                    RecordType.Name,
+                    Grade__c,
+                    OCM_Category__c,
+                    City_Master__c,
+                    City_Master__r.Name,
+                    Town__c,
+                    Phone
+                FROM Account
+                WHERE Name = :accountList
+            ];
+            List<Account> acListTemp = new List<Account>();
+            for (String s : accountList) {
+                for (Account a : acList) {
+                    if (s == a.Name) {
+                        acListTemp.add(a);
+                    }
+                }
+            }
+            topInfo.acList = acListTemp;
+            data.put('topInfo', topInfo);
+            res.status = 'Success';
+            res.code = 200;
+            res.msg = '';
+            return res;
+        } catch (Exception e) {
+            return new ResponseBodyLWC('Error', 500, e.getMessage() + e.getLineNumber(), '');
         }
     }
 
@@ -242,4 +488,19 @@
         @AuraEnabled
         public Integer recordEnd { get; set; }
     }
+
+    //top10 Account
+    public class TopInfo {
+        @AuraEnabled
+        public Decimal saleAmount { get; set; }
+        @AuraEnabled
+        public List<Account> acList { get; set; }
+        @AuraEnabled
+        public List<Decimal> deList { get; set; }
+
+        public TopInfo() {
+            acList = new List<Account>();
+            deList = new List<Decimal>();
+        }
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.1