数据接口测试 新建账号

sale
tianea 3 years ago
parent ad7ea497c4
commit 068c615add

@ -10,4 +10,6 @@ public class MemberImport {
private String school;
private String province;
private String level;
private String teacher;
private Long userNo;
}

@ -25,7 +25,7 @@ public class ExcelUtil {
private String outPath;
Pattern pattern = Pattern.compile("([A-Z]+)(\\d+)");
private FileInputStream is;
private InputStream is;
private XSSFWorkbook excel;
//获取第一个sheet
private XSSFSheet sheet0 ;
@ -57,10 +57,19 @@ public class ExcelUtil {
}
public ExcelUtil(InputStream fileInputStream) throws Exception{
is = fileInputStream;
excel = new XSSFWorkbook(fileInputStream);
sheet0 = excel.getSheetAt(0);
}
public void close(){
try {
excel.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public int getLastRowNum(){
return this.sheet0.getLastRowNum();
}
@ -306,10 +315,29 @@ public class ExcelUtil {
}
}
}
return null ;
}
public int getMergedRegionLineCount(int row,int column){
int sheetMergeCount = sheet0.getNumMergedRegions();
for(int i = 0 ; i < sheetMergeCount ; i++){
CellRangeAddress ca = sheet0.getMergedRegion(i);
int firstColumn = ca.getFirstColumn();
int lastColumn = ca.getLastColumn();
int firstRow = ca.getFirstRow();
int lastRow = ca.getLastRow();
if(row >= firstRow && row <= lastRow){
if(column >= firstColumn && column <= lastColumn){
return lastRow - firstRow +1;
}
}
}
return 0;
}
/**
*
@ -344,7 +372,7 @@ public class ExcelUtil {
String result = "";
//1、判断是否是数值格式
if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){
if(cell.getCellTypeEnum() == CellType.NUMERIC){
short format = cell.getCellStyle().getDataFormat();
SimpleDateFormat sdf = null;
if(format == 14 || format == 31 || format == 57 || format == 58){

@ -5,7 +5,10 @@ import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicHeader;
@ -17,6 +20,8 @@ import org.slf4j.LoggerFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -97,4 +102,61 @@ public class HttpUtil {
}
return "";
}
/**
* @param url
* @param param
* @return
*/
public static String postWithHeader(String url, String param,Map<String,String> headers) {
logger.info("POST 请求, url={}map={}", url, param);
try {
HttpPost httpPost = new HttpPost(url.trim());
setHeaders(httpPost,headers);
StringEntity se = new StringEntity(param, CHARSET_UTF_8);
se.setContentType(CONTENT_TYPE_TEXT_JSON);
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, APPLICATION_JSON));
httpPost.setEntity(se);
HttpResponse httpResponse = HttpClientBuilder.create().build().execute(httpPost);
return EntityUtils.toString(httpResponse.getEntity(), CHARSET_UTF_8);
} catch (Exception e) {
logger.info("HTTP请求出错", e);
e.printStackTrace();
}
return "";
}
private static String getContent(HttpRequestBase http){
try {
HttpResponse httpResponse = HttpClientBuilder.create().build().execute(http);
return EntityUtils.toString(httpResponse.getEntity(), CHARSET_UTF_8);
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
private static void setHeaders(HttpRequestBase http,Map<String,String> headers){
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(TIMEOUT).setConnectionRequestTimeout(TIMEOUT).setSocketTimeout(TIMEOUT).build();
http.setConfig(requestConfig);
if(headers!=null &&headers.size()>0){
headers.keySet().forEach(key->{
http.addHeader(key,headers.get(key));
});
}
}
public static String delete(String url,Map<String,String> headers){
HttpDelete httpDelete = new HttpDelete(url.trim());
setHeaders(httpDelete,headers);
return getContent(httpDelete);
}
public static String get(String url,Map<String,String> headers){
HttpGet httpGet = new HttpGet(url.trim());
setHeaders(httpGet,headers);
return getContent(httpGet);
}
}

@ -1,3 +1,3 @@
pic_path=/Volumes/Lexar/www/pic/
pic_recourse_url=http://localhost:8899/pic/
pic_recourse_url=/pic/
initPwd=tz2022

@ -4,10 +4,12 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.tz.platform.feign")
@EnableScheduling
public class CompetitionApplication {
public static void main(String[] args) {
SpringApplication.run(CompetitionApplication.class,args);

@ -0,0 +1,19 @@
package com.tz.platform.competitiion.api;
import com.tz.platform.common.core.base.Result;
import com.tz.platform.competitiion.api.biz.CompetitionIndexBiz;
import com.tz.platform.competitiion.api.dto.IndexListCompetitionDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(value = "/api/competition")
public class CompetitionIndexControll {
@Autowired
private CompetitionIndexBiz competitionIndexBiz;
@GetMapping(value = "list/{pageNo}")
public Result<IndexListCompetitionDTO> list(@PathVariable("pageNo") Integer pageNo){
return competitionIndexBiz.list(pageNo);
}
}

@ -0,0 +1,17 @@
package com.tz.platform.competitiion.api.biz;
import com.tz.platform.common.core.base.Result;
import com.tz.platform.competitiion.api.dto.IndexListCompetitionDTO;
import com.tz.platform.repository.CompetitionDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class CompetitionIndexBiz {
@Autowired
private CompetitionDao competitionDao;
public Result<IndexListCompetitionDTO> list(int pageNo){
return Result.error("");
}
}

@ -0,0 +1,17 @@
package com.tz.platform.competitiion.api.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class IndexCompetitionDTO implements Serializable {
private Integer id;
private String name;
private String sponsor;
private Date startTime;
private Date endTime;
private Date sinUpStartTime;
private Date sinUpEndTime;
}

@ -0,0 +1,12 @@
package com.tz.platform.competitiion.api.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class IndexListCompetitionDTO implements Serializable {
private List<IndexCompetitionDTO> list;
private Integer total;
}

@ -0,0 +1,39 @@
package com.tz.platform.competitiion.job;
import com.tz.platform.competitiion.job.biz.CompetitionJobBiz;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
@Component
@Slf4j
public class CompetitionJob {
// @Autowired
// private RedisTemplate<String,Boolean> redisTemplate;
@Autowired
private CompetitionJobBiz jobBiz;
@Scheduled(cron = "*/60 * * * * ?")
public void processCompetition(){
// String jobName = "competitionJob";
// Boolean isWorking = redisTemplate.opsForValue().get(jobName);
// if(isWorking == null ||isWorking == false){
// redisTemplate.opsForValue().set(jobName,true,10*60, TimeUnit.SECONDS);
// System.out.println("competition Job");
// try {
// jobBiz.updateCompetitionStatus();
// }catch (Exception ex) {
// log.error(jobName,ex.getMessage());
// }finally {
// redisTemplate.opsForValue().set(jobName,false,10*60, TimeUnit.SECONDS);
// }
// }
}
}

@ -0,0 +1,44 @@
package com.tz.platform.competitiion.job.biz;
import com.tz.platform.entity.Competition;
import com.tz.platform.repository.CompetitionDao;
import com.tz.platform.repository.CompetitionMemberDao;
import com.tz.platform.repository.CompetitionTaskDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class CompetitionJobBiz {
@Autowired
private CompetitionDao competitionDao;
@Autowired
private CompetitionTaskDao taskDao;
@Autowired
private CompetitionMemberDao memberDao;
/**
*
*/
public void updateCompetitionStatus(){
List<Competition> competitionList = competitionDao.findAllByStatus(0);
}
/**
*
*/
public void preHeat(){
}
/**
*
*/
public void overCompetition(){
}
}

@ -16,11 +16,17 @@ public class CompetitionMemberController extends BaseController {
@Autowired
private TeamTemplateImportBiz biz;
@PostMapping("excel")
public Result<String> uploadExcel(MultipartFile file,Long competitionId,Integer stageId){
long userNo = getUserNo();
System.out.println(userNo);
System.out.println(file.getOriginalFilename());
return biz.excelImport(file,userNo,competitionId,stageId);
}
@PostMapping("importMember")
public Result<String> importMember(MultipartFile file,Long competitionId,Integer stageId){
return biz.importMember(file,getUserNo(),competitionId,stageId);
}
}

@ -0,0 +1,23 @@
package com.tz.platform.competitiion.pc;
import com.tz.platform.common.core.base.Result;
import com.tz.platform.competitiion.pc.biz.MemberInfoBiz;
import com.tz.platform.competitiion.pc.vo.AddMemberVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "/pc/competition/member")
public class PCCompetitionMemberContoller {
@Autowired
private MemberInfoBiz memberInfoBiz;
@PostMapping(value = "add")
public Result<String> addMember(@RequestBody AddMemberVO vo){
return memberInfoBiz.addMember(vo);
}
}

@ -0,0 +1,71 @@
package com.tz.platform.competitiion.pc.biz;
import com.tz.platform.common.core.base.Result;
import com.tz.platform.common.core.bo.MemberInfo;
import com.tz.platform.competitiion.pc.vo.AddMemberVO;
import com.tz.platform.competitiion.pc.vo.MemberInfoVO;
import com.tz.platform.entity.CompetitionMember;
import com.tz.platform.entity.CompetitionTeam;
import com.tz.platform.feign.user.IFeignUser;
import com.tz.platform.repository.CompetitionMemberDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
public class MemberInfoBiz {
@Autowired
private CompetitionMemberDao memberDao;
@Autowired
private IFeignUser feignUser;
public Result<String> delete(MemberInfoVO vo){
memberDao.deleteById(vo.getId());
return Result.success("success");
}
public Result<String> addMember(AddMemberVO vo){
if(vo.getIds() == null||vo.getIds().size() == 0){
return Result.error("请选择团队成员");
}
if(vo.getCompetitionId() == null ||vo.getCompetitionId()<=0){
return Result.error("大赛信息不能为空");
}
if(vo.getStageId() == null||vo.getStageId()<=0){
return Result.error("阶段信息不能为空");
}
CompetitionTeam team = new CompetitionTeam();
team.setTeamName("无");
team.setTeacherName(vo.getTeacher());
team.setCompetitionId(vo.getCompetitionId());
team.setStageId(vo.getStageId());
List<MemberInfo> memberInfoList = feignUser.listByIds(vo.getIds());
List<CompetitionMember> memberList = new ArrayList<>();
memberInfoList.forEach(m->{
CompetitionMember member = new CompetitionMember();
member.setCompetitionId(vo.getCompetitionId());
member.setName(m.getName());
member.setSchool(m.getSchool());
team.setSchool(m.getSchool());
member.setStudentNo(m.getStudentNo());
member.setUserId(m.getId());
member.setStageId(vo.getStageId());
member.setTeacher(vo.getTeacher());
member.setTeamId(0);
member.setTeamName("个人赛");
memberList.add(member);
});
memberDao.saveAll(memberList);
return Result.success("success");
}
}

@ -1,6 +1,7 @@
package com.tz.platform.competitiion.pc.biz;
import com.tz.platform.common.core.base.Result;
import com.tz.platform.common.core.bo.Stage;
import com.tz.platform.competitiion.pc.dto.CompetitionDTO;
import com.tz.platform.competitiion.pc.dto.PageCompetitionDTO;
import com.tz.platform.competitiion.pc.vo.CompetitionVO;
@ -34,7 +35,36 @@ public class PCCompetitionBiz {
}
Competition competition = new Competition();
BeanUtils.copyProperties(vo,competition);
competition.setStartTime(new Date());
Date startTime=competition.getStageList().get(0).getStartTime();
Date endTime =competition.getStageList().get(competition.getStageList().size()-1).getEndTime();
Stage signupStage = competition.getStageList().stream().filter(stage -> stage.isEnableSignUp()).findFirst().orElse(null);
Date signUpStartTime = null;
Date signupEndTime = null;
if(endTime.getTime()<=startTime.getTime()){
return Result.error("结束时间必须大于开始时间");
}
if(signupStage !=null){
signUpStartTime = signupStage.getSignUpStartTime();
signupEndTime = signupStage.getSingUpEndTime();
if(signupEndTime.getTime()<=signUpStartTime.getTime()){
return Result.error("报名截止时间必须大于报名开始时间");
}
if(signupEndTime.getTime()>startTime.getTime()){
return Result.error("报名截止时间必须早于大赛开始时间");
}
competition.setEnableSignup(true);
}else{
competition.setEnableSignup(false);
}
competition.setStartTime(startTime);
competition.setEndTime(endTime);
competition.setSignupStartTime(signUpStartTime);
competition.setSignupEndTime(signupEndTime);
competition.setStatus(-1);
if(competition.getId() == null){
competition.setCreateTime(new Date());

@ -8,6 +8,7 @@ import com.tz.platform.competitiion.pc.vo.*;
import com.tz.platform.entity.CompetitionMember;
import com.tz.platform.entity.CompetitionTeam;
import com.tz.platform.feign.user.IFeignUser;
import com.tz.platform.repository.CompetitionDao;
import com.tz.platform.repository.CompetitionMemberDao;
import com.tz.platform.repository.CompetitionTeamDao;
import org.springframework.beans.factory.annotation.Autowired;
@ -16,6 +17,7 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import javax.persistence.criteria.Predicate;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@ -28,6 +30,9 @@ public class TeamBiz {
@Autowired
private CompetitionMemberDao memberDao;
@Autowired
private CompetitionDao competitionDao;
@Autowired
private IFeignUser feignUser;
@ -65,7 +70,14 @@ public class TeamBiz {
}
public Result<String> deleteMember(TeamMemberVO vo){
memberDao.deleteById(vo.getId());
CompetitionMember member = memberDao.getById(vo.getId());
if(member!=null){
memberDao.deleteById(vo.getId());
updatePeopleCount(member.getCompetitionId());
}else {
return Result.error("成员不存在");
}
return Result.success("success");
}
@ -98,15 +110,24 @@ public class TeamBiz {
member.setUserId(m.getId());
member.setStageId(team.getStageId());
member.setTeamId(team.getId());
member.setTeacher(team.getTeacherName());
member.setTeamName(team.getTeamName());
member.setLevelId(m.getLevelId());
memberList.add(member);
});
memberDao.saveAll(memberList);
updatePeopleCount(team.getCompetitionId());
return Result.success("success");
}
private void updatePeopleCount(Long competitionId){
int peopleCount = memberDao.countByCompetitionId(competitionId);
competitionDao.updatePeopleCount(peopleCount,competitionId);
}
public Result<String> updateTeamInfo(TeamInfoVO vo){
if(vo.getId() == null){
return Result.error("团队id不能这空");
@ -181,10 +202,32 @@ public class TeamBiz {
if(vo.getPageSize()<= 0){
vo.setPageSize(20);
}
Pageable pageable = PageRequest.of(vo.getPageNo(),vo.getPageSize());
Page<CompetitionMember> onePage = memberDao.findAllByCompetitionIdAndStageId(vo.getCompetitionId(),vo.getStageId(),pageable);
PageTeamMemberDTO dto = new PageTeamMemberDTO();
dto.setPage(onePage);
Pageable pageable = PageRequest.of(vo.getPageNo(),vo.getPageSize());
if(StringUtils.isEmpty(vo.getName())){
Page<CompetitionMember> onePage = memberDao.findAllByCompetitionIdAndStageId(vo.getCompetitionId(),vo.getStageId(),pageable);
dto.setPage(onePage);
}else{
Page<CompetitionMember> onePage = memberDao.findAll((root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> predicateList = new ArrayList<>();
predicateList.add(criteriaBuilder.equal(root.get("competitionId"),vo.getCompetitionId()));
predicateList.add(criteriaBuilder.equal(root.get("stageId"),vo.getStageId()));
Predicate[] andPre = new Predicate[predicateList.size()];
Predicate cidAndSidPredicate = criteriaBuilder.and(predicateList.toArray(andPre));
List<Predicate> predicateList1 = new ArrayList<>();
predicateList1.add(criteriaBuilder.equal(root.get("studentNo"),vo.getName()));
predicateList1.add(criteriaBuilder.equal(root.get("name"),vo.getName()));
Predicate[] orPre = new Predicate[predicateList1.size()];
Predicate studentNoOrNamePre = criteriaBuilder.or(predicateList1.toArray(orPre));
return criteriaQuery.where(cidAndSidPredicate,studentNoOrNamePre).getRestriction();
},pageable);
dto.setPage(onePage);
}
return Result.success(dto);
}
}

@ -37,8 +37,15 @@ public class TeamTemplateImportBiz {
if(competitionId==null||stageId == null){
return Result.error("大赛或赛段不能为空");
}
ExcelUtil util = null;
try {
ExcelUtil util = new ExcelUtil(file.getInputStream());
util = new ExcelUtil(file.getInputStream());
} catch (Exception e) {
e.printStackTrace();
return Result.error("上传失败");
}
try {
List<TeamInfo> teamInfoList = new ArrayList<>();
List<MemberImport> neesSave = new ArrayList<>();
for(int rowNo = 2;rowNo <util.getLastRowNum();rowNo++) {
@ -62,6 +69,7 @@ public class TeamTemplateImportBiz {
memberInfo.setSchool(school);
memberInfo.setLevel(level);
memberInfo.setProvince(province);
memberInfo.setUserNo(userNo);
memberInfoList.add(memberInfo);
}
if(memberInfoList.size()>0){
@ -76,9 +84,9 @@ public class TeamTemplateImportBiz {
teamInfo.setMemberList(memberInfoList);
teamInfoList.add(teamInfo);
}
teamInfoList.forEach(info -> {
System.out.println(info.getTeamName()+" "+info.getSchool()+" "+info.getLevel()+ " "+info.getTeacher()+" memberCount:"+info.getMemberList().size());
});
// teamInfoList.forEach(info -> {
// System.out.println(info.getTeamName()+" "+info.getSchool()+" "+info.getLevel()+ " "+info.getTeacher()+" memberCount:"+info.getMemberList().size());
// });
List<MemberInfo> mList = user.batchInsert(neesSave);
@ -103,6 +111,8 @@ public class TeamTemplateImportBiz {
member.setStageId(stageId);
member.setTeamId(teamInfo.getId());
member.setTeamName(teamInfo.getTeamName());
member.setLevelId(info.getLevelId());
member.setTeacher(team.getTeacher());
memberList.add(member);
}
});
@ -110,12 +120,84 @@ public class TeamTemplateImportBiz {
});
System.out.println(mList.size());
} catch (Exception e) {
e.printStackTrace();
return Result.error("上传失败");
}finally {
util.close();
}
return Result.success("success");
}
public Result<String> importMember(MultipartFile file,Long userNo,Long competitionId,Integer stageId){
if(competitionId==null||stageId == null){
return Result.error("大赛或赛段不能为空");
}
ExcelUtil util = null;
try {
util = new ExcelUtil(file.getInputStream());
} catch (Exception e) {
e.printStackTrace();
}
try {
int lastRowNo = util.getLastRowNum();
List<MemberImport> memberInfoList = new ArrayList<>();
for(int rowNo = 1;rowNo<=lastRowNo;rowNo++){
Row row = util.getRow(rowNo);
String name = util.getCellValue(row.getCell(0));
String studentNo = util.getCellValue(row.getCell(1));
String level = util.getCellValue(row.getCell(2));
String province = util.getCellValue(row.getCell(3));
String school = util.getCellValue(row.getCell(4));
String teacher = util.getMergedRegionValue(rowNo,5);
MemberImport memberInfo = new MemberImport();
if(StringUtils.isEmpty(studentNo)){
continue;
}
memberInfo.setName(name);
memberInfo.setStudentNo(studentNo);
memberInfo.setSchool(school);
memberInfo.setLevel(level);
memberInfo.setProvince(province);
memberInfo.setTeacher(teacher);
memberInfo.setUserNo(userNo);
memberInfoList.add(memberInfo);
}
List<MemberInfo> mList = user.batchInsert(memberInfoList);
List<CompetitionMember> memberList = new ArrayList<>();
mList.forEach(info -> {
MemberImport m = memberInfoList.stream().filter(mi -> mi.getStudentNo().equals(info.getStudentNo())).findFirst().orElse(null);
CompetitionMember member = new CompetitionMember();
member.setCompetitionId(competitionId);
member.setName(info.getName());
member.setSchool(info.getSchool());
member.setStudentNo(info.getStudentNo());
member.setUserId(info.getId());
member.setStageId(stageId);
member.setTeamId(0);
member.setTeamName("个人赛");
member.setLevelId(info.getLevelId());
member.setTeacher(m.getTeacher());
memberList.add(member);
});
memberDao.saveAll(memberList);
return Result.success("导入成功");
} catch (Exception e) {
e.printStackTrace();
}finally {
if(util!=null){
util.close();
}
}
return Result.error("导入失败");
}
}

@ -0,0 +1,13 @@
package com.tz.platform.competitiion.pc.vo;
import lombok.Data;
import java.util.List;
@Data
public class AddMemberVO {
private Long competitionId;
private Integer stageId;
private List<Long> ids;
private String teacher;
}

@ -0,0 +1,9 @@
package com.tz.platform.competitiion.pc.vo;
import lombok.Data;
@Data
public class MemberInfoVO {
private Integer id;
}

@ -8,5 +8,6 @@ public class PageTeamMemberVO {
private Integer pageNo;
private Long competitionId;
private Integer stageId;
private String name;
}

@ -28,10 +28,16 @@ public class Competition {
private Integer teamMaxCount;
private Integer status;
private Integer peopleCount;
private boolean enableSignup;
@Column(columnDefinition = "TIMESTAMP")
private Date startTime;
@Column(columnDefinition = "TIMESTAMP")
private Date endTime;
@Column(columnDefinition = "TIMESTAMP")
private Date signupStartTime;
@Column(columnDefinition = "TIMESTAMP")
private Date signupEndTime;
@Type(type = "json")
@Column(columnDefinition = "json")
private List<Stage> stageList;

@ -6,7 +6,7 @@ import javax.persistence.*;
@Entity
@Data
@Table(indexes={@Index(columnList = "competitionId,stageId,teamId")})
@Table(indexes={@Index(columnList = "competitionId,stageId,teamId"),@Index(columnList = "studentNo"),@Index(columnList = "name")})
public class CompetitionMember {
@Id
@ -22,7 +22,9 @@ public class CompetitionMember {
private String teamName;
private String accountId;
private String accountPwd;
private String teacher;
private Long examSore;
private Long financeSore;
private Long examCostTime;
private Integer levelId;
}

@ -0,0 +1,23 @@
package com.tz.platform.juejing.bo;
import lombok.Data;
import java.util.List;
@Data
public class AccountInfo {
private String account_id;
private String account_name;
/**
*
*/
private String title;
/**
* , 1 = 4 =
*/
private List<Integer> sec_types;
private Info info;
}

@ -0,0 +1,39 @@
package com.tz.platform.juejing.bo;
import lombok.Data;
import java.util.Date;
@Data
public class CashInfo {
private String account_id;
private String account_name;
/**
* /
*/
private Long nav;
/**
*
*/
private Long available;
/**
*
*/
private Long fpnl;
/**
*
*/
private Long cum_commission;
private Long cum_inout;
private Long last_inout;
/**
* 0; 1 2/
*/
private Integer change_reason;
private Date create_at;
private Date updated_at;
}

@ -0,0 +1,13 @@
package com.tz.platform.juejing.bo;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class Info {
private List<String> appid;
private Date create_at;
private Date updated_at;
}

@ -0,0 +1,10 @@
package com.tz.platform.juejing.bo;
import lombok.Data;
import java.util.List;
@Data
public class ListCashInfo {
private List<CashInfo> data;
}

@ -2,9 +2,22 @@ package com.tz.platform.repository;
import com.tz.platform.entity.Competition;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Repository
public interface CompetitionDao extends JpaRepository<Competition,Long> {
Competition getById(Long id);
List<Competition> findAllByStatus(Integer status);
@Transactional
@Modifying
@Query(value = "update competition set people_count =:pcount where id=:id",nativeQuery = true)
int updatePeopleCount( @Param("pcount") Integer pcount ,@Param("id") Long id);
}

@ -4,16 +4,23 @@ import com.tz.platform.entity.CompetitionMember;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface CompetitionMemberDao extends JpaRepository<CompetitionMember,Integer> {
public interface CompetitionMemberDao extends JpaRepository<CompetitionMember,Integer>, JpaSpecificationExecutor<CompetitionMember> {
List<CompetitionMember> findAllByCompetitionIdAndStageIdAndTeamIdIn(Long cmpId,Integer stageId,List<Integer> teamIds);
List<CompetitionMember> findAllByCompetitionIdAndStageIdAndUserIdIn(Long cmpId,Integer stageId,List<Long> ids);
Page<CompetitionMember> findAllByCompetitionIdAndStageId(Long cmpid, Integer stageId , Pageable pageable);
Page<CompetitionMember> findAllByStudentNoOrName(String studentNo,String name,Pageable pageable);
int countByCompetitionId(Long competitionId);
CompetitionMember getById(Integer id);
}

@ -28,6 +28,10 @@
<groupId>com.tz</groupId>
<artifactId>user-feign</artifactId>
</dependency>
<dependency>
<groupId>com.tz</groupId>
<artifactId>system-feign</artifactId>
</dependency>
<!-- test -->
<dependency>
<groupId>org.springframework.boot</groupId>

@ -13,7 +13,7 @@ import java.util.Date;
import java.util.List;
@Entity
@Table(name = "question",indexes = {@Index(columnList = "type"),@Index(columnList = "courseId,questionType,levelId"),@Index(columnList = "userNo")})
@Table(name = "question",indexes = {@Index(columnList = "stem"),@Index(columnList = "type"),@Index(columnList = "courseId,questionType,levelId"),@Index(columnList = "userNo")})
@Data
@TypeDef(name = "json", typeClass = JsonStringType.class)
public class Question {
@ -28,7 +28,6 @@ public class Question {
private String title;
private Long score;
private Integer type;
@Column(columnDefinition = "text")
private String stem;
@Column(columnDefinition = "text")
private String content;

@ -0,0 +1,24 @@
package com.tz.platform.pc;
import com.tz.platform.common.core.base.BaseController;
import com.tz.platform.common.core.base.Result;
import com.tz.platform.pc.biz.QuestionImportBiz;
import com.tz.platform.pc.dto.ListQuestionImportDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
@RestController
@RequestMapping(value = "/api/question/")
public class PCQuestionImportController extends BaseController {
@Autowired
private QuestionImportBiz importBiz;
@PostMapping(value = "importExcel")
public Result<ListQuestionImportDTO> importExcell(MultipartFile file){
return importBiz.importExcel(file,getUserNo());
}
}

@ -0,0 +1,172 @@
package com.tz.platform.pc.biz;
import com.tz.platform.common.core.base.Result;
import com.tz.platform.common.core.bo.Answer;
import com.tz.platform.common.core.enmus.QuestionTypeEnum;
import com.tz.platform.common.core.enmus.UserTypeEnum;
import com.tz.platform.common.core.tools.ExcelUtil;
import com.tz.platform.entity.Course;
import com.tz.platform.entity.Question;
import com.tz.platform.feign.IFeignStudentLevel;
import com.tz.platform.feign.user.IFeignUser;
import com.tz.platform.feign.user.vo.UserVo;
import com.tz.platform.feign.vo.StudentLevelVo;
import com.tz.platform.pc.dto.ListQuestionImportDTO;
import com.tz.platform.pc.dto.QuestionImportDTO;
import com.tz.platform.repository.CourseDao;
import com.tz.platform.repository.QuestionDao;
import org.apache.catalina.User;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Component
public class QuestionImportBiz {
@Autowired
private QuestionDao questionDao;
@Autowired
private CourseDao courseDao;
@Autowired
private IFeignUser feignUser;
@Autowired
private IFeignStudentLevel feignStudentLevel;
public Result<ListQuestionImportDTO> importExcel(MultipartFile file,Long userNo){
if(userNo == null ||userNo<=0){
return Result.error("无权操作");
}
UserVo user = feignUser.getByUserNo(userNo);
if(user==null||user.getUserType()< UserTypeEnum.TEACHER.getCode()){
return Result.error("无权操作");
}
ListQuestionImportDTO dto = new ListQuestionImportDTO();
List<Course> courseList = courseDao.findAll();
List<StudentLevelVo> studentLevelList = feignStudentLevel.list();
try {
ExcelUtil util = new ExcelUtil(file.getInputStream());
int lastRowNum = util.getLastRowNum();
List<QuestionImportDTO> list = new ArrayList<>();
for(int rowNo = 1;rowNo<=lastRowNum;){
int lineCount = util.getMergedRegionLineCount(rowNo,1);
if(lineCount <=0){
return Result.error("格式错误");
}
QuestionImportDTO subDto = new QuestionImportDTO();
String stem = util.getMergedRegionValue(rowNo,0);
String questType = util.getMergedRegionValue(rowNo,1);
String levelNamme = util.getMergedRegionValue(rowNo,2);
String courseName = util.getMergedRegionValue(rowNo,3);
String score = util.getMergedRegionValue(rowNo,4);
String analysis = util.getMergedRegionValue(rowNo,5);
subDto.setStem(stem);
subDto.setQuestionType(questType);
subDto.setCourseName(courseName);
try {
Course course = courseList.stream().filter(c -> c.getName().contains(courseName)).findFirst().orElse(null);
if (course == null) {
subDto.setStatus("课程不存在");
}
subDto.setCourseName(courseName);
if (StringUtils.isEmpty(stem)) {
subDto.setStatus("题干为空");
}else{
Question temp = questionDao.getByStem(stem);
if (temp != null) {
subDto.setStatus("题干已存在");
}
if (course != null && temp == null && StringUtils.hasText(stem)) {
Question question = new Question();
StudentLevelVo levelVo = studentLevelList.stream().filter(l -> l.getName().contains(levelNamme)).findFirst().orElse(null);
if (levelVo == null) {
question.setLevelId(0);
question.setLevelName("通用");
} else {
question.setLevelId(levelVo.getId());
question.setLevelName(levelNamme);
}
question.setStem(stem);
question.setUserNo(userNo);
question.setCreateTime(new Date());
question.setStatus(0);
question.setScore(Long.parseLong(score));
question.setCreatorId(userNo);
question.setCreator(user.getName());
question.setLevelName(levelNamme);
question.setType(0);
question.setAnalysis(analysis);
question.setCourseId(course.getId());
QuestionTypeEnum qt = null;
if(questType.equals(QuestionTypeEnum.SINGLE.getDesc())){
qt = QuestionTypeEnum.SINGLE;
}else if(questType.equals(QuestionTypeEnum.MULTY.getDesc())){
qt = QuestionTypeEnum.MULTY;
}else if(questType.equals(QuestionTypeEnum.JUDGE.getDesc())) {
qt= QuestionTypeEnum.JUDGE;
}
if(qt == null){
subDto.setStatus("题型未匹配");
}else{
List<Answer> answerList = new ArrayList<>();
List<Integer> answerIds = new ArrayList<>();
for(int i = 0 ;i<lineCount;i++){
Row row = util.getRow(rowNo +i);
String itemStem = util.getCellValue(row.getCell(6));
String isAnwser = util.getCellValue(row.getCell(7));
if(StringUtils.isEmpty(itemStem)){
continue;
}
Answer answer = new Answer();
answer.setId(i+1);
answer.setTitle(itemStem);
if(isAnwser.contains("是")){
answerIds.add(i+1);
}
answerList.add(answer);
}
if(answerIds.size() == 0){
subDto.setStatus("无答案");
}
if(answerList.size()==0){
subDto.setStatus("无选项");
}
if(answerIds.size()>0&&answerList.size()>0&&qt!=null){
question.setQuestionType(qt.getCode());
question.setAnswerList(answerList);
question.setAnswerId(answerIds);
question = questionDao.save(question);
subDto.setId(question.getId());
subDto.setStatus("成功");
}
}
}
}
}catch (Exception ex){
subDto.setStatus("数据异常");
}
list.add(subDto);
rowNo+=lineCount;
}
dto.setList(list);
} catch (Exception e) {
return Result.error("解析失败");
}
return Result.success(dto);
}
}

@ -0,0 +1,11 @@
package com.tz.platform.pc.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class ListQuestionImportDTO implements Serializable {
List<QuestionImportDTO> list;
}

@ -12,9 +12,9 @@ public class QuestionDTO implements Serializable {
private Long id;
private Long courseId;
private String courseName;
private Long levelId;
private Integer levelId;
private String levelName;
private Long questionType;
private Integer questionType;
private String title;
private Long score;
private Integer type;

@ -0,0 +1,12 @@
package com.tz.platform.pc.dto;
import lombok.Data;
@Data
public class QuestionImportDTO {
private String stem;
private String questionType;
private Long id;
private String courseName;
private String status;
}

@ -35,6 +35,8 @@ public interface QuestionDao extends JpaRepository<Question,Long> {
int countByQuestionTypeAndType(Integer qtype,Integer type);
Question getByStem(String stem);
@Transactional
@Modifying
@Query(value = "update question set status=:status where id in (:ids)",nativeQuery = true)

@ -1,13 +1,12 @@
package com.tz.platform.system.feign.biz;
import com.tz.platform.common.core.tools.BeanUtils;
import com.tz.platform.entity.StudentLevel;
import com.tz.platform.feign.vo.StudentLevelVo;
import com.tz.platform.repository.StudentLevelDao;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
@ -16,9 +15,8 @@ public class FeignStudentLevelBiz {
private StudentLevelDao studentLevelDao;
public List<StudentLevelVo> list(){
List<StudentLevelVo> rs= new ArrayList<>();
List<StudentLevel> studentLevels = studentLevelDao.findAll();
BeanUtils.copyProperties(studentLevels,rs);
List<StudentLevelVo> rs = BeanUtils.copyProperties(studentLevels,StudentLevelVo.class);
return rs;
}
}

@ -26,6 +26,8 @@ public class UserVo {
* (1:0:)
*/
private Integer statusId;
private Integer userType;
/**
*
*/

@ -76,6 +76,7 @@ public class FeignUserBiz {
user.setMobileSalt(StrUtil.get32UUID());
user.setMobilePsw(DigestUtil.sha1Hex(user.getMobileSalt() + "tz2022"));
user.setUserType(UserTypeEnum.USER.getCode());
user.setUserNo(m.getUserNo());
ProvinceVO provinceVO = provinceVOList.stream().filter(p -> p.getName().contains(m.getProvince())).findFirst().orElse(null);
StudentLevelVo levelVo = levelList.stream().filter(l -> l.getName().contains(m.getLevel())).findFirst().orElse(null);
if(provinceVO!=null){

@ -49,6 +49,9 @@ public class PcUserInfoBiz {
Pageable pageable = PageRequest.of(bo.getPageNo(),bo.getPageSize());
User user = new User();
user.setUserType(bo.getUserType());
if(bo.getLevelId()>0){
user.setLevelId(bo.getLevelId());
}
if(StringUtils.hasText(bo.getName())){
if(bo.getName().matches("\\d+")){
user.setStudentNo(bo.getName());

@ -9,5 +9,6 @@ public class UserPageBO implements Serializable {
private int pageNo;
private int pageSize;
private int userType;
private int levelId;
private String name;
}

Loading…
Cancel
Save