Browse Source

输入文档相关接口

recovery
ma 4 years ago
parent
commit
19531f3512
  1. 56
      tall/src/main/java/com/ccsens/tall/bean/dto/InputDocDto.java
  2. 51
      tall/src/main/java/com/ccsens/tall/bean/vo/InputDocVo.java
  3. 15
      tall/src/main/java/com/ccsens/tall/persist/dao/IInputDocDao.java
  4. 42
      tall/src/main/java/com/ccsens/tall/service/IInputDocService.java
  5. 175
      tall/src/main/java/com/ccsens/tall/service/InputDocService.java
  6. 59
      tall/src/main/java/com/ccsens/tall/web/InputDocController.java
  7. 48
      tall/src/main/resources/mapper_dao/IInputDocDao.xml
  8. 3
      util/src/main/java/com/ccsens/util/CodeEnum.java

56
tall/src/main/java/com/ccsens/tall/bean/dto/InputDocDto.java

@ -4,6 +4,9 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
@ -22,8 +25,59 @@ public class InputDocDto {
}
@Data
@ApiModel("gen")
@ApiModel("根据任务id查找文档")
public static class FindDocByTask{
@NotNull(message = "请选择任务")
@ApiModelProperty("任务id")
private Long taskId;
}
@Data
@ApiModel("给输入文档上传文件")
public static class UploadForDoc{
@NotNull(message = "请选择输入文档")
@ApiModelProperty("输入文档Id")
private Long docId;
@NotNull(message = "上传文件不能为空")
@ApiModelProperty("文件Id,数组")
private Long[] fileIds;
}
@Data
@ApiModel("查看文档上传记录")
public static class ViewDocHistory{
@NotNull(message = "请选择要查看的文档")
@ApiModelProperty("输入文档Id")
private Long docId;
}
@Data
@ApiModel("添加输入文档")
public static class AddDoc{
@NotNull(message = "请选择要添加文档的任务")
@ApiModelProperty("任务id")
private Long taskId;
@NotEmpty(message = "文档名称不能为空")
@ApiModelProperty("文件名称")
private String[] fileName;
}
@Data
@ApiModel("修改输入文档")
public static class UpdateDoc{
@NotNull(message = "请选择要修改的文档")
@ApiModelProperty("文档id")
private Long docId;
@NotBlank(message = "文件名称不能为空")
@ApiModelProperty("文件名称")
private String fileName;
}
@Data
@ApiModel("删除输入文档")
public static class DeleteDoc{
@NotNull(message = "请选择要删除的文档")
@ApiModelProperty("文档id")
private Long docId;
}
}

51
tall/src/main/java/com/ccsens/tall/bean/vo/InputDocVo.java

@ -0,0 +1,51 @@
package com.ccsens.tall.bean.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
*
* @author mz
*/
@Data
public class InputDocVo {
@Data
@ApiModel("根据任务id查到的文档")
public static class DocOfTask{
@ApiModelProperty("输入文档id")
private Long docId;
@ApiModelProperty("输入文档名称")
private String docName;
@ApiModelProperty("是否上传 0否 1是")
private Byte isUpload;
List<File> files;
}
@Data
@ApiModel("文档下的文件")
public static class File{
@ApiModelProperty("上传记录id")
private Long recordId;
@ApiModelProperty("文件名称")
private String fileName;
@ApiModelProperty("文件访问路径")
private String fileUrl;
}
@Data
@ApiModel("查看文档历史记录")
public static class HistoryRecord{
@ApiModelProperty("文件名称")
private String fileName;
@ApiModelProperty("文件访问地址")
private String docUrl;
@ApiModelProperty("文件状态 0未使用 1正在使用")
private String status;
}
}

15
tall/src/main/java/com/ccsens/tall/persist/dao/IInputDocDao.java

@ -1,6 +1,7 @@
package com.ccsens.tall.persist.dao;
import com.ccsens.tall.bean.dto.LwbsDto;
import com.ccsens.tall.bean.vo.InputDocVo;
import com.ccsens.tall.bean.vo.LwbsVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@ -11,4 +12,18 @@ import java.util.List;
public interface IInputDocDao {
List<LwbsVo.SelByProjectIdToTasksVo> selectById(@Param("param") LwbsDto.SelByProjectIdToTaskDto param, @Param("userId") Long userId);
/**
* 根据任务Id查询输入文档
* @param taskId
* @return
*/
List<InputDocVo.DocOfTask> findDocByTask(Long taskId);
/**
* 查看文档上传历史记录
* @param docId
* @return
*/
List<InputDocVo.HistoryRecord> viewDocHistory(Long docId);
}

42
tall/src/main/java/com/ccsens/tall/service/IInputDocService.java

@ -1,7 +1,10 @@
package com.ccsens.tall.service;
import com.ccsens.tall.bean.dto.InputDocDto;
import com.ccsens.tall.bean.dto.LwbsDto;
import com.ccsens.tall.bean.vo.InputDocVo;
import com.ccsens.tall.bean.vo.LwbsVo;
import com.ccsens.util.bean.dto.QueryDto;
import java.util.List;
@ -9,4 +12,43 @@ public interface IInputDocService {
List<LwbsVo.SelByUserIdToComProjectVo> selBylwbs(LwbsDto.SelByUserIdToComProject param, Long userId);
List<LwbsVo.SelByProjectIdToTasksVo> selByProjectIdToTask(LwbsDto.SelByProjectIdToTaskDto param, Long userId);
/**
* 根据任务id查询输入文档
* @param params 任务id
* @return
*/
List<InputDocVo.DocOfTask> findDocByTask(InputDocDto.FindDocByTask params);
/**
* 给输入文档上传文件
* @param param docId 文档id
* fileId 文件id
*/
void uploadForDoc(InputDocDto.UploadForDoc param,Long userId);
/**
* 查看文档文件上传记录
* @param param
* @return
*/
List<InputDocVo.HistoryRecord> viewDocHistory(InputDocDto.ViewDocHistory param);
/**
* 添加输入文档
* @param param
*/
void addDoc(InputDocDto.AddDoc param);
/**
* 修改输入文档
* @param param
*/
void updateDoc(InputDocDto.UpdateDoc param);
/**
* 删除输入文档
* @param param
*/
void delDoc(InputDocDto.DeleteDoc param);
}

175
tall/src/main/java/com/ccsens/tall/service/InputDocService.java

@ -1,14 +1,20 @@
package com.ccsens.tall.service;
import cn.hutool.core.lang.Snowflake;
import com.ccsens.tall.bean.dto.InputDocDto;
import com.ccsens.tall.bean.dto.LwbsDto;
import com.ccsens.tall.bean.po.ProMember;
import com.ccsens.tall.bean.po.ProMemberExample;
import com.ccsens.tall.bean.po.SysProject;
import com.ccsens.tall.bean.po.SysProjectExample;
import com.ccsens.tall.bean.po.*;
import com.ccsens.tall.bean.vo.InputDocVo;
import com.ccsens.tall.bean.vo.LwbsVo;
import com.ccsens.tall.persist.dao.IInputDocDao;
import com.ccsens.tall.persist.mapper.ProMemberMapper;
import com.ccsens.tall.persist.mapper.ProTaskInputDocMapper;
import com.ccsens.tall.persist.mapper.ProTaskInputRecordMapper;
import com.ccsens.tall.persist.mapper.SysProjectMapper;
import com.ccsens.util.CodeEnum;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import com.ccsens.util.exception.BaseException;
import com.rabbitmq.client.TopologyRecoveryException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -25,6 +31,14 @@ public class InputDocService implements IInputDocService {
public SysProjectMapper sysProjectMapper;
@Resource
private IInputDocDao iInputDocDao;
@Resource
private ProTaskInputRecordMapper proTaskInputRecordMapper;
@Resource
private ProTaskInputDocMapper proTaskInputDocMapper;
@Resource
private Snowflake snowflake;
@Override
public List<LwbsVo.SelByUserIdToComProjectVo> selBylwbs(LwbsDto.SelByUserIdToComProject param, Long userId) {
List<LwbsVo.SelByUserIdToComProjectVo> selByUserIdToComProjectVos =new ArrayList<LwbsVo.SelByUserIdToComProjectVo>();
@ -62,4 +76,157 @@ public class InputDocService implements IInputDocService {
return se;
}
/**
* 根据任务id查找输入文档
* @param param 任务id
* @return
*/
@Override
public List<InputDocVo.DocOfTask> findDocByTask(InputDocDto.FindDocByTask param) {
List<InputDocVo.DocOfTask> docByTask = iInputDocDao.findDocByTask(param.getTaskId());
return docByTask;
}
/**
* 给输入文档上传文件
* @param param docId 文档id
*/
@Override
public void uploadForDoc(InputDocDto.UploadForDoc param,Long userId) {
//将之前的文件设置为不使用
ProTaskInputRecordExample proTaskInputRecordExample = new ProTaskInputRecordExample();
proTaskInputRecordExample.createCriteria().andInputDocIdEqualTo(param.getDocId());
ProTaskInputRecord newProTaskInputRecord = new ProTaskInputRecord();
newProTaskInputRecord.setStatus((byte)0);
proTaskInputRecordMapper.updateByExampleSelective(newProTaskInputRecord,proTaskInputRecordExample);
//多文件添加
for (int i = 0; i < param.getFileIds().length; i++) {
ProTaskInputRecord proTaskInputRecord = new ProTaskInputRecord();
proTaskInputRecord.setInputDocId(param.getDocId());
proTaskInputRecord.setFileId(param.getFileIds()[i]);
proTaskInputRecord.setStatus((byte)1);
proTaskInputRecord.setId(snowflake.nextId());
proTaskInputRecord.setUserId(userId);
proTaskInputRecordMapper.insertSelective(proTaskInputRecord);
}
//通过输入文档id将输入文档表中的状态更改为已上传
ProTaskInputDoc proTaskInputDoc = new ProTaskInputDoc();
proTaskInputDoc.setId(param.getDocId());
proTaskInputDoc.setIsUpload(1);
proTaskInputDocMapper.updateByPrimaryKeySelective(proTaskInputDoc);
}
/**
* 查看文档上传文件历史记录
* @param param docId 文档id
* @return
*/
@Override
public List<InputDocVo.HistoryRecord> viewDocHistory(InputDocDto.ViewDocHistory param) {
List<InputDocVo.HistoryRecord> historyRecords = iInputDocDao.viewDocHistory(param.getDocId());
return historyRecords;
}
/**
* 添加输入文档
* @param param
*/
@Override
public void addDoc(InputDocDto.AddDoc param) {
//判断是否有重复名称
ProTaskInputDocExample proTaskInputDocExample = new ProTaskInputDocExample();
proTaskInputDocExample.createCriteria().andTaskDetailIdEqualTo(param.getTaskId()).andRecStatusEqualTo((byte)0);
List<ProTaskInputDoc> proTaskInputDocs = proTaskInputDocMapper.selectByExample(proTaskInputDocExample);
if (null != proTaskInputDocs && 0 < proTaskInputDocs.size()){
for (ProTaskInputDoc proTaskInputDoc : proTaskInputDocs){
for (int i = 0; i < param.getFileName().length; i++) {
if (proTaskInputDoc.getName().equals(param.getFileName()[i])){
throw new BaseException(CodeEnum.DOC_REPEAT);
}
}
}
}
//添加输入文档
for (int i = 0; i < param.getFileName().length; i++) {
ProTaskInputDoc proTaskInputDoc = new ProTaskInputDoc();
proTaskInputDoc.setId(snowflake.nextId());
proTaskInputDoc.setTaskDetailId(param.getTaskId());
proTaskInputDoc.setName(param.getFileName()[i]);
proTaskInputDoc.setIsUpload(0);
proTaskInputDocMapper.insertSelective(proTaskInputDoc);
}
}
/**
* 修改输入文档
* @param param
*/
@Override
public void updateDoc(InputDocDto.UpdateDoc param) {
//判断是否有重复
ProTaskInputDoc proTaskInputDoc = proTaskInputDocMapper.selectByPrimaryKey(param.getDocId());
ProTaskInputDocExample proTaskInputDocExample = new ProTaskInputDocExample();
proTaskInputDocExample.createCriteria().andTaskDetailIdEqualTo(proTaskInputDoc.getTaskDetailId());
List<ProTaskInputDoc> proTaskInputDocs = proTaskInputDocMapper.selectByExample(proTaskInputDocExample);
if (null != proTaskInputDocs && 0 < proTaskInputDocs.size()){
for (ProTaskInputDoc docData:proTaskInputDocs){
if (docData.getName().equals(param.getFileName())){
throw new BaseException(CodeEnum.DOC_REPEAT);
}
}
}
//删除记录表中已上传的文档
if (1 == proTaskInputDoc.getIsUpload()){
ProTaskInputRecordExample proTaskInputRecordExample = new ProTaskInputRecordExample();
proTaskInputRecordExample.createCriteria().andInputDocIdEqualTo(param.getDocId());
List<ProTaskInputRecord> proTaskInputRecords = proTaskInputRecordMapper.selectByExample(proTaskInputRecordExample);
for (ProTaskInputRecord record:proTaskInputRecords){
ProTaskInputRecord inputRecord = new ProTaskInputRecord();
inputRecord.setId(record.getId());
inputRecord.setStatus((byte)0);
inputRecord.setRecStatus((byte)2);
proTaskInputRecordMapper.updateByPrimaryKeySelective(inputRecord);
}
}
//修改数据
ProTaskInputDoc newDoc = new ProTaskInputDoc();
newDoc.setId(param.getDocId());
newDoc.setName(param.getFileName());
newDoc.setIsUpload(0);
proTaskInputDocMapper.updateByPrimaryKeySelective(newDoc);
}
/**
* 删除输入文档
* @param param
*/
@Override
public void delDoc(InputDocDto.DeleteDoc param) {
//删除记录中表中的数据
ProTaskInputRecordExample recordExample = new ProTaskInputRecordExample();
recordExample.createCriteria().andInputDocIdEqualTo(param.getDocId()).andRecStatusEqualTo((byte)0);
List<ProTaskInputRecord> proTaskInputRecords = proTaskInputRecordMapper.selectByExample(recordExample);
for (ProTaskInputRecord inputRecord:proTaskInputRecords){
ProTaskInputRecord proTaskInputRecord = new ProTaskInputRecord();
proTaskInputRecord.setId(inputRecord.getId());
proTaskInputRecord.setStatus((byte)0);
proTaskInputRecord.setRecStatus((byte)2);
proTaskInputRecordMapper.updateByPrimaryKeySelective(proTaskInputRecord);
}
//删除输入文档表中的数据
ProTaskInputDoc proTaskInputDoc = new ProTaskInputDoc();
proTaskInputDoc.setId(param.getDocId());
proTaskInputDoc.setRecStatus((byte)2);
proTaskInputDocMapper.updateByPrimaryKeySelective(proTaskInputDoc);
}
}

59
tall/src/main/java/com/ccsens/tall/web/InputDocController.java

@ -1,8 +1,10 @@
package com.ccsens.tall.web;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.tall.annotation.MustLoginTall;
import com.ccsens.tall.bean.dto.InputDocDto;
import com.ccsens.tall.bean.dto.LabelDto;
import com.ccsens.tall.bean.vo.InputDocVo;
import com.ccsens.tall.bean.vo.LabelVo;
import com.ccsens.tall.service.IInputDocService;
import com.ccsens.util.JsonResponse;
@ -42,11 +44,62 @@ public class InputDocController {
@MustLogin
@ApiOperation(value = "通过任务id查询输入文档", notes = "1007:通过任务id查询输入文档")
@RequestMapping(value = "/addInputDoc", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse findDocByTask(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.AddAddInputDoc> params) {
@RequestMapping(value = "/docByTask", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<InputDocVo.DocOfTask>> findDocByTask(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.FindDocByTask> params) {
log.info("通过任务id查询输入文档:{}",params);
//iInputDocService.addInputDoc(params.getParam(),params.getUserId());
List<InputDocVo.DocOfTask> docByTask = iInputDocService.findDocByTask(params.getParam());
log.info("通过任务id查询输入文档");
return JsonResponse.newInstance().ok(docByTask);
}
@MustLogin
@ApiOperation(value = "给输入文档上传文件", notes = "1007:给输入文档上传文件")
@RequestMapping(value = "/uploadForDoc", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse uploadForDoc(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.UploadForDoc> params) {
log.info("给输入文档上传文件:{}",params);
iInputDocService.uploadForDoc(params.getParam(),params.getUserId());
log.info("给输入文档上传文件");
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "查看文档上传历史记录", notes = "1007:查看文档上传历史记录")
@RequestMapping(value = "/viewDocHistory", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse viewDocHistory(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.ViewDocHistory> params) {
log.info("查看文档上传历史记录:{}",params);
List<InputDocVo.HistoryRecord> historyRecords = iInputDocService.viewDocHistory(params.getParam());
log.info("查看文档上传历史记录");
return JsonResponse.newInstance().ok(historyRecords);
}
@MustLogin
@ApiOperation(value = "添加输入文档", notes = "1007:添加输入文档")
@RequestMapping(value = "/addDoc", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse addDoc(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.AddDoc> params) {
log.info("添加输入文档:{}",params);
iInputDocService.addDoc(params.getParam());
log.info("添加输入文档");
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "修改输入文档", notes = "1007:修改输入文档")
@RequestMapping(value = "/updateDoc", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse updateDoc(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.UpdateDoc> params) {
log.info("修改输入文档:{}",params);
iInputDocService.updateDoc(params.getParam());
log.info("修改输入文档");
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "删除输入文档", notes = "1007:删除输入文档")
@RequestMapping(value = "/delDoc", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse delDoc(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.DeleteDoc> params) {
log.info("删除输入文档:{}",params);
iInputDocService.delDoc(params.getParam());
log.info("删除输入文档");
return JsonResponse.newInstance().ok();
}
}

48
tall/src/main/resources/mapper_dao/IInputDocDao.xml

@ -11,6 +11,17 @@
<result column="milestone" property="milestone"/>
</collection>
</resultMap>
<resultMap id="DocAndFile" type="com.ccsens.tall.bean.vo.InputDocVo$DocOfTask">
<id property="docId" column="docId" />
<id property="docName" column="docName"/>
<result property="isUpload" column="isUpload"/>
<collection property="files" ofType="com.ccsens.tall.bean.vo.InputDocVo$File">
<id column="recordId" property="recordId" />
<result column="fileName" property="fileName"/>
<result column="fileUrl" property="fileUrl"/>
</collection>
</resultMap>
<select id="selectById" resultMap="ii">
SELECT
tptd.project_id AS id,
@ -42,4 +53,41 @@
and tptd.project_id=#{param.id}
</if>
</select>
<select id="findDocByTask" resultMap="DocAndFile">
SELECT
tid.id AS docId,
tid.name AS docName,
tid.is_upload AS isUpload,
tir.id AS recordId,
tf.file_name AS fileName,
tf.visit_location AS fileUrl
FROM
t_pro_task_input_doc AS tid
LEFT JOIN t_pro_task_input_record AS tir ON tid.id = tir.input_doc_id
LEFT JOIN t_file AS tf ON tir.file_id = tf.id
WHERE
tid.task_detail_id = #{taskId}
AND tid.is_upload = 1
AND tid.rec_status = 0
AND tir.rec_status = 0
AND tf.rec_status = 0
</select>
<select id="viewDocHistory" resultType="com.ccsens.tall.bean.vo.InputDocVo$HistoryRecord">
SELECT
tir.id,
tf.file_name,
tf.visit_location,
tir.`status`
FROM
t_pro_task_input_record AS tir
LEFT JOIN t_file AS tf ON tir.file_id = tf.id
LEFT JOIN t_pro_task_input_doc AS tid ON tid.id = tir.input_doc_id
WHERE
tid.id = #{docId}
ORDER BY
tir.created_at DESC
</select>
</mapper>

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

@ -3,7 +3,7 @@ package com.ccsens.util;
import lombok.Getter;
@Getter
public enum CodeEnum {
public enum CodeEnum {
/**
* 异常
*/
@ -186,6 +186,7 @@ public enum CodeEnum {
ZHUYUANIDCHONGFU(155,"住院号重复",true),
MEIYOUGAIYISHENG(156,"该医生信息查询不正确",true),
QINGTIJIAOSHITI(157,"未做出修改答案,修改后再提交",true),
DOC_REPEAT(158,"输入文档已存在",true),
;

Loading…
Cancel
Save