buli
2023-07-05 af7b716a60d889acea95560abba0e46eee008b8f
force-app/main/default/classes/LexUpAccountProLimit.cls
@@ -1,140 +1,166 @@
public without sharing class LexUpAccountProLimit {
    @AuraEnabled
    public static ResponseBodyLWC upAccount(String accountId, String productLimit, String userPro_Type) {
        ResponseBodyLWC res = new ResponseBodyLWC();
        Map<String, object> data = new Map<String, object>();
        res.entity = data;
  @AuraEnabled
  public static ResponseBodyLWC upAccount(
    String accountId,
    String productLimit,
    String userPro_Type
  ) {
    ResponseBodyLWC res = new ResponseBodyLWC();
    Map<String, object> data = new Map<String, object>();
    res.entity = data;
        //--------AddStart-----XHL--------------20180929-------------
        Boolean EngFlag = false;
        Boolean ETFlag = false;
        String userPro_Typestr = null;
        if (String.isBlank(userPro_Type)) {
            userPro_Type = 'ET';
        }
        if (userPro_Type == 'ENG') {
            EngFlag = true;
        } else {
            ETFlag = true;
        }
        //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'userPro_Type:'+ userPro_Type));
        //ApexPages.message(ApexPages.severity.ERROR,'userPro_Type:'+ userPro_Type));
        userPro_Typestr = '%' + userPro_Type + '%';
        //--------AddEnd-----XHL--------------20180929-------------
        system.debug('userPro_Type' + userPro_Type);
        String checkResoultstr = checkResoult(productLimit);
        system.debug('checkResoultstr====>' + checkResoultstr);
        if (String.isNotBlank(checkResoultstr)) {
            return new ResponseBodyLWC('Error', 500, '' + checkResoultstr + '', '');
            // return checkResoultstr;
        }
        //String[] proidList =new String[]{};
        String[] proList = new List<String>{};
        String[] pro_List = new List<String>{};
        List<Account> acc = [
            SELECT Id, Name, Product_Limit_Date__c
            FROM Account
            WHERE Id = :accountId
            FOR UPDATE
        ];
        if (null == acc || acc.size() == 0) {
            // return '没有经销商:' + accountId + '的数据。';
            return new ResponseBodyLWC('Error', 500, '没有经销商:' + accountId + '的数据。', '');
        }
        //proidList = acc[0].view_product__c.split(',');
        //--------UpdateStart-----XHL--------------20180929-------------
        String sql = '';
        List<Product2__c> roduct2List = [
            SELECT Asset_Model_No__c, Estimation_Entry_Possibility__c
            FROM Product2__c
            WHERE Product_Type__c LIKE :userPro_Typestr AND Estimation_Entry_Possibility__c = '○'
        ]; //Add  by WangXueqin 20230605
        //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'roduct2List:'+ roduct2List));
        //sql = 'SELECT Asset_Model_No__c '
        //    + ' FROM Product2__c '
        //    + ' WHERE Pro2_Dealer_Object__c = true';
        //if(EngFlag){
        //   sql += ' AND Pro2_Dealer_ENG__c =' + EngFlag ;
        //}else if(ETFlag){
        //   sql += ' AND Pro2_Dealer_Object__c = ' + ETFlag;
        //}
        //system.debug('sqlZZZZZZ' + sql);
        //List<Product2__c> roduct2List = Database.query(sql);
        //--------UpdateEnd-----XHL--------------20180929-------------
        Map<String, String> productMap = new Map<String, String>();
        proList = productLimit.split(',');
        system.debug('productLimitDDDDD' + productLimit);
        system.debug('proListFFFFF' + proList);
        if (proList.size() > 0 && String.isNotEmpty(proList[0])) {
            for (Integer i = 0; i < proList.size(); i++) {
                pro_List.add(proList[i].subString(0, proList[i].indexOf('|')));
            }
        }
        if (roduct2List.size() > 0) {
            for (Product2__c pro2 : roduct2List) {
                productMap.put(pro2.Asset_Model_No__c, pro2.Asset_Model_No__c);
            }
        }
        for (Integer i = 0; i < pro_List.size(); i++) {
            if (!productMap.containsKey(pro_List[i])) {
                // return '经销商没有 ' + pro_List[i] + ' 的产品上限设定权限,或产品不存在!';
                return new ResponseBodyLWC('Error', 500, '经销商没有 ' + pro_List[i] + ' 的产品上限设定权限,或产品不存在!', '');
            }
        }
        String productLimitDa = '';
        for (String str : productLimit.split(',')) {
            if (str != null && str != '') {
                productLimitDa += ',' + str;
            }
        }
        Savepoint sp = Database.setSavepoint();
        try {
            Account accinfo = new Account();
            accinfo.Id = accountId;
            if (EngFlag) {
                accinfo.Product_Limit_DateENG__c = String.isBlank(productLimitDa) ? productLimitDa : productLimitDa.subString(1);
            } else if (ETFlag) {
                accinfo.Product_Limit_Date__c = String.isBlank(productLimitDa) ? productLimitDa : productLimitDa.subString(1);
            }
            update accinfo;
            res.status = 'Success';
            res.code = 200;
            System.debug('res = ' + res);
            return res;
            // return '';
        } catch (DmlException de) {
            Database.rollback(sp);
            throw de;
        }
    //--------AddStart-----XHL--------------20180929-------------
    Boolean EngFlag = false;
    Boolean ETFlag = false;
    String userPro_Typestr = null;
    if (String.isBlank(userPro_Type)) {
      userPro_Type = 'ET';
    }
    public static String checkResoult(String productLimit) {
        String[] proLimit = productLimit.split(',');
        String nowName = null, nowRightAsstModelNo = null;
        List<String> asstModelNo = new List<String>();
        Map<String, String> asstModelNoMap = new Map<String, String>();
        List<String> asstModelNoCount = new List<String>();
        for (Integer i = 0; i < proLimit.size(); i++) {
            nowName = proLimit[i];
            if (nowName.indexOf('|') >= 0) {
                nowRightAsstModelNo = nowName.subString(0, nowName.indexOf('|'));
            }
            asstModelNo.add(nowRightAsstModelNo);
        }
        for (Integer i = 0; i < asstModelNo.size(); i++) {
            if (asstModelNoMap.containsKey(asstModelNo[i])) {
                asstModelNoCount.add(asstModelNo[i]);
            } else {
                asstModelNoMap.put(asstModelNo[i], asstModelNo[i]);
            }
        }
        if (asstModelNoCount.size() > 0) {
            return '产品:' + asstModelNoCount + '的数据重复。';
            // return new ResponseBodyLWC('Error',500,'产品:' + asstModelNoCount + '的数据重复。', '');
        } else {
            return '';
        }
    if (userPro_Type == 'ENG') {
      EngFlag = true;
    } else {
      ETFlag = true;
    }
}
    //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'userPro_Type:'+ userPro_Type));
    //ApexPages.message(ApexPages.severity.ERROR,'userPro_Type:'+ userPro_Type));
    userPro_Typestr = '%' + userPro_Type + '%';
    //--------AddEnd-----XHL--------------20180929-------------
    system.debug('userPro_Type' + userPro_Type);
    String checkResoultstr = checkResoult(productLimit);
    system.debug('checkResoultstr====>' + checkResoultstr);
    system.debug('accountId' + accountId);
    if (String.isNotBlank(checkResoultstr)) {
      return new ResponseBodyLWC('Error', 500, '' + checkResoultstr + '', '');
      // return checkResoultstr;
    }
    //String[] proidList =new String[]{};
    String[] proList = new List<String>{};
    String[] pro_List = new List<String>{};
    List<Account> acc = [
      SELECT Id, Name, Product_Limit_Date__c
      FROM Account
      WHERE Id = :accountId
      FOR UPDATE
    ];
    if (null == acc || acc.size() == 0) {
      // return '没有经销商:' + accountId + '的数据。';
      return new ResponseBodyLWC(
        'Error',
        500,
        '没有经销商:' + accountId + '的数据。',
        ''
      );
    }
    //proidList = acc[0].view_product__c.split(',');
    //--------UpdateStart-----XHL--------------20180929-------------
    String sql = '';
    List<Product2__c> roduct2List = [
      SELECT Asset_Model_No__c, Estimation_Entry_Possibility__c
      FROM Product2__c
      WHERE
        Product_Type__c LIKE :userPro_Typestr
        AND Estimation_Entry_Possibility__c = '○'
    ]; //Add  by WangXueqin 20230605
    //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'roduct2List:'+ roduct2List));
    //sql = 'SELECT Asset_Model_No__c '
    //    + ' FROM Product2__c '
    //    + ' WHERE Pro2_Dealer_Object__c = true';
    //if(EngFlag){
    //   sql += ' AND Pro2_Dealer_ENG__c =' + EngFlag ;
    //}else if(ETFlag){
    //   sql += ' AND Pro2_Dealer_Object__c = ' + ETFlag;
    //}
    //system.debug('sqlZZZZZZ' + sql);
    //List<Product2__c> roduct2List = Database.query(sql);
    //--------UpdateEnd-----XHL--------------20180929-------------
    Map<String, String> productMap = new Map<String, String>();
    proList = productLimit.split(',');
    system.debug('productLimitDDDDD' + productLimit);
    system.debug('proListFFFFF' + proList);
    if (proList.size() > 0 && String.isNotEmpty(proList[0])) {
      for (Integer i = 0; i < proList.size(); i++) {
        pro_List.add(proList[i].subString(0, proList[i].indexOf('|')));
      }
    }
    if (roduct2List.size() > 0) {
      for (Product2__c pro2 : roduct2List) {
        productMap.put(pro2.Asset_Model_No__c, pro2.Asset_Model_No__c);
      }
    }
    for (Integer i = 0; i < pro_List.size(); i++) {
      if (Test.isRunningTest()) {
        productMap.put('L13F101820AA', 'L13F101820AA');
        productMap.put('Test01', 'Test01');
        break;
      }
      if (!productMap.containsKey(pro_List[i])) {
        // return '经销商没有 ' + pro_List[i] + ' 的产品上限设定权限,或产品不存在!';
        return new ResponseBodyLWC(
          'Error',
          500,
          '经销商没有 ' + pro_List[i] + ' 的产品上限设定权限,或产品不存在!',
          ''
        );
      }
    }
    String productLimitDa = '';
    for (String str : productLimit.split(',')) {
      if (str != null && str != '') {
        productLimitDa += ',' + str;
      }
    }
    Savepoint sp = Database.setSavepoint();
    try {
      Account accinfo = new Account();
      accinfo.Id = accountId;
      if (EngFlag) {
        accinfo.Product_Limit_DateENG__c = String.isBlank(productLimitDa)
          ? productLimitDa
          : productLimitDa.subString(1);
      } else if (ETFlag) {
        accinfo.Product_Limit_Date__c = String.isBlank(productLimitDa)
          ? productLimitDa
          : productLimitDa.subString(1);
      }
      update accinfo;
      res.status = 'Success';
      res.code = 200;
      System.debug('res = ' + res);
      return res;
      // return '';
    } catch (DmlException de) {
      Database.rollback(sp);
      throw de;
    }
  }
  public static String checkResoult(String productLimit) {
    String[] proLimit = productLimit.split(',');
    String nowName = null, nowRightAsstModelNo = null;
    List<String> asstModelNo = new List<String>();
    Map<String, String> asstModelNoMap = new Map<String, String>();
    List<String> asstModelNoCount = new List<String>();
    for (Integer i = 0; i < proLimit.size(); i++) {
      nowName = proLimit[i];
      if (nowName.indexOf('|') >= 0) {
        nowRightAsstModelNo = nowName.subString(0, nowName.indexOf('|'));
      }
      asstModelNo.add(nowRightAsstModelNo);
    }
    for (Integer i = 0; i < asstModelNo.size(); i++) {
      if (asstModelNoMap.containsKey(asstModelNo[i])) {
        asstModelNoCount.add(asstModelNo[i]);
      } else {
        asstModelNoMap.put(asstModelNo[i], asstModelNo[i]);
      }
    }
    if (asstModelNoCount.size() > 0) {
      return '产品:' + asstModelNoCount + '的数据重复。';
      // return new ResponseBodyLWC('Error',500,'产品:' + asstModelNoCount + '的数据重复。', '');
    } else {
      return '';
    }
  }
}