caozixuan 1 éve
szülő
commit
4d48ffe341

+ 3 - 3
sop-api/src/main/java/com/qmth/sop/server/api/TBUserArchivesController.java

@@ -159,9 +159,9 @@ public class TBUserArchivesController {
     @RequestMapping(value = "/cancel", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "作废成功", response = Result.class)})
     @OperationLog
-    public Result cancelUserArchives(@ApiParam(value = "人员档案id集合", required = true) @RequestParam List<String> userArchivesIdList) {
-        if (CollectionUtils.isNotEmpty(userArchivesIdList)) {
-            List<Long> archivesIdList = userArchivesIdList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
+    public Result cancelUserArchives(@ApiParam(value = "人员档案id集合", required = true) @RequestParam List<String> idList) {
+        if (CollectionUtils.isNotEmpty(idList)) {
+            List<Long> archivesIdList = idList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
             tbUserArchivesService.cancelUserArchives(archivesIdList);
         }
         return ResultUtil.ok();

+ 12 - 1
sop-business/src/main/java/com/qmth/sop/business/bean/result/UserArchivesResult.java

@@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.sop.common.enums.EducationEnum;
 import com.qmth.sop.common.enums.GenderEnum;
-import com.qmth.sop.common.enums.RoleTypeEnum;
+import com.qmth.sop.common.enums.UserArchivesStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.List;
@@ -90,6 +90,9 @@ public class UserArchivesResult {
     @JsonSerialize(using = ToStringSerializer.class)
     private Long userId;
 
+    @ApiModelProperty(value = "人力资源状态")
+    private UserArchivesStatusEnum status;
+
     public Long getUserArchivesId() {
         return userArchivesId;
     }
@@ -281,4 +284,12 @@ public class UserArchivesResult {
     public void setUserId(Long userId) {
         this.userId = userId;
     }
+
+    public UserArchivesStatusEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(UserArchivesStatusEnum status) {
+        this.status = status;
+    }
 }

+ 11 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/TBUserArchives.java

@@ -64,6 +64,9 @@ public class TBUserArchives extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "人力资源状态")
     private UserArchivesStatusEnum status;
 
+    @ApiModelProperty(value = "是否启用(1启用 0作废)")
+    private Boolean enable;
+
     public String getCode() {
         return code;
     }
@@ -175,4 +178,12 @@ public class TBUserArchives extends BaseEntity implements Serializable {
     public void setStatus(UserArchivesStatusEnum status) {
         this.status = status;
     }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
 }

+ 32 - 1
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBUserArchivesServiceImpl.java

@@ -1,6 +1,7 @@
 package com.qmth.sop.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -363,7 +364,37 @@ public class TBUserArchivesServiceImpl extends ServiceImpl<TBUserArchivesMapper,
     @Transactional
     @Override
     public void cancelUserArchives(List<Long> userArchivesIdList) {
-        // TODO: 2023/8/23 档案作废具体逻辑
+        long currentTime = System.currentTimeMillis();
+        if (CollectionUtils.isNotEmpty(userArchivesIdList)) {
+            for (Long archivesId : userArchivesIdList) {
+                UserArchivesResult userArchivesResult = this.findUserArchivesByArchivesIdORUserId(archivesId, null);
+                Long validTime = userArchivesResult.getAuthenticationValidTime();
+                // 作废校验1 - 认证状态失效
+                if (validTime != null && currentTime < validTime) {
+                    throw ExceptionResultEnum.ERROR.exception(String.format("[%s]的认证状态为有效,不能作废", userArchivesResult.getName()));
+                }
+                // 作废校验2 - 为空闲状态
+                UserArchivesStatusEnum status = userArchivesResult.getStatus();
+                Long userId = userArchivesResult.getUserId();
+                boolean isCoordinator = sysUserRoleService.userContainsRoles(userId, RoleTypeEnum.REGION_COORDINATOR);
+                if (!isCoordinator) {
+                    // 不是区域协调人直接判断非空闲即可作废
+                    if (UserArchivesStatusEnum.OCCUPIED.equals(status)) {
+                        throw ExceptionResultEnum.ERROR.exception(String.format("[%s]为非空闲,不能作废", userArchivesResult.getName()));
+                    }
+                } else {
+                    // 包含区域协调人判断该区域协调人涉及的所有派单均完成
+                    if (tbCrmService.list(new QueryWrapper<TBCrm>().lambda()
+                            .eq(TBCrm::getRegionCoordinatorId, userId)
+                            .ne(TBCrm::getStatus, CrmStatusEnum.FINISH)).size() > 0) {
+                        throw ExceptionResultEnum.ERROR.exception(String.format("区域协调人[%s]有未完成的派单,不能作废", userArchivesResult.getName()));
+                    }
+                }
+            }
+            UpdateWrapper<TBUserArchives> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.lambda().in(TBUserArchives::getId, userArchivesIdList).set(TBUserArchives::getEnable, false);
+            this.update(updateWrapper);
+        }
     }
 
     @Override

+ 5 - 0
sop-business/src/main/resources/db/log/caozixuan_update_log.sql

@@ -325,3 +325,8 @@ ALTER TABLE sys_ding_group
     CHANGE COLUMN sign_in_time sign_in_time VARCHAR(50) NULL COMMENT '签到时段' ,
     CHANGE COLUMN sign_out_time sign_out_time VARCHAR(50) NULL COMMENT '签退时段' ;
 
+ALTER TABLE t_b_user_archives
+    ADD COLUMN enable TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否启用(1启用,0作废)' AFTER status;
+
+INSERT INTO sys_privilege (id, name, url, type, parent_id, sequence, property, enable, default_auth, front_display) VALUES ('2051', '人员档案管理-作废', '/api/admin/user/archives/cancel', 'URL', '33', '7', 'AUTH', '1', '1', '0');
+UPDATE sys_privilege SET related = '2051' WHERE (id = '159');

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

@@ -33,6 +33,7 @@
                 LEFT JOIN
             sys_user su ON su.mobile_number = tbua.mobile_number
         <where>
+            AND tbua.enable
             <if test="city != null and city != ''">
                 AND tbua.city LIKE CONCAT('%',#{city},'%')
             </if>
@@ -112,6 +113,7 @@
         LEFT JOIN
             sys_user su ON su.mobile_number = tbua.mobile_number
         <where>
+            AND tbua.enable
             <if test="city != null and city != ''">
                 AND tbua.city LIKE CONCAT('%',#{city},'%')
             </if>
@@ -173,7 +175,8 @@
             tbuas.authentication_score AS authenticationScore,
             tbuas.authentication_valid_time AS authenticationValidTime,
             tbuas.remark,
-            su.id AS userId
+            su.id AS userId,
+            tbua.status AS status
         FROM
             t_b_user_archives tbua
                 LEFT JOIN
@@ -213,6 +216,7 @@
                 LEFT JOIN
             sys_user su ON tbua.mobile_number = su.mobile_number
         <where>
+            AND tbua.enable
             <if test="roleType != null">
                 AND EXISTS( SELECT
                         1
@@ -247,6 +251,7 @@
                 LEFT JOIN
             sys_user su ON tbua.mobile_number = su.mobile_number
         <where>
+            AND tbua.enable
             <if test="roleType != null">
                 AND EXISTS( SELECT
                     1
@@ -298,6 +303,7 @@
         LEFT JOIN
             sys_user su ON su.mobile_number = tbua.mobile_number
         <where>
+            AND tbua.enable
             <if test="city != null and city != ''">
                 AND tbua.city LIKE CONCAT('%',#{city},'%')
             </if>