优化
This commit is contained in:
@ -0,0 +1,42 @@
|
|||||||
|
package com.ruoyi.web.controller.bgt;
|
||||||
|
|
||||||
|
import com.ruoyi.bgt.domain.vo.BgtQuestionResult;
|
||||||
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.wgz.service.IWgzQuestionSaveService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户试卷存储Controller
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-02-17
|
||||||
|
*/
|
||||||
|
@Api(value = "包工头岗前培训", tags = {"包工头岗前培训"})
|
||||||
|
@RequiredArgsConstructor(onConstructor_ = @Autowired)
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/bgt/question/")
|
||||||
|
public class AppBgtQuestionSaveController extends BaseController {
|
||||||
|
|
||||||
|
private final IWgzQuestionSaveService iWgzQuestionSaveService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询用户试卷存储列表
|
||||||
|
*/
|
||||||
|
@ApiOperation("查询用户答题结果")
|
||||||
|
@GetMapping("/getResult")
|
||||||
|
public AjaxResult<BgtQuestionResult> getResult(Long userId) {
|
||||||
|
return AjaxResult.success(iWgzQuestionSaveService.getResult(userId));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -78,7 +78,7 @@ public class UploadZipController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String username = bgtUser.getUsername();
|
String username = bgtUser.getUsername();
|
||||||
|
String firstLevelFolderName ="";
|
||||||
try {
|
try {
|
||||||
// 保存上传的压缩文件
|
// 保存上传的压缩文件
|
||||||
File zipFile = new File(TEMP_DIR, file.getOriginalFilename());
|
File zipFile = new File(TEMP_DIR, file.getOriginalFilename());
|
||||||
@ -89,7 +89,7 @@ public class UploadZipController {
|
|||||||
|
|
||||||
// 解压压缩文件
|
// 解压压缩文件
|
||||||
BgtProjectRecruit recruit = recruitService.queryById(recruitId);
|
BgtProjectRecruit recruit = recruitService.queryById(recruitId);
|
||||||
String firstLevelFolderName = recruit.getId() + "_" + recruit.getRecruitName();
|
firstLevelFolderName = recruit.getId() + "_" + recruit.getRecruitName();
|
||||||
File extractDir = new File(TEMP_DIR, firstLevelFolderName);
|
File extractDir = new File(TEMP_DIR, firstLevelFolderName);
|
||||||
ensureDirectoryExists(extractDir);
|
ensureDirectoryExists(extractDir);
|
||||||
extractZipFile(zipFile, extractDir);
|
extractZipFile(zipFile, extractDir);
|
||||||
@ -105,6 +105,9 @@ public class UploadZipController {
|
|||||||
|
|
||||||
return AjaxResult.success("文件上传并处理成功");
|
return AjaxResult.success("文件上传并处理成功");
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
// 删除临时文件和文件夹
|
||||||
|
File extractDir = new File(TEMP_DIR, firstLevelFolderName);
|
||||||
|
deleteFolder(extractDir);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return AjaxResult.error("文件处理过程中出现错误");
|
return AjaxResult.error("文件处理过程中出现错误");
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.ruoyi.bgt.domain.vo;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@ApiModel("务工者岗前培训结果视图对象")
|
||||||
|
public class BgtQuestionResult {
|
||||||
|
|
||||||
|
@ApiModelProperty("分数")
|
||||||
|
private Double score;
|
||||||
|
|
||||||
|
@ApiModelProperty("答对题数")
|
||||||
|
private Integer successNum;
|
||||||
|
|
||||||
|
@ApiModelProperty("答错题数")
|
||||||
|
private Integer errorNum;
|
||||||
|
|
||||||
|
@ApiModelProperty("耗时")
|
||||||
|
private Long time;
|
||||||
|
|
||||||
|
@ApiModelProperty("头像")
|
||||||
|
private String avatarName;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,12 +1,13 @@
|
|||||||
package com.ruoyi.wgz.service;
|
package com.ruoyi.wgz.service;
|
||||||
|
|
||||||
|
import com.ruoyi.bgt.domain.vo.BgtQuestionResult;
|
||||||
|
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
|
||||||
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
|
import com.ruoyi.wgz.bo.WgzQuestionSaveQueryBo;
|
||||||
import com.ruoyi.wgz.bo.req.WgzAppSubmitATestPaperReq;
|
import com.ruoyi.wgz.bo.req.WgzAppSubmitATestPaperReq;
|
||||||
import com.ruoyi.wgz.bo.res.WgzAppSubmitATestPaperRes;
|
import com.ruoyi.wgz.bo.res.WgzAppSubmitATestPaperRes;
|
||||||
import com.ruoyi.wgz.bo.res.WgzAppUserScoreQuery;
|
import com.ruoyi.wgz.bo.res.WgzAppUserScoreQuery;
|
||||||
import com.ruoyi.wgz.domain.WgzQuestionSave;
|
import com.ruoyi.wgz.domain.WgzQuestionSave;
|
||||||
import com.ruoyi.wgz.bo.WgzQuestionSaveQueryBo;
|
|
||||||
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
|
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
@ -74,4 +75,7 @@ public interface IWgzQuestionSaveService extends IServicePlus<WgzQuestionSave> {
|
|||||||
* 查詢指定用戶的试卷是否及格
|
* 查詢指定用戶的试卷是否及格
|
||||||
*/
|
*/
|
||||||
WgzAppUserScoreQuery userScoreQuery(long userId);
|
WgzAppUserScoreQuery userScoreQuery(long userId);
|
||||||
|
|
||||||
|
|
||||||
|
BgtQuestionResult getResult(Long userId);
|
||||||
}
|
}
|
||||||
|
@ -1,33 +1,37 @@
|
|||||||
package com.ruoyi.wgz.service.impl;
|
package com.ruoyi.wgz.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.ruoyi.common.utils.PageUtils;
|
import com.ruoyi.bgt.domain.vo.BgtQuestionResult;
|
||||||
|
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
|
import com.ruoyi.common.exception.BaseException;
|
||||||
|
import com.ruoyi.common.utils.PageUtils;
|
||||||
|
import com.ruoyi.wgz.bo.WgzQuestionSaveQueryBo;
|
||||||
import com.ruoyi.wgz.bo.req.WgzAppSubmitATestPaperReq;
|
import com.ruoyi.wgz.bo.req.WgzAppSubmitATestPaperReq;
|
||||||
import com.ruoyi.wgz.bo.res.WgzAppSubmitATestPaperRes;
|
import com.ruoyi.wgz.bo.res.WgzAppSubmitATestPaperRes;
|
||||||
import com.ruoyi.wgz.bo.res.WgzAppUserScoreQuery;
|
import com.ruoyi.wgz.bo.res.WgzAppUserScoreQuery;
|
||||||
import com.ruoyi.wgz.bo.rests.WgzAppSubmitATestPaperTwo;
|
import com.ruoyi.wgz.bo.rests.WgzAppSubmitATestPaperTwo;
|
||||||
import com.ruoyi.wgz.domain.WgzQuestionBank;
|
import com.ruoyi.wgz.domain.WgzQuestionBank;
|
||||||
|
import com.ruoyi.wgz.domain.WgzQuestionSave;
|
||||||
import com.ruoyi.wgz.domain.WgzQuestionsConfiguration;
|
import com.ruoyi.wgz.domain.WgzQuestionsConfiguration;
|
||||||
|
import com.ruoyi.wgz.domain.WgzUser;
|
||||||
|
import com.ruoyi.wgz.mapper.WgzQuestionSaveMapper;
|
||||||
import com.ruoyi.wgz.service.IWgzQuestionBankService;
|
import com.ruoyi.wgz.service.IWgzQuestionBankService;
|
||||||
|
import com.ruoyi.wgz.service.IWgzQuestionSaveService;
|
||||||
import com.ruoyi.wgz.service.IWgzQuestionsConfigurationService;
|
import com.ruoyi.wgz.service.IWgzQuestionsConfigurationService;
|
||||||
|
import com.ruoyi.wgz.service.IWgzUserService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
||||||
import com.ruoyi.wgz.bo.WgzQuestionSaveQueryBo;
|
|
||||||
import com.ruoyi.wgz.domain.WgzQuestionSave;
|
|
||||||
import com.ruoyi.wgz.mapper.WgzQuestionSaveMapper;
|
|
||||||
import com.ruoyi.wgz.service.IWgzQuestionSaveService;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import java.text.DecimalFormat;
|
import java.util.ArrayList;
|
||||||
import java.util.*;
|
import java.util.Collection;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.List;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户试卷存储Service业务层处理
|
* 用户试卷存储Service业务层处理
|
||||||
@ -44,6 +48,9 @@ public class WgzQuestionSaveServiceImpl extends ServicePlusImpl<WgzQuestionSaveM
|
|||||||
@Autowired
|
@Autowired
|
||||||
private IWgzQuestionBankService iWgzQuestionBankService;
|
private IWgzQuestionBankService iWgzQuestionBankService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IWgzUserService wgzUserService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WgzQuestionSave queryById(Long id){
|
public WgzQuestionSave queryById(Long id){
|
||||||
return getById(id);
|
return getById(id);
|
||||||
@ -270,4 +277,43 @@ public class WgzQuestionSaveServiceImpl extends ServicePlusImpl<WgzQuestionSaveM
|
|||||||
res.setCurrentMinute(sumScore);
|
res.setCurrentMinute(sumScore);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BgtQuestionResult getResult(Long userId) {
|
||||||
|
|
||||||
|
BgtQuestionResult bgtQuestionResult = new BgtQuestionResult();
|
||||||
|
|
||||||
|
WgzUser byUserId = wgzUserService.findByUserId(userId);
|
||||||
|
if(byUserId == null){
|
||||||
|
throw new BaseException("用户不存在");
|
||||||
|
}
|
||||||
|
bgtQuestionResult.setAvatarName(byUserId.getAvatarName());
|
||||||
|
|
||||||
|
LambdaQueryWrapper<WgzQuestionSave> wra = new LambdaQueryWrapper<WgzQuestionSave>()
|
||||||
|
.eq(WgzQuestionSave::getUserId, userId);
|
||||||
|
List<WgzQuestionSave> savaList = baseMapper.selectList(wra);
|
||||||
|
|
||||||
|
double score= 0d;
|
||||||
|
int successNum = 0;
|
||||||
|
int errorNum= 0;
|
||||||
|
long time= 0L;
|
||||||
|
|
||||||
|
for (WgzQuestionSave wgzQuestionSave : savaList){
|
||||||
|
score += wgzQuestionSave.getScore();
|
||||||
|
if(wgzQuestionSave.getCorrect().equals("1")){
|
||||||
|
successNum++;
|
||||||
|
}else{
|
||||||
|
errorNum++;
|
||||||
|
}
|
||||||
|
if(wgzQuestionSave.getTakeTime() != null){
|
||||||
|
time += wgzQuestionSave.getTakeTime();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bgtQuestionResult.setScore(score);
|
||||||
|
bgtQuestionResult.setSuccessNum(successNum);
|
||||||
|
bgtQuestionResult.setErrorNum(errorNum);
|
||||||
|
bgtQuestionResult.setTime(time);
|
||||||
|
return bgtQuestionResult;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,6 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
|
|
||||||
<select id="htmlList" resultType="com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO">
|
<select id="htmlList" resultType="com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO">
|
||||||
select
|
select
|
||||||
|
distinct
|
||||||
wu.user_id,
|
wu.user_id,
|
||||||
wu.username
|
wu.username
|
||||||
from bgt_project_recruit_apply bpra
|
from bgt_project_recruit_apply bpra
|
||||||
|
@ -167,13 +167,21 @@
|
|||||||
userIds: [],
|
userIds: [],
|
||||||
loading: false,
|
loading: false,
|
||||||
listStatusText: "请先选择主题",
|
listStatusText: "请先选择主题",
|
||||||
userId: "1893247598219890699",
|
userId: "",
|
||||||
checkAll: false,
|
checkAll: false,
|
||||||
isIndeterminate: false,
|
isIndeterminate: false,
|
||||||
uploadFile: null,
|
uploadFile: null,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
const protocol = window.location.protocol;
|
||||||
|
const host = window.location.host;
|
||||||
|
this.baseUrl = `${protocol}//${host}`; // 动态获取基础 URL
|
||||||
|
// 获取 URL 中的 userId 参数
|
||||||
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
|
this.userId = urlParams.get("userId");
|
||||||
|
console.log("userId", this.userId);
|
||||||
|
|
||||||
this.getRecruitList();
|
this.getRecruitList();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@ -256,16 +264,20 @@
|
|||||||
formData.append("userId", this.userId);
|
formData.append("userId", this.userId);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await this.ajaxRequest({
|
const res = await this.ajaxRequest({
|
||||||
url: "/ruoyi/upload-zip",
|
url: "/ruoyi/upload-zip",
|
||||||
method: "POST",
|
method: "POST",
|
||||||
body: formData,
|
body: formData,
|
||||||
});
|
});
|
||||||
this.$refs.uploadRef.clearFiles();
|
this.$refs.uploadRef.clearFiles();
|
||||||
this.uploadFile = null;
|
this.uploadFile = null;
|
||||||
|
if (res.code == 200) {
|
||||||
ElementPlus.ElMessage.success("上传成功");
|
ElementPlus.ElMessage.success("上传成功");
|
||||||
|
} else {
|
||||||
|
ElementPlus.ElMessage.error(`${res.msg}`);
|
||||||
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
ElementPlus.ElMessage.error("上传失败");
|
ElementPlus.ElMessage.error(`${error}`);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -310,7 +322,6 @@
|
|||||||
config.body = JSON.stringify(options.body);
|
config.body = JSON.stringify(options.body);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await fetch(this.baseUrl + options.url, config);
|
const response = await fetch(this.baseUrl + options.url, config);
|
||||||
if (!response.ok) throw new Error(response.statusText);
|
if (!response.ok) throw new Error(response.statusText);
|
||||||
|
|
||||||
@ -325,7 +336,6 @@
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
app.use(ElementPlus);
|
app.use(ElementPlus);
|
||||||
app.mount("#app");
|
app.mount("#app");
|
||||||
</script>
|
</script>
|
||||||
|
Reference in New Issue
Block a user