public with sharing class LexConInvoiceList { public static Consumable_order__c coc { get; set; } public static String agencyProType { get; set; } public static String category1 { get; set; } public static String category2 { get; set; } //发票开始、结束日期 private static Date cate1 { get; set; } private static Date cate2 { get; set; } // 登录用户 ID private static String userinfoId { get; set; } private static String invoiceStatus { get; set; } //经销商id private static String accountid { get; set; } // 画面显示数据 public static List raesList { get; private set; } //排序使用 private static String[] orderby = new List{ 'Invoice_Date__c', 'Name', 'ShipmentAccount__c' }; public static String sortKey { get; set; } public static String preSortKey { get; private set; } public static Boolean sortOrderAsc { get; private set; } public static String[] sortOrder { get; private set; } // 登录者工作地 private static String userWorkLocation { get; set; } public static Map statusMap { get; set; } @AuraEnabled public static ResponseBodyLWC init() { ResponseBodyLWC res = new ResponseBodyLWC(); Map data = new Map(); res.entity = data; statusMap = new Map(); raesList = new List(); coc = new Consumable_order__c(); cate1 = coc.Order_date__c; cate2 = coc.Deliver_date__c; userinfoId = UserInfo.getUserId(); List Useracc = new List(); Useracc = [SELECT accountid, Work_Location__c, UserPro_Type__c FROM user WHERE id = :userinfoId]; accountid = Useracc[0].accountid; userWorkLocation = Useracc[0].Work_Location__c; agencyProType = Useracc[0].UserPro_Type__c; if (String.isBlank(Useracc[0].UserPro_Type__c)) { agencyProType = 'ET'; } invoiceStatus = coc.Invoice_status__c; String soql = makeSoql(category1, category2, invoiceStatus); raesList = Database.query(soql); statusMap = getPicklistValues('Consumable_order__c', 'Invoice_status__c'); data.put('userinfoId', userinfoId); data.put('accountid', accountid); data.put('userWorkLocation', userWorkLocation); data.put('agencyProType', agencyProType); data.put('raesList', raesList); data.put('statusMap', statusMap); res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; } // 发票单检索 @AuraEnabled public static ResponseBodyLWC invoiceCodeSearch( Date orderDateLwc, Date deliverDateLwc, String invoiceStatusLwc, String category1Lwc, String category2Lwc, String accountidLwc, String userWorkLocationLwc, String agencyProTypeLwc ) { ResponseBodyLWC res = new ResponseBodyLWC(); Map data = new Map(); res.entity = data; cate1 = orderDateLwc; cate2 = deliverDateLwc; invoiceStatus = invoiceStatusLwc; category1 = category1Lwc; category2 = category2Lwc; accountid = accountidLwc; userWorkLocation = userWorkLocationLwc; agencyProType = agencyProTypeLwc; // 获得发票一览 raesList = new List(); String soql = makeSoql(category1, category2, invoiceStatus); raesList = Database.query(soql); // if(raesList.size()>0){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '共检索到' + raesList.size() + '个发票')); // }else{ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '没有搜索到相关发票。')); // } data.put('raesList', raesList); data.put('raesListSize', raesList.size()); res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; } // 做成检索SQL文 private static String makeSoql(String invoiceCode, String accountName, String invoiceStatus) { String soql = 'SELECT Id, Name,Invoice_Date__c,ShipmentAccount__c,Shipment_total_amount__c,RrturnPro_total_amount__c,Invoice_status__c, '; soql += ' InvoicedPro_total_amount__c,InvoiceNotPro_total_amount__c,Invoice_total_amount__c,Invoice_attachment__c,Invoicedet_attachment__c FROM Consumable_order__c '; soql += ' WHERE Dealer_Info__c = \'' + accountid + '\''; soql += ' AND Order_Owner_WorkLocal__c = \'' + userWorkLocation + '\' '; soql += ' and Order_ProType__c =\'' + agencyProType + '\' '; soql += ' AND recordtypeid = \'' + System.Label.RT_ConOrder_Invoice + '\''; if (cate1 != null) { soql += ' AND Invoice_Date__c >= :cate1 '; } if (cate2 != null) { soql += ' AND Invoice_Date__c <= :cate2 '; } if (!String.isBlank(invoiceCode)) { soql += ' AND Name like \'%' + String.escapeSingleQuotes(invoiceCode.replaceAll('%', '\\%')) + '%\' '; } if (!String.isBlank(accountName)) { soql += ' AND ShipmentAccount__c like \'%' + String.escapeSingleQuotes(accountName.replaceAll('%', '\\%')) + '%\' '; } if (!String.isBlank(invoiceStatus)) { soql += ' AND Invoice_status__c =\'' + invoiceStatus + '\' '; } System.debug('soql+++++' + soql); return soql; } /* 通过sObjectName和指定字段获取PickList的value值 */ public static Map getPicklistValues(String sObjectName, String sFieldName) { Map picValues = new Map(); picValues.put('-无-', ''); Map sObjectDescribeMap = Schema.getGlobalDescribe(); if (sObjectDescribeMap.containsKey(sObjectName)) { Map sObjectFieldsMap = sObjectDescribeMap.get(sObjectName).getDescribe().fields.getMap(); if (sObjectFieldsMap.containsKey(sFieldName)) { Schema.DescribeFieldResult sObjectFieldDescribe = sObjectFieldsMap.get(sFieldName).getDescribe(); List lPickEntryList = sObjectFieldDescribe.getPicklistValues(); //tPicklistEntry.isDefaultValue() for (Schema.PicklistEntry tPicklistEntry : lPickEntryList) { picValues.put(tPicklistEntry.getLabel(), tPicklistEntry.getValue()); } } else { //TODO 不存在此字段的执行 } } else { // TODO 不存在此sObject的执行 } return picValues; } }