Browse Source

Merge remote-tracking branch 'origin/dev_1.1.0' into dev_1.1.0

wangliang 1 year ago
parent
commit
956758f88a

+ 11 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/result/ArchivesSourceResult.java

@@ -45,6 +45,9 @@ public class ArchivesSourceResult {
     @ApiModelProperty(value = "验证有效期")
     private Long authenticationValidTime;
 
+    @ApiModelProperty(value = "人力资源状态")
+    private UserArchivesStatusEnum status;
+
     @ApiModelProperty(value = "剩余可用")
     private Integer remainCount;
 
@@ -128,6 +131,14 @@ public class ArchivesSourceResult {
         this.authenticationValidTime = authenticationValidTime;
     }
 
+    public UserArchivesStatusEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(UserArchivesStatusEnum status) {
+        this.status = status;
+    }
+
     public Integer getRemainCount() {
         return remainCount;
     }

+ 9 - 1
sop-business/src/main/java/com/qmth/sop/business/service/TBUserArchivesService.java

@@ -75,7 +75,7 @@ public interface TBUserArchivesService extends IService<TBUserArchives> {
      * @return 结果
      */
     List<UserArchivesImportDto> findExportData(String city, Long supplierId, String archivesName, RoleTypeEnum roleType,
-            Boolean authenticationStatus, Long archivesTimeStart, Long archivesTimeEnd, Integer remainValidDay,Boolean unUploadPic);
+            Boolean authenticationStatus, Long archivesTimeStart, Long archivesTimeEnd, Integer remainValidDay, Boolean unUploadPic);
 
     /**
      * 作废人员档案
@@ -122,5 +122,13 @@ public interface TBUserArchivesService extends IService<TBUserArchives> {
     @Deprecated
     List<ArchivesSourceResult> findFreeCoordinatorByServiceId(Long serviceUnitId, String crmNo, boolean verifyRate);
 
+    /**
+     * 根据档案角色类型查询可用的档案
+     *
+     * @param roleType 档案角色类型
+     * @return 档案
+     */
+    List<ArchivesSourceResult> findArchivesSourceByType(RoleTypeEnum roleType);
+
     List<Map<String, Object>> findTempEmp();
 }

+ 17 - 14
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBCrmServiceImpl.java

@@ -170,19 +170,19 @@ public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements
                 // 按地区匹配
                 ServiceRegionDetailResult serviceRegionDetailResult = tbServiceRegionDetailService.findRegionDetail(
                         serviceUnitId, tbCrm.getCrmNo());
+                if (Objects.isNull(serviceRegionDetailResult)) {
+                    throw ExceptionResultEnum.ERROR.exception("该地区还没有分配大区经理,请先分配");
+                }
                 UpdateWrapper<TBCrm> areaUpdateWrapper = new UpdateWrapper<>();
                 areaUpdateWrapper.lambda().set(TBCrm::getServiceId, serviceUnitId).set(TBCrm::getLeadType, leadType)
                         .set(TBCrm::getUpdateId, requestUser.getId())
-                        .set(TBCrm::getUpdateTime, System.currentTimeMillis());
-                if (Objects.nonNull(serviceRegionDetailResult)) {
-                    areaUpdateWrapper.lambda().set(TBCrm::getLeadId, serviceRegionDetailResult.getLeadId())
-                            .set(TBCrm::getRegionId, serviceRegionDetailResult.getServiceRegionId())
-                            .set(TBCrm::getRegionDetailId, serviceRegionDetailResult.getServiceRegionDetailId());
-                }
-                if (leadType.equals(defaultLeadType)) {
-                    // 更新自己信息
+                        .set(TBCrm::getUpdateTime, System.currentTimeMillis()).set(TBCrm::getLeadId, serviceRegionDetailResult.getLeadId())
+                        .set(TBCrm::getRegionId, serviceRegionDetailResult.getServiceRegionId())
+                        .set(TBCrm::getRegionDetailId, serviceRegionDetailResult.getServiceRegionDetailId());
+                if (Objects.isNull(defaultLeadType) || leadType.equals(defaultLeadType)) {
+                    // 更新自己信息(没有默认信息或默认信息与更改信息一致)
                     areaUpdateWrapper.lambda().eq(TBCrm::getId, crmId);
-                } else {
+                } else if (CollectionUtils.isNotEmpty(similarCrmIdList)) {
                     // 更新同类派单信息
                     areaUpdateWrapper.lambda().in(TBCrm::getId, similarCrmIdList);
                 }
@@ -195,13 +195,15 @@ public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements
                 personUpdateWrapper.lambda().set(TBCrm::getServiceId, serviceUnitId).set(TBCrm::getLeadType, leadType)
                         .set(TBCrm::getLeadId, leadId).set(TBCrm::getUpdateId, requestUser.getId())
                         .set(TBCrm::getUpdateTime, System.currentTimeMillis());
-                if (leadType.equals(defaultLeadType) && leadId.equals(defaultLeadId)) {
-                    // 更新自己信息
+                if ((Objects.isNull(defaultLeadType) || !SystemConstant.longNotNull(defaultLeadId)) || (leadType.equals(
+                        defaultLeadType) && leadId.equals(defaultLeadId))) {
+                    // 更新自己信息(没有默认信息或默认信息与更改信息一致)
                     personUpdateWrapper.lambda().eq(TBCrm::getId, crmId);
-                } else {
+                } else if (CollectionUtils.isNotEmpty(similarCrmIdList)) {
                     // 更新同类派单信息
                     personUpdateWrapper.lambda().in(TBCrm::getId, similarCrmIdList);
                 }
+                this.update(personUpdateWrapper);
                 break;
             }
         } else {
@@ -212,6 +214,7 @@ public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements
             tbCrm.setServiceId(serviceUnitId);
             tbCrm.setLeadType(defaultLeadType);
             tbCrm.setLeadId(defaultLeadId);
+            this.updateById(tbCrm);
         }
     }
 
@@ -827,12 +830,12 @@ public class TBCrmServiceImpl extends ServiceImpl<TBCrmMapper, TBCrm> implements
                 .eq(TBCrm::getServiceId, serviceUnitId));
         if (CollectionUtils.isNotEmpty(sameCrmList)) {
             // 对于同一服务单元同客户下有发布sop的,不允许更换大区经理,上述两图中内容置灰,不可更换大区经理。一旦更换大区经理,该客户的所有派单均更换大区经理
-            List<RegionManagerSelectedTypeEnum> leadTypeList = sameCrmList.stream().map(TBCrm::getLeadType).collect(Collectors.toList());
+            List<RegionManagerSelectedTypeEnum> leadTypeList = sameCrmList.stream().map(TBCrm::getLeadType).distinct().collect(Collectors.toList());
             if (leadTypeList.size() != 1) {
                 throw ExceptionResultEnum.ERROR.exception("客户在服务单元下存在不同的大区经理指定方式");
             }
             leadType = leadTypeList.get(0);
-            List<Long> leadIdList = sameCrmList.stream().map(TBCrm::getLeadId).collect(Collectors.toList());
+            List<Long> leadIdList = sameCrmList.stream().map(TBCrm::getLeadId).distinct().collect(Collectors.toList());
             if (leadIdList.size() != 1) {
                 throw ExceptionResultEnum.ERROR.exception("客户在服务单元下存在不同的大区经理");
             }

+ 22 - 9
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBUserArchivesAllocationServiceImpl.java

@@ -187,9 +187,12 @@ public class TBUserArchivesAllocationServiceImpl
                 }).collect(Collectors.toList());
                 tbUserArchivesAllocationLogService.saveBatch(historicList);
             }
-            this.remove(new QueryWrapper<TBUserArchivesAllocation>().lambda()
-                    .eq(TBUserArchivesAllocation::getArchivesId, removeList)
-                    .eq(TBUserArchivesAllocation::getCrmDetailId, crmDetailId));
+            if (CollectionUtils.isNotEmpty(removeList)){
+                this.remove(new QueryWrapper<TBUserArchivesAllocation>().lambda()
+                        .eq(TBUserArchivesAllocation::getArchivesId, removeList)
+                        .eq(TBUserArchivesAllocation::getCrmDetailId, crmDetailId));
+            }
+
 
             // 经过对比要新增的人员档案id集合
             List<Long> addList = archivesIdList.stream().filter(e -> !allocatedIdList.contains(e)).distinct()
@@ -533,9 +536,18 @@ public class TBUserArchivesAllocationServiceImpl
         List<Long> allocatedIdList = allocatedList.stream().map(TBUserArchivesAllocation::getArchivesId).distinct()
                 .collect(Collectors.toList());
 
-        List<TBUserArchivesAllocation> datasource = this.list();
-        List<Long> effectArchivesIdList = datasource.stream().map(TBUserArchivesAllocation::getArchivesId)
-                .filter(e -> !allocatedIdList.contains(e)).distinct().collect(Collectors.toList());
+        List<Long> datasource = new ArrayList<>();
+        switch (sopRoleTypeEnum) {
+        case ENGINEER:
+        case PROJECT_MANAGER:
+            datasource = tbUserArchivesService.list().stream().map(TBUserArchives::getId).distinct().collect(Collectors.toList());
+            break;
+        case REGION_COORDINATOR:
+            datasource = tbUserArchivesService.findArchivesSourceByType(RoleTypeEnum.REGION_COORDINATOR).stream().map(ArchivesSourceResult::getArchivesId).distinct().collect(Collectors.toList());
+            break;
+        }
+
+        List<Long> effectArchivesIdList = datasource.stream().filter(e -> !allocatedIdList.contains(e)).distinct().collect(Collectors.toList());
 
         List<UserArchivesDto> result = new ArrayList<>();
         for (Long effectArchivesId : effectArchivesIdList) {
@@ -586,9 +598,10 @@ public class TBUserArchivesAllocationServiceImpl
         result.setCustomCity(crmProjectResult.getCustomCity());
         result.setCustomArea(crmProjectResult.getCustomArea());
         result.setCustomAddress(crmProjectResult.getCustomAddress());
-        result.setRegionCoordinatorInfo(new AllocationDetailDto(rcAllocatedList, rcHistoricalList, rcCanChooseList));
-        result.setProjectManagerInfo(new AllocationDetailDto(pmAllocatedList, pmHistoricalList, pmCanChooseList));
-        result.setEngineerInfo(new AllocationDetailDto(enAllocatedList, enHistoricalList, enCanChooseList));
+        result.setRegionCoordinatorInfo(new AllocationDetailDto(rcAllocatedList, rcCanChooseList, rcHistoricalList));
+        result.setProjectManagerInfo(new AllocationDetailDto(pmAllocatedList, pmCanChooseList, pmHistoricalList));
+        result.setEngineerInfo(new AllocationDetailDto(enAllocatedList, enCanChooseList, enHistoricalList));
+        result.setCourseName(tbCrmDetailService.getById(crmDetailId).getCourseName());
         return result;
     }
 

+ 7 - 2
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBUserArchivesServiceImpl.java

@@ -481,7 +481,7 @@ public class TBUserArchivesServiceImpl extends ServiceImpl<TBUserArchivesMapper,
             throw ExceptionResultEnum.ERROR.exception("该方法只支持查询实施工程师和助理工程师");
         }
 
-        List<ArchivesSourceResult> list = new ArrayList<>(this.baseMapper.findArchivesSourceByType(roleType));
+        List<ArchivesSourceResult> list = new ArrayList<>(this.findArchivesSourceByType(roleType));
         if (CollectionUtils.isNotEmpty(list)) {
             Long currentTime = System.currentTimeMillis();
             list = list.stream()
@@ -513,7 +513,7 @@ public class TBUserArchivesServiceImpl extends ServiceImpl<TBUserArchivesMapper,
                 new QueryWrapper<TBCrm>().lambda().eq(TBCrm::getServiceId, serviceUnitId));
 
         Long currentTime = System.currentTimeMillis();
-        List<ArchivesSourceResult> list = this.baseMapper.findArchivesSourceByType(RoleTypeEnum.REGION_COORDINATOR);
+        List<ArchivesSourceResult> list = this.findArchivesSourceByType(RoleTypeEnum.REGION_COORDINATOR);
         if (CollectionUtils.isNotEmpty(list)) {
             list = list.stream().filter(e -> e.getAuthenticationValidTime() != null && e.getAuthenticationValidTime() >= currentTime).peek(e -> {
                 Long userId = e.getUserId();
@@ -554,6 +554,11 @@ public class TBUserArchivesServiceImpl extends ServiceImpl<TBUserArchivesMapper,
         return result;
     }
 
+    @Override
+    public List<ArchivesSourceResult> findArchivesSourceByType(RoleTypeEnum roleType) {
+        return this.baseMapper.findArchivesSourceByType(roleType);
+    }
+
     @Override
     public List<Map<String, Object>> findTempEmp() {
         return this.baseMapper.findTempEmp();

+ 2 - 1
sop-business/src/main/resources/db/log/caozixuan_update_log.sql

@@ -153,4 +153,5 @@ ALTER TABLE sys_ding_obj
     CHANGE COLUMN role_id role_id BIGINT NULL COMMENT '角色id' ,
     CHANGE COLUMN sop_role_type sop_role_type VARCHAR(45) NULL COMMENT 'sop角色' ;
 
-
+-- 2024-05-28
+UPDATE sys_privilege SET related = '2024,2061,2062,3080,3081,3082,3083,3084,3085,3086,3087' WHERE (id = '3079');

+ 2 - 1
sop-business/src/main/resources/mapper/TBUserArchivesMapper.xml

@@ -230,7 +230,8 @@
             ss.id AS supplierId,
             ss.name AS supplierName,
             tbua.status AS archivesStatus,
-            tbuas.authentication_valid_time AS authenticationValidTime
+            tbuas.authentication_valid_time AS authenticationValidTime,
+            IF(REPLACE(UNIX_TIMESTAMP(NOW(3)), '.', '') &lt;= tbuas.authentication_valid_time,TRUE,FALSE) AS authenticationStatus
         FROM
             t_b_user_archives tbua
                 LEFT JOIN

+ 20 - 20
sop-task/src/main/java/com/qmth/sop/task/start/StartRunning.java

@@ -65,26 +65,26 @@ public class StartRunning implements CommandLineRunner {
         quartzService.addJob(FxxkCrmSyncJob.class, JobEnum.SYNC_FXXK_CRM.name(), JobEnum.SYNC_FXXK_CRM_GROUP.name(), "0 0/5 6-23 * * ?", fxxkCrmSyncMap);
         log.info("fxxk派单同步定时任务 end");
 
-        log.info("rtzf用户推送定时任务 start");
-        Map<Object,Object> rtzfUserPushMap = new HashMap<>();
-        rtzfUserPushMap.put(SystemConstant.NAME, RtzfUserPushJob.class.getName());
-        quartzService.deleteJob(JobEnum.SYNC_RTZF_USER_PUSH.name(), JobEnum.SYNC_RTZF_USER_PUSH_GROUP.name());
-        quartzService.addJob(RtzfUserPushJob.class, JobEnum.SYNC_RTZF_USER_PUSH.name(), JobEnum.SYNC_RTZF_USER_PUSH_GROUP.name(), "0 0/5 6-23 * * ?", rtzfUserPushMap);
-        log.info("rtzf用户推送定时任务 end");
-
-        log.info("rtzf用户更新定时任务 start");
-        Map<Object,Object> rtzfUserUpdateMap = new HashMap<>();
-        rtzfUserUpdateMap.put(SystemConstant.NAME, RtzfUserUpdateJob.class.getName());
-        quartzService.deleteJob(JobEnum.SYNC_RTZF_USER_UPDATE.name(), JobEnum.SYNC_RTZF_USER_UPDATE_GROUP.name());
-        quartzService.addJob(RtzfUserUpdateJob.class, JobEnum.SYNC_RTZF_USER_UPDATE.name(), JobEnum.SYNC_RTZF_USER_UPDATE_GROUP.name(), "0 2/5 6-23 * * ?", rtzfUserUpdateMap);
-        log.info("rtzf用户更新定时任务 end");
-
-        log.info("自动打卡定时任务 start");
-        Map<Object,Object> autoAddDingRecordMap = new HashMap<>();
-        autoAddDingRecordMap.put(SystemConstant.NAME, AutoAddDingRecordJob.class.getName());
-        quartzService.deleteJob(JobEnum.AUTO_ADD_DING_RECORD.name(), JobEnum.AUTO_ADD_DING_RECORD_GROUP.name());
-        quartzService.addJob(AutoAddDingRecordJob.class, JobEnum.AUTO_ADD_DING_RECORD.name(), JobEnum.AUTO_ADD_DING_RECORD_GROUP.name(), "0 30 23 * * ?", autoAddDingRecordMap);
-        log.info("自动打卡定时任务 end");
+//        log.info("rtzf用户推送定时任务 start");
+//        Map<Object,Object> rtzfUserPushMap = new HashMap<>();
+//        rtzfUserPushMap.put(SystemConstant.NAME, RtzfUserPushJob.class.getName());
+//        quartzService.deleteJob(JobEnum.SYNC_RTZF_USER_PUSH.name(), JobEnum.SYNC_RTZF_USER_PUSH_GROUP.name());
+//        quartzService.addJob(RtzfUserPushJob.class, JobEnum.SYNC_RTZF_USER_PUSH.name(), JobEnum.SYNC_RTZF_USER_PUSH_GROUP.name(), "0 0/5 6-23 * * ?", rtzfUserPushMap);
+//        log.info("rtzf用户推送定时任务 end");
+//
+//        log.info("rtzf用户更新定时任务 start");
+//        Map<Object,Object> rtzfUserUpdateMap = new HashMap<>();
+//        rtzfUserUpdateMap.put(SystemConstant.NAME, RtzfUserUpdateJob.class.getName());
+//        quartzService.deleteJob(JobEnum.SYNC_RTZF_USER_UPDATE.name(), JobEnum.SYNC_RTZF_USER_UPDATE_GROUP.name());
+//        quartzService.addJob(RtzfUserUpdateJob.class, JobEnum.SYNC_RTZF_USER_UPDATE.name(), JobEnum.SYNC_RTZF_USER_UPDATE_GROUP.name(), "0 2/5 6-23 * * ?", rtzfUserUpdateMap);
+//        log.info("rtzf用户更新定时任务 end");
+//
+//        log.info("自动打卡定时任务 start");
+//        Map<Object,Object> autoAddDingRecordMap = new HashMap<>();
+//        autoAddDingRecordMap.put(SystemConstant.NAME, AutoAddDingRecordJob.class.getName());
+//        quartzService.deleteJob(JobEnum.AUTO_ADD_DING_RECORD.name(), JobEnum.AUTO_ADD_DING_RECORD_GROUP.name());
+//        quartzService.addJob(AutoAddDingRecordJob.class, JobEnum.AUTO_ADD_DING_RECORD.name(), JobEnum.AUTO_ADD_DING_RECORD_GROUP.name(), "0 30 23 * * ?", autoAddDingRecordMap);
+//        log.info("自动打卡定时任务 end");
 
         log.info("考勤统计定时任务 start");
         Map<Object,Object> dingStatisticMap = new HashMap<>();