Bläddra i källkod

Merge remote-tracking branch 'origin/dev_v1.0.1' into dev_v1.0.1

wangliang 1 år sedan
förälder
incheckning
cba5f0a932

+ 128 - 139
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBCrmServiceImpl.java

@@ -41,27 +41,37 @@ import java.util.stream.Stream;
  */
 @Service
 public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements TBCrmService {
+
     @Resource
     private TBServiceService tbServiceService;
+
     @Resource
     private TBUserArchivesAllocationService tbUserArchivesAllocationService;
+
     @Resource
     private SysRoleService sysRoleService;
+
     @Resource
     private TBUserArchivesService tbUserArchivesService;
+
     @Resource
     private TBServiceRegionDetailService tbServiceRegionDetailService;
+
     @Resource
     private SysUserService sysUserService;
+
     @Resource
     private FxxkApiUtils fxxkApiUtils;
+
     @Resource
     private SysCustomService sysCustomService;
+
     @Resource
     private TBProductService tbProductService;
 
     @Override
-    public IPage<CrmServiceResult> findServiceScopePage(Long serviceUnitId, String city, ProductTypeEnum productType, String customName, Boolean bindStatus, Integer pageNumber, Integer pageSize) {
+    public IPage<CrmServiceResult> findServiceScopePage(Long serviceUnitId, String city, ProductTypeEnum productType,
+            String customName, Boolean bindStatus, Integer pageNumber, Integer pageSize) {
         if (city != null && city.length() > 0) {
             city = SystemConstant.translateSpecificSign(city);
         }
@@ -70,18 +80,21 @@ public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements
         }
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUser.getId());
-        return this.baseMapper.findServiceScopePage(new Page<>(pageNumber, pageSize), serviceUnitId, city, productType, customName, bindStatus, dpr);
+        return this.baseMapper.findServiceScopePage(new Page<>(pageNumber, pageSize), serviceUnitId, city, productType,
+                customName, bindStatus, dpr);
     }
 
     @Override
-    public IPage<CrmServiceResult> findUnbindOrderPage(Long crmUserId, ProductTypeEnum productType, String customName, String crmNo, Long startTime, Long endTime, Integer pageNumber, Integer pageSize) {
+    public IPage<CrmServiceResult> findUnbindOrderPage(Long crmUserId, ProductTypeEnum productType, String customName,
+            String crmNo, Long startTime, Long endTime, Integer pageNumber, Integer pageSize) {
         if (customName != null && customName.length() > 0) {
             customName = SystemConstant.translateSpecificSign(customName);
         }
         if (crmNo != null && crmNo.length() > 0) {
             crmNo = SystemConstant.translateSpecificSign(crmNo);
         }
-        return this.baseMapper.findUnbindOrderPage(new Page<>(pageNumber, pageSize), crmUserId, productType, customName, crmNo, startTime, endTime);
+        return this.baseMapper.findUnbindOrderPage(new Page<>(pageNumber, pageSize), crmUserId, productType, customName,
+                crmNo, startTime, endTime);
     }
 
     @Override
@@ -136,7 +149,8 @@ public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements
     public CrmSubTotalResult findCrmSubTotalData(Long serviceUnitId, String city, ProductTypeEnum productType, String customName, Boolean bindStatus) {
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUser.getId());
-        List<CrmServiceResult> crmServiceResultList = this.baseMapper.findServiceScopeList(serviceUnitId, city, productType, customName, bindStatus, dpr);
+        List<CrmServiceResult> crmServiceResultList = this.baseMapper.findServiceScopeList(serviceUnitId, city,
+                productType, customName, bindStatus, dpr);
         int totalCrmCount = crmServiceResultList.size();
         int bindCrmCount = 0;
         int unbindCrmCount = 0;
@@ -153,7 +167,8 @@ public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements
 
     @Override
     public TBCrm findByCrmNo(String crmNo) {
-        List<TBCrm> tbCrmList = this.list(new QueryWrapper<TBCrm>().lambda().eq(TBCrm::getCrmNo, crmNo).eq(TBCrm::getEnable, true));
+        List<TBCrm> tbCrmList = this.list(
+                new QueryWrapper<TBCrm>().lambda().eq(TBCrm::getCrmNo, crmNo).eq(TBCrm::getEnable, true));
         if (CollectionUtils.isEmpty(tbCrmList)) {
             throw ExceptionResultEnum.ERROR.exception("派单不存在[" + crmNo + "]");
         }
@@ -164,28 +179,31 @@ public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements
     }
 
     @Override
-    public IPage<TBCrmResult> query(IPage<Map> iPage, Long serviceId,Boolean isBind, Long leadId, Long crmUserId, ProductTypeEnum type, String custom, String crmNo, Long startTime, Long endTime) {
-        if (custom != null && custom.length() > 0){
+    public IPage<TBCrmResult> query(IPage<Map> iPage, Long serviceId, Boolean isBind, Long leadId, Long crmUserId,
+            ProductTypeEnum type, String custom, String crmNo, Long startTime, Long endTime) {
+        if (custom != null && custom.length() > 0) {
             custom = SystemConstant.translateSpecificSign(custom);
         }
-        if (crmNo != null && crmNo.length() > 0){
+        if (crmNo != null && crmNo.length() > 0) {
             crmNo = SystemConstant.translateSpecificSign(crmNo);
         }
-        return this.baseMapper.query(iPage, serviceId,isBind, leadId, crmUserId, Objects.nonNull(type) ? type.name() : null, custom, crmNo, startTime, endTime);
+        return this.baseMapper.query(iPage, serviceId, isBind, leadId, crmUserId,
+                Objects.nonNull(type) ? type.name() : null, custom, crmNo, startTime, endTime);
     }
 
     @Override
-    public int count(Long serviceId, Boolean isBind, Long leadId, Long crmUserId, ProductTypeEnum type, String custom, String crmNo, Long startTime, Long endTime) {
-        if (custom != null && custom.length() > 0){
+    public int count(Long serviceId, Boolean isBind, Long leadId, Long crmUserId, ProductTypeEnum type, String custom,
+            String crmNo, Long startTime, Long endTime) {
+        if (custom != null && custom.length() > 0) {
             custom = SystemConstant.translateSpecificSign(custom);
         }
-        if (crmNo != null && crmNo.length() > 0){
+        if (crmNo != null && crmNo.length() > 0) {
             crmNo = SystemConstant.translateSpecificSign(crmNo);
         }
-        return this.baseMapper.count(serviceId,isBind, leadId, crmUserId, Objects.nonNull(type) ? type.name() : null, custom, crmNo, startTime, endTime);
+        return this.baseMapper.count(serviceId, isBind, leadId, crmUserId, Objects.nonNull(type) ? type.name() : null,
+                custom, crmNo, startTime, endTime);
     }
 
-
     /**
      * 新增修改派单信息表
      *
@@ -277,15 +295,14 @@ public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements
             CrmProjectResult crmProjectResult = crmProjectResults.get(0);
             String tbCrmNo = crmProjectResult.getCrmNo();
 
-            List<TBUserArchivesAllocation> archivesAllocationList = tbUserArchivesAllocationService.list(new QueryWrapper<TBUserArchivesAllocation>()
-                    .lambda().eq(TBUserArchivesAllocation::getCrmNo, tbCrmNo));
+            List<TBUserArchivesAllocation> archivesAllocationList = tbUserArchivesAllocationService.list(
+                    new QueryWrapper<TBUserArchivesAllocation>().lambda().eq(TBUserArchivesAllocation::getCrmNo, tbCrmNo));
 
             RoleResult effectRole = sysRoleService.findRoleInfoByArchivesType(RoleTypeEnum.EFFECT_ENGINEER);
             Long effectRoleId = effectRole.getRoleId();
 
             List<UserArchivesDto> effectEngineerList = archivesAllocationList.stream()
-                    .filter(e -> effectRoleId.equals(e.getRoleId()))
-                    .flatMap(e -> {
+                    .filter(e -> effectRoleId.equals(e.getRoleId())).flatMap(e -> {
                         UserArchivesDto dto = new UserArchivesDto();
                         Long userArchivesId = e.getArchivesId();
                         dto.setUserArchivesId(userArchivesId);
@@ -297,8 +314,7 @@ public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements
             RoleResult assistant = sysRoleService.findRoleInfoByArchivesType(RoleTypeEnum.ASSISTANT_ENGINEER);
             Long assistantRoleId = assistant.getRoleId();
             List<UserArchivesDto> assistantEngineerList = archivesAllocationList.stream()
-                    .filter(e -> assistantRoleId.equals(e.getRoleId()))
-                    .flatMap(e -> {
+                    .filter(e -> assistantRoleId.equals(e.getRoleId())).flatMap(e -> {
                         UserArchivesDto dto = new UserArchivesDto();
                         Long userArchivesId = e.getArchivesId();
                         dto.setUserArchivesId(userArchivesId);
@@ -313,12 +329,11 @@ public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements
         return result;
     }
 
-
     @Override
     public SopCrmInfo findSopCrmInfoBySop(String sopNo) {
         List<SopCrmInfo> sopCrmInfoList = this.baseMapper.findSopCrmInfoBySopNo(sopNo);
         if (CollectionUtils.isEmpty(sopCrmInfoList)) {
-//            throw ExceptionResultEnum.ERROR.exception(String.format("未找到sop单号为[%s]的派单信息", sopNo));
+            //            throw ExceptionResultEnum.ERROR.exception(String.format("未找到sop单号为[%s]的派单信息", sopNo));
             return null;
         } else if (sopCrmInfoList.size() > 1) {
             throw ExceptionResultEnum.ERROR.exception(String.format("sop单号为[%s]的派单信息异常", sopNo));
@@ -337,33 +352,28 @@ public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         TBCrm tbCrm = this.findByCrmNo(crmNo);
         switch (status) {
-            case UN_PUBLISH: // 撤回
-                tbCrm.setStatus(CrmStatusEnum.UN_PUBLISH);
-                break;
-            case PUBLISH: // 发布
-                tbCrm.setStatus(CrmStatusEnum.PUBLISH);
-                tbCrm.setPublishUserId(requestUser.getId());
-                tbCrm.setPublishTime(System.currentTimeMillis());
-                break;
-            case FINISH: // 完结
-                tbCrm.setStatus(CrmStatusEnum.FINISH);
-                // crm完结 释放工程师资源
-                List<CrmArchivesAllocationResult> crmArchivesAllocationResultList = tbUserArchivesAllocationService.findAllocationByCrmNo(crmNo);
-                List<Long> engineerArchivesIdList = crmArchivesAllocationResultList
-                        .stream()
-                        .filter(e -> !RoleTypeEnum.REGION_COORDINATOR.equals(e.getType()))
-                        .map(CrmArchivesAllocationResult::getArchivesId)
-                        .distinct()
-                        .collect(Collectors.toList());
-
-                if (CollectionUtils.isNotEmpty(engineerArchivesIdList)) {
-                    UpdateWrapper<TBUserArchives> updateWrapper = new UpdateWrapper<>();
-                    updateWrapper.lambda()
-                            .set(TBUserArchives::getStatus, UserArchivesStatusEnum.FREE)
-                            .in(TBUserArchives::getId, engineerArchivesIdList);
-                    tbUserArchivesService.update(updateWrapper);
-                }
-                break;
+        case UN_PUBLISH: // 撤回
+            tbCrm.setStatus(CrmStatusEnum.UN_PUBLISH);
+            break;
+        case PUBLISH: // 发布
+            tbCrm.setStatus(CrmStatusEnum.PUBLISH);
+            tbCrm.setPublishUserId(requestUser.getId());
+            tbCrm.setPublishTime(System.currentTimeMillis());
+            break;
+        case FINISH: // 完结
+            tbCrm.setStatus(CrmStatusEnum.FINISH);
+            // crm完结 释放工程师资源
+            List<CrmArchivesAllocationResult> crmArchivesAllocationResultList = tbUserArchivesAllocationService.findAllocationByCrmNo(
+                    crmNo);
+            List<Long> engineerArchivesIdList = crmArchivesAllocationResultList.stream().filter(e -> !RoleTypeEnum.REGION_COORDINATOR.equals(e.getType()))
+                    .map(CrmArchivesAllocationResult::getArchivesId).distinct().collect(Collectors.toList());
+
+            if (CollectionUtils.isNotEmpty(engineerArchivesIdList)) {
+                UpdateWrapper<TBUserArchives> updateWrapper = new UpdateWrapper<>();
+                updateWrapper.lambda().set(TBUserArchives::getStatus, UserArchivesStatusEnum.FREE).in(TBUserArchives::getId, engineerArchivesIdList);
+                tbUserArchivesService.update(updateWrapper);
+            }
+            break;
         }
         this.updateById(tbCrm);
     }
@@ -383,47 +393,39 @@ public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements
 
         if (oldServiceUnitId != null && oldServiceUnitId > 0) {
             // 之前派单有划定在服务单元 -> 解绑派单所有资源信息
-            List<TBUserArchivesAllocation> dbAllocationList = tbUserArchivesAllocationService.list(new QueryWrapper<TBUserArchivesAllocation>().lambda()
-                    .eq(TBUserArchivesAllocation::getCrmNo, crmNo)
-                    .eq(TBUserArchivesAllocation::getServiceId, oldServiceUnitId));
+            List<TBUserArchivesAllocation> dbAllocationList = tbUserArchivesAllocationService.list(
+                    new QueryWrapper<TBUserArchivesAllocation>().lambda().eq(TBUserArchivesAllocation::getCrmNo, crmNo).eq(TBUserArchivesAllocation::getServiceId, oldServiceUnitId));
 
             if (CollectionUtils.isNotEmpty(dbAllocationList)) {
                 // 释放工程师资源
                 List<Long> archivesIdList = dbAllocationList.stream().map(TBUserArchivesAllocation::getArchivesId).distinct().collect(Collectors.toList());
                 if (CollectionUtils.isNotEmpty(archivesIdList)) {
                     UpdateWrapper<TBUserArchives> archivesUpdateWrapper = new UpdateWrapper<>();
-                    archivesUpdateWrapper.lambda()
-                            .in(TBUserArchives::getId, archivesIdList)
+                    archivesUpdateWrapper.lambda().in(TBUserArchives::getId, archivesIdList)
                             .set(TBUserArchives::getStatus, UserArchivesStatusEnum.FREE);
                     tbUserArchivesService.update(archivesUpdateWrapper);
                 }
                 // 删除之前的派单分配详情
-                tbUserArchivesAllocationService.removeByIds(dbAllocationList.stream().map(TBUserArchivesAllocation::getId).distinct().collect(Collectors.toList()));
+                tbUserArchivesAllocationService.removeByIds(
+                        dbAllocationList.stream().map(TBUserArchivesAllocation::getId).distinct().collect(Collectors.toList()));
             }
             UpdateWrapper<TBCrm> updateWrapper = new UpdateWrapper<>();
-            updateWrapper.lambda()
-                    .eq(TBCrm::getId, tbCrm.getId())
-                    .set(TBCrm::getServiceId, null)
-                    .set(TBCrm::getLeadId, null)
-                    .set(TBCrm::getRegionId, null)
-                    .set(TBCrm::getRegionDetailId, null)
+            updateWrapper.lambda().eq(TBCrm::getId, tbCrm.getId()).set(TBCrm::getServiceId, null)
+                    .set(TBCrm::getLeadId, null).set(TBCrm::getRegionId, null).set(TBCrm::getRegionDetailId, null)
                     .set(TBCrm::getRegionCoordinatorId, null);
             this.update(updateWrapper);
         }
         if (newServiceUnitId != null && newServiceUnitId > 0) {
             // 为派单划定的新服务单元绑定大区信息
             UpdateWrapper<TBCrm> bindServiceWrapper = new UpdateWrapper<>();
-            bindServiceWrapper.lambda()
-                    .eq(TBCrm::getId, tbCrm.getId())
-                    .set(TBCrm::getServiceId, newServiceUnitId);
+            bindServiceWrapper.lambda().eq(TBCrm::getId, tbCrm.getId()).set(TBCrm::getServiceId, newServiceUnitId);
             this.update(bindServiceWrapper);
 
-            ServiceRegionDetailResult regionDetail = tbServiceRegionDetailService.findRegionDetail(newServiceUnitId, crmNo);
+            ServiceRegionDetailResult regionDetail = tbServiceRegionDetailService.findRegionDetail(newServiceUnitId,
+                    crmNo);
             if (Objects.nonNull(regionDetail)) {
                 UpdateWrapper<TBCrm> matchWrapper = new UpdateWrapper<>();
-                matchWrapper.lambda()
-                        .eq(TBCrm::getId, tbCrm.getId())
-                        .set(TBCrm::getLeadId, regionDetail.getLeadId())
+                matchWrapper.lambda().eq(TBCrm::getId, tbCrm.getId()).set(TBCrm::getLeadId, regionDetail.getLeadId())
                         .set(TBCrm::getRegionId, regionDetail.getServiceRegionId())
                         .set(TBCrm::getRegionDetailId, regionDetail.getServiceRegionDetailId());
                 this.update(matchWrapper);
@@ -434,19 +436,30 @@ public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements
     @Transactional
     @Override
     public Map<String, Object> syncCrmFromFxxk(Map<String, Object> map) {
+        SysUser requestUser = (SysUser) map.get(SystemConstant.USER);
+        // 已有派单信息
+        List<TBCrm> tbCrmList = this.list();
+        List<String> crmNoList = tbCrmList.stream().map(TBCrm::getCrmNo).collect(Collectors.toList());
+
         List<String> errorMsgList = new ArrayList<>();
         List<FxxkCrm> fxxkCrmList = fxxkApiUtils.findCustomList();
         int totalCount = fxxkCrmList.size();
+        // 成功同步的派单数
         int successCount = 0;
+        // 已有的派单数(派单号相同不重新同步)
+        int alreadyCount = 0;
         try {
             for (FxxkCrm fxxkCrm : fxxkCrmList) {
                 String basicInfoMissingError = "";
-
                 String crmNo = fxxkCrm.getCrmNo();
+                if (crmNoList.contains(crmNo)) {
+                    alreadyCount++;
+                    continue;
+                }
                 String crmName = fxxkCrm.getCrmName();
                 Long beginTime = fxxkCrm.getBeginTime();
                 String managerName = fxxkCrm.getManagerName();
-//                String managerMobileNumber = fxxkCrm.getManagerMobileNumber();
+                String managerMobileNumber = fxxkCrm.getManagerMobileNumber();
                 ProductTypeEnum customType = fxxkCrm.getCustomType();
                 String customName = fxxkCrm.getCustomName();
                 Long examStartTime = fxxkCrm.getExamStartTime();
@@ -461,9 +474,9 @@ public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements
                 if (managerName == null || managerName.length() == 0) {
                     basicInfoMissingError = basicInfoMissingError + "缺少客户经理";
                 }
-//                if (managerMobileNumber == null || managerMobileNumber.length() == 0) {
-//                    basicInfoMissingError = basicInfoMissingError + "缺少客户经理电话";
-//                }
+                if (managerMobileNumber == null || managerMobileNumber.length() == 0) {
+                    basicInfoMissingError = basicInfoMissingError + "缺少客户经理电话";
+                }
                 if (customType == null) {
                     basicInfoMissingError = basicInfoMissingError + "缺少客户类型或客户类型不为['高校教务处'或'研究生招办']";
                 }
@@ -486,48 +499,30 @@ public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements
 
                     // 客户经理校验
                     Long crmUserId = null;
-//                    SysUser sysUser = sysUserService.getOne(new QueryWrapper<SysUser>().lambda()
-//                            .eq(SysUser::getMobileNumber, managerMobileNumber)
-//                            .eq(SysUser::getRealName, managerName));
-//                    if (Objects.isNull(sysUser) || !sysUser.getEnable()) {
-//                        matchInfoError = matchInfoError + String.format("纷享销客中的客户经理[%s(%s)]在质控平台不存在或已禁用(姓名 + 手机号)\n", managerName, managerMobileNumber);
-//                    } else {
-//                        List<RoleDto> roleDtoList = sysRoleService.listRolesByUserId(sysUser.getId());
-//                        if (roleDtoList.stream().noneMatch(e -> RoleTypeEnum.ACCOUNT_MANAGER.equals(e.getType()))) {
-//                            matchInfoError = matchInfoError + String.format("纷享销客中的客户经理[%s(%s)]在质控平台缺少[%s]角色)\n", managerName, managerMobileNumber, RoleTypeEnum.ACCOUNT_MANAGER);
-//                        } else {
-//                            crmUserId = sysUser.getId();
-//                        }
-//                    }
-                    List<SysUser> sysUserList = sysUserService.list(new QueryWrapper<SysUser>().lambda().eq(SysUser::getRealName,managerName));
-                    if (CollectionUtils.isEmpty(sysUserList)){
-                        matchInfoError = matchInfoError + String.format("纷享销客中的客户经理[%s]在质控平台不存在或已禁用(姓名)\n", managerName);
-                    } else if (sysUserList.size() > 1){
-                        matchInfoError = matchInfoError + String.format("纷享销客中的客户经理[%s]在质控平台对应多个(可能是重名)\n", managerName);
+                    SysUser sysUser = sysUserService.getOne(
+                            new QueryWrapper<SysUser>().lambda().eq(SysUser::getMobileNumber, managerMobileNumber).eq(SysUser::getRealName, managerName));
+                    if (Objects.isNull(sysUser) || !sysUser.getEnable()) {
+                        matchInfoError = matchInfoError + String.format("纷享销客中的客户经理[%s(%s)]在质控平台不存在或已禁用(姓名 + 手机号)\n",
+                                managerName, managerMobileNumber);
                     } else {
-                        SysUser sysUser = sysUserList.get(0);
-                        if (Objects.isNull(sysUser) || !sysUser.getEnable()) {
-                            matchInfoError = matchInfoError + String.format("纷享销客中的客户经理[%s]在质控平台不存在或已禁用(姓名)\n", managerName);
+                        List<RoleDto> roleDtoList = sysRoleService.listRolesByUserId(sysUser.getId());
+                        if (roleDtoList.stream().noneMatch(e -> RoleTypeEnum.ACCOUNT_MANAGER.equals(e.getType()))) {
+                            matchInfoError =
+                                    matchInfoError + String.format("纷享销客中的客户经理[%s(%s)]在质控平台缺少[%s]角色)\n", managerName,
+                                            managerMobileNumber, RoleTypeEnum.ACCOUNT_MANAGER);
                         } else {
-                            List<RoleDto> roleDtoList = sysRoleService.listRolesByUserId(sysUser.getId());
-                            if (roleDtoList.stream().noneMatch(e -> RoleTypeEnum.ACCOUNT_MANAGER.equals(e.getType()))) {
-                                matchInfoError = matchInfoError + String.format("纷享销客中的客户经理[%s]在质控平台缺少[%s]角色)\n", managerName, RoleTypeEnum.ACCOUNT_MANAGER);
-                            } else {
-                                crmUserId = sysUser.getId();
-                            }
+                            crmUserId = sysUser.getId();
                         }
                     }
 
                     // 客户名称校验
                     Long customId = null;
-                    List<SysCustom> sysCustomList = sysCustomService.list(new QueryWrapper<SysCustom>()
-                            .lambda()
-                            .eq(SysCustom::getName, customName)
-                            .eq(SysCustom::getType, customType)
-                            .eq(SysCustom::getEnable, true));
+                    List<SysCustom> sysCustomList = sysCustomService.list(
+                            new QueryWrapper<SysCustom>().lambda().eq(SysCustom::getName, customName).eq(SysCustom::getType, customType).eq(SysCustom::getEnable, true));
 
                     if (CollectionUtils.isEmpty(sysCustomList)) {
-                        matchInfoError = matchInfoError + String.format("纷享销客中的客户[%s(%s)]在质控平台不存在或已禁用(客户名称 + 客户类型)\n", customName, customType.getTitle());
+                        matchInfoError = matchInfoError + String.format("纷享销客中的客户[%s(%s)]在质控平台不存在或已禁用(客户名称 + 客户类型)\n",
+                                customName, customType.getTitle());
                     } else if (sysCustomList.size() > 1) {
                         throw ExceptionResultEnum.ERROR.exception("客户数据异常 :客户名称-客户类型 不唯一\n");
                     } else {
@@ -537,53 +532,47 @@ public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements
 
                     // 实施产品校验
                     Long productId = null;
-                    List<TBProduct> tbProductList = tbProductService.list(new QueryWrapper<TBProduct>()
-                            .lambda()
-                            .eq(TBProduct::getCode, customType)
-                            .eq(TBProduct::getEnable, true));
+                    List<TBProduct> tbProductList = tbProductService.list(
+                            new QueryWrapper<TBProduct>().lambda().eq(TBProduct::getEnable, true));
                     if (CollectionUtils.isEmpty(tbProductList)) {
-                        matchInfoError = matchInfoError + String.format("质控平台客户类型为[%s]的产品不存在\n", customType);
+                        matchInfoError = matchInfoError + "质控平台缺少可用产品\n";
                     } else {
                         productId = tbProductList.get(0).getId();
                     }
-
-
                     if (matchInfoError.length() > 0) {
                         // 质控平台基础信息缺失异常 -> 补充质控平台系统的派单相关信息
-                        matchInfoError = String.format("纷享销客派单[%s]中的相关信息在质控平台中缺失,请先补充质控平台系统的派单相关信息: %s \n", crmNo, matchInfoError);
+                        matchInfoError = String.format("纷享销客派单[%s]中的相关信息在质控平台中缺失,请先补充质控平台系统的派单相关信息: %s \n", crmNo,
+                                matchInfoError);
                         errorMsgList.add(matchInfoError);
                     } else {
-                        // 没有任何异常 -> 组装信息(派单号重复的不同步)
-                        List<TBCrm> tbCrmList = this.list(new QueryWrapper<TBCrm>()
-                                .lambda()
-                                .eq(TBCrm::getCrmNo, crmNo)
-                                .eq(TBCrm::getSync, true));
-
-                        if (CollectionUtils.isEmpty(tbCrmList)) {
-                            // 新增
-                            TBCrm tbCrm = new TBCrm();
-                            tbCrm.setCrmNo(crmNo);
-                            tbCrm.setName(crmName);
-                            tbCrm.setBeginTime(beginTime);
-                            tbCrm.setCrmUserId(crmUserId);
-                            tbCrm.setCustomId(customId);
-                            tbCrm.setExamStartTime(examStartTime);
-                            tbCrm.setExamEndTime(examEndTime);
-                            tbCrm.setProductId(productId);
-                            tbCrm.setSync(true);
-                            tbCrm.setEnable(true);
-                            tbCrm.setStatus(CrmStatusEnum.UN_PUBLISH);
-                            this.save(tbCrm);
-                        }
+                        // 新增
+                        TBCrm tbCrm = new TBCrm();
+                        tbCrm.setCrmNo(crmNo);
+                        tbCrm.setName(crmName);
+                        tbCrm.setBeginTime(beginTime);
+                        tbCrm.setCrmUserId(crmUserId);
+                        tbCrm.setCustomId(customId);
+                        tbCrm.setExamStartTime(examStartTime);
+                        tbCrm.setExamEndTime(examEndTime);
+                        tbCrm.setProductId(productId);
+                        tbCrm.setSync(true);
+                        tbCrm.setEnable(true);
+                        tbCrm.setStatus(CrmStatusEnum.UN_PUBLISH);
+                        tbCrm.insertInfo(requestUser.getId());
+                        tbCrm.updateInfo(requestUser.getId());
+                        this.save(tbCrm);
                         successCount++;
                     }
                 }
             }
+            String errorMsg = "";
             if (errorMsgList.size() > 0) {
-                throw ExceptionResultEnum.ERROR.exception(String.join(";\n", errorMsgList));
+                errorMsg = String.join(";\n", errorMsgList);
             }
             map.put(SystemConstant.SUCCESS, successCount);
-            map.put(SystemConstant.RESULT_ERROR, totalCount - successCount);
+            map.put(SystemConstant.RESULT_ERROR, totalCount - successCount - alreadyCount);
+            map.put(SystemConstant.ALREADY_COUNT, alreadyCount);
+            map.put(SystemConstant.ERROR_MSG, errorMsg);
             return map;
         } catch (Exception e) {
             throw ExceptionResultEnum.ERROR.exception(e.getMessage());

+ 18 - 3
sop-business/src/main/java/com/qmth/sop/business/sync/FxxkApiUtils.java

@@ -12,6 +12,7 @@ import com.qmth.sop.common.enums.ExceptionResultEnum;
 import com.qmth.sop.common.enums.ProductTypeEnum;
 import com.qmth.sop.common.util.HttpUtil;
 import com.qmth.sop.common.util.JacksonUtil;
+import org.apache.commons.collections4.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
@@ -261,6 +262,9 @@ public class FxxkApiUtils {
             JSONArray dataList = data.getJSONArray("dataList");
 
             List<FxxkCrm> fxxkCrmList = new ArrayList<>();
+
+            // 纷享销客用户map
+            Map<String,FxxkUser> fxxkUserMap = new HashMap<>();
             for (int i = 0; i < dataList.size(); i++) {
                 JSONObject cell = dataList.getJSONObject(i);
 
@@ -268,9 +272,20 @@ public class FxxkApiUtils {
                 String crmNo = cell.getString("name");
                 Long beginTime = cell.getLong("create_time");
 
-                JSONObject ownerR = cell.getJSONObject("owner__r");
-                String managerName = ownerR.getString("name");
-                String managerMobileNumber = ownerR.getString("mobile");
+                JSONArray ownerArr = cell.getJSONArray("owner");
+                if (CollectionUtils.isEmpty(ownerArr)){
+                    throw ExceptionResultEnum.ERROR.exception("获取自定义对象用户uuid失败");
+                }
+                String userId = ownerArr.getString(0);
+                FxxkUser fxxkUser;
+                if (fxxkUserMap.containsKey(userId)){
+                    fxxkUser = fxxkUserMap.get(userId);
+                } else {
+                    fxxkUser = this.findFxxkUserById(userId);
+                    fxxkUserMap.put(userId,fxxkUser);
+                }
+                String managerName = fxxkUser.getFullName();
+                String managerMobileNumber = fxxkUser.getPhone();
 
                 String customTypeStr = cell.getString("field_spOcm__c");
                 ProductTypeEnum productType = null;

+ 20 - 4
sop-business/src/main/java/com/qmth/sop/business/templete/execute/AsyncFxxkCrmSyncService.java

@@ -28,20 +28,25 @@ import java.util.StringJoiner;
  */
 @Service
 public class AsyncFxxkCrmSyncService extends AsyncSyncDataTaskTemplate {
+
     private final static Logger log = LoggerFactory.getLogger(AsyncFxxkCrmSyncService.class);
+
     @Resource
     TaskLogicService taskLogicService;
 
     @Resource
     TBTaskService tbTaskService;
 
-
     public static final String OBJ_TITLE = "纷享销客派单信息";
 
+    public static final String FINISH_ALREADY_SIZE = "条数据,之前已处理(不需要处理)";
+
     @Override
     public Result syncData(Map<String, Object> map) throws Exception {
         TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
-        StringJoiner stringJoinerSummary = new StringJoiner("\n").add(MessageFormat.format("{0}{1}{2}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), BEGIN_TITLE, OBJ_TITLE));
+        StringJoiner stringJoinerSummary = new StringJoiner("\n").add(
+                MessageFormat.format("{0}{1}{2}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN),
+                        BEGIN_TITLE, OBJ_TITLE));
         tbTask.setStatus(TaskStatusEnum.RUNNING);
         tbTask.setSummary(stringJoinerSummary.toString());
         tbTaskService.updateById(tbTask);
@@ -50,11 +55,22 @@ public class AsyncFxxkCrmSyncService extends AsyncSyncDataTaskTemplate {
             Map<String, Object> result = taskLogicService.executeSyncFxxkData(map);
             int successSize = Integer.parseInt(String.valueOf(result.get(SystemConstant.SUCCESS)));
             int errorSize = Integer.parseInt(String.valueOf(result.get(SystemConstant.RESULT_ERROR)));
-            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}{4}{5}{6}{7}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), FINISH_TITLE, (successSize + errorSize), FINISH_TOTAL_SIZE, successSize, FINISH_SUCCESS_SIZE, errorSize, FINISH_ERROR_SIZE));
+            int alreadyCount = Integer.parseInt(String.valueOf(result.get(SystemConstant.ALREADY_COUNT)));
+            String errorMsg = String.valueOf(result.get(SystemConstant.ERROR_MSG));
+
+            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}",
+                    DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), FINISH_TITLE,
+                    (successSize + errorSize + alreadyCount), FINISH_ALREADY_SIZE, alreadyCount, FINISH_TOTAL_SIZE,
+                    successSize, FINISH_SUCCESS_SIZE, errorSize, FINISH_ERROR_SIZE));
+            if (errorMsg != null && errorMsg.length() > 0) {
+                stringJoinerSummary.add(MessageFormat.format("{0}{1}", EXCEPTION_DATA, errorMsg));
+            }
             tbTask.setResult(TaskResultEnum.SUCCESS);
         } catch (Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);
-            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), EXCEPTION_TITLE, EXCEPTION_DATA, e.getMessage()));
+            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}",
+                    DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), EXCEPTION_TITLE, EXCEPTION_DATA,
+                    e.getMessage()));
             tbTask.setResult(TaskResultEnum.ERROR);
             if (e instanceof ApiException) {
                 ResultUtil.error((ApiException) e, ((ApiException) e).getCode(), e.getMessage());

+ 16 - 2
sop-business/src/main/java/com/qmth/sop/business/templete/syncData/AsyncSyncDataTaskTemplate.java

@@ -28,17 +28,29 @@ import java.util.StringJoiner;
  * @Date: 2023-10-27
  */
 public abstract class AsyncSyncDataTaskTemplate {
+
     private final static Logger log = LoggerFactory.getLogger(AsyncSyncDataTaskTemplate.class);
+
     public static final String BEGIN_TITLE = "->开始准备处理同步的";
+
     public static final String EXCEPTION_TITLE = "->数据处理发生异常!";
+
     public static final String EXCEPTION_DATA = "错误信息:";
+
     public static final String FINISH_TITLE = "->数据处理结束,共需处理";
+
     public static final String SUCCESS_TITLE = "条数据,其中成功处理了";
+
     public static final String FINISH_SIZE = "条数据。";
+
     public static final String EXCEPTION_CREATE_TXT_TITLE = "->创建导出日志时发生异常!";
+
     public static final String ERROR_DATA = "->失败原因如下:";
+
     public static final String FINISH_TOTAL_SIZE = "条数据,成功";
+
     public static final String FINISH_SUCCESS_SIZE = "条数据,失败";
+
     public static final String FINISH_ERROR_SIZE = "条数据";
 
     /**
@@ -64,7 +76,8 @@ public abstract class AsyncSyncDataTaskTemplate {
         } catch (Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);
             StringJoiner stringJoinerSummary = new StringJoiner("").add(tbTask.getSummary()).add("\n");
-            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), EXCEPTION_CREATE_TXT_TITLE, EXCEPTION_DATA, e.getMessage()));
+            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), EXCEPTION_CREATE_TXT_TITLE,
+                    EXCEPTION_DATA, e.getMessage()));
 
             tbTask.setSummary(stringJoinerSummary.toString());
             tbTask.setResult(TaskResultEnum.ERROR);
@@ -76,7 +89,8 @@ public abstract class AsyncSyncDataTaskTemplate {
         } finally {
             TBTaskService tbTaskService = SpringContextHolder.getBean(TBTaskService.class);
             tbTask.setStatus(TaskStatusEnum.FINISH);
+            tbTask.updateInfo(tbTask.getCreateId());
             tbTaskService.updateById(tbTask);
         }
     }
-}
+}

+ 2 - 0
sop-common/src/main/java/com/qmth/sop/common/contant/SystemConstant.java

@@ -42,6 +42,8 @@ public class SystemConstant {
     public static final String CHARSET_GBK = "gbk";
     public static final String SUCCESS = "success";
     public static final String RESULT_ERROR = "error";
+    public static final String ALREADY_COUNT = "alreadyCount";
+    public static final String ERROR_MSG = "errorMsg";
     public static final String UPDATE_TIME = "updateTime";
     public static final String SESSION = "session:";
     public static final String USER = "account";

+ 59 - 53
sop-task/src/main/java/com/qmth/sop/task/job/service/impl/JobServiceImpl.java

@@ -34,6 +34,7 @@ import java.util.*;
  */
 @Service
 public class JobServiceImpl implements JobService {
+
     private final static Logger log = LoggerFactory.getLogger(JobServiceImpl.class);
 
     @Resource
@@ -73,53 +74,54 @@ public class JobServiceImpl implements JobService {
     @Transactional
     public void flowTaskRemindTask() {
         log.info("flowTaskRemindTask is come in");
-//        List<TSJobRemind> tsJobRemindList = tsJobRemindService.list(new QueryWrapper<TSJobRemind>().lambda().isNull(TSJobRemind::getExecTime).last(" limit 0,100 "));
+        //        List<TSJobRemind> tsJobRemindList = tsJobRemindService.list(new QueryWrapper<TSJobRemind>().lambda().isNull(TSJobRemind::getExecTime).last(" limit 0,100 "));
         SysConfig sysConfig = commonCacheService.addSysConfigCache(SystemConstant.REMIND_JOB_DB_LIMIT);
         Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("任务提醒查询条数未设置"));
-        List<TSJobRemind> tsJobRemindList = tsJobRemindService.list(new QueryWrapper<TSJobRemind>().lambda().isNull(TSJobRemind::getExecTime).last(" " + sysConfig.getConfigValue() + " "));
+        List<TSJobRemind> tsJobRemindList = tsJobRemindService.list(
+                new QueryWrapper<TSJobRemind>().lambda().isNull(TSJobRemind::getExecTime).last(" " + sysConfig.getConfigValue() + " "));
         if (!CollectionUtils.isEmpty(tsJobRemindList)) {
             List<TSJobRemind> tsJobRemindUpdateList = new ArrayList<>(tsJobRemindList.size());
             for (TSJobRemind t : tsJobRemindList) {
                 if (Objects.nonNull(t.getEnable()) && t.getEnable()) {//新建定时任务
                     if (t.getType() == JobQuartzTypeEnum.FLOW) {//流程
                         switch (t.getRemindType()) {
-                            case BEFORE://提前提醒
-                                SysConfig sysConfigBefore = commonCacheService.addSysConfigCache(SystemConstant.FLOW_JOB_BEFORE_TIME);
-                                Optional.ofNullable(sysConfigBefore).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程提前提醒任务时间未设置"));
-                                Long execTime = SystemConstant.processMiniuteMinus(t.getCreateTime(), Duration.ofMinutes(Long.parseLong(sysConfigBefore.getConfigValue())));
-                                if (Objects.nonNull(execTime) && execTime.longValue() > System.currentTimeMillis()) {
-                                    t.setExecTime(execTime);
-                                    this.setJobTime(execTime, t.getId().toString(), t, RemindTaskJob.class, JobEnum.REMIND_QUARTZ_JOB_GROUP);
-                                    tsJobRemindUpdateList.add(t);
-                                }
-                                break;
-                            case AFTER://超时提醒
-                                SysConfig sysConfigAfter = commonCacheService.addSysConfigCache(SystemConstant.FLOW_JOB_AFTER_TIME);
-                                Optional.ofNullable(sysConfigAfter).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程超时提醒任务时间未设置"));
-                                execTime = SystemConstant.processMiniutePlus(t.getCreateTime(), Duration.ofMinutes(Long.parseLong(sysConfigAfter.getConfigValue())));
-                                if (Objects.nonNull(execTime) && execTime.longValue() > System.currentTimeMillis()) {
-                                    t.setExecTime(execTime);
-                                    this.setJobTime(execTime, t.getId().toString(), t, RemindTaskJob.class, JobEnum.REMIND_QUARTZ_JOB_GROUP);
-                                    tsJobRemindUpdateList.add(t);
-                                }
-                                break;
-                            default:
-                                break;
+                        case BEFORE://提前提醒
+                            SysConfig sysConfigBefore = commonCacheService.addSysConfigCache(SystemConstant.FLOW_JOB_BEFORE_TIME);
+                            Optional.ofNullable(sysConfigBefore).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程提前提醒任务时间未设置"));
+                            Long execTime = SystemConstant.processMiniuteMinus(t.getCreateTime(), Duration.ofMinutes(Long.parseLong(sysConfigBefore.getConfigValue())));
+                            if (Objects.nonNull(execTime) && execTime.longValue() > System.currentTimeMillis()) {
+                                t.setExecTime(execTime);
+                                this.setJobTime(execTime, t.getId().toString(), t, RemindTaskJob.class, JobEnum.REMIND_QUARTZ_JOB_GROUP);
+                                tsJobRemindUpdateList.add(t);
+                            }
+                            break;
+                        case AFTER://超时提醒
+                            SysConfig sysConfigAfter = commonCacheService.addSysConfigCache(SystemConstant.FLOW_JOB_AFTER_TIME);
+                            Optional.ofNullable(sysConfigAfter).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程超时提醒任务时间未设置"));
+                            execTime = SystemConstant.processMiniutePlus(t.getCreateTime(), Duration.ofMinutes(Long.parseLong(sysConfigAfter.getConfigValue())));
+                            if (Objects.nonNull(execTime) && execTime.longValue() > System.currentTimeMillis()) {
+                                t.setExecTime(execTime);
+                                this.setJobTime(execTime, t.getId().toString(), t, RemindTaskJob.class, JobEnum.REMIND_QUARTZ_JOB_GROUP);
+                                tsJobRemindUpdateList.add(t);
+                            }
+                            break;
+                        default:
+                            break;
                         }
                     } else if (t.getType() == JobQuartzTypeEnum.FLOW) {//通告
                         switch (t.getRemindType()) {
-                            case AFTER://超时提醒
-                                SysConfig sysConfigAfter = commonCacheService.addSysConfigCache(SystemConstant.NOTICE_JOB_AFTER_TIME);
-                                Optional.ofNullable(sysConfigAfter).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("公告超时提醒任务时间未设置"));
-                                Long execTime = SystemConstant.processMiniutePlus(t.getCreateTime(), Duration.ofMinutes(Long.parseLong(sysConfigAfter.getConfigValue())));
-                                if (Objects.nonNull(execTime) && execTime.longValue() > System.currentTimeMillis()) {
-                                    t.setExecTime(execTime);
-                                    this.setJobTime(execTime, t.getId().toString(), t, RemindTaskJob.class, JobEnum.REMIND_QUARTZ_JOB_GROUP);
-                                    tsJobRemindUpdateList.add(t);
-                                }
-                                break;
-                            default:
-                                break;
+                        case AFTER://超时提醒
+                            SysConfig sysConfigAfter = commonCacheService.addSysConfigCache(SystemConstant.NOTICE_JOB_AFTER_TIME);
+                            Optional.ofNullable(sysConfigAfter).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("公告超时提醒任务时间未设置"));
+                            Long execTime = SystemConstant.processMiniutePlus(t.getCreateTime(), Duration.ofMinutes(Long.parseLong(sysConfigAfter.getConfigValue())));
+                            if (Objects.nonNull(execTime) && execTime.longValue() > System.currentTimeMillis()) {
+                                t.setExecTime(execTime);
+                                this.setJobTime(execTime, t.getId().toString(), t, RemindTaskJob.class, JobEnum.REMIND_QUARTZ_JOB_GROUP);
+                                tsJobRemindUpdateList.add(t);
+                            }
+                            break;
+                        default:
+                            break;
                         }
                     }
                 }
@@ -129,7 +131,8 @@ public class JobServiceImpl implements JobService {
             }
         }
 
-        List<TSJobRemind> tsJobRemindFalseList = tsJobRemindService.list(new QueryWrapper<TSJobRemind>().lambda().eq(TSJobRemind::getEnable, false).last(" " + sysConfig.getConfigValue() + " "));
+        List<TSJobRemind> tsJobRemindFalseList = tsJobRemindService.list(
+                new QueryWrapper<TSJobRemind>().lambda().eq(TSJobRemind::getEnable, false).last(" " + sysConfig.getConfigValue() + " "));
         if (!CollectionUtils.isEmpty(tsJobRemindFalseList)) {
             List<Long> tsJobRemindFalseIdList = new ArrayList<>(tsJobRemindFalseList.size());
             for (TSJobRemind t : tsJobRemindFalseList) {
@@ -156,7 +159,7 @@ public class JobServiceImpl implements JobService {
     public void setJobTime(Long finishTime, String jobName, Object o, Class cls, JobEnum jobEnum) {
         Calendar calendar = Calendar.getInstance();
         calendar.setTimeInMillis(finishTime);
-//        calendar.add(Calendar.SECOND, 30);
+        //        calendar.add(Calendar.SECOND, 30);
         if (calendar.getTime().getTime() > System.currentTimeMillis()) {
             int year = calendar.get(Calendar.YEAR);//获取年份
             int month = calendar.get(Calendar.MONTH) + 1;//获取月份
@@ -184,8 +187,11 @@ public class JobServiceImpl implements JobService {
 
     @Override
     public void fxxkCrmSync() throws Exception {
+        SysUser sysUser = sysUserService.getOne(
+                new QueryWrapper<SysUser>().lambda().eq(SysUser::getLoginName, "sysadmin"));
         Map<String, Object> map = new HashMap<>();
-        List<TBTask> tbTaskList = tbTaskService.list(new QueryWrapper<TBTask>().lambda().eq(TBTask::getType, TaskTypeEnum.CRM_SYNC));
+        List<TBTask> tbTaskList = tbTaskService.list(
+                new QueryWrapper<TBTask>().lambda().eq(TBTask::getType, TaskTypeEnum.CRM_SYNC));
         TBTask tbTask;
         if (!CollectionUtils.isEmpty(tbTaskList)) {
             if (tbTaskList.size() > 1) {
@@ -195,23 +201,24 @@ public class JobServiceImpl implements JobService {
             tbTask.setStatus(TaskStatusEnum.RUNNING);
             tbTaskService.updateById(tbTask);
         } else {
-            SysUser sysUser = sysUserService.getOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getLoginName, "sysadmin"));
             if (Objects.isNull(sysUser)) {
                 throw ExceptionResultEnum.ERROR.exception("缺少系统管理员");
             }
-            tbTask = new TBTask(TaskTypeEnum.CRM_SYNC,
-                    TaskStatusEnum.RUNNING,
-                    sysUser.getId());
+            tbTask = new TBTask(TaskTypeEnum.CRM_SYNC, TaskStatusEnum.RUNNING, sysUser.getId());
             tbTaskService.save(tbTask);
         }
         map.put(SystemConstant.TASK, tbTask);
+        map.put(SystemConstant.USER, sysUser);
         asyncFxxkCrmSyncService.syncData(map);
     }
 
     @Override
     public void rtzfUserPush() throws Exception {
+        SysUser sysUser = sysUserService.getOne(
+                new QueryWrapper<SysUser>().lambda().eq(SysUser::getLoginName, "sysadmin"));
         Map<String, Object> map = new HashMap<>();
-        List<TBTask> tbTaskList = tbTaskService.list(new QueryWrapper<TBTask>().lambda().eq(TBTask::getType, TaskTypeEnum.RTZF_USER_PUSH_SYNC));
+        List<TBTask> tbTaskList = tbTaskService.list(
+                new QueryWrapper<TBTask>().lambda().eq(TBTask::getType, TaskTypeEnum.RTZF_USER_PUSH_SYNC));
         TBTask tbTask;
         if (!CollectionUtils.isEmpty(tbTaskList)) {
             if (tbTaskList.size() > 1) {
@@ -221,23 +228,24 @@ public class JobServiceImpl implements JobService {
             tbTask.setStatus(TaskStatusEnum.RUNNING);
             tbTaskService.updateById(tbTask);
         } else {
-            SysUser sysUser = sysUserService.getOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getLoginName, "sysadmin"));
             if (Objects.isNull(sysUser)) {
                 throw ExceptionResultEnum.ERROR.exception("缺少系统管理员");
             }
-            tbTask = new TBTask(TaskTypeEnum.RTZF_USER_PUSH_SYNC,
-                    TaskStatusEnum.RUNNING,
-                    sysUser.getId());
+            tbTask = new TBTask(TaskTypeEnum.RTZF_USER_PUSH_SYNC, TaskStatusEnum.RUNNING, sysUser.getId());
             tbTaskService.save(tbTask);
         }
         map.put(SystemConstant.TASK, tbTask);
+        map.put(SystemConstant.USER, sysUser);
         asyncRtzfUserPushService.syncData(map);
     }
 
     @Override
     public void rtzfUserUpdate() throws Exception {
+        SysUser sysUser = sysUserService.getOne(
+                new QueryWrapper<SysUser>().lambda().eq(SysUser::getLoginName, "sysadmin"));
         Map<String, Object> map = new HashMap<>();
-        List<TBTask> tbTaskList = tbTaskService.list(new QueryWrapper<TBTask>().lambda().eq(TBTask::getType, TaskTypeEnum.RTZF_USER_UPDATE_SYNC));
+        List<TBTask> tbTaskList = tbTaskService.list(
+                new QueryWrapper<TBTask>().lambda().eq(TBTask::getType, TaskTypeEnum.RTZF_USER_UPDATE_SYNC));
         TBTask tbTask;
         if (!CollectionUtils.isEmpty(tbTaskList)) {
             if (tbTaskList.size() > 1) {
@@ -247,16 +255,14 @@ public class JobServiceImpl implements JobService {
             tbTask.setStatus(TaskStatusEnum.RUNNING);
             tbTaskService.updateById(tbTask);
         } else {
-            SysUser sysUser = sysUserService.getOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getLoginName, "sysadmin"));
             if (Objects.isNull(sysUser)) {
                 throw ExceptionResultEnum.ERROR.exception("缺少系统管理员");
             }
-            tbTask = new TBTask(TaskTypeEnum.RTZF_USER_UPDATE_SYNC,
-                    TaskStatusEnum.RUNNING,
-                    sysUser.getId());
+            tbTask = new TBTask(TaskTypeEnum.RTZF_USER_UPDATE_SYNC, TaskStatusEnum.RUNNING, sysUser.getId());
             tbTaskService.save(tbTask);
         }
         map.put(SystemConstant.TASK, tbTask);
+        map.put(SystemConstant.USER, sysUser);
         asyncRtzfUserUpdateBatchService.syncData(map);
     }