yangdamao 2 년 전
부모
커밋
b63430bef5

+ 15 - 9
zhongzheng-admin-data/src/main/java/com/zhongzheng/controller/ExamSubscribeController.java

@@ -26,51 +26,51 @@ import java.util.List;
 @RequestMapping("/cd/exam")
 public class ExamSubscribeController extends BaseController {
 
-    private final ICdExamRoomService examSubscribeService;
+    private final ICdExamRoomService examRoomService;
 
     @ApiOperation("新增考场信息")
     @PostMapping("/save")
     public AjaxResult<Void> saveExamRoom(@RequestBody CdExamRoomBo bo) {
-        return toAjax(examSubscribeService.saveExamRoom(bo)?1:0);
+        return toAjax(examRoomService.saveExamRoom(bo)?1:0);
     }
 
     @ApiOperation("修改考场信息")
     @PostMapping("/update")
     public AjaxResult<Void> updateExamRoom(@RequestBody CdExamRoomUpdateBo bo) {
-        return toAjax(examSubscribeService.updateExamRoom(bo)?1:0);
+        return toAjax(examRoomService.updateExamRoom(bo)?1:0);
     }
 
     @ApiOperation("删除考场信息")
     @PostMapping("/delete")
     public AjaxResult<Void> deleteExamRoom(@RequestBody CdExamRoomUpdateBo bo) {
-        return toAjax(examSubscribeService.deleteExamRoom(bo)?1:0);
+        return toAjax(examRoomService.deleteExamRoom(bo)?1:0);
     }
 
     @ApiOperation("获取考场信息")
     @GetMapping("/list")
     public AjaxResult<List<CdExamRoomVo>> getExamRoomList(CdExamRoomQuery bo) {
-        List<CdExamRoomVo> voList = examSubscribeService.getExamRoomList(bo);
+        List<CdExamRoomVo> voList = examRoomService.getExamRoomList(bo);
         return AjaxResult.success(voList);
     }
 
     @ApiOperation("考试详情")
     @GetMapping("/detail/{id}")
     public AjaxResult<List<UserExamDetailVo>> getExamDetail(@PathVariable("id") Long id) {
-        List<UserExamDetailVo> voList = examSubscribeService.getExamDetail(id);
+        List<UserExamDetailVo> voList = examRoomService.getExamDetail(id);
         return AjaxResult.success(voList);
     }
 
     @ApiOperation("批量预约考试")
     @PostMapping("/batch/subscribe")
     public AjaxResult<Void> batchSubscribe(@RequestBody BatchSubscribeBo bo) {
-        examSubscribeService.batchSubscribe(bo);
+        examRoomService.batchSubscribe(bo);
         return AjaxResult.success();
     }
 
     @ApiOperation("批量取消预约考试")
     @PostMapping("/batch/cancel/subscribe")
     public AjaxResult<Void> batchCancelSubscribe(@RequestBody BatchCancelSubscribeBo bo) {
-        examSubscribeService.batchCancelSubscribe(bo);
+        examRoomService.batchCancelSubscribe(bo);
         return AjaxResult.success();
     }
 
@@ -78,9 +78,15 @@ public class ExamSubscribeController extends BaseController {
     @GetMapping("/subscribe/list")
     public TableDataInfo<CdUserExamSubscribeVo> getExamSubscribeList(CdUserExamSubscribeQueryBo bo) {
         startPage();
-        List<CdUserExamSubscribeVo> list = examSubscribeService.getExamSubscribeList(bo);
+        List<CdUserExamSubscribeVo> list = examRoomService.getExamSubscribeList(bo);
         return getDataTable(list);
     }
 
+    @ApiOperation("设置是否有效")
+    @PostMapping("/subscribe/upExit")
+    public AjaxResult<Void> updateExitType(UpdateExitTypeBo bo) {
+        return toAjax(examRoomService.updateExitType(bo)?1:0);
+    }
+
 
 }

+ 30 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/middleground/record/bo/CdUserExamSubscribeQueryBo.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * @author yangdamao
@@ -12,9 +13,6 @@ import java.io.Serializable;
 @Data
 public class CdUserExamSubscribeQueryBo implements Serializable {
 
-    @ApiModelProperty("用户名称")
-    private String userName;
-
     @ApiModelProperty("公司名称")
     private String companyName;
 
@@ -37,4 +35,33 @@ public class CdUserExamSubscribeQueryBo implements Serializable {
     /** 当前页数 */
     @ApiModelProperty("当前页数")
     private Integer pageNum;
+
+    @ApiModelProperty("通过")
+    private Integer applyPass;
+    @ApiModelProperty("未通过")
+    private Integer applyUnPass;
+    @ApiModelProperty("已预约")
+    private Integer subscribe;
+    @ApiModelProperty("未预约")
+    private Integer unSubscribe;
+
+
+    @ApiModelProperty("有效状态:0有效 1无效")
+    private Integer exitType;
+
+    @ApiModelProperty("剩余次数:1有次 2无次")
+    private Integer applyNumber;
+
+    @ApiModelProperty("电子证书:1有 2无")
+    private Integer certificateStatus;
+
+    @ApiModelProperty("学员姓名,多个逗号隔开")
+    private String userName;
+
+    private List<String> userNameList;
+
+    @ApiModelProperty("学员身份证,多个逗号隔开")
+    private String userCard;
+
+    private List<String> userCardList;
 }

+ 21 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/middleground/record/bo/UpdateExitTypeBo.java

@@ -0,0 +1,21 @@
+package com.zhongzheng.modules.middleground.record.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年08月18日 15:24
+ */
+@Data
+@ApiModel("设置是否有效BO")
+public class UpdateExitTypeBo implements Serializable {
+    @ApiModelProperty("数据ID")
+    private List<Long> ids;
+    @ApiModelProperty("有效状态:0有效 1无效")
+    private Integer exitType;
+}

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/middleground/record/domain/CdExamSubscribe.java

@@ -53,6 +53,8 @@ public class CdExamSubscribe implements Serializable {
     private Integer result;
     /** 证书编号 */
     private String certificateCode;
+    /** 证书地址 */
+    private String certificateUrl;
     /** 登记补充 */
     private String remark;
     /** 添加时间 */

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/middleground/record/domain/CdUserSubscribe.java

@@ -60,5 +60,7 @@ public class CdUserSubscribe implements Serializable {
     private String major;
     /** 公司名称 */
     private String companyName;
+    /** 有效状态:0有效 1无效 */
+    private Integer exitType;
 
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/middleground/record/mapper/CdUserSubscribeMapper.java

@@ -1,7 +1,13 @@
 package com.zhongzheng.modules.middleground.record.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.middleground.record.bo.CdUserExamSubscribeQueryBo;
 import com.zhongzheng.modules.middleground.record.domain.CdUserSubscribe;
 
+import java.util.List;
+
 public interface CdUserSubscribeMapper extends BaseMapper<CdUserSubscribe> {
+
+    List<CdUserSubscribe> getUserSubscribeList(CdUserExamSubscribeQueryBo bo);
+
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/middleground/record/service/ICdExamRoomService.java

@@ -26,4 +26,6 @@ public interface ICdExamRoomService extends IService<CdExamRoom> {
     void batchCancelSubscribe(BatchCancelSubscribeBo bo);
 
     List<UserExamDetailVo> getExamDetail(Long id);
+
+    boolean updateExitType(UpdateExitTypeBo bo);
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/middleground/record/service/ICdUserSubscribeService.java

@@ -1,13 +1,18 @@
 package com.zhongzheng.modules.middleground.record.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.middleground.record.bo.CdUserExamSubscribeQueryBo;
 import com.zhongzheng.modules.middleground.record.bo.CdUserSubscribeBo;
 import com.zhongzheng.modules.middleground.record.bo.CdUserSubscribeUpdateBo;
 import com.zhongzheng.modules.middleground.record.domain.CdUserSubscribe;
 
+import java.util.List;
+
 public interface ICdUserSubscribeService extends IService<CdUserSubscribe> {
 
     boolean saveUserSubscribe(CdUserSubscribeBo bo);
 
     boolean updateUserSubscribe(CdUserSubscribeUpdateBo bo);
+
+    List<CdUserSubscribe> getUserSubscribeList(CdUserExamSubscribeQueryBo bo);
 }

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/middleground/record/service/impl/CdCdUserSubscribeServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zhongzheng.common.exception.CustomException;
+import com.zhongzheng.modules.middleground.record.bo.CdUserExamSubscribeQueryBo;
 import com.zhongzheng.modules.middleground.record.bo.CdUserSubscribeBo;
 import com.zhongzheng.modules.middleground.record.bo.CdUserSubscribeUpdateBo;
 import com.zhongzheng.modules.middleground.record.domain.CdUserSubscribe;
@@ -15,6 +16,8 @@ import com.zhongzheng.modules.middleground.tenant.service.IDataTenantService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * @author yangdamao
  * @date 2023年07月17日 9:44
@@ -61,6 +64,11 @@ public class CdCdUserSubscribeServiceImpl extends ServiceImpl<CdUserSubscribeMap
         return updateById(cdUserSubscribe);
     }
 
+    @Override
+    public List<CdUserSubscribe> getUserSubscribeList(CdUserExamSubscribeQueryBo bo) {
+        return baseMapper.getUserSubscribeList(bo);
+    }
+
     /**
      * 获取机构ID
      * @author change

+ 23 - 5
zhongzheng-system/src/main/java/com/zhongzheng/modules/middleground/record/service/impl/CdExamRoomServiceImpl.java

@@ -228,10 +228,13 @@ public class CdExamRoomServiceImpl extends ServiceImpl<CdExamRoomMapper, CdExamR
      */
     @Override
     public List<CdUserExamSubscribeVo> getExamSubscribeList(CdUserExamSubscribeQueryBo bo) {
-        List<CdUserSubscribe> userSubscribe = cdUserSubscribeService.list(new LambdaQueryWrapper<CdUserSubscribe>()
-                .eq(StringUtils.isNotBlank(bo.getMajor()), CdUserSubscribe::getMajor, bo.getMajor())
-                .like(StringUtils.isNotBlank(bo.getUserName()), CdUserSubscribe::getUserName, bo.getUserName())
-                .like(StringUtils.isNotBlank(bo.getCompanyName()), CdUserSubscribe::getCompanyName, bo.getCompanyName()));
+        if (StringUtils.isNotBlank(bo.getUserName())){
+            bo.setUserNameList(Arrays.stream(bo.getUserName().split(",")).collect(Collectors.toList()));
+        }
+        if (StringUtils.isNotBlank(bo.getUserCard())){
+            bo.setUserCardList(Arrays.stream(bo.getUserCard().split(",")).collect(Collectors.toList()));
+        }
+        List<CdUserSubscribe> userSubscribe = cdUserSubscribeService.getUserSubscribeList(bo);
         if (CollectionUtils.isEmpty(userSubscribe)){
             return new ArrayList<>();
         }
@@ -258,10 +261,11 @@ public class CdExamRoomServiceImpl extends ServiceImpl<CdExamRoomMapper, CdExamR
                             examSubscribeVo.setPerformance(cdExamSubscribe.getPerformance());
                             examSubscribeVo.setExamStatus(cdExamSubscribe.getResult());
                             examSubscribeVo.setExamType(cdExamSubscribe.getType());
+                            examSubscribeVo.setPerformanceTime(cdExamSubscribe.getPerformanceTime());
                         }
                         if (ObjectUtils.isNotNull(cdExamSubscribe.getCertificateCode())){
                             examSubscribeVo.setCertificateCode(cdExamSubscribe.getCertificateCode());
-                            examSubscribeVo.setPerformanceTime(cdExamSubscribe.getPerformanceTime());
+                            examSubscribeVo.setCertificateUrl(cdExamSubscribe.getCertificateUrl());
                         }
                         break;
                     case 2://取消
@@ -469,6 +473,20 @@ public class CdExamRoomServiceImpl extends ServiceImpl<CdExamRoomMapper, CdExamR
         }).collect(Collectors.toList());
     }
 
+    @Override
+    public boolean updateExitType(UpdateExitTypeBo bo) {
+        List<CdUserSubscribe> entityList = bo.getIds().stream().map(id -> {
+            CdUserSubscribe userSubscribe = cdUserSubscribeService.getById(id);
+            if (ObjectUtils.isNull(userSubscribe)) {
+                throw new CustomException("数据获取有误!");
+            }
+            userSubscribe.setExitType(bo.getExitType());
+            return userSubscribe;
+        }).collect(Collectors.toList());
+
+        return cdUserSubscribeService.updateBatchById(entityList);
+    }
+
     //预约校验
     private void subscribeVerify(BatchSubscribeBo bo) {
         CdExamRoom courseRoom = getById(bo.getExamId());

+ 10 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/middleground/record/vo/CdUserExamSubscribeVo.java

@@ -24,6 +24,8 @@ public class CdUserExamSubscribeVo implements Serializable {
     private String userCard;
     @ApiModelProperty("用户手机号码")
     private String userPhone;
+    @ApiModelProperty("岗位")
+    private String major;
     @ApiModelProperty("公司名称")
     private String companyName;
 
@@ -40,12 +42,18 @@ public class CdUserExamSubscribeVo implements Serializable {
     @ApiModelProperty("补考次数")
     private Long replenishNum;
 
-    @ApiModelProperty("可预约次数")
-    private Integer subscribeNum;
+    @ApiModelProperty("补考次数")
+    private Integer examNum;
 
     @ApiModelProperty("证书编号")
     private String certificateCode;
     @ApiModelProperty("审核时间")
     private Long performanceTime;
+    @ApiModelProperty("证书地址")
+    private String certificateUrl;
+    @ApiModelProperty("数据来源:1新系统 2旧系统")
+    private Integer dataFrom;
+    @ApiModelProperty("有效状态:0有效 1无效")
+    private Integer exitType;
 
 }

+ 104 - 0
zhongzheng-system/src/main/resources/mapper/modules/middleground/CdUserSubscribeMapper.xml

@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhongzheng.modules.middleground.record.mapper.CdUserSubscribeMapper">
+
+    <select id="getUserSubscribeList" parameterType="com.zhongzheng.modules.middleground.record.bo.CdUserExamSubscribeQueryBo"
+            resultType="com.zhongzheng.modules.middleground.record.domain.CdUserSubscribe">
+        SELECT
+        *
+        FROM
+        cd_user_subscribe cus
+        WHERE
+        (
+        <if test="applyPass != null or applyUnPass != null or subscribe != null or unSubscribe != null">
+            1 = 0
+        </if>
+        <if test="applyPass == null and applyUnPass == null and subscribe == null and unSubscribe == null">
+            1 = 1
+        </if>
+        <if test="applyPass != null ">
+            OR (
+            SELECT COUNT( DISTINCT ces.id ) FROM cd_exam_subscribe ces WHERE
+            cus.id = ces.user_subscribe_id
+            AND ces.subscribe_status = 1
+            AND ces.exam_status = 1
+            AND ces.result = 1
+            ) > 0
+        </if>
+        <if test="applyUnPass != null ">
+            OR ( SELECT
+            COUNT( DISTINCT ces.id )
+            FROM
+            cd_exam_subscribe ces
+            WHERE
+            cus.id = ces.user_subscribe_id
+            AND ces.subscribe_status = 1
+            AND ces.exam_status = 1
+            AND ces.result = 0
+            ) > 0
+        </if>
+        <if test="subscribe != null ">
+            OR (
+            SELECT
+            COUNT( DISTINCT ces.id )
+            FROM
+            cd_exam_subscribe ces
+            WHERE
+            cus.id = ces.user_subscribe_id
+            AND ces.subscribe_status = 1
+            AND ( ces.exam_status IS NULL OR ces.exam_status = 0 )
+            ) > 0
+        </if>
+        <if test="unSubscribe != null">
+            OR ( SELECT COUNT( DISTINCT ces.id ) FROM cd_exam_subscribe ces WHERE cus.id = ces.user_subscribe_id AND ces.subscribe_status = 1 ) <![CDATA[   <=  ]]> 0
+        </if>
+        )
+        <if test="exitType != null ">
+            AND cus.exit_type = #{exitType}
+        </if>
+        <if test="applyNumber != null and applyNumber == 1">
+            AND cus.exam_num > 0
+        </if>
+        <if test="applyNumber != null and applyNumber == 0">
+            AND cus.exam_num <![CDATA[   <=  ]]> 0
+        </if>
+        <if test="certificateStatus != null and certificateStatus == 1">
+            AND (
+            SELECT
+            COUNT( DISTINCT ces.id )
+            FROM
+            cd_exam_subscribe ces
+            WHERE
+            cus.id = ces.user_subscribe_id
+            AND ces.subscribe_status = 1
+            AND ces.certificate_url IS NOT NULL
+            ) > 0
+        </if>
+        <if test="certificateStatus != null and certificateStatus == 0">
+            AND (
+            SELECT
+            COUNT( DISTINCT ces.id )
+            FROM
+            cd_exam_subscribe ces
+            WHERE
+            cus.id = ces.user_subscribe_id
+            AND ces.subscribe_status = 1
+            AND ces.certificate_url IS NULL
+            ) > 0
+        </if>
+        <if test="userNameList != null and userNameList.size()!=0 ">
+            AND cus.user_name in
+            <foreach collection="userNameList" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="userCardList != null and userCardList.size()!=0 ">
+            AND cus.user_card in
+            <foreach collection="userCardList" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+    </select>
+</mapper>