Browse Source

fix 合并

he2802 3 years ago
parent
commit
260b1827f9

+ 6 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/user/UserSubscribeController.java

@@ -350,5 +350,11 @@ public class UserSubscribeController extends BaseController {
         return util.exportEasyExcel(util.exportEasyData(errorList), "导出登记错误数据"+timeStr);
     }
 
+    @ApiOperation("导入前检查身份证是否存在")
+    @PreAuthorize("@ss.hasPermi('system:apply:import')")
+    @PostMapping("/checkIdCardData")
+    public AjaxResult<List<UserSubscribeIdsImport>> checkIdCardData(@RequestBody UserSubscribeIdsImportCheck bo) throws Exception {
+        return AjaxResult.success(iUserSubscribeService.checkIdsDataFilter(bo));
+    }
 
 }

+ 33 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamApplySiteTimeJson.java

@@ -0,0 +1,33 @@
+package com.zhongzheng.modules.exam.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ * 考试安排地点绑定时间编辑对象 exam_apply_site_time
+ *
+ * @author ruoyi
+ * @date 2021-12-07
+ */
+@Data
+@ApiModel("考试安排地点绑定时间编辑对象")
+public class ExamApplySiteTimeJson {
+
+
+    @ApiModelProperty("人数")
+    private Integer num;
+
+
+    /** 开始时间 */
+    @ApiModelProperty("开始时间")
+    private String startTime;
+
+    /** 结束时间 */
+    @ApiModelProperty("结束时间")
+    private String endTim;
+
+
+
+}

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/mapper/ExamApplyMapper.java

@@ -65,4 +65,7 @@ public interface ExamApplyMapper extends BaseMapper<ExamApply> {
 
     Long checkSiteTimeHave(ExamApplyQueryBo bo);
 
+    Long sitePeopleNum(ExamApplyQueryBo bo);
+
+    String siteTimeJson(ExamApplyQueryBo bo);
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserSubscribeService.java

@@ -3,6 +3,7 @@ package com.zhongzheng.modules.user.service;
 import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.domain.UserSubscribe;
 import com.zhongzheng.modules.user.vo.UserSubscribeIdsImport;
+import com.zhongzheng.modules.user.vo.UserSubscribeIdsImportCheck;
 import com.zhongzheng.modules.user.vo.UserSubscribeImport;
 import com.zhongzheng.modules.user.vo.UserSubscribeVo;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -32,6 +33,8 @@ public interface IUserSubscribeService extends IService<UserSubscribe> {
 
 	List<UserSubscribeIdsImport> importIdsDataFilter(List<UserSubscribeIdsImport> list);
 
+	List<UserSubscribeIdsImport> checkIdsDataFilter(UserSubscribeIdsImportCheck bo);
+
 	/**
 	 * 根据新增业务对象插入用户预约考试
 	 * @param bo 用户预约考试新增业务对象

+ 81 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.convert.Convert;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.zhongzheng.common.exception.CustomException;
@@ -15,6 +16,7 @@ import com.zhongzheng.modules.course.domain.CourseBusiness;
 import com.zhongzheng.modules.course.mapper.CourseMapper;
 import com.zhongzheng.modules.course.service.ICourseService;
 import com.zhongzheng.modules.exam.bo.ExamApplyQueryBo;
+import com.zhongzheng.modules.exam.bo.ExamApplySiteTimeJson;
 import com.zhongzheng.modules.exam.mapper.ExamApplyMapper;
 import com.zhongzheng.modules.exam.vo.ExamApplySiteTimeVo;
 import com.zhongzheng.modules.exam.vo.ExamApplySiteVo;
@@ -128,12 +130,32 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
             User user = iUserService.getOne(new LambdaQueryWrapper<User>()
                     .eq(User::getIdCard,info.getIdCard()).last("limit 1"));
             if(Validator.isEmpty(user)){
-                throw new CustomException("学员:"+info.getUserName()+"-"+info.getIdCard()+"没有符合导出的数据");
+                throw new CustomException("学员:"+info.getUserName()+"-"+info.getIdCard()+"不存在没有符合导出的数据,,请先处理再继续操作");
             }
         }
         return list;
     }
 
+    @Override
+    public List<UserSubscribeIdsImport> checkIdsDataFilter(UserSubscribeIdsImportCheck bo) {
+        for(UserSubscribeIdsImport info : bo.getList()){
+            User user = iUserService.getOne(new LambdaQueryWrapper<User>()
+                    .eq(User::getIdCard,info.getIdCard()).last("limit 1"));
+            if(Validator.isEmpty(user)){
+                throw new CustomException("学员:"+info.getUserName()+"-"+info.getIdCard()+"不存在,请先处理再继续操作");
+            }
+            UserSubscribe userSubscribe = this.getOne(new LambdaQueryWrapper<UserSubscribe>()
+                    .eq(UserSubscribe::getSubscribeStatus,1)
+                    .eq(UserSubscribe::getApplyId,bo.getApplyId())
+                    .eq(UserSubscribe::getApplySiteAddress,bo.getApplySiteAddress())
+                    .eq(UserSubscribe::getUserId,user.getUserId()).last("limit 1"));
+            if(Validator.isEmpty(userSubscribe)){
+                throw new CustomException("学员:"+info.getUserName()+"-"+info.getIdCard()+"没有符合导出的数据,请先处理再继续操作");
+            }
+        }
+        return bo.getList();
+    }
+
     /**
      * 实体类转化成视图对象
      *
@@ -195,6 +217,22 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
         if (System.currentTimeMillis()/1000 > time){
             throw new IllegalArgumentException("当前选择的考试时间已过期,请重新预约,选择未过期考试时间");
         }
+        ExamApplyQueryBo queryTimeBo = new ExamApplyQueryBo();
+        queryTimeBo.setApplySiteId(bo.getApplyId());
+        queryTimeBo.setStartTime(bo.getApplySiteStartTime().replace("-", ":"));
+        queryTimeBo.setEndTime(bo.getApplySiteEndTime().replace("-", ":"));
+        queryTimeBo.setExamTime(time);
+        queryTimeBo.setApplySiteAddress(bo.getApplySiteAddress());
+        //考点已申报人数
+        Long sitePeopleNum = examApplyMapper.sitePeopleNum(queryTimeBo);
+        String siteTimeJson = examApplyMapper.siteTimeJson(queryTimeBo);
+        if (Validator.isEmpty(siteTimeJson)) {
+            throw new IllegalArgumentException("考点数据错误");
+        }
+        int existNum = findPeopleNum(queryTimeBo,siteTimeJson);
+        if(existNum==-1||existNum>=sitePeopleNum){
+            throw new CustomException("考点人数已满");
+        }
         validEntityBeforeSave(add);
         add.setSubscribeStatus(1);
         add.setExamStatus(0);
@@ -206,6 +244,17 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
         return add.getSubscribeId();
     }
 
+    private int findPeopleNum(ExamApplyQueryBo queryTimeBo,String siteTimeJson){
+        List<ExamApplySiteTimeJson> list = new ArrayList<ExamApplySiteTimeJson>();
+        list = JSONObject.parseArray(siteTimeJson, ExamApplySiteTimeJson.class);
+        for(ExamApplySiteTimeJson v : list){
+            if(v.getStartTime().equals(queryTimeBo.getStartTime())){
+                return  v.getNum();
+            }
+        }
+        return -1;
+    }
+
     @Override
     public UserSubscribeVo getRecentExam(UserSubscribeQueryBo bo) {
         return this.baseMapper.getRecentExam(bo);
@@ -706,12 +755,28 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
             queryTimeBo.setStartTime(startTime);
             queryTimeBo.setEndTime(endTime);
             queryTimeBo.setExamTime(userSubscribeAddBo.getApplySiteExamTime());
+            queryTimeBo.setApplySiteAddress(userSubscribeImport.getApplySiteAddress());
             Long siteTime = examApplyMapper.checkSiteTimeHave(queryTimeBo);
             if (Validator.isEmpty(siteTime)) {
                 userSubscribeImport.setCause("该考试时间段不存在");
                 userSubscribeImports.add(userSubscribeImport);
                 continue;
             }
+            //考点已申报人数
+            Long sitePeopleNum = examApplyMapper.sitePeopleNum(queryTimeBo);
+            String siteTimeJson = examApplyMapper.siteTimeJson(queryTimeBo);
+            if (Validator.isEmpty(siteTimeJson)) {
+                userSubscribeImport.setCause("考点数据错误");
+                userSubscribeImports.add(userSubscribeImport);
+                continue;
+            }
+            int existNum = findPeopleNum(queryTimeBo,siteTimeJson);
+            if(existNum==-1||existNum>=sitePeopleNum){
+                userSubscribeImport.setCause("考点人数已满");
+                userSubscribeImports.add(userSubscribeImport);
+                continue;
+            }
+
             //查看是否有无考试记录
             ExamApplyQueryBo applyQueryBo = new ExamApplyQueryBo();
             applyQueryBo.setUserId(userId);
@@ -918,13 +983,27 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
             queryTimeBo.setStartTime(startTime);
             queryTimeBo.setEndTime(endTime);
             queryTimeBo.setExamTime(userSubscribeAddBo.getApplySiteExamTime());
+            queryTimeBo.setApplySiteAddress(userSubscribeImport.getApplySiteAddress());
             Long siteTime = examApplyMapper.checkSiteTimeHave(queryTimeBo);
             if (Validator.isEmpty(siteTime)) {
                 userSubscribeImport.setCause("该考试时间段不存在");
                 userSubscribeImports.add(userSubscribeImport);
                 continue;
             }
-
+            //考点已申报人数
+            Long sitePeopleNum = examApplyMapper.sitePeopleNum(queryTimeBo);
+            String siteTimeJson = examApplyMapper.siteTimeJson(queryTimeBo);
+            if (Validator.isEmpty(siteTimeJson)) {
+                userSubscribeImport.setCause("考点数据错误");
+                userSubscribeImports.add(userSubscribeImport);
+                continue;
+            }
+            int existNum = findPeopleNum(queryTimeBo,siteTimeJson);
+            if(existNum==-1||existNum>=sitePeopleNum){
+                userSubscribeImport.setCause("考点人数已满");
+                userSubscribeImports.add(userSubscribeImport);
+                continue;
+            }
 
 
             if (StringUtils.isEmpty(userSubscribeImport.getApplySiteAddressTrain())|| Validator.isEmpty(userSubscribeImport.getApplySiteExamTrainTime())|| Validator.isEmpty(userSubscribeImport.getApplySiteTime())) {

+ 31 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserSubscribeIdsImportCheck.java

@@ -0,0 +1,31 @@
+package com.zhongzheng.modules.user.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * 用户预约考试视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2021-12-07
+ */
+@Data
+@ApiModel("用户身份证ID导入对象")
+public class UserSubscribeIdsImportCheck {
+	private static final long serialVersionUID = 1L;
+
+	/** $column.columnComment */
+	@Excel(name = "身份证数组")
+	private List<UserSubscribeIdsImport> list;
+
+	@Excel(name = "考试ID" )
+	private Long applyId;
+
+	@Excel(name = "*考试地点" )
+	private String applySiteAddress;
+
+}

+ 8 - 0
zhongzheng-system/src/main/resources/mapper/modules/exam/ExamApplyMapper.xml

@@ -409,4 +409,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="checkSiteTimeHave" parameterType="com.zhongzheng.modules.exam.bo.ExamApplyQueryBo" resultType="long">
         SELECT count(*) FROM exam_apply_site_time  where apply_site_id = #{applySiteId} and site_time like concat('%', #{startTime}, '%') and site_time like concat('%', #{endTime}, '%') and exam_time = #{examTime}
     </select>
+
+    <select id="sitePeopleNum" parameterType="com.zhongzheng.modules.exam.bo.ExamApplyQueryBo" resultType="long">
+        SELECT count(*) FROM user_subscribe  where apply_id = #{applySiteId} and apply_site_start_time = #{startTime} and apply_site_end_time = #{endTime} and apply_site_exam_time = #{examTime} and apply_site_address = #{applySiteAddress} and subscribe_status = 1
+    </select>
+
+    <select id="siteTimeJson" parameterType="com.zhongzheng.modules.exam.bo.ExamApplyQueryBo" resultType="String">
+        SELECT site_time FROM exam_apply_site_time  where apply_site_id = #{applySiteId} and  exam_time = #{examTime}
+    </select>
 </mapper>