public without sharing class Product2Handler extends Oly_TriggerHandler {
  private Map<Id, Product2> newMap;
  private Map<Id, Product2> oldMap;
  private List<Product2> newList;
  private List<Product2> oldList;

  public Product2Handler() {
    this.newMap = (Map<Id, Product2>) Trigger.newMap;
    this.oldMap = (Map<Id, Product2>) Trigger.oldMap;
    this.newList = (List<Product2>) Trigger.new;
    this.oldList = (List<Product2>) Trigger.old;
  }

  protected override void beforeInsert() {
    beforeSetValue();
    // SWAG-BHE9GK LHJ 竞争对手产品自动编码 Start
    SetCompetitorCode();
    // SWAG-BHE9GK LHJ 竞争对手产品自动编码 End
    // WLIG-CKKA4M xxf 【委托】【产品主数据】注册证更新后部分字段信息未自动代入 Start
    AutomaticallyBringData();
    // WLIG-CKKA4M xxf 【委托】【产品主数据】注册证更新后部分字段信息未自动代入 End
  }
  protected override void beforeUpdate() {
    beforeSetValue();
    //SFDC停止预警  lt  20211015 add start
    // FlgStopManufacure(this.newList, this.oldMap);
    //SFDC停止预警  lt  20211015 add end
    FlgStopManufacure();
  }

  //SFDC停止预警  lt  20210922 add start
  protected override void afterUpdate() {
    Calculate_AverageMonthSales(this.newList, this.oldMap);
    AssignmentUltrasonic(this.newList, this.oldMap); //20230506 lt DB202304618804  包含超声 add
  }
  //SFDC停止预警  lt  20210922 add end

  // SWAG-BHE9GK LHJ 竞争对手产品自动编码 Start
  private void SetCompetitorCode() {
    Boolean SelctFlg = false;
    list<AggregateResult> proList;
    //带量采购修改 start fy
    list<AggregateResult> proListsc;
    //带量采购修改 end fy
    String strPC = '';
    //带量采购修改 start fy
    String strPCsc = '';
    //带量采购修改 end fy
    Integer i = 1;

    String ProductRecordTypes = System.Label.ProductRecordTypeID;
    String[] RecordTypes = String.isNotBlank(ProductRecordTypes)
      ? ProductRecordTypes.split(',')
      : null;

    for (Product2 nObj : newList) {
      //带量采购修改 start fy
      String RecordTypeString = '';
      if (nObj.RecordTypeId != null) {
        RecordTypeString = String.valueof(nObj.RecordTypeId).substring(0, 15);
      }
      // nObj.Competitor_product_dummy__c=System.Label.ProductRecordTypeID.contains(RecordTypeString);
      // if (nObj.Competitor_product_dummy__c) {
      if (System.Label.ProductRecordTypeID.contains(RecordTypeString)) {
        SelctFlg = true;
      }
      //带量采购修改 end fy
    }
    if (SelctFlg) {
      proList = [
        SELECT Max(ProductCode) PC
        FROM Product2
        WHERE ProductCode LIKE 'SD%' AND ProductCode != 'SD999999'
      ];
      if (proList != null && proList.size() > 0) {
        strPC = String.valueof(proList[0].get('PC'));
      }
      //带量采购 start fy
      // proListsc = [Select Max(ProductCode) PC From Product2 Where ProductCode Like 'SC%'];
      // if (proListsc != null && proListsc.size() > 0) {
      //     strPCsc = String.valueof(proListsc[0].get('PC'));
      // }
      List<Product2> lastPro = [
        SELECT Id, ProductCode
        FROM Product2
        WHERE ProductCode LIKE 'SC%'
        ORDER BY ProductCode DESC
        LIMIT 1
      ];
      strPCsc = lastPro != null &&
        lastPro.size() > 0
        ? lastPro[0].ProductCode
        : '';
      //带量采购 end fy
    }
    for (Product2 nObj : newList) {
      //带量采购 start fy
      String RecordTypeString = '';
      if (nObj.RecordTypeId != null) {
        RecordTypeString = String.valueof(nObj.RecordTypeId).substring(0, 15);
      }
      // if (nObj.Competitor_product_dummy__c && strPC.length() == 8
      // if (System.Label.ProductRecordTypeID.contains(RecordTypeString) && strPC.length() == 8
      if (System.Label.ProductRecordTypeID.contains(RecordTypeString)) {
        //带量采购 end fy
        // && proList != null && proList.size() > 0 ) {
        // Integer num = Integer.valueOf(strPC.SubString(2,strPC.length())) + i;
        Integer num = String.isNotBlank(strPC)
          ? Integer.valueOf(strPC.SubString(2, strPC.length())) + i
          : i;
        //带量采购 start fy
        Integer numsc = String.isNotBlank(strPCsc)
          ? Integer.valueOf(strPCsc.SubString(2, strPCsc.length())) + i
          : i;
        // if(RecordTypeString=='0129D000001NacC'){
        if (
          RecordTypes != null &&
          RecordTypes.size() > 1 &&
          RecordTypeString == RecordTypes[1]
        ) {
          nObj.ProductCode = 'SC' + String.valueOf(numsc).leftpad(8, '0');
        } else {
          nObj.ProductCode = 'SD' + String.valueOf(num).leftpad(6, '0');
        }
        //带量采购 end fy
        // nObj.ProductCode  = 'SD' + String.valueOf(num).leftpad(6,'0');
        i++;
      }
    }
  }
  // SWAG-BHE9GK LHJ 竞争对手产品自动编码 End

  //WLIG-CKKA4M xxf 【委托】【产品主数据】注册证更新后部分字段信息未自动代入 Start
  private void AutomaticallyBringData() {
    List<String> noNewList = new List<String>();
    for (Product2 prd : newList) {
      if (prd.Asset_Model_No__c != null) {
        noNewList.add(prd.Asset_Model_No__c);
      }
    }
    if (!noNewList.isEmpty()) {
      List<Product2> prdList = [
        SELECT
          Id,
          Name,
          Asset_Model_No__c,
          MDM_Name__c,
          Maintenance_Price_Year__c,
          Extend_new_product_gurantee_MD__c,
          Extend_Gurantee_Start_MD__c,
          Extend_Gurantee_End_MD__c,
          Entend_gurantee_period_MD__c,
          Extend_new_product_gurantee__c,
          Extend_Gurantee_Start__c,
          Extend_Gurantee_End__c,
          Entend_gurantee_period__c,
          CanNotCancelledGurantee__c,
          Service_Category1__c,
          Service_Category2__c,
          Service_Category3__c,
          Service_Category4__c,
          Service_Category5__c,
          Service_Category6__c,
          Service_Category7__c,
          Can_Repair__c,
          RepairListPriceLevelA__c,
          RepairListPriceLevelB__c,
          RepairListPriceLevelC__c,
          PartSupplyFinishDate__c,
          EndSaleDate__c,
          ProductClass__c,
          ProductCategory__c,
          Period_Filter_Classify1__c,
          Period_Filter_Classify2__c,
          Period_Filter_Classify3__c,
          Intra_Trade_Service_RMB_Date1__c,
          Intra_Trade_Service_RMB_Date2__c,
          Intra_Trade_Service_RMB_EndDate1__c,
          Intra_Trade_Service_RMB_EndDate2__c,
          Intra_Trade_Service_RMB_1__c,
          Intra_Trade_Service_RMB_2__c
        FROM Product2
        WHERE Asset_Model_No__c IN :noNewList
        ORDER BY CreatedDate DESC
      ];
      if (prdList.isEmpty()) {
        return;
      }
      Map<String, Product2> prdMap = new Map<String, Product2>();
      for (Product2 pro2 : prdList) {
        if (!prdMap.isEmpty() && prdMap.containskey(pro2.Asset_Model_No__c)) {
        } else {
          prdMap.put(pro2.Asset_Model_No__c, pro2);
        }
      }

      for (Product2 prd : newList) {
        if (prdMap.containskey(prd.Asset_Model_No__c)) {
          prd.Maintenance_Price_Year__c = prdMap.get(prd.Asset_Model_No__c)
            .Maintenance_Price_Year__c; //维修合同报价
          prd.CanNotCancelledGurantee__c = prdMap.get(prd.Asset_Model_No__c)
            .CanNotCancelledGurantee__c; //不可取消多年保修
          prd.ProductClass__c = prdMap.get(prd.Asset_Model_No__c)
            .ProductClass__c; //市场产品类别
          prd.ProductCategory__c = prdMap.get(prd.Asset_Model_No__c)
            .ProductCategory__c; //市场区分
          prd.Extend_new_product_gurantee_MD__c = prdMap.get(
              prd.Asset_Model_No__c
            )
            .Extend_new_product_gurantee_MD__c; //市场保修对象
          prd.Extend_new_product_gurantee__c = prdMap.get(prd.Asset_Model_No__c)
            .Extend_new_product_gurantee__c; //服务保修对象
          if (
            prdMap.get(prd.Asset_Model_No__c)
              .Extend_new_product_gurantee_MD__c == true
          ) {
            //市场保修对象
            prd.Entend_gurantee_period_MD__c = prdMap.get(prd.Asset_Model_No__c)
              .Entend_gurantee_period_MD__c; //市场保修期(年)
          }
          if (
            prdMap.get(prd.Asset_Model_No__c).Extend_new_product_gurantee__c ==
            true
          ) {
            //服务保修对象
            prd.Entend_gurantee_period__c = prdMap.get(prd.Asset_Model_No__c)
              .Entend_gurantee_period__c; //服务保修期(年)
          }
          prd.Extend_Gurantee_Start_MD__c = prdMap.get(prd.Asset_Model_No__c)
            .Extend_Gurantee_Start_MD__c; //市场保修开始日
          prd.Extend_Gurantee_End_MD__c = prdMap.get(prd.Asset_Model_No__c)
            .Extend_Gurantee_End_MD__c; //市场保修结束日
          prd.Extend_Gurantee_Start__c = prdMap.get(prd.Asset_Model_No__c)
            .Extend_Gurantee_Start__c; //服务保修开始日
          prd.Extend_Gurantee_End__c = prdMap.get(prd.Asset_Model_No__c)
            .Extend_Gurantee_End__c; //服务保修结束日
          prd.Service_Category1__c = prdMap.get(prd.Asset_Model_No__c)
            .Service_Category1__c; //第1服务分类
          prd.Service_Category2__c = prdMap.get(prd.Asset_Model_No__c)
            .Service_Category2__c;
          prd.Service_Category3__c = prdMap.get(prd.Asset_Model_No__c)
            .Service_Category3__c;
          prd.Service_Category4__c = prdMap.get(prd.Asset_Model_No__c)
            .Service_Category4__c;
          prd.Service_Category5__c = prdMap.get(prd.Asset_Model_No__c)
            .Service_Category5__c;
          prd.Service_Category6__c = prdMap.get(prd.Asset_Model_No__c)
            .Service_Category6__c;
          prd.Service_Category7__c = prdMap.get(prd.Asset_Model_No__c)
            .Service_Category7__c;
          prd.Can_Repair__c = prdMap.get(prd.Asset_Model_No__c).Can_Repair__c; //是否可维修
          prd.RepairListPriceLevelA__c = prdMap.get(prd.Asset_Model_No__c)
            .RepairListPriceLevelA__c; //A（W）级维修参考价格
          prd.RepairListPriceLevelB__c = prdMap.get(prd.Asset_Model_No__c)
            .RepairListPriceLevelB__c;
          prd.RepairListPriceLevelC__c = prdMap.get(prd.Asset_Model_No__c)
            .RepairListPriceLevelC__c;
          prd.PartSupplyFinishDate__c = prdMap.get(prd.Asset_Model_No__c)
            .PartSupplyFinishDate__c; //零件停止供应日期
          prd.EndSaleDate__c = prdMap.get(prd.Asset_Model_No__c).EndSaleDate__c; //停止销售日期
          prd.Period_Filter_Classify1__c = prdMap.get(prd.Asset_Model_No__c)
            .Period_Filter_Classify1__c; //营业统计分类1
          prd.Period_Filter_Classify2__c = prdMap.get(prd.Asset_Model_No__c)
            .Period_Filter_Classify2__c; //营业统计分类2
          prd.Period_Filter_Classify3__c = prdMap.get(prd.Asset_Model_No__c)
            .Period_Filter_Classify3__c; //营业统计分类3
          prd.Intra_Trade_Service_RMB_Date1__c = prdMap.get(
              prd.Asset_Model_No__c
            )
            .Intra_Trade_Service_RMB_Date1__c; //多年保价格有效开始日1
          prd.Intra_Trade_Service_RMB_Date2__c = prdMap.get(
              prd.Asset_Model_No__c
            )
            .Intra_Trade_Service_RMB_Date2__c; //多年保价格有效开始日2
          prd.Intra_Trade_Service_RMB_EndDate1__c = prdMap.get(
              prd.Asset_Model_No__c
            )
            .Intra_Trade_Service_RMB_EndDate1__c; //多年保价格有效结束日1
          prd.Intra_Trade_Service_RMB_EndDate2__c = prdMap.get(
              prd.Asset_Model_No__c
            )
            .Intra_Trade_Service_RMB_EndDate2__c; //多年保价格有效结束日2
          prd.Intra_Trade_Service_RMB_1__c = prdMap.get(prd.Asset_Model_No__c)
            .Intra_Trade_Service_RMB_1__c; //多年保价格1
          prd.Intra_Trade_Service_RMB_2__c = prdMap.get(prd.Asset_Model_No__c)
            .Intra_Trade_Service_RMB_2__c; //多年保价格2
        }
      }
    }
  }
  // WLIG-CKKA4M xxf 【委托】【产品主数据】注册证更新后部分字段信息未自动代入 end

  private void beforeSetValue() {
    for (Product2 nObj : newList) {
      //CHAN-B8GCBB
      if (nObj.WhiteSpace__c == true) {
        nObj.StorageStatus__c = String.valueOf(nObj.StorageStatusNo__c);
      } else {
        nObj.StorageStatus__c = '';
      }
      //CHAN-B8GCBB

      nObj.Fixture_Model_No_T__c = nObj.Fixture_Model_No_F__c;
      // CBPR LHJ
      if (
        Trigger.isInsert ||
        (Trigger.isUpdate &&
        nObj.SFDA_Status_New__c != oldMap.get(nObj.id).SFDA_Status_New__c)
      ) {
        nObj.SFDA_Status__c = nobj.SFDA_Status_New__c;
        if (
          nobj.SFDA_Status_New__c == '新製品申請中' ||
          nobj.SFDA_Status_New__c == '準備中'
        ) {
          nObj.SFDA_Status__c = '停止';
        }
      }
      // CBPR LHJ

      // SWAG-BHE9GK LHJ 竞争对手产品自动编码 Start
      if (Trigger.isInsert) {
      }
      // SWAG-BHE9GK LHJ 竞争对手产品自动编码 End
    }
  }

  //SFDC停止预警  lt  20210914 add start
  private static void Calculate_AverageMonthSales(
    List<Product2> newList,
    Map<Id, Product2> oldMap
  ) {
    //符合条件的 旧 产品List
    List<Id> oproList = new List<Id>();
    //符合条件的 新旧 产品Id List  作为条件
    List<Id> conList = new List<Id>();
    //Map<旧的，新的>对应
    Map<String, String> matMap = new Map<String, String>();

    //Map<旧Id，预计停止日>
    Map<String, Date> adateMap = new Map<String, Date>();

    //Map<旧Id, x(平均月销量)>
    Map<String, Integer> xMap = new Map<String, Integer>();
    //Map<旧Id, z(天数)>
    Map<String, Integer> zMap = new Map<String, Integer>();

    for (Product2 term : newList) {
      System.debug('标识' + term.CalMonthSalesFLG__c);
      System.debug('新库存' + term.StorageStatusNo__c);
      System.debug('旧库存' + oldMap.get(term.Id).StorageStatusNo__c);
      if (
        term.M_BC_Stop_manufacure__c != null &&
        term.SFDA_Status__c != '停止' &&
        (term.StorageStatusNo__c != oldMap.get(term.Id).StorageStatusNo__c ||
        term.CalMonthSalesFLG__c == true)
      ) {
        if (term.Correspond_Code__c != null) {
          matMap.put((String) term.Id, (String) term.Correspond_Code__c);
          conList.add(term.Correspond_Code__c);
        }
        conList.add(term.Id);
        oproList.add(term.Id);

        adateMap.put(term.Id, term.M_BC_Stop_manufacure__c);
      }
    }

    //做 一对多 的 Map<String,List<月销量>>
    Map<String, List<ProductMonthlySales__c>> msMap = new Map<String, List<ProductMonthlySales__c>>();

    if (conList.size() > 0) {
      List<ProductMonthlySales__c> msList = [
        SELECT
          Id,
          MonthSales__c,
          CurrentMonth__c,
          CurrentDate__c,
          CurrentYear__c,
          ProductM__c,
          Product2Model__c,
          ProductM__r.StorageStatusNo__c,
          ProductM__r.M_BC_Stop_manufacure__c
        FROM ProductMonthlySales__c
        WHERE ProductM__c IN :conList
        ORDER BY CurrentDate__c DESC
      ];
      //双层循环  产品==>月销量
      for (Id pro : conList) {
        for (ProductMonthlySales__c mms : msList) {
          if (pro == mms.ProductM__c) {
            if (msMap.containsKey(pro)) {
              msMap.get(pro).add(mms);
            } else {
              List<ProductMonthlySales__c> pmsaleList = new List<ProductMonthlySales__c>();
              pmsaleList.add(mms);
              msMap.put(pro, pmsaleList);
            }
          }
        }
      }

      System.debug('条件List' + conList);
      System.debug('sql查到的List' + msList);
      System.debug('产品月销量msMap为' + msMap);
      System.debug('旧的产品List' + oproList);

      if (msMap.size() > 0) {
        System.debug('产品月销量msMap为' + msMap);
        for (Id res : oproList) {
          //a旧 月销量和  ; b新 月销量和 ; c商(平均月销量) ; x商四舍五入 ;
          //y 库存/平均月销量天数 ; z 天数 四舍五入
          Decimal c = 0, y = 0;
          Integer x = 0, z = 0;

          if (msMap.get(res) != null) {
            //月销量大于12个月
            if (msMap.get(res).size() >= 12) {
              Decimal a = 0, b = 0;
              Integer i;
              for (i = 0; i < 12; i++) {
                a += msMap.get(res)[i].MonthSales__c;
              }
              if (matMap.get(res) != null) {
                if (msMap.get(matMap.get(res)) != null) {
                  if (msMap.get(matMap.get(res)).size() >= 12) {
                    for (i = 0; i < 12; i++) {
                      b += msMap.get(matMap.get(res))[i].MonthSales__c;
                      System.debug('新的大于十二' + b);
                    }
                  } else {
                    for (
                      ProductMonthlySales__c nms : msMap.get(matMap.get(res))
                    ) {
                      b += nms.MonthSales__c;
                      System.debug('新的小于十二遍历全部' + b);
                    }
                  }
                }
              }

              //四舍五入
              c = (a + b) / 12;

              if (c > 1) {
                x = Integer.valueOf(c.round(System.RoundingMode.HALF_UP));
                xMap.put(res, x);
              } else if (c > 0) {
                x = 1;
                xMap.put(res, x);
              }
              //x = Integer.valueOf(c.round(System.RoundingMode.Up));
              //x = Integer.valueOf(c.round(System.RoundingMode.HALF_UP));

              System.debug('新' + b);
              System.debug('旧' + a);
              System.debug('除法足c' + c);
              System.debug('四舍五入x' + x);
            }
            //月销量不足12个月
            else {
              Decimal a = 0, b = 0;
              for (ProductMonthlySales__c oms : msMap.get(res)) {
                a += oms.MonthSales__c;
              }
              if (msMap.get(matMap.get(res)) != null) {
                for (ProductMonthlySales__c nms : msMap.get(matMap.get(res))) {
                  b += nms.MonthSales__c;
                }
              }
              c = (a + b) / msMap.get(res).size();
              //x = Integer.valueOf(c.round(System.RoundingMode.UP));
              //x = Integer.valueOf(c.round(System.RoundingMode.HALF_UP));
              if (c > 1) {
                x = Integer.valueOf(c.round(System.RoundingMode.HALF_UP));
                xMap.put(res, x);
              } else if (c > 0) {
                x = 1;
                xMap.put(res, x);
              }

              System.debug('除法不足12c' + c);
              System.debug('四舍五入x' + x);
            }

            if (x != 0) {
              for (ProductMonthlySales__c dat : msMap.get(res)) {
                Decimal m = 0;
                if (dat.ProductM__r.StorageStatusNo__c != null) {
                  m = dat.ProductM__r.StorageStatusNo__c;
                }
                y = m / x;
                y = y * 30;
              }
            }
            //z = Integer.valueOf(y.round(System.RoundingMode.UP));
            z = Integer.valueOf(y.round(System.RoundingMode.HALF_UP));
            zMap.put(res, z);
            System.debug('天数y' + y);
            System.debug('四舍五入z' + z);
          }
        }
      }

      List<Product2> finList = new List<Product2>();
      for (Id fin : oproList) {
        Product2 fip = new Product2();
        fip.Id = fin;
        fip.CalMonthSalesFLG__c = false;

        if (xMap.get(fin) != null) {
          fip.Average_MonthSales__c = xMap.get(fin);
        }

        //20211020
        if (zMap.get(fin) != null) {
          if (zMap.get(fin) != 0) {
            fip.Estimated_ConsumptionDueDate__c = Date.today()
              .addDays(zMap.get(fin));
          } else {
            if (adateMap != null) {
              Date adate = adateMap.get(fin);
              fip.Estimated_ConsumptionDueDate__c = adate;
            }
          }
        } else {
          if (adateMap != null) {
            Date adate = adateMap.get(fin);
            fip.Estimated_ConsumptionDueDate__c = adate;
          }
        }
        //20211020

        finList.add(fip);
      }
      update finList;
    }
  }
  //SFDC停止预警  lt  20210914 add end

  //SFDC停止预警  lt  20211015 add start
  //ProductMonthlySalesFlag__c  12月销量标识  预计停止日期(M_BC_Stop_manufacure__c)变化时
  // private static void FlgStopManufacure(List<Product2> newList,Map<Id, Product2> oldMap){
  //     if(newList != null){
  //         for(Product2 pts : newList){
  //             if(oldMap != null){
  //                 if(pts.M_BC_Stop_manufacure__c != null && oldMap.get(pts.Id).M_BC_Stop_manufacure__c == null){
  //                     pts.ProductMonthlySalesFlag__c = true;
  //                 }
  //                 if(pts.M_BC_Stop_manufacure__c != null && oldMap.get(pts.Id).M_BC_Stop_manufacure__c != null && pts.M_BC_Stop_manufacure__c != oldMap.get(pts.Id).M_BC_Stop_manufacure__c){
  //                     pts.ProductMonthlySalesFlag__c = true;
  //                 }
  //                 if(pts.M_BC_Stop_manufacure__c == null && oldMap.get(pts.Id).M_BC_Stop_manufacure__c != null){
  //                     pts.ProductMonthlySalesFlag__c = false;
  //                     pts.Estimated_ConsumptionDueDate__c = null;
  //                 }
  //             }
  //         }
  //     }

  // }
  //SFDC停止预警  lt  20211015 add end
  private void FlgStopManufacure() {
    for (Product2 pts : newList) {
      Product2 oldPts = oldMap.get(pts.Id);

      if (pts.M_BC_Stop_manufacure__c != oldPts.M_BC_Stop_manufacure__c) {
        pts.ProductMonthlySalesFlag__c = true;
        if (pts.M_BC_Stop_manufacure__c == null) {
          pts.ProductMonthlySalesFlag__c = false;
          pts.Estimated_ConsumptionDueDate__c = null;
        }
      }

      if (pts.SFDA_Status__c == '停止' && oldPts.SFDA_Status__c != '停止') {
        pts.Estimated_ConsumptionDueDate__c = null;
      }
    }
  }

  //20230506 lt DB202304618804  包含超声 start
  private static void AssignmentUltrasonic(
    List<Product2> newList,
    Map<Id, Product2> oldMap
  ) {
    List<String> proIdList = new List<String>();
    List<PCLLostProduct__c> updateplpList = new List<PCLLostProduct__c>();

    for (Product2 pro : newList) {
      if (
        pro.RecordTypeId == System.Label.Pro_RecordType &&
        (pro.Lost_Product_Differ__c !=
        oldMap.get(pro.Id).Lost_Product_Differ__c ||
        pro.Lost_Product_Category__c !=
        oldMap.get(pro.Id).Lost_Product_Category__c)
      ) {
        proIdList.add(pro.Id);
      }
    }

    List<PCLLostProduct__c> plpList = [
      SELECT Id, LostProduct__c, ProductClass__c, ProductCategory__c
      FROM PCLLostProduct__c
      WHERE LostProduct__c IN :proIdList
    ];
    if (plpList.size() > 0) {
      for (PCLLostProduct__c plp : plpList) {
        plp.ProductClass__c = '主机';
        plp.ProductCategory__c = '超声主机';
        updateplpList.add(plp);
      }
    }

    update updateplpList;
  }
  //20230506 lt DB202304618804  包含超声 end
}
