public without sharing class LexArriveGoodsMainController {
  /*****************検索用******************/
  //经销商产品分类
  public static String agencyProType { get; set; }
  // public static Consumable_order__c coc { get; set; }
  public static String category1 { get; set; }
  private static String cate1ForSort = null;
  private static Date cate2ForSort = Date.today();
  private static Date cate2 = Date.today();
  private static String[] columus = new List<String>{ 'Product2__c.Name' };
  // 产品 ID
  private static String ESetId = '';
  private static String accountid = null;
  // 订单 字段标签
  public static List<String> title { get; private set; }
  // 订单 字段名
  public static List<String> column;
  public static List<List<String>> columns { get; private set; }
  // 画面显示数据
  public static List<Consumable_order__c> raesList { get; private set; }
  // 登录者工作地
  private static String userWorkLocation;
  // 20200904 ljh  汇总使用 start
  public static Integer Total_num { get; set; }
  public static Integer OrderNumber_arrived { get; set; }
  public static Integer Delivery_detail_count { get; set; }
  public static Integer OrderNumber_notarrive { get; set; }
  public static Integer More_than_seven_days { get; set; }

  @AuraEnabled
  public static Results init() {
    Results results = new Results();
    results.isNoteStay = LexUtility.getIsNoteStay();
    try {
      // coc = new Consumable_order__c();
      String userId = UserInfo.getUserId();
      List<user> Useracc = new List<user>();
      Useracc = [
        SELECT accountid, Work_Location__c, UserPro_Type__c
        FROM user
        WHERE id = :userId
      ];
      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';
      }
      // 获得订单一览
      Map<String, Schema.FieldSet> fsMap = Schema.getGlobalDescribe()
        .get('Consumable_order__c')
        .getDescribe()
        .fieldSets.getMap();
      Schema.FieldSet fs = fsMap.get('arrive_view');
      // 获得订单中的所有项目
      List<FieldSetMember> fsmList = fs.getFields();
      // 获得字段标签和字段名
      title = new List<String>();
      column = new List<String>();
      columns = new List<List<String>>();
      for (FieldSetMember fsm : fsmList) {
        title.add(fsm.getLabel());
        column.add(fsm.getFieldPath());
        columns.add(fsm.getFieldPath().split('\\.'));
      }
      // 获得显示数据
      raesList = new List<Consumable_order__c>();
      String soql = 'select Id';
      for (String s : column) {
        soql += ',' + s;
      }
      soql +=
        ' from Consumable_order__c where Order_type__c = \'' +
        '订单' +
        '\' and  recordtypeid =\'' +
        System.Label.RT_ConOrder_Delivery +
        '\' and Dealer_Info__c =\'' +
        accountid +
        '\' and Order_ProType__c =\'' +
        agencyProType +
        '\' and   (OrderNumber_notarrive__c > 0 or Delivery_detail_count__c >0) and Order_Owner_WorkLocal__c = \'' +
        userWorkLocation +
        '\' and showFalseNotshowTrue__c = false order by Deliver_date__c'; //
      // soql = 'select id,name,ContractNo__c,Total_num__c,OrderNumber_arrived__c,Delivery_detail_count__c,OrderNumber_notarrive__c,More_than_seven_days__c,Shipment_date__c,First_Delivery__c from Consumable_order__c where id in :idList';
      raesList = Database.query(soql);
      //20200904 ljh add start
      Total_num = 0;
      OrderNumber_arrived = 0;
      Delivery_detail_count = 0;
      OrderNumber_notarrive = 0;
      More_than_seven_days = 0;
      System.debug('-----1------' + raesList);
      for (Consumable_order__c conorder : raesList) {
        if (conorder.Total_num__c != null) {
          Total_num += (Integer) conorder.Total_num__c;
        }
        if (conorder.OrderNumber_arrived__c != null) {
          OrderNumber_arrived += (Integer) conorder.OrderNumber_arrived__c;
        }
        if (conorder.Delivery_detail_count__c != null) {
          Delivery_detail_count += (Integer) conorder.Delivery_detail_count__c;
        }
        if (conorder.OrderNumber_notarrive__c != null) {
          OrderNumber_notarrive += (Integer) conorder.OrderNumber_notarrive__c;
        }
        if (conorder.More_than_seven_days__c != null) {
          More_than_seven_days += (Integer) conorder.More_than_seven_days__c;
        }
      }
      results.agencyProType = agencyProType;
      results.accountId = accountid;
      results.title = title;
      results.raesList = raesList;
      results.userWorkLocation = userWorkLocation;
      results.totalNum = Total_num;
      results.orderNumberArrived = OrderNumber_arrived;
      results.deliveryDetailCount = Delivery_detail_count;
      results.orderNumberNotarrive = OrderNumber_notarrive;
      results.moreThanSevenDays = More_than_seven_days;
      results.result = 'Success';
    } catch (Exception e) {
      results.result = 'Fail';
      results.errorMsg = e.getLineNumber() + '---' + e.getMessage();
    }
    return results;
  }

  @AuraEnabled
  public static Results searchConsumableorderdetails(
    String category1Str,
    Date cate2Str,
    String accountidStr,
    String userWorkLocationStr,
    String agencyProTypeStr
  ) {
    Results results = new Results();
    category1 = category1Str;
    cate2 = cate2Str;
    accountid = accountidStr;
    userWorkLocation = userWorkLocationStr;
    agencyProType = agencyProTypeStr;
    try {
      // cate2 = coc.Shipment_date__c;
      // 获得订单一览
      Map<String, Schema.FieldSet> fsMap = Schema.getGlobalDescribe()
        .get('Consumable_order__c')
        .getDescribe()
        .fieldSets.getMap();
      Schema.FieldSet fs = fsMap.get('arrive_view');
      // 获得订单中的所有项目
      List<FieldSetMember> fsmList = fs.getFields();
      // 获得字段标签和字段名
      title = new List<String>();
      column = new List<String>();
      columns = new List<List<String>>();
      for (FieldSetMember fsm : fsmList) {
        title.add(fsm.getLabel());
        column.add(fsm.getFieldPath());
        columns.add(fsm.getFieldPath().split('\\.'));
      }
      // 获得显示数据
      raesList = new List<Consumable_order__c>();
      String soql = 'select Id';
      for (String s : column) {
        soql += ',' + s;
      }
      soql +=
        ' from Consumable_order__c where Order_type__c = \'' +
        '订单' +
        '\' and  recordtypeid =\'' +
        System.Label.RT_ConOrder_Delivery +
        '\' and Dealer_Info__c =\'' +
        accountid +
        '\' and  (OrderNumber_notarrive__c > 0 or Delivery_detail_count__c >0) ';
      soql += 'and Order_Owner_WorkLocal__c = \'' + userWorkLocation + '\' ';
      soql += 'and showFalseNotshowTrue__c = false';
      if (!String.isBlank(category1)) {
        soql +=
          ' and Name like \'%' +
          String.escapeSingleQuotes(category1.replaceAll('%', '\\%')) +
          '%\' ';
      }
      if (cate2 != null) {
        soql += ' and Shipment_date__c = :cate2 ';
      }
      soql += '  and Order_ProType__c =\'' + agencyProType + '\'';
      soql += ' order by Deliver_date__c';
      system.debug('====soql:' + soql);
      raesList = Database.query(soql);
      results.raesList = raesList;
      results.result = 'Success';
    } catch (Exception e) {
      results.result = 'Fail';
      results.errorMsg = e.getLineNumber() + '---' + e.getMessage();
    }
    return results;
  }

  public class Results {
    @AuraEnabled
    public String result;
    @AuraEnabled
    public String errorMsg;
    @AuraEnabled
    public String agencyProType;
    @AuraEnabled
    public String category1;
    @AuraEnabled
    public Date cate2;
    @AuraEnabled
    public String eSetId;
    @AuraEnabled
    public String accountId;
    @AuraEnabled
    public List<String> title;
    @AuraEnabled
    public List<Consumable_order__c> raesList;
    @AuraEnabled
    public String userWorkLocation;
    @AuraEnabled
    public Integer totalNum;
    @AuraEnabled
    public Integer orderNumberArrived;
    @AuraEnabled
    public Integer deliveryDetailCount;
    @AuraEnabled
    public Integer orderNumberNotarrive;
    @AuraEnabled
    public Integer moreThanSevenDays;
    @AuraEnabled
    public Boolean isNoteStay;
  }
}