liusheng
2023-06-13 196829a351cac0c7504a16e314c6f1169d1149e7
批量上传题库
已添加1个文件
已修改10个文件
1040 ■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTopicController.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/pom.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/SvyLibTopic.java 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/SvyLibTopicRes.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/SvyLibTopicoption.java 448 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/SvyLibTopicMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/SvyLibTopicoptionMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IPatArchiveService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/ISvyLibTopicService.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/SvyLibTopicServiceImpl.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/SvyLibTopicMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTopicController.java
@@ -1,7 +1,12 @@
package com.smartor.controller;
package com.ruoyi.web.controller.smartor;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -20,6 +25,7 @@
import com.smartor.service.ISvyLibTopicService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
/**
 * é—®å·é¢˜ç›®Controller
@@ -27,10 +33,10 @@
 * @author ruoyi
 * @date 2023-03-03
 */
@Api("问卷题目")
@RestController
@RequestMapping("/smartor/svytopic")
public class SvyLibTopicController extends BaseController
{
public class SvyLibTopicController extends BaseController {
    @Autowired
    private ISvyLibTopicService svyLibTopicService;
@@ -39,8 +45,7 @@
     */
    @PreAuthorize("@ss.hasPermi('smartor:svytopic:list')")
    @GetMapping("/list")
    public TableDataInfo list(SvyLibTopic svyLibTopic)
    {
    public TableDataInfo list(SvyLibTopic svyLibTopic) {
        startPage();
        List<SvyLibTopic> list = svyLibTopicService.selectSvyLibTopicList(svyLibTopic);
        return getDataTable(list);
@@ -51,9 +56,9 @@
     */
    @PreAuthorize("@ss.hasPermi('smartor:svytopic:export')")
    @Log(title = "问卷题目", businessType = BusinessType.EXPORT)
    @ApiOperation("导出问卷题目列表")
    @PostMapping("/export")
    public void export(HttpServletResponse response, SvyLibTopic svyLibTopic)
    {
    public void export(HttpServletResponse response, SvyLibTopic svyLibTopic) {
        List<SvyLibTopic> list = svyLibTopicService.selectSvyLibTopicList(svyLibTopic);
        ExcelUtil<SvyLibTopic> util = new ExcelUtil<SvyLibTopic>(SvyLibTopic.class);
        util.exportExcel(response, list, "问卷题目数据");
@@ -62,43 +67,57 @@
    /**
     * èŽ·å–é—®å·é¢˜ç›®è¯¦ç»†ä¿¡æ¯
     */
    @ApiOperation("获取问卷题目详细信息")
    @PreAuthorize("@ss.hasPermi('smartor:svytopic:query')")
    @GetMapping(value = "/{topicid}")
    public AjaxResult getInfo(@PathVariable("topicid") Long topicid)
    {
    public AjaxResult getInfo(@PathVariable("topicid") Long topicid) {
        return success(svyLibTopicService.selectSvyLibTopicByTopicid(topicid));
    }
    /**
     * æ–°å¢žé—®å·é¢˜ç›®
     */
    @ApiOperation("新增问卷题目")
    @PreAuthorize("@ss.hasPermi('smartor:svytopic:add')")
    @Log(title = "问卷题目", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody SvyLibTopic svyLibTopic)
    {
    public AjaxResult add(@RequestBody SvyLibTopic svyLibTopic) {
        return toAjax(svyLibTopicService.insertSvyLibTopic(svyLibTopic));
    }
    /**
     * ä¿®æ”¹é—®å·é¢˜ç›®
     */
    @ApiOperation("修改问卷题目")
    @PreAuthorize("@ss.hasPermi('smartor:svytopic:edit')")
    @Log(title = "问卷题目", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody SvyLibTopic svyLibTopic)
    {
    public AjaxResult edit(@RequestBody SvyLibTopic svyLibTopic) {
        return toAjax(svyLibTopicService.updateSvyLibTopic(svyLibTopic));
    }
    /**
     * åˆ é™¤é—®å·é¢˜ç›®
     */
    @ApiOperation("删除问卷题目")
    @PreAuthorize("@ss.hasPermi('smartor:svytopic:remove')")
    @Log(title = "问卷题目", businessType = BusinessType.DELETE)
    @DeleteMapping("/{topicids}")
    public AjaxResult remove(@PathVariable Long[] topicids)
    {
    public AjaxResult remove(@PathVariable Long[] topicids) {
        return toAjax(svyLibTopicService.deleteSvyLibTopicByTopicids(topicids));
    }
    /**
     * æ‰¹é‡å¯¼å…¥é—®é—®é¢˜ç›®
     */
    @ApiOperation("批量导入问问题目")
    @PostMapping("/importLitTopic")
    public AjaxResult importLitTopic(MultipartFile multipartFile) {
        LoginUser loginUser = getLoginUser();
        SysUser user = loginUser.getUser();
        return success(svyLibTopicService.importLitTopic(user, multipartFile));
    }
}
smartor/pom.xml
@@ -28,7 +28,11 @@
            <artifactId>swagger-annotations</artifactId>
            <version>1.6.2</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-spring-boot-starter</artifactId>
            <version>4.4.0</version>
        </dependency>
    </dependencies>
</project>
smartor/src/main/java/com/smartor/domain/SvyLibTopic.java
@@ -1,7 +1,11 @@
package com.smartor.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
@@ -13,193 +17,104 @@
 * @author ruoyi
 * @date 2023-03-03
 */
public class SvyLibTopic extends BaseEntity
{
@Data
@ApiModel(value = "SvyLibTopic", description = "问卷题目对象")
public class SvyLibTopic extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**  è‡ªå¢žID  */
    /**
     * è‡ªå¢žID
     */
    @ApiModelProperty(name = "自增ID")
    private Long topicid;
    /**  è€ç‰ˆæœ¬ID  */
    /**
     * è€ç‰ˆæœ¬ID
     */
    @ApiModelProperty(name = "老版本ID")
    private Long oldid;
    /**  é—®å·ID  */
    /**
     * é—®å·ID
     */
    @Excel(name = " é—®å·ID ")
    @ApiModelProperty(name = "问卷ID")
    private Long svyid;
    /**  é¢˜ç›®ç±»åž‹;枚举 1.单选 2多选 3填空  */
    /**
     * é¢˜ç›®ç±»åž‹;枚举 1.单选 2多选 3填空
     */
    @Excel(name = " é¢˜ç›®ç±»åž‹;枚举 1.单选 2多选 3填空 ")
    @ApiModelProperty(name = "题目类型;枚举 1.单选 2多选 3填空")
    private Long topictype;
    /**  é¢˜ç›®Code  */
    /**
     * é¢˜ç›®Code
     */
    @ApiModelProperty(name = "题目Code")
    private String topiccode;
    /**  é¢˜ç›®  */
    /**
     * é¢˜ç›®
     */
    @Excel(name = " é¢˜ç›® ")
    @ApiModelProperty(name = "题目")
    private String topic;
    /**  æŽ’序  */
    /**
     * æŽ’序
     */
    @Excel(name = " æŽ’序 ")
    @ApiModelProperty(name = "排序")
    private Long sort;
    /**  æ˜¯å¦å¿…å¡«  */
    /**
     * æ˜¯å¦å¿…å¡«
     */
    @ApiModelProperty(name = "是否必填")
    private Long ismandatory;
    /**  æ˜¯å¦éšè—  */
    /**
     * æ˜¯å¦éšè—
     */
    @Excel(name = " æ˜¯å¦éšè— ")
    @ApiModelProperty(name = "是否隐藏")
    private Long ishide;
    /**  åˆ é™¤æ ‡è®°  */
    /**
     * åˆ é™¤æ ‡è®°
     */
    @ApiModelProperty(name = "删除标记")
    private String delFlag;
    /**  æœºæž„ID  */
    /**
     * æœºæž„ID
     */
    @Excel(name = " æœºæž„ID ")
    @ApiModelProperty(name = "机构ID")
    private String orgid;
    /**  ä¸Šä¼ æ ‡è®°  */
    /**
     * ä¸Šä¼ æ ‡è®°
     */
    @ApiModelProperty(name = "上传标记")
    private Long isupload;
    /**  ä¸Šä¼ æ—¶é—´  */
    /**
     * ä¸Šä¼ æ ‡è®°
     */
    @ApiModelProperty(name = "标签")
    private String tag;
    /**
     * ä¸Šä¼ æ—¶é—´
     */
    @ApiModelProperty(name = "上传时间")
    private Date uploadTime;
    public void setTopicid(Long topicid)
    {
        this.topicid = topicid;
    }
    public Long getTopicid()
    {
        return topicid;
    }
    public void setOldid(Long oldid)
    {
        this.oldid = oldid;
    }
    public Long getOldid()
    {
        return oldid;
    }
    public void setSvyid(Long svyid)
    {
        this.svyid = svyid;
    }
    public Long getSvyid()
    {
        return svyid;
    }
    public void setTopictype(Long topictype)
    {
        this.topictype = topictype;
    }
    public Long getTopictype()
    {
        return topictype;
    }
    public void setTopiccode(String topiccode)
    {
        this.topiccode = topiccode;
    }
    public String getTopiccode()
    {
        return topiccode;
    }
    public void setTopic(String topic)
    {
        this.topic = topic;
    }
    public String getTopic()
    {
        return topic;
    }
    public void setSort(Long sort)
    {
        this.sort = sort;
    }
    public Long getSort()
    {
        return sort;
    }
    public void setIsmandatory(Long ismandatory)
    {
        this.ismandatory = ismandatory;
    }
    public Long getIsmandatory()
    {
        return ismandatory;
    }
    public void setIshide(Long ishide)
    {
        this.ishide = ishide;
    }
    public Long getIshide()
    {
        return ishide;
    }
    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }
    public String getDelFlag()
    {
        return delFlag;
    }
    public void setOrgid(String orgid)
    {
        this.orgid = orgid;
    }
    public String getOrgid()
    {
        return orgid;
    }
    public void setIsupload(Long isupload)
    {
        this.isupload = isupload;
    }
    public Long getIsupload()
    {
        return isupload;
    }
    public void setUploadTime(Date uploadTime)
    {
        this.uploadTime = uploadTime;
    }
    public Date getUploadTime()
    {
        return uploadTime;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("topicid", getTopicid())
            .append("oldid", getOldid())
            .append("svyid", getSvyid())
            .append("topictype", getTopictype())
            .append("topiccode", getTopiccode())
            .append("topic", getTopic())
            .append("sort", getSort())
            .append("ismandatory", getIsmandatory())
            .append("ishide", getIshide())
            .append("delFlag", getDelFlag())
            .append("orgid", getOrgid())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("isupload", getIsupload())
            .append("uploadTime", getUploadTime())
            .toString();
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("topicid", getTopicid()).append("oldid", getOldid()).append("svyid", getSvyid()).append("topictype", getTopictype()).append("topiccode", getTopiccode()).append("topic", getTopic()).append("sort", getSort()).append("ismandatory", getIsmandatory()).append("ishide", getIshide()).append("delFlag", getDelFlag()).append("orgid", getOrgid()).append("createBy", getCreateBy()).append("createTime", getCreateTime()).append("updateBy", getUpdateBy()).append("updateTime", getUpdateTime()).append("isupload", getIsupload()).append("uploadTime", getUploadTime()).toString();
    }
}
smartor/src/main/java/com/smartor/domain/SvyLibTopicRes.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,95 @@
package com.smartor.domain;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * é—®å·é¢˜ç›®å¯¹è±¡ svy_lib_topic
 *
 * @author ruoyi
 * @date 2023-03-03
 */
@Data
@ApiModel(value = "SvyLibTopicRes", description = "问卷题目返参")
public class SvyLibTopicRes extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * è‡ªå¢žID
     */
    @ApiModelProperty(name = "自增ID")
    private Long topicid;
    /**
     * é—®å·ID
     */
    @ApiModelProperty(name = "问卷ID")
    private Long svyid;
    /**
     * é¢˜ç›®
     */
    @ApiModelProperty(name = "题目")
    private String topic;
    /**
     * ç±»åˆ«
     */
    @ApiModelProperty(name = "类别")
    private String tag;
    /**
     * é¢˜ç›®ç±»åž‹;枚举 1.单选 2多选 3填空
     */
    @ApiModelProperty(name = "题目类型;枚举 1.单选 2多选 3填空")
    private String topictype;
    /**
     * ç­”案
     */
    @ApiModelProperty(name = "答案")
    private String answer;
    /**
     * é€‰é¡¹A
     */
    @ApiModelProperty(name = "选项A")
    private String optionA;
    /**
     * é€‰é¡¹B
     */
    @ApiModelProperty(name = "选项B")
    private String optionB;
    /**
     * é€‰é¡¹C
     */
    @ApiModelProperty(name = "选项C")
    private String optionC;
    /**
     * é€‰é¡¹D
     */
    @ApiModelProperty(name = "选项D")
    private String optionD;
    /**
     * åˆ†æ•°
     */
    @ApiModelProperty(name = "分数")
    private String score;
    /**
     * å¤‡æ³¨
     */
    @ApiModelProperty(name = "备注")
    private String remark;
}
smartor/src/main/java/com/smartor/domain/SvyLibTopicoption.java
@@ -1,7 +1,11 @@
package com.smartor.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
@@ -13,395 +17,173 @@
 * @author ruoyi
 * @date 2023-03-02
 */
public class SvyLibTopicoption extends BaseEntity
{
    private static final long serialVersionUID = 1L;
@Data
@ApiModel(value = "SvyLibTopicoption", description = "问卷问题选项对象")
public class SvyLibTopicoption extends BaseEntity {
    /**  è‡ªå¢žID  */
    /**
     * è‡ªå¢žID
     */
    @ApiModelProperty(name = "自增ID")
    private Long optionid;
    /**  é¢˜ç›®ID  */
    /**
     * é¢˜ç›®ID
     */
    @ApiModelProperty(name = "题目ID")
    @Excel(name = " é¢˜ç›®ID ")
    private Long topicid;
    /**  é—®å·ID  */
    @Excel(name = " é—®å·ID ")
    /**
     * é—®å·ID
     */
    @ApiModelProperty(name = "问卷ID")
    private Long svyid;
    /**  é¢˜ç›®ç±»åž‹  */
    @Excel(name = " é¢˜ç›®ç±»åž‹ ")
    /**
     * é¢˜ç›®ç±»åž‹
     */
    @ApiModelProperty(name = "题目类型")
    private Long topictype;
    /**  é€‰é¡¹Code  */
    @Excel(name = " é€‰é¡¹Code ")
    /**
     * é€‰é¡¹Code
     */
    @ApiModelProperty(name = "选项Code")
    private String optioncode;
    /**  é€‰é¡¹å†…容  */
    @Excel(name = " é€‰é¡¹å†…容 ")
    /**
     * é€‰é¡¹å†…容
     */
    @ApiModelProperty(name = "选项内容")
    private String optioncontent;
    /**  æ˜¯å¦å­˜åœ¨æ˜Žç»†  */
    @Excel(name = " æ˜¯å¦å­˜åœ¨æ˜Žç»† ")
    /**
     * æ˜¯å¦å­˜åœ¨æ˜Žç»†
     */
    @ApiModelProperty(name = "是否存在明细")
    private Long isexistdetail;
    /**  æ˜Žç»†æ˜¯å¦å¿…å¡«  */
    @Excel(name = " æ˜Žç»†æ˜¯å¦å¿…å¡« ")
    /**
     * æ˜Žç»†æ˜¯å¦å¿…å¡«
     */
    @ApiModelProperty(name = "明细是否必填")
    private Long detailismandatory;
    /**  æ˜¯å¦å¼‚常项目  */
    @Excel(name = " æ˜¯å¦å¼‚常项目 ")
    /**
     * æ˜¯å¦å¼‚常项目
     */
    @ApiModelProperty(name = "是否异常项目")
    private Long isexceptionitem;
    /**  æ˜¯å¦è·Ÿè¿›  */
    @Excel(name = " æ˜¯å¦è·Ÿè¿› ")
    /**
     * æ˜¯å¦è·Ÿè¿›
     */
    @ApiModelProperty(name = "是否跟进")
    private Long istrack;
    /**  åˆ†æ•°  */
    @Excel(name = " åˆ†æ•° ")
    /**
     * åˆ†æ•°
     */
    @ApiModelProperty(name = "分数")
    private Long score;
    /**  æç¤º  */
    @Excel(name = " æç¤º ")
    /**
     * æç¤º
     */
    @ApiModelProperty(name = "提示")
    private String prompt;
    /**  è·³è½¬  */
    @Excel(name = " è·³è½¬ ")
    /**
     * è·³è½¬
     */
    @ApiModelProperty(name = "跳转")
    private String jump;
    /**  çˆ¶é€‰é¡¹ID  */
    @Excel(name = " çˆ¶é€‰é¡¹ID ")
    /**
     * çˆ¶é€‰é¡¹ID
     */
    @ApiModelProperty(name = "父选项ID")
    private Long parentoptionid;
    /**  æ˜¯å¦äº’æ–¥  */
    @Excel(name = " æ˜¯å¦äº’æ–¥ ")
    /**
     * æ˜¯å¦äº’æ–¥
     */
    @ApiModelProperty(name = "是否互斥")
    private Long ismutex;
    /**  éªŒè¯è§„则  */
    @Excel(name = " éªŒè¯è§„则 ")
    /**
     * éªŒè¯è§„则
     */
    @ApiModelProperty(name = "验证规则")
    private String verifyrule;
    /**  æŽ’序  */
    @Excel(name = " æŽ’序 ")
    /**
     * æŽ’序
     */
    @ApiModelProperty(name = "排序")
    private Long sort;
    /**  éªŒè¯ç±»åž‹;0.不验证 1.整数 2.小数 3.手机号 4.身份证 5.日期  */
    @Excel(name = " éªŒè¯ç±»åž‹;0.不验证 1.整数 2.小数 3.手机号 4.身份证 5.日期 ")
    /**
     * éªŒè¯ç±»åž‹;0.不验证 1.整数 2.小数 3.手机号 4.身份证 5.日期
     */
    @ApiModelProperty(name = "验证类型;0.不验证 1.整数 2.小数 3.手机号 4.身份证 5.日期 ")
    private Long verificationtype;
    /**  æ˜¯å¦é™åˆ¶èŒƒå›´  */
    @Excel(name = " æ˜¯å¦é™åˆ¶èŒƒå›´ ")
    /**
     * æ˜¯å¦é™åˆ¶èŒƒå›´
     */
    @ApiModelProperty(name = "是否限制范围")
    private Long isrange;
    /**  æœ€å°èŒƒå›´  */
    @Excel(name = " æœ€å°èŒƒå›´ ")
    /**
     * æœ€å°èŒƒå›´
     */
    @ApiModelProperty(name = "最小范围")
    private String minrange;
    /**  æœ€å¤§èŒƒå›´  */
    @Excel(name = " æœ€å¤§èŒƒå›´ ")
    /**
     * æœ€å¤§èŒƒå›´
     */
    @ApiModelProperty(name = "最大范围")
    private String maxrange;
    /**  èŒƒå›´é•¿åº¦;用于小数保留位数  */
    @Excel(name = " èŒƒå›´é•¿åº¦;用于小数保留位数 ")
    /**
     * èŒƒå›´é•¿åº¦;用于小数保留位数
     */
    @ApiModelProperty(name = "范围长度;用于小数保留位数")
    private Long rangelength;
    /**  æœºæž„ID  */
    @Excel(name = " æœºæž„ID ")
    /**
     * æœºæž„ID
     */
    @ApiModelProperty(name = "机构ID")
    private String orgid;
    /**  ä¸Šä¸€ç‰ˆæœ¬ID  */
    @Excel(name = " ä¸Šä¸€ç‰ˆæœ¬ID ")
    /**
     * ä¸Šä¸€ç‰ˆæœ¬ID
     */
    @ApiModelProperty(name = "上一版本ID")
    private Long oldid;
    /**  åˆ é™¤æ ‡è®°  */
    /**
     * åˆ é™¤æ ‡è®°
     */
    @ApiModelProperty(name = "删除标记")
    private String delFlag;
    /**  ä¸Šä¼ æ ‡è®°  */
    @Excel(name = " ä¸Šä¼ æ ‡è®° ")
    /**
     * ä¸Šä¼ æ ‡è®°
     */
    @ApiModelProperty(name = "上传标记")
    private Long isupload;
    /**  ä¸Šä¼ æ—¶é—´  */
    /**
     * ä¸Šä¼ æ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = " ä¸Šä¼ æ—¶é—´ ", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(name = "上传时间")
    private Date uploadTime;
    public void setOptionid(Long optionid)
    {
        this.optionid = optionid;
    }
    public Long getOptionid()
    {
        return optionid;
    }
    public void setTopicid(Long topicid)
    {
        this.topicid = topicid;
    }
    public Long getTopicid()
    {
        return topicid;
    }
    public void setSvyid(Long svyid)
    {
        this.svyid = svyid;
    }
    public Long getSvyid()
    {
        return svyid;
    }
    public void setTopictype(Long topictype)
    {
        this.topictype = topictype;
    }
    public Long getTopictype()
    {
        return topictype;
    }
    public void setOptioncode(String optioncode)
    {
        this.optioncode = optioncode;
    }
    public String getOptioncode()
    {
        return optioncode;
    }
    public void setOptioncontent(String optioncontent)
    {
        this.optioncontent = optioncontent;
    }
    public String getOptioncontent()
    {
        return optioncontent;
    }
    public void setIsexistdetail(Long isexistdetail)
    {
        this.isexistdetail = isexistdetail;
    }
    public Long getIsexistdetail()
    {
        return isexistdetail;
    }
    public void setDetailismandatory(Long detailismandatory)
    {
        this.detailismandatory = detailismandatory;
    }
    public Long getDetailismandatory()
    {
        return detailismandatory;
    }
    public void setIsexceptionitem(Long isexceptionitem)
    {
        this.isexceptionitem = isexceptionitem;
    }
    public Long getIsexceptionitem()
    {
        return isexceptionitem;
    }
    public void setIstrack(Long istrack)
    {
        this.istrack = istrack;
    }
    public Long getIstrack()
    {
        return istrack;
    }
    public void setScore(Long score)
    {
        this.score = score;
    }
    public Long getScore()
    {
        return score;
    }
    public void setPrompt(String prompt)
    {
        this.prompt = prompt;
    }
    public String getPrompt()
    {
        return prompt;
    }
    public void setJump(String jump)
    {
        this.jump = jump;
    }
    public String getJump()
    {
        return jump;
    }
    public void setParentoptionid(Long parentoptionid)
    {
        this.parentoptionid = parentoptionid;
    }
    public Long getParentoptionid()
    {
        return parentoptionid;
    }
    public void setIsmutex(Long ismutex)
    {
        this.ismutex = ismutex;
    }
    public Long getIsmutex()
    {
        return ismutex;
    }
    public void setVerifyrule(String verifyrule)
    {
        this.verifyrule = verifyrule;
    }
    public String getVerifyrule()
    {
        return verifyrule;
    }
    public void setSort(Long sort)
    {
        this.sort = sort;
    }
    public Long getSort()
    {
        return sort;
    }
    public void setVerificationtype(Long verificationtype)
    {
        this.verificationtype = verificationtype;
    }
    public Long getVerificationtype()
    {
        return verificationtype;
    }
    public void setIsrange(Long isrange)
    {
        this.isrange = isrange;
    }
    public Long getIsrange()
    {
        return isrange;
    }
    public void setMinrange(String minrange)
    {
        this.minrange = minrange;
    }
    public String getMinrange()
    {
        return minrange;
    }
    public void setMaxrange(String maxrange)
    {
        this.maxrange = maxrange;
    }
    public String getMaxrange()
    {
        return maxrange;
    }
    public void setRangelength(Long rangelength)
    {
        this.rangelength = rangelength;
    }
    public Long getRangelength()
    {
        return rangelength;
    }
    public void setOrgid(String orgid)
    {
        this.orgid = orgid;
    }
    public String getOrgid()
    {
        return orgid;
    }
    public void setOldid(Long oldid)
    {
        this.oldid = oldid;
    }
    public Long getOldid()
    {
        return oldid;
    }
    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }
    public String getDelFlag()
    {
        return delFlag;
    }
    public void setIsupload(Long isupload)
    {
        this.isupload = isupload;
    }
    public Long getIsupload()
    {
        return isupload;
    }
    public void setUploadTime(Date uploadTime)
    {
        this.uploadTime = uploadTime;
    }
    public Date getUploadTime()
    {
        return uploadTime;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("optionid", getOptionid())
            .append("topicid", getTopicid())
            .append("svyid", getSvyid())
            .append("topictype", getTopictype())
            .append("optioncode", getOptioncode())
            .append("optioncontent", getOptioncontent())
            .append("isexistdetail", getIsexistdetail())
            .append("detailismandatory", getDetailismandatory())
            .append("isexceptionitem", getIsexceptionitem())
            .append("istrack", getIstrack())
            .append("score", getScore())
            .append("prompt", getPrompt())
            .append("jump", getJump())
            .append("parentoptionid", getParentoptionid())
            .append("ismutex", getIsmutex())
            .append("verifyrule", getVerifyrule())
            .append("sort", getSort())
            .append("verificationtype", getVerificationtype())
            .append("isrange", getIsrange())
            .append("minrange", getMinrange())
            .append("maxrange", getMaxrange())
            .append("rangelength", getRangelength())
            .append("orgid", getOrgid())
            .append("oldid", getOldid())
            .append("delFlag", getDelFlag())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("isupload", getIsupload())
            .append("uploadTime", getUploadTime())
            .toString();
    }
}
smartor/src/main/java/com/smartor/mapper/SvyLibTopicMapper.java
@@ -1,7 +1,9 @@
package com.smartor.mapper;
import java.util.List;
import com.smartor.domain.SvyLibTopic;
import org.apache.ibatis.annotations.Mapper;
/**
 * é—®å·é¢˜ç›®Mapper接口
@@ -9,8 +11,8 @@
 * @author ruoyi
 * @date 2023-03-03
 */
public interface SvyLibTopicMapper
{
@Mapper
public interface SvyLibTopicMapper {
    /**
     * æŸ¥è¯¢é—®å·é¢˜ç›®
     * 
smartor/src/main/java/com/smartor/mapper/SvyLibTopicoptionMapper.java
@@ -1,7 +1,9 @@
package com.smartor.mapper;
import java.util.List;
import com.smartor.domain.SvyLibTopicoption;
import org.apache.ibatis.annotations.Mapper;
/**
 * é—®å·é—®é¢˜é€‰é¡¹Mapper接口
@@ -9,8 +11,8 @@
 * @author ruoyi
 * @date 2023-03-02
 */
public interface SvyLibTopicoptionMapper
{
@Mapper
public interface SvyLibTopicoptionMapper {
    /**
     * æŸ¥è¯¢é—®å·é—®é¢˜é€‰é¡¹
     * 
smartor/src/main/java/com/smartor/service/IPatArchiveService.java
@@ -68,7 +68,7 @@
    /**
     * æ‚£è€…信息批量插入
     *
     * @param title
     * @param tags
     * @param file
     */
    public PatUpInfoVO importFilehandle(SysUser user,String tags, MultipartFile file);
smartor/src/main/java/com/smartor/service/ISvyLibTopicService.java
@@ -1,7 +1,12 @@
package com.smartor.service;
import java.util.List;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.smartor.domain.SvyLibTopic;
import com.smartor.domain.SvyLibTopicRes;
import org.springframework.web.multipart.MultipartFile;
/**
 * é—®å·é¢˜ç›®Service接口
@@ -9,8 +14,7 @@
 * @author ruoyi
 * @date 2023-03-03
 */
public interface ISvyLibTopicService
{
public interface ISvyLibTopicService {
    /**
     * æŸ¥è¯¢é—®å·é¢˜ç›®
     * 
@@ -58,4 +62,12 @@
     * @return ç»“æžœ
     */
    public int deleteSvyLibTopicByTopicid(Long topicid);
    /**
     * æ‰¹é‡å¯¼å…¥é—®é—®é¢˜ç›®
     *
     * @param multipartFile
     * @return
     */
    public List<SvyLibTopicRes> importLitTopic(SysUser user,MultipartFile multipartFile);
}
smartor/src/main/java/com/smartor/service/impl/SvyLibTopicServiceImpl.java
@@ -1,12 +1,29 @@
package com.smartor.service.impl;
import java.util.List;
import java.io.IOException;
import java.util.*;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.smartor.domain.PatArchive;
import com.smartor.domain.SvyLibTopicRes;
import com.smartor.domain.SvyLibTopicoption;
import com.smartor.mapper.SvyLibTopicoptionMapper;
import org.apache.catalina.User;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.smartor.mapper.SvyLibTopicMapper;
import com.smartor.domain.SvyLibTopic;
import com.smartor.service.ISvyLibTopicService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
/**
 * é—®å·é¢˜ç›®Service业务层处理
@@ -15,10 +32,12 @@
 * @date 2023-03-03
 */
@Service
public class SvyLibTopicServiceImpl implements ISvyLibTopicService
{
public class SvyLibTopicServiceImpl implements ISvyLibTopicService {
    @Autowired
    private SvyLibTopicMapper svyLibTopicMapper;
    @Autowired
    private SvyLibTopicoptionMapper svyLibTopicoptionMapper;
    /**
     * æŸ¥è¯¢é—®å·é¢˜ç›®
@@ -27,8 +46,7 @@
     * @return é—®å·é¢˜ç›®
     */
    @Override
    public SvyLibTopic selectSvyLibTopicByTopicid(Long topicid)
    {
    public SvyLibTopic selectSvyLibTopicByTopicid(Long topicid) {
        return svyLibTopicMapper.selectSvyLibTopicByTopicid(topicid);
    }
@@ -39,8 +57,7 @@
     * @return é—®å·é¢˜ç›®
     */
    @Override
    public List<SvyLibTopic> selectSvyLibTopicList(SvyLibTopic svyLibTopic)
    {
    public List<SvyLibTopic> selectSvyLibTopicList(SvyLibTopic svyLibTopic) {
        return svyLibTopicMapper.selectSvyLibTopicList(svyLibTopic);
    }
@@ -51,8 +68,7 @@
     * @return ç»“æžœ
     */
    @Override
    public int insertSvyLibTopic(SvyLibTopic svyLibTopic)
    {
    public int insertSvyLibTopic(SvyLibTopic svyLibTopic) {
        svyLibTopic.setCreateTime(DateUtils.getNowDate());
        return svyLibTopicMapper.insertSvyLibTopic(svyLibTopic);
    }
@@ -64,8 +80,7 @@
     * @return ç»“æžœ
     */
    @Override
    public int updateSvyLibTopic(SvyLibTopic svyLibTopic)
    {
    public int updateSvyLibTopic(SvyLibTopic svyLibTopic) {
        svyLibTopic.setUpdateTime(DateUtils.getNowDate());
        return svyLibTopicMapper.updateSvyLibTopic(svyLibTopic);
    }
@@ -77,8 +92,7 @@
     * @return ç»“æžœ
     */
    @Override
    public int deleteSvyLibTopicByTopicids(Long[] topicids)
    {
    public int deleteSvyLibTopicByTopicids(Long[] topicids) {
        return svyLibTopicMapper.deleteSvyLibTopicByTopicids(topicids);
    }
@@ -89,8 +103,154 @@
     * @return ç»“æžœ
     */
    @Override
    public int deleteSvyLibTopicByTopicid(Long topicid)
    {
    public int deleteSvyLibTopicByTopicid(Long topicid) {
        return svyLibTopicMapper.deleteSvyLibTopicByTopicid(topicid);
    }
    /**
     * æ‰¹é‡å¯¼å…¥é—®é—®é¢˜ç›®
     *
     * @param multipartFile
     * @return
     */
    @Override
    @Transactional
    public List<SvyLibTopicRes> importLitTopic(SysUser user, MultipartFile multipartFile) {
        List<SvyLibTopicRes> svyLibTopicErrors = new ArrayList<>();
        try {
            Workbook workbook = new XSSFWorkbook(multipartFile.getInputStream());
            Sheet sheet = workbook.getSheetAt(0);
            //问卷题目对象
            SvyLibTopic svyLibTopic = new SvyLibTopic();
            for (int i = sheet.getFirstRowNum() + 1; i < sheet.getLastRowNum(); i++) {
                SvyLibTopicRes svyLibTopicRes = new SvyLibTopicRes();
                Row row = sheet.getRow(i);
                //如果行为空,进行下一次循环
                if (ObjectUtils.isEmpty(row.getCell(0)) && ObjectUtils.isEmpty(row.getCell(1)) && ObjectUtils.isEmpty(row.getCell(2))) {
                    continue;
                }
                //判断数据是否有问题
                svyLibTopicRes.setTopic(row.getCell(0).toString());
                if (ObjectUtils.isEmpty(row.getCell(0)) || StringUtils.isEmpty(row.getCell(0).toString())) {
                    svyLibTopicRes.setRemark("题目为空,");
                } else {
                    //判断一下该题是否已经在表里出现
                    SvyLibTopic svyLibTopic1 = new SvyLibTopic();
                    svyLibTopic1.setTopic(row.getCell(0).toString());
                    List<SvyLibTopic> svyLibTopics = svyLibTopicMapper.selectSvyLibTopicList(svyLibTopic1);
                    if (svyLibTopics.size() > 0) {
                        //已经存在了,就不存了
                        continue;
                    }
                }
                svyLibTopicRes.setTag(row.getCell(1).toString());
                if (ObjectUtils.isEmpty(row.getCell(1)) || StringUtils.isEmpty(row.getCell(1).toString())) {
                    svyLibTopicRes.setRemark(StringUtils.isNotEmpty(svyLibTopicRes.getRemark()) ? svyLibTopicRes.getRemark() : "" + "类别为空,");
                }
                svyLibTopicRes.setTopictype(row.getCell(2).toString());
                if (ObjectUtils.isEmpty(row.getCell(2)) || StringUtils.isEmpty(row.getCell(2).toString())) {
                    svyLibTopicRes.setRemark(StringUtils.isNotEmpty(svyLibTopicRes.getRemark()) ? svyLibTopicRes.getRemark() : "" + "题目类型为空,");
                }
                if (ObjectUtils.isNotEmpty(row.getCell(3))) {
                    svyLibTopicRes.setAnswer(row.getCell(3).toString());
                }
                if (ObjectUtils.isNotEmpty(row.getCell(4))) {
                    svyLibTopicRes.setOptionA(row.getCell(4).toString());
                }
                if (ObjectUtils.isNotEmpty(row.getCell(5))) {
                    svyLibTopicRes.setOptionB(row.getCell(5).toString());
                }
                if (ObjectUtils.isNotEmpty(row.getCell(6))) {
                    svyLibTopicRes.setOptionC(row.getCell(6).toString());
                }
                if (ObjectUtils.isNotEmpty(row.getCell(7))) {
                    svyLibTopicRes.setOptionD(row.getCell(7).toString());
                }
                if (ObjectUtils.isNotEmpty(row.getCell(8))) {
                    svyLibTopicRes.setScore(row.getCell(8).toString());
                }
                if (StringUtils.isNotEmpty(svyLibTopicRes.getRemark())) {
                    //说明该行数据有问题
                    svyLibTopicErrors.add(svyLibTopicRes);
                    continue;
                }
                //数据没有问题,开始插表
                svyLibTopic.setTopic(row.getCell(0).toString());
                if (row.getCell(2).toString().equals("单选")) {
                    svyLibTopic.setTopictype(1L);
                } else if (row.getCell(2).toString().equals("多选")) {
                    svyLibTopic.setTopictype(2L);
                } else {
                    svyLibTopic.setTopictype(3L);
                }
                svyLibTopic.setTopiccode(UUID.randomUUID().toString().replace("-", ""));
                //题目类别
                svyLibTopic.setTag(row.getCell(1).toString());
                svyLibTopic.setCreateBy(user.getUserName());
                svyLibTopic.setOrgid(user.getDeptId().toString());
                svyLibTopic.setUpdateBy(user.getUserName());
                svyLibTopic.setUpdateTime(new Date());
                svyLibTopic.setCreateTime(new Date());
                svyLibTopic.setDelFlag("0");
                //新增题目表
                svyLibTopicMapper.insertSvyLibTopic(svyLibTopic);
                //新增题目选项表
                SvyLibTopicoption svyLibTopicoption = new SvyLibTopicoption();
                svyLibTopicoption.setTopicid(svyLibTopic.getTopicid());
                svyLibTopicoption.setTopictype(svyLibTopic.getTopictype());
                svyLibTopicoption.setOptioncode(UUID.randomUUID().toString().replace("-", ""));
                svyLibTopicoption.setCreateBy(user.getUserName());
                svyLibTopicoption.setCreateTime(new Date());
                svyLibTopicoption.setUpdateBy(user.getUserName());
                svyLibTopicoption.setUpdateTime(new Date());
                svyLibTopicoption.setDelFlag("0");
                if (svyLibTopicoption.getTopictype() == 3) {
                    //解答题,不需要再设置选项
                    svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption);
                } else {
                    if (ObjectUtils.isNotEmpty(row.getCell(4)) || StringUtils.isNotEmpty(row.getCell(4).toString())) {
                        svyLibTopicoption.setOptioncode("A");
                        svyLibTopicoption.setOptioncontent(row.getCell(4).toString());
                        svyLibTopicoption.setOptionid(null);
                        svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption);
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(5)) || StringUtils.isNotEmpty(row.getCell(5).toString())) {
                        svyLibTopicoption.setOptioncode("B");
                        svyLibTopicoption.setOptioncontent(row.getCell(5).toString());
                        svyLibTopicoption.setOptionid(null);
                        svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption);
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(6)) || StringUtils.isNotEmpty(row.getCell(6).toString())) {
                        svyLibTopicoption.setOptioncode("C");
                        svyLibTopicoption.setOptioncontent(row.getCell(6).toString());
                        svyLibTopicoption.setOptionid(null);
                        svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption);
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(7)) || StringUtils.isNotEmpty(row.getCell(7).toString())) {
                        svyLibTopicoption.setOptioncode("D");
                        svyLibTopicoption.setOptioncontent(row.getCell(7).toString());
                        svyLibTopicoption.setOptionid(null);
                        svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption);
                    }
                }
            }
            if (CollectionUtils.isNotEmpty(svyLibTopicErrors)) {
                return svyLibTopicErrors;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
smartor/src/main/resources/mapper/smartor/SvyLibTopicMapper.xml
@@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.smartor.mapper.SvyLibTopicMapper">
    
    <resultMap type="SvyLibTopic" id="SvyLibTopicResult">
    <resultMap type="com.smartor.domain.SvyLibTopic" id="SvyLibTopicResult">
        <result property="topicid"    column="topicid"    />
        <result property="oldid"    column="oldid"    />
        <result property="svyid"    column="svyid"    />
@@ -22,10 +22,11 @@
        <result property="updateTime"    column="update_time"    />
        <result property="isupload"    column="isupload"    />
        <result property="uploadTime"    column="upload_time"    />
        <result property="tag"    column="tag"    />
    </resultMap>
    <sql id="selectSvyLibTopicVo">
        select topicid, oldid, svyid, topictype, topiccode, topic, sort, ismandatory, ishide, del_flag, orgid, create_by, create_time, update_by, update_time, isupload, upload_time from svy_lib_topic
        select topicid, oldid, svyid, topictype, topiccode, topic, sort, ismandatory, ishide, del_flag, orgid, create_by, create_time, update_by, update_time, isupload, upload_time,tag from svy_lib_topic
    </sql>
    <select id="selectSvyLibTopicList" parameterType="SvyLibTopic" resultMap="SvyLibTopicResult">