添加文件题功能

This commit is contained in:
yangjun 2024-10-15 13:26:53 +08:00
parent 06acc58905
commit 51e1d20a6c
8 changed files with 241 additions and 18 deletions

View File

@ -10,14 +10,12 @@ import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.text.StringUtils;
import org.jeecg.modules.kc.config.entity.KcExportConfigTpkwcqkjzglx;
import org.jeecg.modules.kc.config.service.IKcExportConfigTpkwcqkjzglxService;
import org.jeecg.modules.kc.kcSysConfig.entity.KcSysConfig;
import org.jeecg.modules.kc.kcSysConfig.service.IKcSysConfigService;
import org.jeecg.modules.kc.wjxDjxx.entity.StudentCyglSys;
import org.jeecg.modules.kc.wjxDjxx.entity.StudentWjglSys;
import org.jeecg.modules.kc.wjxDjxx.entity.WjxDjxx;
import org.jeecg.modules.kc.wjxDjxx.entity.WjxDjxxTmlbPage;
import org.jeecg.modules.kc.wjxDjxx.entity.*;
import org.jeecg.modules.kc.wjxDjxx.service.IWjxDjxxService;
import org.jeecg.modules.system.service.impl.SysBaseApiImpl;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
@ -46,7 +44,6 @@ public class WjxDjxxController extends JeecgController<WjxDjxx, IWjxDjxxService>
@Autowired
private IWjxDjxxService wjxDjxxService;
@Value("${jeecg.path.upload}")
private String upLoadPath;
@ -290,4 +287,53 @@ public class WjxDjxxController extends JeecgController<WjxDjxx, IWjxDjxxService>
mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
return mv;
}
@ApiOperation(value="查询主观题带评分内容", notes="查询主观题带评分内容")
@GetMapping(value = "/queryZgtdpf")
public Result<WjxDjxx> queryZgtdpf(WjxDjxx wjxDjxx) {
QueryWrapper<WjxDjxx> wjxDjxxQueryWrapper = new QueryWrapper<>();
wjxDjxxQueryWrapper.eq("vid",wjxDjxx.getVid());
wjxDjxxQueryWrapper.eq(StringUtils.isNotEmpty(wjxDjxx.getJid()),"jid",wjxDjxx.getJid());
wjxDjxxQueryWrapper.eq("sfxysdpy","1");
wjxDjxxQueryWrapper.last("limit 1");
wjxDjxx = wjxDjxxService.getOne(wjxDjxxQueryWrapper);
if(wjxDjxx!=null){
WjxDjxx wjxDjxx2 = wjxDjxxService.querySdpfById(wjxDjxx.getId());
wjxDjxx = wjxDjxx2;
}
return Result.OK(wjxDjxx);
}
@ApiOperation(value="手动评分", notes="手动评分")
@PostMapping(value = "/editSdpf")
public Result<String> editSdpf(@RequestBody List<WjxDjxxTmxx> list) {
String res = "提交成功!";
for(WjxDjxxTmxx par:list){
String djid = par.getDjid();
String djtmid = par.getDjtmid();
WjxDjxxTmxx wjxDjxxTmxx = new WjxDjxxTmxx();
wjxDjxxTmxx.setId(djtmid);
wjxDjxxTmxx.setItemScore(par.getItemScore());
wjxDjxxService.updateDjxxTmxx(wjxDjxxTmxx);
wjxDjxxTmxx = wjxDjxxService.getByDjxxId(djtmid);
WjxDjxxTmxx wjxDjxxTmxx2 = wjxDjxxService.getSumScore(wjxDjxxTmxx);
WjxDjxx wjxDjxx = new WjxDjxx();
wjxDjxx.setId(djid);
wjxDjxx.setSfxysdpy("0");
wjxDjxx.setScore(wjxDjxxTmxx2.getItemScore());
wjxDjxxService.editSdpf(wjxDjxx);
}
return Result.OK(res);
}
}

View File

@ -50,8 +50,10 @@ public class WjxDjxxTmlbPage {
private String mainId;
private String title;
private String wjTitle;
private Double wjScore;
private String sfxysdpy;
private String picPath;
}

View File

@ -58,6 +58,7 @@ public class WjxDjxxTmxx implements Serializable {
private String jid;
@ApiModelProperty(value = "答卷人ID")
private String userId;
private String picPath;
@ApiModelProperty(value = "题目类型")
@TableField(exist = false)
@ -74,4 +75,8 @@ public class WjxDjxxTmxx implements Serializable {
@TableField(exist = false)
private String tktda;
@TableField(exist = false)
private String djid;
@TableField(exist = false)
private String djtmid;
}

View File

@ -51,4 +51,14 @@ public interface WjxDjxxMapper extends BaseMapper<WjxDjxx> {
String getDjnumType(@Param("vid")String vid, @Param("wjIndex")Integer wjIndex, @Param("itemIndex")Integer itemIndex, @Param("type")String type);
void updateTotalScore(WjxDjxx wjxDjxx);
List<WjxDjxxTmxx> findDjtmxx2(String vid, String jid);
void updateDjxxTmxx(WjxDjxxTmxx wjxDjxxTmxx);
WjxDjxxTmxx getSumScore(WjxDjxxTmxx wjxDjxxTmxx);
void editSdpf(WjxDjxx wjxDjxx);
WjxDjxxTmxx getByDjxxId(@Param("djtmid")String djtmid);
}

View File

@ -58,7 +58,7 @@
sfxysdpy = #{sfxysdpy},
</if>
<if test="totalScore != null">
total_score = ${totalScore},
total_score = ${totalScore}
</if>
where vid = #{vid}
and jid = #{jid}
@ -82,7 +82,8 @@
wj_title,
item_index,
answer_text,
item_score
item_score,
pic_path
)
value(
#{id},
@ -95,7 +96,8 @@
#{wjTitle},
#{itemIndex},
#{answerText},
#{itemScore}
#{itemScore},
#{picPath}
)
</insert>
@ -108,7 +110,7 @@
</select>
<select id="findDjtmxx" parameterType="String" resultType="org.jeecg.modules.kc.wjxDjxx.entity.WjxDjxxTmxx">
select x.id,x.wj_index,x.wj_type,x.wj_title,x.wj_score,y.item_selected,y.item_score,y.answer_text
select x.id,x.wj_index,x.wj_type,x.wj_title,x.wj_score,y.item_selected,y.item_score,y.answer_text,y.pic_path
from (
select c.id,c.wj_index,c.wj_type,c.wj_title,c.wj_score
from wjx_djxx a
@ -119,11 +121,33 @@
and a.jid = #{jid}
) x
inner join (
select wj_index,item_score,answer_text,GROUP_CONCAT(item_index) as item_selected
select wj_index,item_score,answer_text,GROUP_CONCAT(item_index) as item_selected,pic_path
from wjx_djxx_tmxx
where vid = #{vid}
and jid = #{jid}
group by wj_index,item_score,answer_text
group by wj_index,item_score,answer_text,pic_path
) y on x.wj_index = y.wj_index
order by x.wj_index
</select>
<select id="findDjtmxx2" parameterType="String" resultType="org.jeecg.modules.kc.wjxDjxx.entity.WjxDjxxTmxx">
select x.id,x.wj_index,x.wj_type,x.wj_title,x.wj_score,y.item_selected,y.item_score,y.answer_text,y.pic_path,x.djid,y.djtmid
from (
select c.id,c.wj_index,c.wj_type,c.wj_title,c.wj_score,a.id as djid
from wjx_djxx a
inner join wjx_wjxx b on a.vid = b.vid
inner join wjx_wjxx_tmlb c on c.main_id = b.id
where a.flag = '1'
and a.vid = #{vid}
and a.jid = #{jid}
) x
inner join (
select wj_index,item_score,answer_text,GROUP_CONCAT(item_index) as item_selected,pic_path,id as djtmid
from wjx_djxx_tmxx
where vid = #{vid}
and jid = #{jid}
and item_score is null
group by wj_index,item_score,answer_text,pic_path,id
) y on x.wj_index = y.wj_index
order by x.wj_index
</select>
@ -165,7 +189,7 @@
</select>
<select id="findAllDjjgsPage" parameterType="org.jeecg.modules.kc.wjxDjxx.entity.WjxDjxx" resultType="org.jeecg.modules.kc.wjxDjxx.entity.WjxDjxx">
select a.atype,b.id,a.xqxn,a.kcmc,a.start_time,a.end_time,a.title,a.content,b.vid,b.jid,y.xh as user_id,y.xm as user_name,b.open_time,b.commit_time,b.score,b.total_score,ifnull(b.answer_seconds,-1) as answer_seconds,a.title
select a.atype,b.id,a.xqxn,a.kcmc,a.start_time,a.end_time,a.title,a.content,b.vid,b.jid,y.xh as user_id,y.xm as user_name,b.open_time,b.commit_time,b.score,b.total_score,ifnull(b.answer_seconds,-1) as answer_seconds,a.title,b.sfxysdpy
from wjx_wjxx a
inner join (
select a.xh,a.xm,b.KCAPZBBH
@ -361,10 +385,37 @@
and item_index = #{itemIndex}
</if>
<if test='type != null and type != "" and type=="1"'>
and item_score != '0'
and item_score != '0' and item_score is not null
</if>
<if test='type != null and type != "" and type=="2"'>
and item_score = '0'
and (item_score = '0' or item_score is null)
</if>
</select>
<update id="updateDjxxTmxx" parameterType="org.jeecg.modules.kc.wjxDjxx.entity.WjxDjxxTmxx">
update wjx_djxx_tmxx
set
item_score = #{itemScore}
where id = #{id}
</update>
<update id="editSdpf" parameterType="org.jeecg.modules.kc.wjxDjxx.entity.WjxDjxx">
update wjx_djxx
set score = #{score},sfxysdpy = #{sfxysdpy}
where id = #{id}
</update>
<select id="getSumScore" resultType="org.jeecg.modules.kc.wjxDjxx.entity.WjxDjxxTmxx">
select jid,sum(item_score) as item_score from (
select distinct jid,wj_index,max(item_score) as item_score from wjx_djxx_tmxx where jid = #{jid} GROUP BY jid,wj_index
) t GROUP BY jid
</select>
<select id="getByDjxxId" parameterType="String" resultType="org.jeecg.modules.kc.wjxDjxx.entity.WjxDjxxTmxx">
select * from wjx_djxx_tmxx where id = #{djtmid}
</select>
</mapper>

View File

@ -31,4 +31,14 @@ public interface IWjxDjxxService extends IService<WjxDjxx> {
List<StudentWjglSys> exportWjglSysXls(QueryWrapper<StudentWjglSys> queryWrapper, StudentWjglSys studentWjglSys);
IPage<StudentWjglSys> sysWjglList(Page<StudentWjglSys> page, QueryWrapper<StudentWjglSys> queryWrapper, StudentWjglSys studentWjglSys);
WjxDjxx querySdpfById(String id);
void updateDjxxTmxx(WjxDjxxTmxx wjxDjxxTmxx);
WjxDjxxTmxx getSumScore(WjxDjxxTmxx wjxDjxxTmxx);
void editSdpf(WjxDjxx wjxDjxx);
WjxDjxxTmxx getByDjxxId(String djtmid);
}

View File

@ -194,22 +194,68 @@ public class WjxDjxxServiceImpl extends ServiceImpl<WjxDjxxMapper, WjxDjxx> impl
}
if(answerItem.get("item_index")!=null){
JSONArray itemIndex = answerItem.getJSONArray("item_index");
QueryWrapper<WjxWjxx> wjxWjxxQueryWrapper = new QueryWrapper<>();
wjxWjxxQueryWrapper.eq("vid",vid);
wjxWjxxQueryWrapper.last("limit 1");
WjxWjxx wjxxPar= wjxWjxxMapper.selectOne(wjxWjxxQueryWrapper);
if(itemIndex.size()>0){
for(Object index : itemIndex){
Integer ti = (Integer) index;
wjxDjxxTmxx.setItemIndex(ti);
String id = new DefaultIdentifierGenerator().nextId(new WjxDjxxTmxx()).toString();
wjxDjxxTmxx.setId(id);
try {
QueryWrapper<WjxWjxxTmlb> wjxWjxxTmlbQueryWrapper = new QueryWrapper<>();
wjxWjxxTmlbQueryWrapper.eq("main_id",wjxxPar.getId());
wjxWjxxTmlbQueryWrapper.eq("wj_index",wjxDjxxTmxx.getWjIndex());
wjxWjxxTmlbQueryWrapper.last("limit 1");
WjxWjxxTmlb tmlb = wjxWjxxTmlbMapper.selectOne(wjxWjxxTmlbQueryWrapper);
wjxDjxxTmxx.setPicPath(tmlb.getPicPath());
} catch (Exception e) {
e.printStackTrace();
}
baseMapper.addDjTmxx(wjxDjxxTmxx);
}
}else{
String id = new DefaultIdentifierGenerator().nextId(new WjxDjxxTmxx()).toString();
wjxDjxxTmxx.setId(id);
try {
QueryWrapper<WjxWjxxTmlb> wjxWjxxTmlbQueryWrapper = new QueryWrapper<>();
wjxWjxxTmlbQueryWrapper.eq("main_id",wjxxPar.getId());
wjxWjxxTmlbQueryWrapper.eq("wj_index",wjxDjxxTmxx.getWjIndex());
wjxWjxxTmlbQueryWrapper.last("limit 1");
WjxWjxxTmlb tmlb = wjxWjxxTmlbMapper.selectOne(wjxWjxxTmlbQueryWrapper);
wjxDjxxTmxx.setPicPath(tmlb.getPicPath());
} catch (Exception e) {
e.printStackTrace();
}
wjxDjxxTmxx.setId(id);;
baseMapper.addDjTmxx(wjxDjxxTmxx);
}
}else{
String id = new DefaultIdentifierGenerator().nextId(new WjxDjxxTmxx()).toString();
wjxDjxxTmxx.setId(id);
try {
QueryWrapper<WjxWjxx> wjxWjxxQueryWrapper = new QueryWrapper<>();
wjxWjxxQueryWrapper.eq("vid",vid);
wjxWjxxQueryWrapper.last("limit 1");
WjxWjxx wjxxPar= wjxWjxxMapper.selectOne(wjxWjxxQueryWrapper);
QueryWrapper<WjxWjxxTmlb> wjxWjxxTmlbQueryWrapper = new QueryWrapper<>();
wjxWjxxTmlbQueryWrapper.eq("main_id",wjxxPar.getId());
wjxWjxxTmlbQueryWrapper.eq("wj_index",wjxDjxxTmxx.getWjIndex());
wjxWjxxTmlbQueryWrapper.last("limit 1");
WjxWjxxTmlb tmlb = wjxWjxxTmlbMapper.selectOne(wjxWjxxTmlbQueryWrapper);
wjxDjxxTmxx.setPicPath(tmlb.getPicPath());
} catch (Exception e) {
e.printStackTrace();
}
wjxDjxxTmxx.setId(id);;
baseMapper.addDjTmxx(wjxDjxxTmxx);
}
}
@ -245,10 +291,11 @@ public class WjxDjxxServiceImpl extends ServiceImpl<WjxDjxxMapper, WjxDjxx> impl
wjxDjxxTmxx.setCreateBy(user.getUsername());
wjxDjxxTmxx.setCreateTime(new Date());
wjxDjxxTmxx.setId(id);
wjxDjxxTmxx.setWjTitle(wjxDjxxTmlbPage.getTitle());
wjxDjxxTmxx.setWjTitle(wjxDjxxTmlbPage.getWjTitle());
wjxDjxxTmxx.setWjIndex(WjIndex);
wjxDjxxTmxx.setAnswerText(wjxDjxxTmlbPage.getWjAnswer());
wjxDjxxTmxx.setItemScore(wjxDjxxTmlbPage.getWjScore());
// wjxDjxxTmxx.setItemScore(wjxDjxxTmlbPage.getWjScore());
wjxDjxxTmxx.setPicPath(wjxDjxxTmlbPage.getPicPath());
baseMapper.addDjTmxx(wjxDjxxTmxx);
}
}
@ -548,4 +595,44 @@ public class WjxDjxxServiceImpl extends ServiceImpl<WjxDjxxMapper, WjxDjxx> impl
return baseMapper.sysWjglList(page, queryWrapper, studentWjglSys);
}
@Override
public WjxDjxx querySdpfById(String id) {
LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
WjxDjxx djxx = baseMapper.findDjxx(id,user.getUsername());
if(djxx != null){
djxx.setAnswerSfm(convertSecondsToHMS(djxx.getAnswerSeconds()));
List<WjxDjxxTmxx> list = baseMapper.findDjtmxx2(djxx.getVid(),djxx.getJid());
for(WjxDjxxTmxx wjxDjxxTmxx:list){
List<WjxWjxxTmxx> list2= wjxWjxxTmxxMapper.selectByMainId(wjxDjxxTmxx.getId());
wjxDjxxTmxx.setWjxWjxxTmxxList(list2);
//获取填空题答案
WjxWjxxTmlb tmlb = wjxWjxxTmlbMapper.selectById(wjxDjxxTmxx.getId());
wjxDjxxTmxx.setTktda(tmlb.getWjAnswer());
}
djxx.setWjxDjxxTmxxList(list);
}
return djxx;
}
@Override
public void updateDjxxTmxx(WjxDjxxTmxx wjxDjxxTmxx) {
baseMapper.updateDjxxTmxx(wjxDjxxTmxx);
}
@Override
public WjxDjxxTmxx getSumScore(WjxDjxxTmxx wjxDjxxTmxx) {
return baseMapper.getSumScore(wjxDjxxTmxx);
}
@Override
public void editSdpf(WjxDjxx wjxDjxx) {
baseMapper.editSdpf(wjxDjxx);
}
@Override
public WjxDjxxTmxx getByDjxxId(String djtmid) {
return baseMapper.getByDjxxId(djtmid);
}
}

View File

@ -369,6 +369,18 @@ public class SysUserController {
return sysUserService.changePassword(sysUser);
}
@RequiresPermissions("system:user:changepwd")
@RequestMapping(value = "/chongzhiPassword", method = RequestMethod.PUT)
public Result<?> chongzhiPassword() {
List<SysUser> list = sysUserService.list();
for(SysUser sysUser : list){
sysUser.setPassword("kczx@^1!");
sysUserService.changePassword(sysUser);
}
return Result.ok("密码重置成功!");
}
/**
* 查询指定用户和部门关联的数据
*