2023年6月16日 添加导出和部分数据
This commit is contained in:
parent
8234dda933
commit
af6f056c09
|
@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Param;
|
|||
import org.jeecg.modules.kc.qa.entity.KcEvaluation;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.jeecg.modules.kc.qa.entity.KcEvaluationPkmx;
|
||||
import org.jeecg.modules.kc.statistics.KcEvaluationVo;
|
||||
|
||||
/**
|
||||
* @Description: 调查问卷-回答主表
|
||||
|
@ -32,5 +33,5 @@ public interface KcEvaluationMapper extends BaseMapper<KcEvaluation> {
|
|||
List<KcEvaluationPkmx> selectPkmxExportList(KcEvaluationPkmx kcEvaluationPkmx);
|
||||
List<KcEvaluation> keTangList(Page<KcEvaluation> page, @Param(Constants.WRAPPER) QueryWrapper<KcEvaluation> queryWrapper);
|
||||
|
||||
List<KcEvaluation> selectPageAndKcmc(Page<KcEvaluation> page, @Param(Constants.WRAPPER) QueryWrapper<KcEvaluation> queryWrapper);
|
||||
List<KcEvaluationVo> selectPageAndKcmc(Page<KcEvaluationVo> page, @Param(Constants.WRAPPER) QueryWrapper<KcEvaluationVo> queryWrapper);
|
||||
}
|
||||
|
|
|
@ -393,11 +393,26 @@
|
|||
${ew.customSqlSegment}
|
||||
|
||||
</select>
|
||||
<select id="selectPageAndKcmc" resultType="org.jeecg.modules.kc.qa.entity.KcEvaluation">
|
||||
<select id="selectPageAndKcmc" resultType="org.jeecg.modules.kc.statistics.KcEvaluationVo">
|
||||
select
|
||||
kt.kcmc,a.*
|
||||
a.*,
|
||||
a.upuserid as tkjgh,
|
||||
a.upuser as tkjsxm,
|
||||
a.evaluationver as pjlblx,
|
||||
kt.kcmc as kcmc,
|
||||
kt.kkdw as kkdw,
|
||||
kt.skjs as skjs,
|
||||
kt.jgh as skjgh,
|
||||
kt.sksj as sksj,
|
||||
kt.skrq as skrq,
|
||||
kt.hh as jieci,
|
||||
kt.skdd as skdd,
|
||||
xu.DWMC as tkdwmc,
|
||||
fen.avgscore as tkpjjg
|
||||
from kc_evaluation a
|
||||
left join kc_ketangbiao kt on kt.id = a.minkcid
|
||||
left join xxhbuser xu on xu.GH = a.upuserid
|
||||
left join zongtipingjiapingjunfen fen on fen.kechengbiaoid = kt.kechengbiaoid
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||
import org.jeecg.modules.kc.qa.entity.KcEvaluation;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.jeecg.modules.kc.qa.entity.KcEvaluationPkmx;
|
||||
import org.jeecg.modules.kc.statistics.KcEvaluationVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -33,5 +34,5 @@ public interface IKcEvaluationService extends IService<KcEvaluation> {
|
|||
|
||||
IPage<KcEvaluation> keTangList(Page<KcEvaluation> page, QueryWrapper<KcEvaluation> queryWrapper);
|
||||
|
||||
IPage<KcEvaluation> selectPageAndKcmc(Page<KcEvaluation> page, QueryWrapper<KcEvaluation> queryWrapper);
|
||||
IPage<KcEvaluationVo> selectPageAndKcmc(Page<KcEvaluationVo> page, QueryWrapper<KcEvaluationVo> queryWrapper);
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ import org.jeecg.modules.kc.qa.entity.KcEvaluationPkmx;
|
|||
import org.jeecg.modules.kc.qa.mapper.KcEvaluationMapper;
|
||||
import org.jeecg.modules.kc.qa.service.IKcEvaluationService;
|
||||
import org.jeecg.modules.kc.qa.service.IKcEvaluationsService;
|
||||
import org.jeecg.modules.kc.statistics.KcEvaluationVo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -106,7 +107,7 @@ public class KcEvaluationServiceImpl extends ServiceImpl<KcEvaluationMapper, KcE
|
|||
}
|
||||
|
||||
@Override
|
||||
public IPage<KcEvaluation> selectPageAndKcmc(Page<KcEvaluation> page, QueryWrapper<KcEvaluation> queryWrapper) {
|
||||
public IPage<KcEvaluationVo> selectPageAndKcmc(Page<KcEvaluationVo> page, QueryWrapper<KcEvaluationVo> queryWrapper) {
|
||||
return page.setRecords(baseMapper.selectPageAndKcmc(page,queryWrapper));
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,172 @@
|
|||
package org.jeecg.modules.kc.statistics;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.jeecg.common.aspect.annotation.Dict;
|
||||
import org.jeecg.modules.kc.qa.entity.KcEvaluations;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 调查问卷-回答主表
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2023-04-09
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Data
|
||||
@TableName("kc_evaluation")
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@ApiModel(value="kc_evaluation对象", description="调查问卷-回答主表")
|
||||
public class KcEvaluationVo implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value = "id")
|
||||
private String id;
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "上传日期")
|
||||
private Date upDate;
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "HH:mm")
|
||||
@DateTimeFormat(pattern="HH:mm")
|
||||
@ApiModelProperty(value = "上传时间")
|
||||
private Date upTime;
|
||||
@ApiModelProperty(value = "答案")
|
||||
private String answer1;
|
||||
/**上传人id*/
|
||||
@ApiModelProperty(value = "上传人id")
|
||||
private Integer upuserid;
|
||||
/**上传人id*/
|
||||
@ApiModelProperty(value = "上传人id")
|
||||
@TableField(exist = false)
|
||||
private String upuseridLike;
|
||||
/**上传时间戳*/
|
||||
@ApiModelProperty(value = "上传时间戳")
|
||||
private String upTimestamp;
|
||||
/**课程最小id*/
|
||||
@ApiModelProperty(value = "课程最小id")
|
||||
private String minkcid;
|
||||
/**答案2*/
|
||||
@ApiModelProperty(value = "答案2")
|
||||
private String answer2;
|
||||
/**答案3*/
|
||||
@ApiModelProperty(value = "答案3")
|
||||
private String answer3;
|
||||
/**答案4*/
|
||||
@ApiModelProperty(value = "答案4")
|
||||
private String answer4;
|
||||
/**答案5*/
|
||||
@ApiModelProperty(value = "答案5")
|
||||
private String answer5;
|
||||
/**答案6*/
|
||||
@ApiModelProperty(value = "答案6")
|
||||
private String answer6;
|
||||
/**答案7*/
|
||||
@ApiModelProperty(value = "答案7")
|
||||
private String answer7;
|
||||
/**答案8*/
|
||||
@ApiModelProperty(value = "答案8")
|
||||
private String answer8;
|
||||
/**答案9*/
|
||||
@ApiModelProperty(value = "答案9")
|
||||
private String answer9;
|
||||
/**答案10*/
|
||||
@ApiModelProperty(value = "答案10")
|
||||
//@MappedJdbcTypes(JdbcType.LONGVARCHAR)
|
||||
//@TableField(jdbcType = JdbcType.LONGVARCHAR)
|
||||
private String answer10;
|
||||
/**答案11*/
|
||||
@ApiModelProperty(value = "答案11")
|
||||
private String answer11;
|
||||
/**问卷版本*/
|
||||
@ApiModelProperty(value = "问卷版本")
|
||||
private Integer evaluationver;
|
||||
|
||||
/**数据来源(0:门户添加,1:老系统,2:政务大厅,3后台导入)*/
|
||||
@ApiModelProperty(value = "数据来源(0:课程中心,1:老系统,2:政务大厅,3:纸质评价)")
|
||||
private Integer source;
|
||||
|
||||
|
||||
|
||||
@Excel(name = "学期", width = 15)
|
||||
@TableField(exist = false)
|
||||
private String xqxn;
|
||||
|
||||
@Excel(name = "课程名称", width = 15)
|
||||
@TableField(exist = false)
|
||||
private String kcmc;
|
||||
|
||||
|
||||
@Excel(name = "开课单位", width = 15)
|
||||
@TableField(exist = false)
|
||||
private String kkdw;
|
||||
|
||||
@Excel(name = "授课教师", width = 15)
|
||||
@TableField(exist = false)
|
||||
private String skjs;
|
||||
|
||||
@Excel(name = "授课教师工号", width = 15)
|
||||
@TableField(exist = false)
|
||||
private String skjgh;
|
||||
|
||||
//授课日期(时间/节次)
|
||||
@Excel(name = "授课日期", width = 15)
|
||||
@TableField(exist = false)
|
||||
private String skrq;
|
||||
|
||||
@Excel(name = "授课时间", width = 15)
|
||||
@TableField(exist = false)
|
||||
private String sksj;
|
||||
|
||||
@Excel(name = "授课节次", width = 15)
|
||||
@TableField(exist = false)
|
||||
private String jieci;
|
||||
|
||||
@Excel(name = "授课地点", width = 15)
|
||||
@TableField(exist = false)
|
||||
private String skdd;
|
||||
|
||||
@Excel(name = "听课教师单位", width = 15)
|
||||
@TableField(exist = false)
|
||||
private String tkdwmc;
|
||||
|
||||
@Excel(name = "听课教师工号", width = 15)
|
||||
@TableField(exist = false)
|
||||
private String tkjgh;
|
||||
|
||||
@Excel(name = "听课教师姓名", width = 15)
|
||||
@TableField(exist = false)
|
||||
private String tkjsxm;
|
||||
|
||||
@Excel(name = "听课身份", width = 15)
|
||||
@TableField(exist = false)
|
||||
private String tksf;
|
||||
|
||||
@Excel(name = "听课评价结果(5分制)", width = 15)
|
||||
@TableField(exist = false)
|
||||
private String tkpjjg;
|
||||
|
||||
@Excel(name = "评价量表类型", width = 15)
|
||||
@TableField(exist = false)
|
||||
private String pjlblx;
|
||||
|
||||
@Excel(name = "数据来源", width = 15)
|
||||
@TableField(exist = false)
|
||||
private String sourceName;
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -11,27 +11,34 @@ import io.swagger.annotations.Api;
|
|||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import org.jeecg.common.system.vo.LoginUser;
|
||||
import org.jeecg.common.util.oConvertUtils;
|
||||
import org.jeecg.modules.kc.grab.imports.entity.Xxhbuser;
|
||||
import org.jeecg.modules.kc.grab.imports.service.IXxhbuserService;
|
||||
import org.jeecg.modules.kc.kcXqxnHistory.entity.KcXqxnHistory;
|
||||
import org.jeecg.modules.kc.kcXqxnHistory.service.IKcXqxnHistoryService;
|
||||
import org.jeecg.modules.kc.qa.entity.KcEvaluation;
|
||||
import org.jeecg.modules.kc.qa.entity.KcEvaluationans;
|
||||
import org.jeecg.modules.kc.qa.service.IKcEvaluationService;
|
||||
import org.jeecg.modules.kc.tksf.kctksfrzb.entity.KcTksfrzb;
|
||||
import org.jeecg.modules.kc.tksf.kctksfrzb.service.IKcTksfrzbService;
|
||||
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
|
||||
import org.jeecgframework.poi.excel.entity.ExportParams;
|
||||
import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
|
||||
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
|
@ -44,10 +51,13 @@ import java.util.stream.Collectors;
|
|||
@RestController
|
||||
@RequestMapping("/statistics")
|
||||
@Slf4j
|
||||
public class TingKeStatisticsController{
|
||||
public class TingKeStatisticsController {
|
||||
|
||||
@Value("${jeecg.path.upload}")
|
||||
private String upLoadPath;
|
||||
|
||||
@Autowired
|
||||
private IKcEvaluationService kcEvaluationService;
|
||||
private IKcEvaluationService service;
|
||||
|
||||
@Autowired
|
||||
private IXxhbuserService xxhbuserService;
|
||||
|
@ -59,16 +69,22 @@ public class TingKeStatisticsController{
|
|||
private IKcXqxnHistoryService kcXqxnHistoryService;
|
||||
|
||||
|
||||
@ApiOperation(value="调查问卷-答案表-分页列表查询", notes="调查问卷-答案表-分页列表查询")
|
||||
@GetMapping(value = "/getEvaluationList")
|
||||
public Result<IPage<KcEvaluation>> list(KcEvaluation evaluation,
|
||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
QueryWrapper<KcEvaluation> queryWrapper = QueryGenerator.initQueryWrapper("a",evaluation, req.getParameterMap());
|
||||
public IPage<KcEvaluationVo> loadPageData(KcEvaluationVo evaluation,QueryWrapper<KcEvaluationVo> queryWrapper,Page<KcEvaluationVo> page){
|
||||
queryWrapper.isNotNull("a.upuserid");
|
||||
queryWrapper.isNotNull("a.minkcid");
|
||||
|
||||
// if(StringUtils.isNotBlank(evaluation.getDwmc())){
|
||||
// List<Xxhbuser> xxhbuserList = szdwList.stream().filter(x -> StringUtils.equals(x.getDwh(),evaluation.getDwmc())).collect(Collectors.toList());
|
||||
// Set<String> ghSet = xxhbuserList.stream().map(x -> x.getGh()).collect(Collectors.toSet());
|
||||
// queryWrapper.in("a.upuserid",ghSet);
|
||||
// }
|
||||
queryWrapper.like(StringUtils.isNotBlank(evaluation.getKkdw()),"kt.kkdw",evaluation.getKkdw());
|
||||
queryWrapper.like(StringUtils.isNotBlank(evaluation.getSkjs()),"kt.skjs",evaluation.getSkjs());
|
||||
queryWrapper.like(StringUtils.isNotBlank(evaluation.getSkjgh()),"kt.jgh",evaluation.getSkjgh());
|
||||
queryWrapper.like(StringUtils.isNotBlank(evaluation.getUpuseridLike()),"a.upuserid",evaluation.getUpuseridLike());
|
||||
|
||||
|
||||
|
||||
List<KcXqxnHistory> kcXqxnHistoryList = kcXqxnHistoryService.list();
|
||||
//查询所在单位
|
||||
List<Xxhbuser> szdwList = xxhbuserService.list();
|
||||
|
@ -86,15 +102,7 @@ public class TingKeStatisticsController{
|
|||
queryWrapper.le("a.up_date",xqxnHistory.getEndTime());
|
||||
}
|
||||
}
|
||||
if(StringUtils.isNotBlank(evaluation.getDwmc())){
|
||||
List<Xxhbuser> xxhbuserList = szdwList.stream().filter(x -> StringUtils.equals(x.getDwh(),evaluation.getDwmc())).collect(Collectors.toList());
|
||||
Set<String> ghSet = xxhbuserList.stream().map(x -> x.getGh()).collect(Collectors.toSet());
|
||||
queryWrapper.in("a.upuserid",ghSet);
|
||||
}
|
||||
|
||||
Page<KcEvaluation> page = new Page<>(pageNo, pageSize);
|
||||
IPage<KcEvaluation> pageList = kcEvaluationService.selectPageAndKcmc(page, queryWrapper);
|
||||
|
||||
IPage<KcEvaluationVo> pageList = service.selectPageAndKcmc(page, queryWrapper);
|
||||
//---------------------补数据1------------------------------------------
|
||||
Map<Integer,String> sourceDictMap = Maps.newHashMap();
|
||||
//0:门户添加,1:老系统,2:政务大厅,3后台导入
|
||||
|
@ -114,7 +122,7 @@ public class TingKeStatisticsController{
|
|||
});
|
||||
|
||||
if(tjSet.isEmpty()){
|
||||
return Result.OK(new Page<>());
|
||||
return new Page<>();
|
||||
}
|
||||
//---------------------补数据2------------------------------------------
|
||||
|
||||
|
@ -148,10 +156,10 @@ public class TingKeStatisticsController{
|
|||
pageList.getRecords().forEach(x -> {
|
||||
Integer ixuserId = x.getUpuserid();
|
||||
String xuserId = String.valueOf(ixuserId);
|
||||
if(szdwMap.containsKey(xuserId)){
|
||||
Xxhbuser currentData = szdwMap.get(xuserId);
|
||||
x.setDwmc(currentData.getDwmc());
|
||||
}
|
||||
// if(szdwMap.containsKey(xuserId)){
|
||||
// Xxhbuser currentData = szdwMap.get(xuserId);
|
||||
// x.setDwmc(currentData.getDwmc());
|
||||
// }
|
||||
if(tksfMap.containsKey(xuserId)){
|
||||
KcTksfrzb currentData = tksfMap.get(xuserId);
|
||||
//tj.setJsxm(currentData.getXm());
|
||||
|
@ -173,10 +181,70 @@ public class TingKeStatisticsController{
|
|||
|
||||
});
|
||||
|
||||
return pageList;
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value="调查问卷-答案表-分页列表查询", notes="调查问卷-答案表-分页列表查询")
|
||||
@GetMapping(value = "/getEvaluationList")
|
||||
public Result<IPage<KcEvaluationVo>> list(KcEvaluationVo evaluation,
|
||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
Page<KcEvaluationVo> page = new Page<>(pageNo, pageSize);
|
||||
QueryWrapper<KcEvaluationVo> queryWrapper = QueryGenerator.initQueryWrapper("a",evaluation, req.getParameterMap());
|
||||
IPage<KcEvaluationVo> pageList = loadPageData(evaluation,queryWrapper,page);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
*/
|
||||
@RequestMapping(value = "/exportEvaluationXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, KcEvaluationVo kcEvaluationVo) {
|
||||
return exportXls(request, kcEvaluationVo, KcEvaluationVo.class, "评价量表统计");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
*/
|
||||
public ModelAndView exportXls(HttpServletRequest request, KcEvaluationVo object, Class<KcEvaluationVo> clazz, String title) {
|
||||
// Step.1 组装查询条件
|
||||
QueryWrapper<KcEvaluationVo> queryWrapper = QueryGenerator.initQueryWrapper(object, request.getParameterMap());
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
|
||||
// 过滤选中数据
|
||||
String selections = request.getParameter("selections");
|
||||
if (oConvertUtils.isNotEmpty(selections)) {
|
||||
List<String> selectionList = Arrays.asList(selections.split(","));
|
||||
queryWrapper.in("id",selectionList);
|
||||
}
|
||||
// Step.2 获取导出数据
|
||||
// List<KcEvaluationVo> exportList = service.selectPageAndKcmc(queryWrapper);
|
||||
Page<KcEvaluationVo> page = new Page<>(1, -1);
|
||||
IPage<KcEvaluationVo> pageList = loadPageData(object,queryWrapper,page);
|
||||
|
||||
// Step.3 AutoPoi 导出Excel
|
||||
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
|
||||
//此处设置的filename无效 ,前端会重更新设置一下
|
||||
mv.addObject(NormalExcelConstants.FILE_NAME, title);
|
||||
mv.addObject(NormalExcelConstants.CLASS, clazz);
|
||||
//update-begin--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置--------------------
|
||||
ExportParams exportParams=new ExportParams(title + "报表", "导出人:" + sysUser.getRealname(), title);
|
||||
exportParams.setImageBasePath(upLoadPath);
|
||||
//update-end--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置----------------------
|
||||
mv.addObject(NormalExcelConstants.PARAMS,exportParams);
|
||||
mv.addObject(NormalExcelConstants.DATA_LIST, pageList.getRecords());
|
||||
return mv;
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
Date upDate = DateUtil.parseDateTime("2023-03-13 00:00:00");
|
||||
Date startTime = DateUtil.parseDateTime("2023-05-01 00:00:00");
|
||||
|
|
Loading…
Reference in New Issue