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/LexOverdueStockController.cls |  380 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 380 insertions(+), 0 deletions(-)

diff --git a/force-app/main/default/classes/LexOverdueStockController.cls b/force-app/main/default/classes/LexOverdueStockController.cls
new file mode 100644
index 0000000..adbaaa7
--- /dev/null
+++ b/force-app/main/default/classes/LexOverdueStockController.cls
@@ -0,0 +1,380 @@
+public with sharing class LexOverdueStockController {
+
+    /*****************妞滅储鐢�******************/
+    public static String barcode { get; set; }
+
+    // 杩囨湡鍜岄攢瀛�,鐢婚潰鏄剧ず鐢�
+    public static List<orderBean> codPageRecords { get; set; }
+
+    // 杩囨湡鍜岄攢瀛�,鐢婚潰鏄剧ず鐢�
+    public static List<orderBean> overduePageRecords { get; set; }
+
+    // 鐧诲綍鑰呭伐浣滃湴
+    private static String userWorkLocation;
+    //缁忛攢鍟嗙敤鎴蜂骇鍝佸垎绫伙紙ET銆丒NG锛�
+    private static String agencyProType;
+    private static String sqlagencyProType;
+    // 缁忛攢鍟嗕俊鎭�
+    private static Account accountInfo;
+
+     //鍒ゆ柇鎿嶄綔浜哄憳鏄惁閿�瀛�
+    public static Boolean iSinventory = false;
+
+    public static List<Consumable_order_details2__c> overdueList = new List<Consumable_order_details2__c>();
+
+    public static Integer pageRecordsSize  {
+        get {
+            return codPageRecords == null ? 0 : codPageRecords.size();
+        }
+    }
+
+    public LexOverdueStockController() {
+
+    }
+
+    // 鐢婚潰鍒濆鍖�
+    @AuraEnabled
+    public static ResponseBodyLWC init() {
+        ResponseBodyLWC res = new ResponseBodyLWC();
+        Map<String, object> data = new Map<String, object>();
+        res.entity = data;
+
+        codPageRecords = new List<orderBean>();
+        overduePageRecords = new List<orderBean>();
+        // 鑾峰彇鐢ㄦ埛鍜岀粡閿�鍟嗕俊鎭�
+        user Useracc = [select Accountid, Work_Location__c,UserPro_Type__c from user where id =: UserInfo.getUserId()];
+        userWorkLocation = Useracc.Work_Location__c;
+        agencyProType = Useracc.UserPro_Type__c;
+        if(String.isBlank(Useracc.UserPro_Type__c)){
+            agencyProType = 'ET';
+        }
+        sqlagencyProType = '%' + agencyProType + '%';
+        accountInfo = [SELECT id,Name,Dealer_discount__c FROM account WHERE id =:Useracc.accountid];
+        // 杩囨湡搴撳瓨姹囨�讳俊鎭�
+        List<AggregateResult>  orderDetZaiku = [SELECT count(Id) countsum,
+                        Consumable_Product__c prodid,
+                        Consumable_Product__r.Name_Text__c prodname,
+                        Box_Piece__c boxPiece
+                        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 Isoverdue__c = 0
+                        AND Dealer_Returned__c = false
+                        AND Cancellation_Flag__c = false
+                        AND Bar_Code__c !=null
+                        AND Product_Type__c like : sqlagencyProType
+                        AND Dealer_Info_text__c = :accountInfo.Name
+                        AND Arrive_Owner_Work_Location__c = :userWorkLocation
+                        group by Consumable_Product__c,Box_Piece__c,Consumable_Product__r.Name_Text__c];
+
+        for(AggregateResult overdue : orderDetZaiku){
+            codPageRecords.add(new orderBean(overdue));
+        }
+
+        system.debug('codPageRecords====>'+codPageRecords);
+        data.put('codPageRecords',JSON.serialize(codPageRecords));
+        data.put('userWorkLocation',userWorkLocation);
+        data.put('accountName',accountInfo.Name);
+        data.put('agencyProType',agencyProType);
+        data.put('orderDetZaiku',JSON.serialize(orderDetZaiku));
+        res.status = 'Success';
+        res.code = 200;
+        System.debug('res = ' + res);
+        return res;
+
+    }
+
+    // BarCode褰曞叆
+    @AuraEnabled
+    public static ResponseBodyLWC searchorderBean(String agencyProTypeLWC,String userWorkLocationLWC,String accountNameLWC,String barcodeLWC,String codPageRecordsLWC){
+        ResponseBodyLWC res = new ResponseBodyLWC();
+        Map<String, object> data = new Map<String, object>();
+        res.entity = data;
+        List<orderBean> codPageRecords = (List<orderBean>)JSON.deserialize(codPageRecordsLWC,List<orderBean>.class);
+        sqlagencyProType = '%' + agencyProTypeLWC + '%';
+        system.debug('sqlagencyProType==>'+ sqlagencyProType);
+        barcode = barcodeLWC;
+        system.debug('barcode==>'+ barcode);
+        userWorkLocation = userWorkLocationLWC;
+        // add by Wang Xueqin 2023/04/12
+        // 鑾峰彇鐢ㄦ埛鍜岀粡閿�鍟嗕俊鎭�
+        user Useracc = [select Accountid, Work_Location__c,UserPro_Type__c from user where id =: UserInfo.getUserId()];
+        accountInfo = [SELECT id,Name,Dealer_discount__c FROM account WHERE id =:Useracc.accountid];
+  
+       
+        iSinventory = true;
+        Set<String> barCodeoverdue = new Set<String>();
+        overduePageRecords = new List<orderBean>();
+        List<String> barCodeListP = ParseBarCode( barcode );
+        // 椤甸潰鏄剧ず鏁版嵁鍒濆鍖�
+        for (orderBean codPage : codPageRecords) {
+            codPage.pandian = 0;
+        }
+        // 鏌ヨ鎵�鏈夎繃鏈熷簱瀛�
+        List<Consumable_order_details2__c>  orderDetZaiku = [select Id,  Name,Consumable_Product__c,
+                            Bar_Code__c,Consumable_Product__r.Name__c,Dealer_Info_text__c,
+                            Asset_Model_No__c,Isoverdue__c,Box_Piece__c,Sterilization_limit__c,
+                            Bar_Code_search__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 Isoverdue__c = 0
+                        AND Dealer_Returned__c = false
+                        AND Cancellation_Flag__c = false
+                        AND Bar_Code__c !=null
+                        AND Product_Type__c like : sqlagencyProType
+                        AND Dealer_Info_text__c = :accountInfo.Name
+                        AND Arrive_Owner_Work_Location__c = :userWorkLocation];
+        // 娌℃湁杈撳叆鏉$爜鏃讹紝寰幆椤甸潰锛屾墍鏈夋墦閽╀骇鍝佸叏閮ㄩ攢瀛�
+        // 鍙栧緱鎵�鏈�
+        overdueList = new List<Consumable_order_details2__c>();
+        if (String.isBlank(barcode)) {
+            System.debug('barcode绌�');
+            for(orderBean codPage : codPageRecords){
+                if (codPage.check) {
+                    for(Consumable_order_details2__c cod2 : orderDetZaiku){
+                        if(cod2.Consumable_Product__c == codPage.prodid && codPage.boxPiece == cod2.Box_Piece__c){
+                            overduePageRecords.add(new orderBean(cod2,'杩囨湡搴撳瓨閿�瀛�'));
+                            overdueList.add(cod2);
+                        }
+                    }
+                    codPage.pandian = codPage.overlimitCount;
+                }
+            }
+            // return;
+            System.debug('overduePageRecords = ' + overduePageRecords);
+        data.put('overduePageRecords',JSON.serialize(overduePageRecords));
+        data.put('codPageRecords',JSON.serialize(codPageRecords));
+        data.put('iSinventory',iSinventory);
+        data.put('overdueList',overdueList);
+        res.status = 'Success';
+        res.code = 200;
+        // res.msg = '璇疯緭鍏arCode鍙�';
+        System.debug('res = ' + res);
+        return res;
+        }
+
+        // 杈撳叆barcode鏃�
+
+        // BarCode鐨勬绱�  鎵�鏈夊湪搴�
+        List<Consumable_order_details2__c> reSet = [select Id,Consumable_Product__c,
+                        Consumable_Product__r.Name__c,Box_Piece__c,Bar_Code_search__c,
+                        Dealer_Shipment__c,Dealer_Saled__c,Lose_Flag__c,Bar_Code__c,
+                        Cancellation_Flag__c,Isoverdue__c,Sterilization_limit__c
+                    from Consumable_order_details2__c
+                    where Bar_Code_search__c in :BarCodeListP
+                    AND Dealer_Arrive__c = true
+                    AND Cancellation_Flag__c = false
+                    and Dealer_Returned__c = false
+                    and Bar_Code__c !=null
+                    AND Product_Type__c like : sqlagencyProType
+                    AND Arrive_Owner_Work_Location__c =: userWorkLocation
+                    AND  Dealer_Info_text__c = :accountInfo.Name
+                    order by Name];
+                
+                    System.debug('reSet===>'+reSet);
+
+
+        for(Consumable_order_details2__c cod2 : reSet){
+            if ((cod2.Dealer_Shipment__c == false &&  cod2.Dealer_Saled__c == false
+                && cod2.Lose_Flag__c == false && cod2.Cancellation_Flag__c == false) &&  cod2.Isoverdue__c == 0) {
+                for (orderBean codPage : codPageRecords) {
+                    if(cod2.Consumable_Product__c == codPage.prodid && cod2.Box_Piece__c == codPage.boxPiece){
+                        overduePageRecords.add(new orderBean(cod2,'杩囨湡搴撳瓨閿�瀛�'));
+                        overdueList.add(cod2);
+                        codPage.pandian ++;
+                        codPage.check = true;
+                    }
+                }
+            }else if (cod2.Dealer_Shipment__c ||  cod2.Dealer_Saled__c) {
+                overduePageRecords.add(new orderBean(cod2,'浜у搧宸茬粡鍑哄簱'));
+            }else{
+                overduePageRecords.add(new orderBean(cod2,'涓嶆槸杩囨湡搴撳瓨'));
+            }
+        }
+        System.debug('overduePageRecords = ' + overduePageRecords);
+        data.put('overduePageRecords',JSON.serialize(overduePageRecords));
+        data.put('codPageRecords',JSON.serialize(codPageRecords));
+        data.put('iSinventory',iSinventory);
+        data.put('overdueList',overdueList);
+        res.status = 'Success';
+        res.code = 200;
+        System.debug('res = ' + res);
+        return res;
+    }
+
+
+    // 淇濆瓨鎸夐挳
+    @AuraEnabled
+    public static ResponseBodyLWC save(Boolean iSinventory,string saveCodPageRecords,List<Consumable_order_details2__c> saveoverdueList) {
+        ResponseBodyLWC res = new ResponseBodyLWC();
+        Map<String, object> data = new Map<String, object>();
+        res.entity = data;
+        system.debug('saveCodPageRecords=============>'+saveCodPageRecords);
+        system.debug('saveoverdueList'+saveoverdueList);
+        overdueList =  saveoverdueList;
+        // if(saveoverdueList==null){
+        //     return new ResponseBodyLWC('Error',500, '璇烽�夋嫨瑕侀攢瀛樼殑鏄庣粏', '');
+
+        // }
+
+        List<orderBean> codPageRecords = (List<orderBean>)JSON.deserialize(saveCodPageRecords,List<orderBean>.class);
+        // List<Consumable_order_details2__c> overdueList = (List<Consumable_order_details2__c>)JSON.deserialize(saveoverdueList,List<Consumable_order_details2__c>.class);
+         // add by Wang Xueqin 2023/04/12
+        // 鑾峰彇鐢ㄦ埛鍜岀粡閿�鍟嗕俊鎭�
+        user Useracc = [select Accountid, Work_Location__c,UserPro_Type__c from user where id =: UserInfo.getUserId()];
+        accountInfo = [SELECT id,Name,Dealer_discount__c FROM account WHERE id =:Useracc.accountid];
+
+        // 璺宠繃鏄庣粏2涓嶅繀瑕佹洿鏂�
+        StaticParameter.EscapeConsumableOrderDetail2Trigger = true;
+        if(!iSinventory){
+            // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'璇峰厛鐐广�怋arCode褰曞叆銆�'));
+            return new ResponseBodyLWC('Error',500, '璇峰厛褰曞叆BarCode', '');
+            // return null;
+        }
+        integer Lo = 0;
+        for(orderBean header : codPageRecords){
+            if(header.check==true){
+                Lo++;
+            }
+        }
+        if(Lo == 0){
+            iSinventory = false;
+            // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'璇烽�夋嫨瑕侀攢瀛樼殑鏄庣粏銆�'));
+            return new ResponseBodyLWC('Error',500, '璇烽�夋嫨瑕侀攢瀛樼殑鏄庣粏', '');
+            // return null;
+        }
+        Integer orderDetNo = 1;
+        Savepoint sp = Database.setSavepoint();
+        Consumable_order__c po = new Consumable_order__c();
+        po.Name ='*';
+        po.Order_status__c = '鎵瑰噯';
+        po.Inventory_date__c = Date.today();
+        po.Order_type__c = '閿�瀛�';
+        po.Dealer_Info__c = accountInfo.Id;
+        po.Order_ProType__c = agencyProType;
+        po.RecordTypeid = System.Label.RT_ConOrder_Overdue;
+        try{
+            insert  po;
+            Consumable_order__c order = [SELECT Name FROM Consumable_order__c WHERE id =:po.id];
+            List<Consumable_orderdetails__c> InsList = New List<Consumable_orderdetails__c>();
+            for(orderBean header : codPageRecords){
+                if(header.check==true){
+                    Consumable_orderdetails__c insPan = new Consumable_orderdetails__c();
+                    String str = string.valueOf(orderDetNo);
+                    if(str.length() == 1){
+                    str = '0' + str;
+                    }
+                    insPan.Name = order.Name + '-'+ str;
+                    insPan.Consumable_Product__c = header.prodId;
+                    insPan.Consumable_order__c = po.Id;
+                    insPan.Lose_reason__c = '杩囨湡搴撳瓨閿�瀛�';
+                    insPan.Overdue_count__c = header.pandian;
+                    insPan.Overdue_SUM__c = header.overlimitCount;
+                    insPan.RecordTypeId = System.Label.RT_ConOrderDetail1_Inventory;
+                    orderDetNo ++;
+                    InsList.add(insPan);
+                }
+            }
+            // 鐢熸垚鏄庣粏1
+            if(InsList.size()>0){
+                insert InsList;
+            }
+
+            for(Consumable_order_details2__c cod : overdueList){
+                cod.Consumable_Inventory_order__c = po.Id;
+                cod.Inventory_date__c = Date.today();
+                cod.Lose_reason__c = '杩囨湡搴撳瓨閿�瀛�';
+                cod.Lose_Flag__c = true;
+
+            }
+            if(overdueList.size()>0){
+                ControllerUtil.updateOrderDetailsSatus(overdueList);
+            }
+
+        }catch (Exception ex) {
+            Database.rollback(sp);
+            ApexPages.addMessages(ex);
+            return null;
+        }
+        // return new Pagereference('/' + po.Id);
+        data.put('Id',po.Id);
+        res.status = 'Success';
+        res.code = 200;
+        System.debug('res = ' + res);
+        return res;
+    }
+
+    // 灏嗛〉闈㈡垨鍙栧緱BarCode鍘绘帀閲嶅鐨勶紝杞崲鎴怢ist
+    public static List<String> ParseBarCode(String Code){
+        Map<String,Integer> barcodeCountMap = new Map<String,Integer>();
+        String[] Cache = new String[]{};
+        Cache = Code.split('\n');
+        List <String> Buff = new List<String>();
+        for(String A : Cache){
+            A = A.trim().toUpperCase();
+            if(barcodeCountMap.containsKey(A)){
+                barcodeCountMap.put(A,barcodeCountMap.get(A) + 1);
+            }else{
+                barcodeCountMap.put(A,1);
+            }
+            Buff.add(A + barcodeCountMap.get(A));
+        }
+        return Buff;
+    }
+
+     // Data Bean
+    class orderBean implements Comparable {
+        @AuraEnabled
+        public Consumable_order_details2__c orderdetails2 { get; set; }
+        @AuraEnabled
+        public Product2__c Prod { get; set; }
+        @AuraEnabled
+        public Boolean check { get; set; }
+        
+        // 杩囨湡搴撳瓨
+        @AuraEnabled
+        public Integer overlimitCount { get; set; }
+        // 閿�瀛樻暟閲�
+        @AuraEnabled
+        public Integer pandian { get; set; }
+        // 閿�瀛樺師鍥�
+        @AuraEnabled
+        public String diffReason { get; set; }
+        // 鍗曚綅
+        @AuraEnabled
+        public String boxPiece { get; set; }
+        @AuraEnabled
+        public String prodname { get; set; }
+        @AuraEnabled
+        public String prodid { get; set; }
+        orderBean(Consumable_order_details2__c e,string str) {
+            orderdetails2 = e;
+            Prod = e.Consumable_Product__r;
+            DiffReason = str;
+        }
+        public orderBean(AggregateResult e) {
+            check = false;
+            overlimitCount = Integer.valueOf(e.get('countsum'));
+            prodname = String.valueOf(e.get('prodname'));
+            prodid = String.valueOf(e.get('prodid'));
+            boxPiece = String.valueOf(e.get('BoxPiece'));
+            pandian = 0;
+        }
+        // 鎺掑簭
+        public Integer compareTo(Object compareTo) {
+            orderBean compareToesd =(orderBean)compareTo;
+            Integer returnValue = 0;
+            if (overlimitCount  > compareToesd.overlimitCount ) {
+                returnValue = -1;
+            } else if (overlimitCount  < compareToesd.overlimitCount ) {
+                returnValue = 1;
+            }
+            return returnValue;
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.1