Browse Source

考试安排

change 3 years ago
parent
commit
202ce9294b

+ 16 - 3
zhongzheng-admin/src/main/java/com/zhongzheng/controller/exam/ExamApplyController.java

@@ -6,6 +6,7 @@ import java.util.Arrays;
 import com.zhongzheng.modules.exam.bo.*;
 import com.zhongzheng.modules.exam.service.IExamApplyGoodsService;
 import com.zhongzheng.modules.exam.service.IExamApplySiteService;
+import com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo;
 import lombok.RequiredArgsConstructor;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -64,9 +65,9 @@ public class ExamApplyController extends BaseController {
      */
     @ApiOperation("获取考试安排详细信息")
     @PreAuthorize("@ss.hasPermi('system:apply:query')")
-    @GetMapping("/{examApplyId}")
-    public AjaxResult<ExamApplyVo> getInfo(@PathVariable("examApplyId" ) Long examApplyId) {
-        return AjaxResult.success(iExamApplyService.queryById(examApplyId));
+    @GetMapping("/{applyId}")
+    public AjaxResult<ExamApplyVo> getInfo(@PathVariable("applyId" ) Long applyId) {
+        return AjaxResult.success(iExamApplyService.queryById(applyId));
     }
 
     /**
@@ -114,5 +115,17 @@ public class ExamApplyController extends BaseController {
         return toAjax(iExamApplyGoodsService.addGoods(bo) ? 1 : 0);
     }
 
+    /**
+     * 查询考试配置绑定商品列表
+     */
+    @ApiOperation("查询考试安排商品列表")
+    @PreAuthorize("@ss.hasPermi('system:goods:list')")
+    @GetMapping("/listGoods")
+    public TableDataInfo<ExamNumberGoodsVo> listGoods(ExamNumberGoodsQueryBo bo) {
+        startPage();
+        List<ExamNumberGoodsVo> list = iExamApplyService.listGoods(bo);
+        return getDataTable(list);
+    }
+
 
 }

+ 19 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamApplyAddBo.java

@@ -45,4 +45,23 @@ public class ExamApplyAddBo {
     /** 1 启用 0未启用 -1删除 2已过期 */
     @ApiModelProperty("1 启用 0未启用 -1删除 2已过期")
     private Integer status;
+    /** 商品类型 1视频2题库 3补考 4前培  */
+    @ApiModelProperty("商品类型 1视频2题库 3补考 4前培 ")
+    private Integer goodsType;
+
+    /** 教育类型id */
+    @ApiModelProperty("教育类型id")
+    private Long educationTypeId;
+
+    /** 业务层次id */
+    @ApiModelProperty("业务层次id")
+    private Long businessId;
+
+    /** 项目ID */
+    @ApiModelProperty("项目ID")
+    private Long projectId;
+    /** 编码 */
+    @ApiModelProperty("编码")
+    private String code;
+
 }

+ 17 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamApplyEditBo.java

@@ -19,7 +19,7 @@ public class ExamApplyEditBo {
 
     /** $column.columnComment */
     @ApiModelProperty("$column.columnComment")
-    private Long examApplyId;
+    private Long applyId;
 
     /** 考试封面 */
     @ApiModelProperty("考试封面")
@@ -54,4 +54,20 @@ public class ExamApplyEditBo {
     @ApiModelProperty("1 启用 0未启用 -1删除 2已过期")
     private Integer status;
 
+    /** 商品类型 1视频2题库 3补考 4前培  */
+    @ApiModelProperty("商品类型 1视频2题库 3补考 4前培 ")
+    private Integer goodsType;
+
+    /** 教育类型id */
+    @ApiModelProperty("教育类型id")
+    private Long educationTypeId;
+
+    /** 业务层次id */
+    @ApiModelProperty("业务层次id")
+    private Long businessId;
+
+    /** 项目ID */
+    @ApiModelProperty("项目ID")
+    private Long projectId;
+
 }

+ 16 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamApplyQueryBo.java

@@ -57,4 +57,20 @@ public class ExamApplyQueryBo extends BaseEntity {
 	/** 1 启用 0未启用 -1删除 2已过期 */
 	@ApiModelProperty("1 启用 0未启用 -1删除 2已过期")
 	private Integer status;
+
+	/** 商品类型 1视频2题库 3补考 4前培  */
+	@ApiModelProperty("商品类型 1视频2题库 3补考 4前培 ")
+	private Integer goodsType;
+
+	/** 教育类型id */
+	@ApiModelProperty("教育类型id")
+	private Long educationTypeId;
+
+	/** 业务层次id */
+	@ApiModelProperty("业务层次id")
+	private Long businessId;
+
+	/** 项目ID */
+	@ApiModelProperty("项目ID")
+	private Long projectId;
 }

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamApplySiteTimeAddBo.java

@@ -35,7 +35,7 @@ public class ExamApplySiteTimeAddBo {
     private Long updateTime;
 
 
-    /** 更新时间 */
-    @ApiModelProperty("更新时间")
+    /** 考试时间段 */
+    @ApiModelProperty("考试时间段")
     private List<ExamApplySiteTimeTwoAddBo> examApplySiteTimeTwo;
 }

+ 17 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/domain/ExamApply.java

@@ -1,6 +1,7 @@
 package com.zhongzheng.modules.exam.domain;
 
 import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
@@ -25,7 +26,7 @@ private static final long serialVersionUID=1L;
 
     /** $column.columnComment */
     @TableId(value = "exam_apply_id")
-    private Long examApplyId;
+    private Long applyId;
     /** 考试封面 */
     private String applyUrl;
     /** 考试标题 */
@@ -46,4 +47,19 @@ private static final long serialVersionUID=1L;
     private Long updateTime;
     /** 1 启用 0未启用 -1删除 2已过期 */
     private Integer status;
+
+    /** 商品类型 1视频2题库 3补考 4前培  */
+    private Integer goodsType;
+
+    /** 教育类型id */
+    private Long educationTypeId;
+
+    /** 业务层次id */
+    private Long businessId;
+
+    /** 项目ID */
+    private Long projectId;
+
+    /** 编码 */
+    private String code;
 }

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

@@ -1,7 +1,11 @@
 package com.zhongzheng.modules.exam.mapper;
 
+import com.zhongzheng.modules.exam.bo.ExamNumberGoodsQueryBo;
 import com.zhongzheng.modules.exam.domain.ExamApply;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo;
+
+import java.util.List;
 
 /**
  * 考试安排Mapper接口
@@ -11,4 +15,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ExamApplyMapper extends BaseMapper<ExamApply> {
 
+    List<ExamNumberGoodsVo> listGoods(ExamNumberGoodsQueryBo bo);
+
+    List<Long> countGoods(Long applyId);
+
+    List<ExamNumberGoodsVo> examNumberGoodsVos(Long applyId);
 }

+ 5 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/IExamApplyService.java

@@ -1,11 +1,13 @@
 package com.zhongzheng.modules.exam.service;
 
+import com.zhongzheng.modules.exam.bo.ExamNumberGoodsQueryBo;
 import com.zhongzheng.modules.exam.domain.ExamApply;
 import com.zhongzheng.modules.exam.vo.ExamApplyVo;
 import com.zhongzheng.modules.exam.bo.ExamApplyQueryBo;
 import com.zhongzheng.modules.exam.bo.ExamApplyAddBo;
 import com.zhongzheng.modules.exam.bo.ExamApplyEditBo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -21,7 +23,7 @@ public interface IExamApplyService extends IService<ExamApply> {
 	 * 查询单个
 	 * @return
 	 */
-	ExamApplyVo queryById(Long examApplyId);
+	ExamApplyVo queryById(Long applyId);
 
 	/**
 	 * 查询列表
@@ -49,4 +51,6 @@ public interface IExamApplyService extends IService<ExamApply> {
 	 * @return
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    List<ExamNumberGoodsVo> listGoods(ExamNumberGoodsQueryBo bo);
 }

+ 28 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamApplyServiceImpl.java

@@ -2,7 +2,11 @@ package com.zhongzheng.modules.exam.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.modules.exam.bo.ExamNumberGoodsQueryBo;
+import com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -31,9 +35,11 @@ import java.util.stream.Collectors;
 public class ExamApplyServiceImpl extends ServiceImpl<ExamApplyMapper, ExamApply> implements IExamApplyService {
 
     @Override
-    public ExamApplyVo queryById(Long examApplyId){
-        ExamApply db = this.baseMapper.selectById(examApplyId);
-        return BeanUtil.toBean(db, ExamApplyVo.class);
+    public ExamApplyVo queryById(Long applyId){
+        ExamApply db = this.baseMapper.selectById(applyId);
+        ExamApplyVo examApplyVo = BeanUtil.toBean(db, ExamApplyVo.class);
+        List<ExamNumberGoodsVo> examNumberGoodsVos = baseMapper.examNumberGoodsVos(applyId);
+        return examApplyVo;
     }
 
     @Override
@@ -73,6 +79,7 @@ public class ExamApplyServiceImpl extends ServiceImpl<ExamApplyMapper, ExamApply
     public Boolean insertByAddBo(ExamApplyAddBo bo) {
         ExamApply add = BeanUtil.toBean(bo, ExamApply.class);
         validEntityBeforeSave(add);
+        add.setCode(ServletUtils.getEncoded("KSAP"));
         add.setCreateTime(DateUtils.getNowTime());
         add.setUpdateTime(DateUtils.getNowTime());
         return this.save(add);
@@ -81,6 +88,19 @@ public class ExamApplyServiceImpl extends ServiceImpl<ExamApplyMapper, ExamApply
     @Override
     public Boolean updateByEditBo(ExamApplyEditBo bo) {
         ExamApply update = BeanUtil.toBean(bo, ExamApply.class);
+        if (bo.getStatus() == 1){
+            List<Long> contGoodsId = baseMapper.countGoods(bo.getApplyId());
+            if (CollectionUtils.isNotEmpty(contGoodsId)){
+                String goodsName ="";
+                for (Long goodsId : contGoodsId) {
+                    ExamNumberGoodsQueryBo examNumberGoodsQueryBo = new ExamNumberGoodsQueryBo();
+                    examNumberGoodsQueryBo.setGoodsId(goodsId);
+                    List<ExamNumberGoodsVo> examNumberGoodsVos = this.listGoods(examNumberGoodsQueryBo);
+                    goodsName.concat(examNumberGoodsVos.get(0).getGoodsName()+",");
+                }
+                throw new RuntimeException(goodsName+"已被其他进行中的考试计划使用,请修改,再启用");
+            }
+        }
         validEntityBeforeSave(update);
         update.setUpdateTime(DateUtils.getNowTime());
         return this.updateById(update);
@@ -102,4 +122,9 @@ public class ExamApplyServiceImpl extends ServiceImpl<ExamApplyMapper, ExamApply
         }
         return this.removeByIds(ids);
     }
+
+    @Override
+    public List<ExamNumberGoodsVo> listGoods(ExamNumberGoodsQueryBo bo) {
+        return baseMapper.listGoods(bo);
+    }
 }

+ 27 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/vo/ExamApplySiteTimeTwoVo.java

@@ -0,0 +1,27 @@
+package com.zhongzheng.modules.exam.vo;
+
+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 ExamApplySiteTimeTwoVo {
+
+
+    @ApiModelProperty("开始时间")
+    private Long startTime;
+    /** 更新时间 */
+    @ApiModelProperty("结束时间")
+    private Long endTime;
+
+    @ApiModelProperty("人数上限")
+    private Long num;
+}

+ 6 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/vo/ExamApplySiteTimeVo.java

@@ -2,11 +2,12 @@ package com.zhongzheng.modules.exam.vo;
 
 import com.zhongzheng.common.annotation.Excel;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zhongzheng.modules.exam.bo.ExamApplySiteTimeTwoAddBo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import java.util.Date;
-
+import java.util.List;
 
 
 /**
@@ -36,4 +37,8 @@ public class ExamApplySiteTimeVo {
 	@Excel(name = "考试日期")
 	@ApiModelProperty("考试日期")
 	private Long examTime;
+
+	/** 考试时间段 */
+	@ApiModelProperty("考试时间段")
+	private List<ExamApplySiteTimeTwoAddBo> examApplySiteTimeTwo;
 }

+ 13 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/vo/ExamApplySiteVo.java

@@ -6,7 +6,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import java.util.Date;
-
+import java.util.List;
 
 
 /**
@@ -36,4 +36,16 @@ public class ExamApplySiteVo {
 	@Excel(name = "1 考试地点 2考培地点")
 	@ApiModelProperty("1 考试地点 2考培地点")
 	private Integer status;
+	/** 地址 */
+	@Excel(name = "地址")
+	@ApiModelProperty("地址")
+	private String siteAddress;
+
+	/** 人数 */
+	@Excel(name = "人数")
+	@ApiModelProperty("人数")
+	private Long people;
+
+	@ApiModelProperty("考试地点时间")
+	private List<ExamApplySiteTimeVo> examApplySiteTime;
 }

+ 24 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/vo/ExamApplyVo.java

@@ -6,7 +6,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import java.util.Date;
-
+import java.util.List;
 
 
 /**
@@ -22,7 +22,7 @@ public class ExamApplyVo {
 
 	/** $pkColumn.columnComment */
 	@ApiModelProperty("$pkColumn.columnComment")
-	private Long examApplyId;
+	private Long applyId;
 
 	/** 考试封面 */
 	@Excel(name = "考试封面")
@@ -52,4 +52,26 @@ public class ExamApplyVo {
 	@Excel(name = "1 启用 0未启用 -1删除 2已过期")
 	@ApiModelProperty("1 启用 0未启用 -1删除 2已过期")
 	private Integer status;
+
+	/** 商品类型 1视频2题库 3补考 4前培  */
+	@ApiModelProperty("商品类型 1视频2题库 3补考 4前培 ")
+	private Integer goodsType;
+
+	/** 教育类型id */
+	@ApiModelProperty("教育类型id")
+	private Long educationTypeId;
+
+	/** 业务层次id */
+	@ApiModelProperty("业务层次id")
+	private Long businessId;
+
+	/** 项目ID */
+	@ApiModelProperty("项目ID")
+	private Long projectId;
+
+	@ApiModelProperty("考试地点时间")
+	private List<ExamApplySiteVo> examApplySite;
+
+	@ApiModelProperty("商品")
+	private List<ExamNumberGoodsVo> examNumberGoods;
 }

+ 60 - 1
zhongzheng-system/src/main/resources/mapper/modules/exam/ExamApplyMapper.xml

@@ -5,7 +5,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 <mapper namespace="com.zhongzheng.modules.exam.mapper.ExamApplyMapper">
 
     <resultMap type="com.zhongzheng.modules.exam.domain.ExamApply" id="ExamApplyResult">
-        <result property="examApplyId" column="exam_apply_id"/>
+        <result property="applyId" column="exam_apply_id"/>
         <result property="applyUrl" column="apply_url"/>
         <result property="applyName" column="apply_name"/>
         <result property="applyIntroduce" column="apply_introduce"/>
@@ -17,5 +17,64 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="status" column="status"/>
     </resultMap>
 
+    <resultMap type="com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo" id="ExamNumberGoodsVoResult">
+        <result property="id" column="id"/>
+        <result property="examNumberId" column="exam_number_id"/>
+        <result property="goodsId" column="goods_id"/>
+        <result property="goodsName" column="goods_name"/>
+        <result property="code" column="code"/>
+        <result property="standPrice" column="stand_price"/>
+        <result property="goodsStatus" column="goods_status"/>
+    </resultMap>
+
+    <select id="listGoods" parameterType="com.zhongzheng.modules.exam.bo.ExamNumberQueryBo" resultMap="ExamNumberGoodsVoResult">
+        SELECT
+        goods_id,
+        goods_name,
+        CODE,
+        stand_price,
+        (case WHEN (SELECT COUNT(ea.apply_id) FROM exam_apply ea LEFT JOIN exam_apply_goods eag on ea.apply_id =eag.apply_id where 1=1 and eag.goods_id = g.goods_id and ea.status =1) >0 then 0 ELSE 1 end) as goods_status
+        FROM
+        goods g
+        WHERE
+        1 = 1
+        and g.status in(1)
+        <if test="businessId != null and businessId != ''">
+            and g.business_id = #{businessId}
+        </if>
+        <if test="goodsId != null and goodsId != ''">
+            and g.goods_id = #{goodsId}
+        </if>
+        <if test="projectId != null and projectId != ''">
+            and g.project_id = #{projectId}
+        </if>
+        <if test="goodsType != null and goodsType != ''">
+            and g.goods_type = #{goodsType}
+        </if>
+    </select>
+
+    <select id="countGoods" parameterType="long" resultType="long">
+        SELECT
+        eag.goods_id
+        FROM
+            exam_apply ea
+            LEFT JOIN exam_apply_goods eag ON ea.apply_id = eag.apply_id where ea.apply_id =#{applyId}
+and (SELECT COUNT(eay.apply_id) FROM exam_apply eay LEFT JOIN exam_apply_goods eags ON eay.apply_id = eags.apply_id where eags.goods_id = eag.goods_id and eags.apply_id != eag.apply_id and eay.status =1) > 0
+    </select>
+
+    <select id="examNumberGoodsVos" parameterType="long" resultMap="ExamNumberGoodsVoResult">
+        SELECT
+            g.goods_id,
+            g.goods_name,
+            g.CODE,
+            g.stand_price
+        FROM
+            goods g
+                LEFT JOIN exam_apply_goods eag ON g.goods_id = eag.goods_id
+        WHERE
+            1 = 1
+          AND g.STATUS IN ( 1 )
+          AND eag.apply_id =#{applyId}
 
+    </select>
 </mapper>

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/exam/ExamNumberGoodsMapper.xml

@@ -45,7 +45,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             goods_name,
             CODE,
             stand_price,
-            (case WHEN (SELECT COUNT(en.exam_number_id) FROM exam_number en LEFT JOIN exam_number_goods eng on en.exam_number_id =eng.exam_number_id where 1=1 and eng.goods_id = g.goods_id  ) >0 then 0 ELSE 1 end) as goods_status
+            (case WHEN (SELECT COUNT(en.exam_number_id) FROM exam_number en LEFT JOIN exam_number_goods eng on en.exam_number_id =eng.exam_number_id where 1=1 and eng.goods_id = g.goods_id and en.status =1) >0 then 0 ELSE 1 end) as goods_status
         FROM
             goods g
         WHERE