高章伟
2023-03-03 d8dc84a3d56df839895f1c417a4d9cbee763d262
force-app/main/default/classes/SubAuthorizedBatch.cls
@@ -1,339 +1,337 @@
global class SubAuthorizedBatch implements Database.Batchable<sObject> {
   String testID;
   Boolean IsNeedExecute = false; // 2021-03-03  mzy  WLIG-BYHD79  SFDC环境batch合并调查  是否符合执行条件
   public SubAuthorizedBatch(string testID) {
      this.testID = testID;
     this.testID = testID;
   }
   public SubAuthorizedBatch() {
   }
   // 2021-03-03  mzy  WLIG-BYHD79  SFDC环境batch合并调查  start
   public SubAuthorizedBatch(Boolean NeedExecute) {
       this.IsNeedExecute = NeedExecute;
      this.IsNeedExecute = NeedExecute;
   }
   // 2021-03-03  mzy  WLIG-BYHD79  SFDC环境batch合并调查  end
   global Database.QueryLocator start(Database.BatchableContext BC) {
      Date today = Date.today();
      Date tomorrow = today.addDays(1);
      Date twoDayLater = today.addDays(2);
      //Date twoDayAgo = today.addDays(-2);
      //Date yesterday = today.addDays(-1);
      if (!String.isBlank(this.testID)) {
         return Database.getQueryLocator(
                    [select Id, Status__c, IsAuthorize__c, Authorizer__c,
                     AuthorizedStartDate__c, AuthorizedEndDate__c, Authorizee__c
                     from SubAuthorized__c
                     where id = :testID]
                );
      }
     Date today = Date.today();
     Date tomorrow = today.addDays(1);
     Date twoDayLater = today.addDays(2);
     //Date twoDayAgo = today.addDays(-2);
     //Date yesterday = today.addDays(-1);
     if (!String.isBlank(this.testID)) {
      return Database.getQueryLocator(
                 [select Id, Status__c, IsAuthorize__c, Authorizer__c,
                  AuthorizedStartDate__c, AuthorizedEndDate__c, Authorizee__c
                  from SubAuthorized__c
                  where
                  (Status__c = '已批准'
                               and IsAuthorize__c = false
                                       and AuthorizedStartDate__c <= : tomorrow
                                       and AuthorizedEndDate__c >= : twoDayLater)
                  or
                  (Status__c = '已批准'
                               and IsAuthorize__c = true
                                       and AuthorizedEndDate__c <= : tomorrow)
                  or
                  (Status__c = '已取消'
                               and IsAuthorize__c = true
                  )
                 ]
             );
               [select Id, Status__c, IsAuthorize__c, Authorizer__c,
               AuthorizedStartDate__c, AuthorizedEndDate__c, Authorizee__c
               from SubAuthorized__c
               where id = :testID]
            );
     }
     return Database.getQueryLocator(
             [select Id, Status__c, IsAuthorize__c, Authorizer__c,
              AuthorizedStartDate__c, AuthorizedEndDate__c, Authorizee__c
              from SubAuthorized__c
              where
              (Status__c = '已批准'
                        and IsAuthorize__c = false
                              and AuthorizedStartDate__c <= : tomorrow
                              and AuthorizedEndDate__c >= : twoDayLater)
              or
              (Status__c = '已批准'
                        and IsAuthorize__c = true
                              and AuthorizedEndDate__c <= : tomorrow)
              or
              (Status__c = '已取消'
                        and IsAuthorize__c = true
              )
             ]
          );
   }
   global void execute(Database.BatchableContext BC, List<SubAuthorized__c> SubAuthorizedList) {
      system.debug('---------1-------------SubAuthorizedList:' + SubAuthorizedList);
      Map<id, SubAuthorized__c> SubAuthorizedMap = new Map<id, SubAuthorized__c> ();
      Set<User> UpdateUserSet = new Set<User>();
      List<User> UpdateUserList = new List<User>();
      // 获取所有提交人的id
      for ( SubAuthorized__c SubAuthor : SubAuthorizedList) {
         SubAuthorizedMap.put(SubAuthor.Authorizer__c, SubAuthor);
     system.debug('---------1-------------SubAuthorizedList:' + SubAuthorizedList);
     Map<id, SubAuthorized__c> SubAuthorizedMap = new Map<id, SubAuthorized__c> ();
     Set<User> UpdateUserSet = new Set<User>();
     List<User> UpdateUserList = new List<User>();
     // 获取所有提交人的id
     for ( SubAuthorized__c SubAuthor : SubAuthorizedList) {
      SubAuthorizedMap.put(SubAuthor.Authorizer__c, SubAuthor);
     }
     system.debug('---------2-------------SubAuthorizedMap:' + SubAuthorizedMap);
     //  检索出提交人为经理部长总监的用户数据(包括作为备份的)
     list<User> allUserList =
        [select id, ZongjianApprovalManager_copy__c,
         TongkuoZongjian_copy__c, BuchangApprovalManager_copy__c,
         BuchangApprovalManagerSales_copy__c, JingliApprovalManager_copy__c,
         SalesManager_copy__c, ZongjianApprovalManager__c,
         TongkuoZongjian__c, BuchangApprovalManager__c,
         BuchangApprovalManagerSales__c, JingliApprovalManager__c,
         SalesManager__c, ManagerId , ManagerId_copy__c
         // SWAG-BEM9EP start
         ,JingliEquipmentManager__c, JingliEquipmentManager_copy__c
         ,Buzhang_Equipment_Manager__c, Buzhang_Equipment_Manager_copy__c
         // SWAG-BEM9EP end
         from user
         where
         ZongjianApprovalManager_copy__c in: SubAuthorizedMap.keyset()
         or TongkuoZongjian_copy__c in: SubAuthorizedMap.keyset()
         or BuchangApprovalManager_copy__c in: SubAuthorizedMap.keyset()
         or BuchangApprovalManagerSales_copy__c in: SubAuthorizedMap.keyset()
         or JingliApprovalManager_copy__c in: SubAuthorizedMap.keyset()
         or SalesManager_copy__c in: SubAuthorizedMap.keyset()
         or ZongjianApprovalManager__c in: SubAuthorizedMap.keyset()
         or TongkuoZongjian__c in: SubAuthorizedMap.keyset()
         or BuchangApprovalManager__c in: SubAuthorizedMap.keyset()
         or BuchangApprovalManagerSales__c in: SubAuthorizedMap.keyset()
         or JingliApprovalManager__c in: SubAuthorizedMap.keyset()
         or SalesManager__c in: SubAuthorizedMap.keyset()
         or ManagerId in : SubAuthorizedMap.keyset()
         or ManagerId_copy__c in : SubAuthorizedMap.keyset()
         //SWAG-BEM9EP start
         or JingliEquipmentManager__c in : SubAuthorizedMap.keyset()
         or JingliEquipmentManager_copy__c in : SubAuthorizedMap.keyset()
         or Buzhang_Equipment_Manager__c in : SubAuthorizedMap.keyset()
        or Buzhang_Equipment_Manager_copy__c in : SubAuthorizedMap.keyset()
        // SWAG-BEM9EP end
         ];
     // 设置更新用户数据
     for (User tempUser : allUserList) {
      boolean IsUpdate = false;
      // 从备份赋值到总监部长经理回来,备份置空
      if (tempUser.ZongjianApprovalManager_copy__c != null &&
            SubAuthorizedMap.containsKey(tempUser.ZongjianApprovalManager_copy__c)
            && !checkSubAuthorized(SubAuthorizedMap.get(tempUser.ZongjianApprovalManager_copy__c))
         ) {
        tempUser.ZongjianApprovalManager__c = tempUser.ZongjianApprovalManager_copy__c;
        tempUser.ZongjianApprovalManager_copy__c = null;
        IsUpdate = true;
      }
      system.debug('---------2-------------SubAuthorizedMap:' + SubAuthorizedMap);
      //   检索出提交人为经理部长总监的用户数据(包括作为备份的)
      list<User> allUserList =
          [select id, ZongjianApprovalManager_copy__c,
           TongkuoZongjian_copy__c, BuchangApprovalManager_copy__c,
           BuchangApprovalManagerSales_copy__c, JingliApprovalManager_copy__c,
           SalesManager_copy__c, ZongjianApprovalManager__c,
           TongkuoZongjian__c, BuchangApprovalManager__c,
           BuchangApprovalManagerSales__c, JingliApprovalManager__c,
           SalesManager__c, ManagerId , ManagerId_copy__c
           // SWAG-BEM9EP start
           ,JingliEquipmentManager__c, JingliEquipmentManager_copy__c
           ,Buzhang_Equipment_Manager__c, Buzhang_Equipment_Manager_copy__c
           // SWAG-BEM9EP end
           from user
           where
           ZongjianApprovalManager_copy__c in: SubAuthorizedMap.keyset()
           or TongkuoZongjian_copy__c in: SubAuthorizedMap.keyset()
           or BuchangApprovalManager_copy__c in: SubAuthorizedMap.keyset()
           or BuchangApprovalManagerSales_copy__c in: SubAuthorizedMap.keyset()
           or JingliApprovalManager_copy__c in: SubAuthorizedMap.keyset()
           or SalesManager_copy__c in: SubAuthorizedMap.keyset()
           or ZongjianApprovalManager__c in: SubAuthorizedMap.keyset()
           or TongkuoZongjian__c in: SubAuthorizedMap.keyset()
           or BuchangApprovalManager__c in: SubAuthorizedMap.keyset()
           or BuchangApprovalManagerSales__c in: SubAuthorizedMap.keyset()
           or JingliApprovalManager__c in: SubAuthorizedMap.keyset()
           or SalesManager__c in: SubAuthorizedMap.keyset()
           or ManagerId in : SubAuthorizedMap.keyset()
           or ManagerId_copy__c in : SubAuthorizedMap.keyset()
           //SWAG-BEM9EP start
           or JingliEquipmentManager__c in : SubAuthorizedMap.keyset()
           or JingliEquipmentManager_copy__c in : SubAuthorizedMap.keyset()
           or Buzhang_Equipment_Manager__c in : SubAuthorizedMap.keyset()
           or Buzhang_Equipment_Manager_copy__c in : SubAuthorizedMap.keyset()
           // SWAG-BEM9EP end
           ];
      // 设置更新用户数据
      for (User tempUser : allUserList) {
         boolean IsUpdate = false;
         // 从备份赋值到总监部长经理回来,备份置空
         if (tempUser.ZongjianApprovalManager_copy__c != null &&
                 SubAuthorizedMap.containsKey(tempUser.ZongjianApprovalManager_copy__c)
                 && !checkSubAuthorized(SubAuthorizedMap.get(tempUser.ZongjianApprovalManager_copy__c))
            ) {
            tempUser.ZongjianApprovalManager__c = tempUser.ZongjianApprovalManager_copy__c;
            tempUser.ZongjianApprovalManager_copy__c = null;
            IsUpdate = true;
         }
         if (tempUser.TongkuoZongjian_copy__c != null &&
                 SubAuthorizedMap.containsKey(tempUser.TongkuoZongjian_copy__c)
                 && !checkSubAuthorized(SubAuthorizedMap.get(tempUser.TongkuoZongjian_copy__c))
            ) {
            tempUser.TongkuoZongjian__c = tempUser.TongkuoZongjian_copy__c;
            tempUser.TongkuoZongjian_copy__c = null;
            IsUpdate = true;
         }
         if (tempUser.BuchangApprovalManager_copy__c != null &&
                 SubAuthorizedMap.containsKey(tempUser.BuchangApprovalManager_copy__c)
                 && !checkSubAuthorized(SubAuthorizedMap.get(tempUser.BuchangApprovalManager_copy__c))
            ) {
            tempUser.BuchangApprovalManager__c = tempUser.BuchangApprovalManager_copy__c;
            tempUser.BuchangApprovalManager_copy__c = null;
            IsUpdate = true;
         }
         if (tempUser.BuchangApprovalManagerSales_copy__c != null &&
                 SubAuthorizedMap.containsKey(tempUser.BuchangApprovalManagerSales_copy__c)
                 && !checkSubAuthorized(SubAuthorizedMap.get(tempUser.BuchangApprovalManagerSales_copy__c))
            ) {
            tempUser.BuchangApprovalManagerSales__c = tempUser.BuchangApprovalManagerSales_copy__c;
            tempUser.BuchangApprovalManagerSales_copy__c = null;
            IsUpdate = true;
         }
         if (tempUser.JingliApprovalManager_copy__c != null &&
                 SubAuthorizedMap.containsKey(tempUser.JingliApprovalManager_copy__c)
                 && !checkSubAuthorized(SubAuthorizedMap.get(tempUser.JingliApprovalManager_copy__c))
            ) {
            tempUser.JingliApprovalManager__c = tempUser.JingliApprovalManager_copy__c;
            tempUser.JingliApprovalManager_copy__c = null;
            IsUpdate = true;
         }
         if (tempUser.SalesManager_copy__c != null &&
                 SubAuthorizedMap.containsKey(tempUser.SalesManager_copy__c)
                 && !checkSubAuthorized(SubAuthorizedMap.get(tempUser.SalesManager_copy__c))
            ) {
            tempUser.SalesManager__c = tempUser.SalesManager_copy__c;
            tempUser.SalesManager_copy__c = null;
            IsUpdate = true;
         }
         if (tempUser.ManagerId_copy__c    != null &&
                 SubAuthorizedMap.containsKey(tempUser.ManagerId_copy__c   )
                 && !checkSubAuthorized(SubAuthorizedMap.get(tempUser.ManagerId_copy__c   ))
            ) {
            tempUser.ManagerId = tempUser.ManagerId_copy__c;
            tempUser.ManagerId_copy__c    = null;
            IsUpdate = true;
         }
         //SWAG-BEM9EP start
         if (tempUser.JingliEquipmentManager_copy__c    != null &&
                 SubAuthorizedMap.containsKey(tempUser.JingliEquipmentManager_copy__c   )
                 && !checkSubAuthorized(SubAuthorizedMap.get(tempUser.JingliEquipmentManager_copy__c   ))
            ) {
            tempUser.JingliEquipmentManager__c = tempUser.JingliEquipmentManager_copy__c;
            tempUser.JingliEquipmentManager_copy__c    = null;
            IsUpdate = true;
         }
         if (tempUser.Buzhang_Equipment_Manager_copy__c    != null &&
                 SubAuthorizedMap.containsKey(tempUser.Buzhang_Equipment_Manager_copy__c   )
                 && !checkSubAuthorized(SubAuthorizedMap.get(tempUser.Buzhang_Equipment_Manager_copy__c))
            ) {
            tempUser.Buzhang_Equipment_Manager__c = tempUser.Buzhang_Equipment_Manager_copy__c;
            tempUser.Buzhang_Equipment_Manager_copy__c    = null;
            IsUpdate = true;
         }
         //SWAG-BEM9EP end
         // 从总监部长经理赋值到备份,总监部长经理设置为转授权人
         if (tempUser.ZongjianApprovalManager__c != null &&
                 SubAuthorizedMap.containsKey(tempUser.ZongjianApprovalManager__c)
                 && checkSubAuthorized(SubAuthorizedMap.get(tempUser.ZongjianApprovalManager__c))
            ) {
            tempUser.ZongjianApprovalManager_copy__c = tempUser.ZongjianApprovalManager__c;
            tempUser.ZongjianApprovalManager__c
                = SubAuthorizedMap.get(tempUser.ZongjianApprovalManager__c).Authorizee__c ;
            IsUpdate = true;
         }
         if (tempUser.TongkuoZongjian__c != null &&
                 SubAuthorizedMap.containsKey(tempUser.TongkuoZongjian__c)
                 && checkSubAuthorized(SubAuthorizedMap.get(tempUser.TongkuoZongjian__c))
            ) {
            tempUser.TongkuoZongjian_copy__c = tempUser.TongkuoZongjian__c;
            tempUser.TongkuoZongjian__c
                = SubAuthorizedMap.get(tempUser.TongkuoZongjian__c).Authorizee__c ;
            IsUpdate = true;
         }
         if (tempUser.BuchangApprovalManager__c != null &&
                 SubAuthorizedMap.containsKey(tempUser.BuchangApprovalManager__c)
                 && checkSubAuthorized(SubAuthorizedMap.get(tempUser.BuchangApprovalManager__c))
            ) {
            tempUser.BuchangApprovalManager_copy__c = tempUser.BuchangApprovalManager__c;
            tempUser.BuchangApprovalManager__c
                = SubAuthorizedMap.get(tempUser.BuchangApprovalManager__c).Authorizee__c ;
            IsUpdate = true;
         }
         if (tempUser.BuchangApprovalManagerSales__c != null &&
                 SubAuthorizedMap.containsKey(tempUser.BuchangApprovalManagerSales__c)
                 && checkSubAuthorized(SubAuthorizedMap.get(tempUser.BuchangApprovalManagerSales__c))
            ) {
            tempUser.BuchangApprovalManagerSales_copy__c = tempUser.BuchangApprovalManagerSales__c;
            tempUser.BuchangApprovalManagerSales__c
                = SubAuthorizedMap.get(tempUser.BuchangApprovalManagerSales__c).Authorizee__c ;
            IsUpdate = true;
         }
         if (tempUser.JingliApprovalManager__c != null &&
                 SubAuthorizedMap.containsKey(tempUser.JingliApprovalManager__c)
                 && checkSubAuthorized(SubAuthorizedMap.get(tempUser.JingliApprovalManager__c))
            ) {
            tempUser.JingliApprovalManager_copy__c = tempUser.JingliApprovalManager__c;
            tempUser.JingliApprovalManager__c
                = SubAuthorizedMap.get(tempUser.JingliApprovalManager__c).Authorizee__c ;
            IsUpdate = true;
         }
         if (tempUser.SalesManager__c != null &&
                 SubAuthorizedMap.containsKey(tempUser.SalesManager__c)
                 && checkSubAuthorized(SubAuthorizedMap.get(tempUser.SalesManager__c))
            ) {
            tempUser.SalesManager_copy__c = tempUser.SalesManager__c;
            tempUser.SalesManager__c
                = SubAuthorizedMap.get(tempUser.SalesManager__c).Authorizee__c ;
            IsUpdate = true;
         }
         if (tempUser.ManagerId  != null &&
                 SubAuthorizedMap.containsKey(tempUser.ManagerId )
                 && checkSubAuthorized(SubAuthorizedMap.get(tempUser.ManagerId ))
            ) {
            tempUser.ManagerId_copy__c = tempUser.ManagerId ;
            tempUser.ManagerId
                = SubAuthorizedMap.get(tempUser.ManagerId ).Authorizee__c ;
            IsUpdate = true;
         }
         //SWAG-BEM9EP start
         if (tempUser.JingliEquipmentManager__c  != null &&
                 SubAuthorizedMap.containsKey(tempUser.JingliEquipmentManager__c )
                 && checkSubAuthorized(SubAuthorizedMap.get(tempUser.JingliEquipmentManager__c ))
            ) {
            tempUser.JingliEquipmentManager_copy__c = tempUser.JingliEquipmentManager__c ;
            tempUser.JingliEquipmentManager__c
                = SubAuthorizedMap.get(tempUser.JingliEquipmentManager__c ).Authorizee__c ;
            IsUpdate = true;
         }
         if (tempUser.Buzhang_Equipment_Manager__c  != null &&
                 SubAuthorizedMap.containsKey(tempUser.Buzhang_Equipment_Manager__c )
                 && checkSubAuthorized(SubAuthorizedMap.get(tempUser.Buzhang_Equipment_Manager__c ))
            ) {
            tempUser.Buzhang_Equipment_Manager_copy__c = tempUser.Buzhang_Equipment_Manager__c ;
            tempUser.Buzhang_Equipment_Manager__c
                = SubAuthorizedMap.get(tempUser.Buzhang_Equipment_Manager__c ).Authorizee__c ;
            IsUpdate = true;
         }
         //SWAG-BEM9EP end
         if (IsUpdate) {
            UpdateUserList.add(tempUser);
         }
      if (tempUser.TongkuoZongjian_copy__c != null &&
            SubAuthorizedMap.containsKey(tempUser.TongkuoZongjian_copy__c)
            && !checkSubAuthorized(SubAuthorizedMap.get(tempUser.TongkuoZongjian_copy__c))
         ) {
        tempUser.TongkuoZongjian__c = tempUser.TongkuoZongjian_copy__c;
        tempUser.TongkuoZongjian_copy__c = null;
        IsUpdate = true;
      }
      // 先更新经理部长总监改了的用户
      if (UpdateUserList.size() > 0) {
         update UpdateUserList;
      if (tempUser.BuchangApprovalManager_copy__c != null &&
            SubAuthorizedMap.containsKey(tempUser.BuchangApprovalManager_copy__c)
            && !checkSubAuthorized(SubAuthorizedMap.get(tempUser.BuchangApprovalManager_copy__c))
         ) {
        tempUser.BuchangApprovalManager__c = tempUser.BuchangApprovalManager_copy__c;
        tempUser.BuchangApprovalManager_copy__c = null;
        IsUpdate = true;
      }
      // 设置转授权功能是否授权数据
      updateSubAuthorizedList(SubAuthorizedList);
      if (tempUser.BuchangApprovalManagerSales_copy__c != null &&
            SubAuthorizedMap.containsKey(tempUser.BuchangApprovalManagerSales_copy__c)
            && !checkSubAuthorized(SubAuthorizedMap.get(tempUser.BuchangApprovalManagerSales_copy__c))
         ) {
        tempUser.BuchangApprovalManagerSales__c = tempUser.BuchangApprovalManagerSales_copy__c;
        tempUser.BuchangApprovalManagerSales_copy__c = null;
        IsUpdate = true;
      }
      if (tempUser.JingliApprovalManager_copy__c != null &&
            SubAuthorizedMap.containsKey(tempUser.JingliApprovalManager_copy__c)
            && !checkSubAuthorized(SubAuthorizedMap.get(tempUser.JingliApprovalManager_copy__c))
         ) {
        tempUser.JingliApprovalManager__c = tempUser.JingliApprovalManager_copy__c;
        tempUser.JingliApprovalManager_copy__c = null;
        IsUpdate = true;
      }
      if (tempUser.SalesManager_copy__c != null &&
            SubAuthorizedMap.containsKey(tempUser.SalesManager_copy__c)
            && !checkSubAuthorized(SubAuthorizedMap.get(tempUser.SalesManager_copy__c))
         ) {
        tempUser.SalesManager__c = tempUser.SalesManager_copy__c;
        tempUser.SalesManager_copy__c = null;
        IsUpdate = true;
      }
      if (tempUser.ManagerId_copy__c   != null &&
            SubAuthorizedMap.containsKey(tempUser.ManagerId_copy__c  )
            && !checkSubAuthorized(SubAuthorizedMap.get(tempUser.ManagerId_copy__c  ))
         ) {
        tempUser.ManagerId = tempUser.ManagerId_copy__c;
        tempUser.ManagerId_copy__c   = null;
        IsUpdate = true;
      }
      //SWAG-BEM9EP start
      if (tempUser.JingliEquipmentManager_copy__c   != null &&
            SubAuthorizedMap.containsKey(tempUser.JingliEquipmentManager_copy__c  )
            && !checkSubAuthorized(SubAuthorizedMap.get(tempUser.JingliEquipmentManager_copy__c  ))
         ) {
        tempUser.JingliEquipmentManager__c = tempUser.JingliEquipmentManager_copy__c;
        tempUser.JingliEquipmentManager_copy__c   = null;
        IsUpdate = true;
      }
      if (tempUser.Buzhang_Equipment_Manager_copy__c   != null &&
            SubAuthorizedMap.containsKey(tempUser.Buzhang_Equipment_Manager_copy__c  )
            && !checkSubAuthorized(SubAuthorizedMap.get(tempUser.Buzhang_Equipment_Manager_copy__c))
         ) {
        tempUser.Buzhang_Equipment_Manager__c = tempUser.Buzhang_Equipment_Manager_copy__c;
        tempUser.Buzhang_Equipment_Manager_copy__c   = null;
        IsUpdate = true;
      }
      //SWAG-BEM9EP end
      // 从总监部长经理赋值到备份,总监部长经理设置为转授权人
      if (tempUser.ZongjianApprovalManager__c != null &&
            SubAuthorizedMap.containsKey(tempUser.ZongjianApprovalManager__c)
            && checkSubAuthorized(SubAuthorizedMap.get(tempUser.ZongjianApprovalManager__c))
         ) {
        tempUser.ZongjianApprovalManager_copy__c = tempUser.ZongjianApprovalManager__c;
        tempUser.ZongjianApprovalManager__c
           = SubAuthorizedMap.get(tempUser.ZongjianApprovalManager__c).Authorizee__c ;
        IsUpdate = true;
      }
      if (tempUser.TongkuoZongjian__c != null &&
            SubAuthorizedMap.containsKey(tempUser.TongkuoZongjian__c)
            && checkSubAuthorized(SubAuthorizedMap.get(tempUser.TongkuoZongjian__c))
         ) {
        tempUser.TongkuoZongjian_copy__c = tempUser.TongkuoZongjian__c;
        tempUser.TongkuoZongjian__c
           = SubAuthorizedMap.get(tempUser.TongkuoZongjian__c).Authorizee__c ;
        IsUpdate = true;
      }
      if (tempUser.BuchangApprovalManager__c != null &&
            SubAuthorizedMap.containsKey(tempUser.BuchangApprovalManager__c)
            && checkSubAuthorized(SubAuthorizedMap.get(tempUser.BuchangApprovalManager__c))
         ) {
        tempUser.BuchangApprovalManager_copy__c = tempUser.BuchangApprovalManager__c;
        tempUser.BuchangApprovalManager__c
           = SubAuthorizedMap.get(tempUser.BuchangApprovalManager__c).Authorizee__c ;
        IsUpdate = true;
      }
      if (tempUser.BuchangApprovalManagerSales__c != null &&
            SubAuthorizedMap.containsKey(tempUser.BuchangApprovalManagerSales__c)
            && checkSubAuthorized(SubAuthorizedMap.get(tempUser.BuchangApprovalManagerSales__c))
         ) {
        tempUser.BuchangApprovalManagerSales_copy__c = tempUser.BuchangApprovalManagerSales__c;
        tempUser.BuchangApprovalManagerSales__c
           = SubAuthorizedMap.get(tempUser.BuchangApprovalManagerSales__c).Authorizee__c ;
        IsUpdate = true;
      }
      if (tempUser.JingliApprovalManager__c != null &&
            SubAuthorizedMap.containsKey(tempUser.JingliApprovalManager__c)
            && checkSubAuthorized(SubAuthorizedMap.get(tempUser.JingliApprovalManager__c))
         ) {
        tempUser.JingliApprovalManager_copy__c = tempUser.JingliApprovalManager__c;
        tempUser.JingliApprovalManager__c
           = SubAuthorizedMap.get(tempUser.JingliApprovalManager__c).Authorizee__c ;
        IsUpdate = true;
      }
      if (tempUser.SalesManager__c != null &&
            SubAuthorizedMap.containsKey(tempUser.SalesManager__c)
            && checkSubAuthorized(SubAuthorizedMap.get(tempUser.SalesManager__c))
         ) {
        tempUser.SalesManager_copy__c = tempUser.SalesManager__c;
        tempUser.SalesManager__c
           = SubAuthorizedMap.get(tempUser.SalesManager__c).Authorizee__c ;
        IsUpdate = true;
      }
      if (tempUser.ManagerId  != null &&
            SubAuthorizedMap.containsKey(tempUser.ManagerId )
            && checkSubAuthorized(SubAuthorizedMap.get(tempUser.ManagerId ))
         ) {
        tempUser.ManagerId_copy__c = tempUser.ManagerId ;
        tempUser.ManagerId
           = SubAuthorizedMap.get(tempUser.ManagerId ).Authorizee__c ;
        IsUpdate = true;
      }
      //SWAG-BEM9EP start
      if (tempUser.JingliEquipmentManager__c  != null &&
            SubAuthorizedMap.containsKey(tempUser.JingliEquipmentManager__c )
            && checkSubAuthorized(SubAuthorizedMap.get(tempUser.JingliEquipmentManager__c ))
         ) {
        tempUser.JingliEquipmentManager_copy__c = tempUser.JingliEquipmentManager__c ;
        tempUser.JingliEquipmentManager__c
           = SubAuthorizedMap.get(tempUser.JingliEquipmentManager__c ).Authorizee__c ;
        IsUpdate = true;
      }
      if (tempUser.Buzhang_Equipment_Manager__c  != null &&
            SubAuthorizedMap.containsKey(tempUser.Buzhang_Equipment_Manager__c )
            && checkSubAuthorized(SubAuthorizedMap.get(tempUser.Buzhang_Equipment_Manager__c ))
         ) {
        tempUser.Buzhang_Equipment_Manager_copy__c = tempUser.Buzhang_Equipment_Manager__c ;
        tempUser.Buzhang_Equipment_Manager__c
           = SubAuthorizedMap.get(tempUser.Buzhang_Equipment_Manager__c ).Authorizee__c ;
        IsUpdate = true;
      }
      //SWAG-BEM9EP end
      if (IsUpdate) {
        UpdateUserList.add(tempUser);
      }
     }
     // 先更新经理部长总监改了的用户
     if (UpdateUserList.size() > 0) {
      update UpdateUserList;
     }
     // 设置转授权功能是否授权数据
     updateSubAuthorizedList(SubAuthorizedList);
   }
   global void finish(Database.BatchableContext BC) {
      // 2021-09-17  mzy  WLIG-BYHD79  SFDC环境batch合并调查  start
      if(!System.Test.isRunningTest() &&IsNeedExecute==true){
          //batch里调用下一个batch时,希望跟原有的Schedule里面传的条数保持一致
           Id execBTId = Database.executebatch(new UpdateOPDStatusAndReasonBatch(),100);
        }
        // 2021-09-17  mzy  WLIG-BYHD79  SFDC环境batch合并调查  end
         //batch里调用下一个batch时,希望跟原有的Schedule里面传的条数保持一致
          Id execBTId = Database.executebatch(new UpdateOPDStatusAndReasonBatch(),100);
        }
        // 2021-09-17  mzy  WLIG-BYHD79  SFDC环境batch合并调查  end
   }
   // 设置转授权功能是否授权数据
   private static void updateSubAuthorizedList(list<SubAuthorized__c> SubAuthorizedList) {
      List<SubAuthorized__c> updateSubAuthorizedList = new List<SubAuthorized__c>();
      for ( SubAuthorized__c SubAuthor : SubAuthorizedList) {
         if (checkSubAuthorized(SubAuthor) && !SubAuthor.IsAuthorize__c) {
            SubAuthor.IsAuthorize__c = true;
            updateSubAuthorizedList.add(SubAuthor);
         } else if (SubAuthor.IsAuthorize__c) {
            SubAuthor.IsAuthorize__c = false;
            updateSubAuthorizedList.add(SubAuthor);
         }
     List<SubAuthorized__c> updateSubAuthorizedList = new List<SubAuthorized__c>();
     for ( SubAuthorized__c SubAuthor : SubAuthorizedList) {
      if (checkSubAuthorized(SubAuthor) && !SubAuthor.IsAuthorize__c) {
        SubAuthor.IsAuthorize__c = true;
        updateSubAuthorizedList.add(SubAuthor);
      } else if (SubAuthor.IsAuthorize__c) {
        SubAuthor.IsAuthorize__c = false;
        updateSubAuthorizedList.add(SubAuthor);
      }
      system.debug('---------4-------------updateSubAuthorizedList:' + updateSubAuthorizedList);
      // 后更新是否授权   ,如果用户更新失败,那么就不会更新是否授权
      if (updateSubAuthorizedList.size() > 0) {
         update updateSubAuthorizedList;
      }
     }
     system.debug('---------4-------------updateSubAuthorizedList:' + updateSubAuthorizedList);
     // 后更新是否授权  ,如果用户更新失败,那么就不会更新是否授权
     if (updateSubAuthorizedList.size() > 0) {
      update updateSubAuthorizedList;
     }
   }
   // 判断这个转授权是需要转审批还是需要取消转审批
   public static boolean checkSubAuthorized(SubAuthorized__c SubAuthorized) {
      if (SubAuthorized == null) {
         return false;
      }
      Date today = Date.today();
      Date tomorrow = today.addDays(1);
      Date twoDayLater = today.addDays(2);
      if (SubAuthorized.Status__c != null &&
              SubAuthorized.Status__c.equals('已批准') && SubAuthorized.IsAuthorize__c == false
              && SubAuthorized.AuthorizedStartDate__c <=  tomorrow
              && SubAuthorized.AuthorizedEndDate__c >=  twoDayLater
         ) {
         return true;
      }
     if (SubAuthorized == null) {
      return false;
     }
     Date today = Date.today();
     Date tomorrow = today.addDays(1);
     Date twoDayLater = today.addDays(2);
     if (SubAuthorized.Status__c != null &&
           SubAuthorized.Status__c.equals('已批准') && SubAuthorized.IsAuthorize__c == false
           && SubAuthorized.AuthorizedStartDate__c <=  tomorrow
           && SubAuthorized.AuthorizedEndDate__c >=  twoDayLater
       ) {
      return true;
     }
     return false;
   }
}
  }