Browse Source

20200107v1.2

recovery
zy_Java 5 years ago
parent
commit
85832b8ec7
  1. 10
      form/src/main/java/com/ccsens/form/api/FormController.java
  2. 38
      form/src/main/java/com/ccsens/form/api/WriteController.java
  3. 39
      form/src/main/java/com/ccsens/form/bean/dto/WriteDto.java
  4. 13
      form/src/main/java/com/ccsens/form/service/FormService.java
  5. 15
      form/src/main/java/com/ccsens/form/service/IWriteService.java
  6. 84
      form/src/main/java/com/ccsens/form/service/WriteService.java
  7. 2
      util/src/main/java/com/ccsens/util/CodeEnum.java

10
form/src/main/java/com/ccsens/form/api/FormController.java

@ -60,4 +60,14 @@ public class FormController {
log.info("统计提交的信息");
return JsonResponse.newInstance().ok(formLists);
}
@MustLogin
@ApiOperation(value = "查找", notes = "zy:查询该表单填写的人数,和需要统计的组件内的统计信息")
@RequestMapping(value = "/statistics", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<FormVo.StatisticsForm> statisticsForm(@ApiParam @Validated @RequestBody QueryDto<FormDto.GetFormInfo> params) {
log.info("统计提交的信息:{}",params);
FormVo.StatisticsForm formLists = formService.statisticsForm(params.getParam());
log.info("统计提交的信息");
return JsonResponse.newInstance().ok(formLists);
}
}

38
form/src/main/java/com/ccsens/form/api/WriteController.java

@ -1,4 +1,42 @@
package com.ccsens.form.api;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.form.bean.dto.FormDto;
import com.ccsens.form.bean.dto.WriteDto;
import com.ccsens.form.bean.vo.FormVo;
import com.ccsens.form.service.IWriteService;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author
*/
@Slf4j
@Api(tags = "组件相关api" , description = "")
@RestController
@RequestMapping("/write")
public class WriteController {
@Resource
private IWriteService writeService;
@MustLogin
@ApiOperation(value = "填写表单提交", notes = "zy:查询表单的基本信息,组件信息,及当前用户填写的信息")
@RequestMapping(value = "/submit", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse submitForm(@ApiParam @Validated @RequestBody QueryDto<WriteDto.SubmitWriteForm> params) {
log.info("填写表单提交:{}",params);
writeService.submitForm(params);
log.info("填写表单提交成功");
return JsonResponse.newInstance().ok();
}
}

39
form/src/main/java/com/ccsens/form/bean/dto/WriteDto.java

@ -0,0 +1,39 @@
package com.ccsens.form.bean.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author
*/
@Data
public class WriteDto {
@Data
@ApiModel("提交填写的表单")
public static class SubmitWriteForm{
@ApiModelProperty("表单id")
private Long formId;
@ApiModelProperty("表单内每个组件的信息")
private List<ModuleWrite> moduleList;
}
@Data
@ApiModel("表单内每个组件填写的信息")
public static class ModuleWrite{
@ApiModelProperty("表单内的组件id")
private Long formModuleId;
@ApiModelProperty("该组件的答案")
private List<ModuleAnswer> answerList;
}
@Data
@ApiModel("组件内的答案")
public static class ModuleAnswer{
@ApiModelProperty("答案或选项的key")
private String answer;
}
}

13
form/src/main/java/com/ccsens/form/service/FormService.java

@ -3,8 +3,10 @@ package com.ccsens.form.service;
import com.ccsens.form.bean.dto.FormDto;
import com.ccsens.form.bean.po.FormBasic;
import com.ccsens.form.bean.po.FormUser;
import com.ccsens.form.bean.po.FormUserExample;
import com.ccsens.form.bean.vo.FormVo;
import com.ccsens.form.persist.dao.FormBasicDao;
import com.ccsens.form.persist.mapper.FormUserMapper;
import com.ccsens.util.bean.dto.QueryDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -23,6 +25,8 @@ import java.util.List;
public class FormService implements IFormService{
@Resource
private FormBasicDao formBasicDao;
@Resource
private FormUserMapper formUserMapper;
/**
* 查看表单详细信息
@ -46,8 +50,15 @@ public class FormService implements IFormService{
@Override
public FormVo.StatisticsForm statisticsForm(FormDto.GetFormInfo param) {
//获取填写总人数
FormUserExample formUserExample = new FormUserExample();
formUserExample.createCriteria().andFormIdEqualTo(param.getFormId());
long count = formUserMapper.countByExample(formUserExample);
//获取表单下需要统计的组件的信息
List<FormVo.StatisticsModule> statisticsModuleList = formBasicDao.getStatisticsForm(param.getFormId());
return null;
FormVo.StatisticsForm form = new FormVo.StatisticsForm();
form.setNums((int) count);
form.setModuleList(statisticsModuleList);
return form;
}
}

15
form/src/main/java/com/ccsens/form/service/IWriteService.java

@ -0,0 +1,15 @@
package com.ccsens.form.service;
import com.ccsens.form.bean.dto.WriteDto;
import com.ccsens.util.bean.dto.QueryDto;
/**
* @author
*/
public interface IWriteService {
/**
* 填写表单后提交
* @param params ok
*/
void submitForm(QueryDto<WriteDto.SubmitWriteForm> params);
}

84
form/src/main/java/com/ccsens/form/service/WriteService.java

@ -0,0 +1,84 @@
package com.ccsens.form.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake;
import com.ccsens.form.bean.dto.WriteDto;
import com.ccsens.form.bean.po.FormUser;
import com.ccsens.form.bean.po.FormUserExample;
import com.ccsens.form.bean.po.FormWrite;
import com.ccsens.form.persist.mapper.FormUserMapper;
import com.ccsens.form.persist.mapper.FormWriteMapper;
import com.ccsens.util.CodeEnum;
import com.ccsens.util.bean.dto.QueryDto;
import com.ccsens.util.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
* @author
*/
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class WriteService implements IWriteService{
@Resource
private FormWriteMapper formWriteMapper;
@Resource
private FormUserMapper formUserMapper;
@Resource
private Snowflake snowflake;
@Override
public void submitForm(QueryDto<WriteDto.SubmitWriteForm> params) {
WriteDto.SubmitWriteForm submitWriteForm = params.getParam();
//查找该用户是否有填写信息
FormUser formUser;
FormUserExample formUserExample = new FormUserExample();
formUserExample.createCriteria().andFormIdEqualTo(submitWriteForm.getFormId()).andUserIdEqualTo(params.getUserId());
List<FormUser> formUserList = formUserMapper.selectByExample(formUserExample);
if(CollectionUtil.isNotEmpty(formUserList)){
formUser = formUserList.get(0);
if(formUser.getSubmitStatus() == 1){
//如果有且状态为已提交,则不能再次提交
throw new BaseException(CodeEnum.ALREADY_UPLOAD_FORM);
}else {
//如果状态为未提交。则将状态改为已提交
formUser.setSubmitStatus((byte) 1);
formUser.setOperator(params.getUserId());
formUserMapper.updateByPrimaryKeySelective(formUser);
}
}else {
//如果没有,新建用户与表单的关联关心,状态为已提交
formUser = new FormUser();
formUser.setId(snowflake.nextId());
formUser.setFormId(submitWriteForm.getFormId());
formUser.setUserId(params.getUserId());
formUser.setUserName(params.getUserName());
formUser.setAvatarUrl(params.getAvatarUrl());
formUser.setSubmitStatus((byte) 1);
formUser.setOperator(params.getUserId());
formUserMapper.insertSelective(formUser);
}
//保存填写的答案信息
if(CollectionUtil.isNotEmpty(submitWriteForm.getModuleList())){
submitWriteForm.getModuleList().forEach(moduleWrite -> {
if(CollectionUtil.isNotEmpty(moduleWrite.getAnswerList())){
moduleWrite.getAnswerList().forEach(moduleAnswer -> {
FormWrite formWrite = new FormWrite();
formWrite.setId(snowflake.nextId());
formWrite.setFormUserId(formUser.getId());
formWrite.setFormModuleId(moduleWrite.getFormModuleId());
formWrite.setAnswer(moduleAnswer.getAnswer());
formWrite.setOperator(params.getUserId());
formWriteMapper.insertSelective(formWrite);
});
}
});
}
}
}

2
util/src/main/java/com/ccsens/util/CodeEnum.java

@ -179,7 +179,7 @@ public enum CodeEnum {
ALREADY_JOIN_PROJECT(148,"该选手已经参加了比赛,不可修改身份证组别等信息",true),
ALREADY_JOIN_PROJECT_DEL(149,"取消报名后可删除",true),
ALREADY_UPLOAD_VIDEO(150,"您已经上传了视频,请勿重复提交",true),
ALREADY_UPLOAD_FORM(151,"请勿重复提交信息",true),
;

Loading…
Cancel
Save