Browse Source

返回wps文件路径

master
zy_Java 5 years ago
parent
commit
5c61bbb5d0
  1. 8
      tall/src/main/java/com/ccsens/tall/bean/dto/DeliverDto.java
  2. 6
      tall/src/main/java/com/ccsens/tall/bean/dto/message/DeliverMessageWithUploadDto.java
  3. 12
      tall/src/main/java/com/ccsens/tall/bean/po/ProProjectFile.java
  4. 48
      tall/src/main/java/com/ccsens/tall/bean/po/ProProjectFileExample.java
  5. 2
      tall/src/main/java/com/ccsens/tall/bean/vo/DeliverVo.java
  6. 11
      tall/src/main/java/com/ccsens/tall/bean/vo/ProjectVo.java
  7. 16
      tall/src/main/java/com/ccsens/tall/persist/dao/ProNotesDao.java
  8. 133
      tall/src/main/java/com/ccsens/tall/service/ExcelService.java
  9. 27
      tall/src/main/java/com/ccsens/tall/service/IExcelService.java
  10. 12
      tall/src/main/java/com/ccsens/tall/service/IProjectService.java
  11. 6
      tall/src/main/java/com/ccsens/tall/service/ITaskDeliverService.java
  12. 9
      tall/src/main/java/com/ccsens/tall/service/ITaskPluginService.java
  13. 31
      tall/src/main/java/com/ccsens/tall/service/ProjectService.java
  14. 366
      tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java
  15. 27
      tall/src/main/java/com/ccsens/tall/service/TaskPluginService.java
  16. 8
      tall/src/main/java/com/ccsens/tall/service/WpsService.java
  17. 19
      tall/src/main/java/com/ccsens/tall/web/DeliverController.java
  18. 14
      tall/src/main/java/com/ccsens/tall/web/ExcelController.java
  19. 18
      tall/src/main/java/com/ccsens/tall/web/PluginController.java
  20. 26
      tall/src/main/java/com/ccsens/tall/web/ProjectController.java
  21. 2
      tall/src/main/resources/mapper_dao/DeliverDao.xml
  22. 38
      tall/src/main/resources/mapper_dao/ProNotesDao.xml
  23. 2
      tall/src/main/resources/mapper_dao/WpsFileDao.xml
  24. 28
      tall/src/main/resources/mapper_raw/ProProjectFileMapper.xml
  25. 1
      util/src/main/java/com/ccsens/util/CodeEnum.java
  26. 1
      util/src/main/java/com/ccsens/util/WebConstant.java
  27. 3
      util/src/test/java/com/ccsens/util/Base64Test.java

8
tall/src/main/java/com/ccsens/tall/bean/dto/DeliverDto.java

@ -13,7 +13,7 @@ public class DeliverDto {
@Data
public static class CheckDeliver{
@ApiModelProperty("交付物Id")
private Long deliverId;
private Long deliverLogId;
@ApiModelProperty("任务在此时间段的id")
private Long taskId;
@ApiModelProperty("检查状况")
@ -34,16 +34,18 @@ public class DeliverDto {
@ApiModelProperty("检查人")
private List<Long> checkerIdList;
@ApiModelProperty("文件信息")
private List<fileInfo> fileInfo;
private List<FileInfo> fileInfo;
}
@ApiModel
@Data
public static class fileInfo{
public static class FileInfo{
@ApiModelProperty("文件ID")
private Long id;
@ApiModelProperty("文件名称")
private String name;
@ApiModelProperty("文件路径")
private String url;
@ApiModelProperty("wps文件Id,可以为空")
private Long wpsFileId;
}
}

6
tall/src/main/java/com/ccsens/tall/bean/dto/message/DeliverMessageWithUploadDto.java

@ -21,7 +21,7 @@ public class DeliverMessageWithUploadDto extends BaseMessageDto {
private String deliverName;
private Long uploader;
private Long uploadTime;
private List<DeliverDto.fileInfo> file;
private List<DeliverDto.FileInfo> file;
}
@ -35,8 +35,10 @@ public class DeliverMessageWithUploadDto extends BaseMessageDto {
public DeliverMessageWithUploadDto(Long projectId,Long roleId,
Long taskId, Long deliverId,String deliverName
,Long uploader,Long uploadTime,List<DeliverDto.fileInfo> file){
,Long uploader,Long uploadTime,List<DeliverDto.FileInfo> file,List<MessageUser> receivers){
this();
setReceivers(receivers);
Data d = new Data();
d.setProjectId(projectId);
d.setRoleId(roleId);

12
tall/src/main/java/com/ccsens/tall/bean/po/ProProjectFile.java

@ -8,7 +8,7 @@ public class ProProjectFile implements Serializable {
private Long businessId;
private Long fileId;
private Long wpsFileId;
private Byte businessType;
@ -40,12 +40,12 @@ public class ProProjectFile implements Serializable {
this.businessId = businessId;
}
public Long getFileId() {
return fileId;
public Long getWpsFileId() {
return wpsFileId;
}
public void setFileId(Long fileId) {
this.fileId = fileId;
public void setWpsFileId(Long wpsFileId) {
this.wpsFileId = wpsFileId;
}
public Byte getBusinessType() {
@ -104,7 +104,7 @@ public class ProProjectFile implements Serializable {
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", businessId=").append(businessId);
sb.append(", fileId=").append(fileId);
sb.append(", wpsFileId=").append(wpsFileId);
sb.append(", businessType=").append(businessType);
sb.append(", privilege=").append(privilege);
sb.append(", privilegeQueryUrl=").append(privilegeQueryUrl);

48
tall/src/main/java/com/ccsens/tall/bean/po/ProProjectFileExample.java

@ -225,63 +225,63 @@ public class ProProjectFileExample {
return (Criteria) this;
}
public Criteria andFileIdIsNull() {
addCriterion("file_id is null");
public Criteria andWpsFileIdIsNull() {
addCriterion("wps_file_id is null");
return (Criteria) this;
}
public Criteria andFileIdIsNotNull() {
addCriterion("file_id is not null");
public Criteria andWpsFileIdIsNotNull() {
addCriterion("wps_file_id is not null");
return (Criteria) this;
}
public Criteria andFileIdEqualTo(Long value) {
addCriterion("file_id =", value, "fileId");
public Criteria andWpsFileIdEqualTo(Long value) {
addCriterion("wps_file_id =", value, "wpsFileId");
return (Criteria) this;
}
public Criteria andFileIdNotEqualTo(Long value) {
addCriterion("file_id <>", value, "fileId");
public Criteria andWpsFileIdNotEqualTo(Long value) {
addCriterion("wps_file_id <>", value, "wpsFileId");
return (Criteria) this;
}
public Criteria andFileIdGreaterThan(Long value) {
addCriterion("file_id >", value, "fileId");
public Criteria andWpsFileIdGreaterThan(Long value) {
addCriterion("wps_file_id >", value, "wpsFileId");
return (Criteria) this;
}
public Criteria andFileIdGreaterThanOrEqualTo(Long value) {
addCriterion("file_id >=", value, "fileId");
public Criteria andWpsFileIdGreaterThanOrEqualTo(Long value) {
addCriterion("wps_file_id >=", value, "wpsFileId");
return (Criteria) this;
}
public Criteria andFileIdLessThan(Long value) {
addCriterion("file_id <", value, "fileId");
public Criteria andWpsFileIdLessThan(Long value) {
addCriterion("wps_file_id <", value, "wpsFileId");
return (Criteria) this;
}
public Criteria andFileIdLessThanOrEqualTo(Long value) {
addCriterion("file_id <=", value, "fileId");
public Criteria andWpsFileIdLessThanOrEqualTo(Long value) {
addCriterion("wps_file_id <=", value, "wpsFileId");
return (Criteria) this;
}
public Criteria andFileIdIn(List<Long> values) {
addCriterion("file_id in", values, "fileId");
public Criteria andWpsFileIdIn(List<Long> values) {
addCriterion("wps_file_id in", values, "wpsFileId");
return (Criteria) this;
}
public Criteria andFileIdNotIn(List<Long> values) {
addCriterion("file_id not in", values, "fileId");
public Criteria andWpsFileIdNotIn(List<Long> values) {
addCriterion("wps_file_id not in", values, "wpsFileId");
return (Criteria) this;
}
public Criteria andFileIdBetween(Long value1, Long value2) {
addCriterion("file_id between", value1, value2, "fileId");
public Criteria andWpsFileIdBetween(Long value1, Long value2) {
addCriterion("wps_file_id between", value1, value2, "wpsFileId");
return (Criteria) this;
}
public Criteria andFileIdNotBetween(Long value1, Long value2) {
addCriterion("file_id not between", value1, value2, "fileId");
public Criteria andWpsFileIdNotBetween(Long value1, Long value2) {
addCriterion("wps_file_id not between", value1, value2, "wpsFileId");
return (Criteria) this;
}

2
tall/src/main/java/com/ccsens/tall/bean/vo/DeliverVo.java

@ -41,6 +41,8 @@ public class DeliverVo {
private Long deleteTime;
@ApiModelProperty("交付物访问路径")
private String url;
@ApiModelProperty("交付物访问路径")
private List<String> wbsFilePaths;
@ApiModelProperty("是否是历史交付物 1是 0不是")
private String isHistory;
@ApiModelProperty("该用户自身是否是此交付物的检查人")

11
tall/src/main/java/com/ccsens/tall/bean/vo/ProjectVo.java

@ -42,6 +42,8 @@ public class ProjectVo {
private List<LabelVo.SelectLabel> labelList;
@ApiModelProperty("未处理信息的数量")
private ProjectUnreadMsg projectUnreadMsg;
@ApiModelProperty("WBS文件信息")
private List<String> wbsFilePaths;
public Long getTotalDuration(){
if(ObjectUtil.isNotNull(endTime) && ObjectUtil.isNotNull(beginTime)){
@ -103,6 +105,15 @@ public class ProjectVo {
}
}
// @Data
// @ApiModel("WBS文件信息")
// public static class WbsFileInfo{
// @ApiModelProperty("文件路径")
// private String filePath;
// @ApiModelProperty("wps的文件id")
// private Long wpsFileId;
// }
@ApiModel("返回的项目配置信息")
@Data
public static class ProjectConfig{

16
tall/src/main/java/com/ccsens/tall/persist/dao/ProNotesDao.java

@ -12,13 +12,13 @@ import java.util.List;
*/
@Repository
public interface ProNotesDao extends ProNotesMapper {
// /**
// * 查找任务下的笔记
// * @param userId 用户id
// * @param taskId 任务id
// * @param pluginId 被记笔记的插件的id,可以为null
// * @return 返回笔记list
// */
// List<PluginVo.NotesInfo> listNotesInfo(@Param("userId") Long userId, @Param("taskId")Long taskId,@Param("pluginId") Long pluginId);
/**
* 查找任务下的笔记
* @param userId 用户id
* @param taskId 任务id
* @param pluginId 被记笔记的插件的id可以为null
* @return 返回笔记list
*/
List<PluginVo.NotesInfo> queryNotesInfo(@Param("userId") Long userId, @Param("taskId")Long taskId,@Param("pluginId") Long pluginId);
}

133
tall/src/main/java/com/ccsens/tall/service/ExcelService.java

@ -1,12 +1,13 @@
package com.ccsens.tall.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.ccsens.tall.bean.dto.WpsDto;
import com.ccsens.tall.bean.po.*;
import com.ccsens.tall.bean.vo.ProjectVo;
import com.ccsens.tall.persist.dao.SysCommitedFileDao;
import com.ccsens.tall.persist.dao.SysPluginDao;
import com.ccsens.tall.persist.dao.SysProjectDao;
import com.ccsens.tall.persist.dao.TaskDetailDao;
@ -19,55 +20,58 @@ import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.*;
/**
* @author
*/
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class ExcelService implements IExcelService {
@Autowired
@Resource
private SysPluginDao sysPluginDao;
@Autowired
@Resource
private IProjectService projectService;
@Autowired
@Resource
private SysProjectDao sysProjectDao;
@Autowired
@Resource
private IProShowService proShowService;
@Autowired
@Resource
private Snowflake snowflake;
@Autowired
@Resource
private IProRoleService proRoleService;
@Autowired
@Resource
private IProMemberRoleService proMemberRoleService;
@Autowired
@Resource
private IExcludeRoleService excludeRoleService;
@Autowired
@Resource
private IProMemberService proMemberService;
@Autowired
@Resource
private IProTaskDetailService proTaskDetailService;
@Autowired
@Resource
private TaskDetailDao taskDetailDao;
@Autowired
@Resource
private ITaskSubTimeService taskSubTimeService;
@Autowired
private ITaskMemberService taskMemberService;
@Autowired
@Resource
private ITaskDeliverService taskDeliverService;
@Autowired
@Resource
private ITaskPluginService taskPluginService;
@Autowired
@Resource
private IUserService userService;
@Autowired
@Resource
private IUserAttentionService userAttentionService;
@Autowired
@Resource
private IWbsSubSheetService wbsSubSheetService;
@Resource
private IWpsService wpsService;
@Override
@ -76,8 +80,7 @@ public class ExcelService implements IExcelService {
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
//读取WBS表
SysProject sysProject = readWbs(xssfWorkbook, currentUserId);
ProjectVo.ProjectInfo projectInfo = selectByProjectId(currentUserId, sysProject);
return projectInfo;
return selectByProjectId(currentUserId, sysProject);
}
/**
@ -95,14 +98,14 @@ public class ExcelService implements IExcelService {
List<ProTaskDetail> taskDetails = new ArrayList<>();
XSSFSheet memberSheet = xssfWorkbook.getSheet("项目成员表");
XSSFSheet wbsSheet = xssfWorkbook.getSheetAt(0);//wbs
XSSFSheet wbsSheet = xssfWorkbook.getSheetAt(0);
int projectInfoStart = 0;
int projectInfoEnd = 0;
int memberStart = 0;
int memberEnd = 0;
int taskStart = 0;
int taskEnd = 0;
int taskEnd;
taskEnd = wbsSheet.getLastRowNum();
for (int i = 0; i <= wbsSheet.getLastRowNum(); i++) {
@ -166,8 +169,8 @@ public class ExcelService implements IExcelService {
String begin = ExcelUtil.getCellValue(row.getCell(3));
String end = ExcelUtil.getCellValue(row.getCell(4));
if (StrUtil.isNotEmpty(begin) && StrUtil.isNotEmpty(end)) {
Long beginTime = null;
Long endTime = null;
long beginTime;
long endTime;
try {
beginTime = Long.parseLong(begin);
endTime = Long.parseLong(end);
@ -438,7 +441,7 @@ public class ExcelService implements IExcelService {
String stakeholderCell = ExcelUtil.getCellValue(memberSheet.getRow(i).getCell(3));
String stakeholderPhoneCell = ExcelUtil.getCellValue(memberSheet.getRow(i).getCell(4));
ProMember stakeholder = null;
ProMember member = null;
ProMember member;
//手机号不能为空
if ((StrUtil.isNotEmpty(memberCell) && StrUtil.isEmpty(phoneCell)) ||
(StrUtil.isNotEmpty(stakeholderCell) && StrUtil.isEmpty(stakeholderPhoneCell))) {
@ -858,11 +861,9 @@ public class ExcelService implements IExcelService {
/**
* 分解任务时间
*
* @param taskDetails
* @throws Exception
* @param taskDetails 任务集合
*/
public void saveProTaskSubTime(List<ProTaskDetail> taskDetails) throws Exception {
public void saveProTaskSubTime(List<ProTaskDetail> taskDetails) {
if (CollectionUtil.isNotEmpty(taskDetails)) {
for (ProTaskDetail taskDetail : taskDetails) {
//虚拟任务不拆分
@ -902,13 +903,13 @@ public class ExcelService implements IExcelService {
* 读取交付物表
*/
@Override
public void readDeliverSheet(String deliverCell, XSSFWorkbook xssfWorkbook, Long taskId) throws Exception {
public void readDeliverSheet(String deliverCell, XSSFWorkbook xssfWorkbook, Long taskId) {
if (StrUtil.isNotEmpty(deliverCell)) {
String str = "";
if (deliverCell.length() > 4) {
str = deliverCell.substring(0, 3);
}
if ("关联表".equals(str)) {
if ("关联表".equalsIgnoreCase(str)) {
String subStr = deliverCell.substring(4);
XSSFSheet subSheet = xssfWorkbook.getSheet(subStr);
if(ObjectUtil.isNull(subSheet)){
@ -943,12 +944,11 @@ public class ExcelService implements IExcelService {
/**
* 读取插件
*
* @param xssfWorkbook
* @param taskDetails
* @param proRoles
* @param xssfWorkbook 插件sheet
* @param taskDetails 任务集合
* @param proRoles 角色集合
*/
private void readPlugin(XSSFWorkbook xssfWorkbook, List<ProTaskDetail> taskDetails, List<ProRole> proRoles, Map<String, List<ProTaskDetail>> hasGroupMap) throws Exception {
private void readPlugin(XSSFWorkbook xssfWorkbook, List<ProTaskDetail> taskDetails, List<ProRole> proRoles, Map<String, List<ProTaskDetail>> hasGroupMap) {
SysPluginExample pluginExample = new SysPluginExample();
pluginExample.clear();
List<SysPlugin> sysPluginList = sysPluginDao.selectByExample(pluginExample);
@ -1035,13 +1035,11 @@ public class ExcelService implements IExcelService {
/**
* 返回信息
*
* @param currentUserId
* @param sysProject
* @return
* @throws Exception
* @param currentUserId userId
* @param sysProject 项目信息
* @return 项目详细信息
*/
public ProjectVo.ProjectInfo selectByProjectId(Long currentUserId, SysProject sysProject) throws Exception {
public ProjectVo.ProjectInfo selectByProjectId(Long currentUserId, SysProject sysProject) {
//返回参数
ProjectVo.ProjectInfo projectInfo = new ProjectVo.ProjectInfo();
projectInfo.setId(sysProject.getId());
@ -1053,14 +1051,43 @@ public class ExcelService implements IExcelService {
if (ObjectUtil.isNotNull(projectInfo)) {
projectInfo.setCreator(true);
}
// //获取当前用户在本项目中的一级角色
// List<ProRole> proRoles = proRoleService.getProRoleByProjectIdAndUserId(projectInfo.getId(), currentUserId);
// if (CollectionUtil.isNotEmpty(proRoles)) {
// projectInfo.setRoles(new ArrayList<>());
// for (ProRole proRole : proRoles) {
// projectInfo.getRoles().add(proRole.getName());
// }
// }
return projectInfo;
}
/**
* 保存wbs的文件信息添加wps信息
* @param projectId 项目Id
* @param filePath 文件路径
* @param fileName 文件名
* @param fileSize 文件大小
* @param wpsFileId wps里的文件的id
*/
@Override
public void saveWbsExcelFile(Long userId,Long projectId,String filePath, String fileName, Long fileSize,Long wpsFileId) {
// //添加文件信息
// SysCommitedFile commitedFile = new SysCommitedFile();
// commitedFile.setId(snowflake.nextId());
// commitedFile.setPath(filePath);
// commitedFile.setName(fileName);
// String md5 = Md5Util.getFileMD5(new File(WebConstant.UPLOAD_PATH_BASE + File.separator + filePath));
// String sha1 = Sha1Util.getFileSha1(new File(WebConstant.UPLOAD_PATH_BASE + File.separator + filePath));
// commitedFile.setMd5(md5);
// commitedFile.setSha1(sha1);
// commitedFile.setCount(1);
// commitedFile.setTime(System.currentTimeMillis());
// commitedFileDao.insertSelective(commitedFile);
//添加wps的信息
WpsDto.Business business = new WpsDto.Business();
business.setBusinessId(projectId);
business.setWpsFileId(wpsFileId);
business.setBusinessType((byte) 0);
business.setUserId(userId);
business.setFileName(fileName);
business.setFilePath(filePath);
business.setFileSize(fileSize);
business.setOperation(WebConstant.Wps.USER_OPERATION_NEW);
business.setPrivilege(WebConstant.Wps.PROJECT_PRIVILEGE_READ);
wpsService.saveFile(business);
}
}

27
tall/src/main/java/com/ccsens/tall/service/IExcelService.java

@ -4,8 +4,35 @@ package com.ccsens.tall.service;
import com.ccsens.tall.bean.vo.ProjectVo;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javax.servlet.http.Part;
public interface IExcelService {
/**
* 导入wbs
* @param path 文件路径
* @param currentUserId userId
* @return 返回项目详细信息
* @throws Exception io
*/
ProjectVo.ProjectInfo readXls(String path, Long currentUserId) throws Exception;
/**
* 读取交付物表
* @param deliverCell 交付物子表名
* @param xssfWorkbook excel文件
* @param taskId 任务id
* @throws Exception io
*/
void readDeliverSheet(String deliverCell, XSSFWorkbook xssfWorkbook, Long taskId) throws Exception;
/**
* 保存wbs文件保存wps信息
* @param userId userId
* @param projectId 项目id
* @param filePath 文件路径
* @param fileName 文件名
* @param fileSize 文件大小
* @param wpsFileId 前端传的wps里的文件id
*/
void saveWbsExcelFile(Long userId,Long projectId,String filePath, String fileName,Long fileSize,Long wpsFileId);
}

12
tall/src/main/java/com/ccsens/tall/service/IProjectService.java

@ -13,11 +13,11 @@ public interface IProjectService {
SysProject selectByNameAndUserId(String subProject, Long currentUserId)throws Exception;
List<ProjectVo.ProjectInfo> getProjectInfo(Long currentUserId, String date,Integer orderType,Integer order)throws Exception;
List<ProjectVo.ProjectInfo> getProjectInfo(Long currentUserId, String date,Integer orderType,Integer order,String token)throws Exception;
List<String> haveProjectDay(Long currentUserId, String date) throws Exception;
ProjectVo.ProjectInfo getProjectInfoById(Long currentUserId, Long projectId) throws Exception;
ProjectVo.ProjectInfo getProjectInfoById(Long currentUserId, Long projectId,String token) throws Exception;
List<ProjectVo.TemplateStatus> getTemplate()throws Exception;
@ -29,11 +29,11 @@ public interface IProjectService {
void deleteProject(Long currentUserId, Long projectId)throws Exception;
ProjectVo.ProjectInfo copyProject(Long userId, ProjectDto.ProjectIdDto projectDto);
ProjectVo.ProjectInfo copyProject(Long userId, ProjectDto.ProjectIdDto projectDto,String token);
ProjectVo.ProjectInfo changeProjectInfo(Long currentUserId, ProjectDto.ProjectInfoDto projectInfoDto);
ProjectVo.ProjectInfo changeProjectInfo(Long currentUserId, ProjectDto.ProjectInfoDto projectInfoDto,String token);
ProjectVo.ProjectAllDetailed selectByLabelName(Long currentUserId, String labelName,Integer pageSize,Integer page);
ProjectVo.ProjectAllDetailed selectByLabelName(Long currentUserId, String labelName,Integer pageSize,Integer page,String token);
List<ProjectVo.RelevanceProject> selectRelevanceProject(Long currentUserId, Long projectId);
@ -43,5 +43,5 @@ public interface IProjectService {
* @param projectConfig 项目配置信息
* @return 返回修改后的项目信息
*/
ProjectVo.ProjectInfo updateProjectConfig(Long currentUserId, ProjectDto.ProjectConfig projectConfig);
ProjectVo.ProjectInfo updateProjectConfig(Long currentUserId, ProjectDto.ProjectConfig projectConfig,String token);
}

6
tall/src/main/java/com/ccsens/tall/service/ITaskDeliverService.java

@ -18,13 +18,13 @@ public interface ITaskDeliverService {
ProjectVo.DeliverInfo addDeliver(Long currentUserId, DeliverDto.UploadDeliver uploadDeliver) throws Exception;
List<DeliverVo.DeliverInfo> selectTaskDeliver(Long currentUserId, Long subTimeId)throws Exception;
List<DeliverVo.DeliverInfo> selectTaskDeliver(Long currentUserId, Long subTimeId,String token)throws Exception;
DeliverVo.DeliverInfo selectDeliverInfo(Long currentUserId, Long deliverId, Long subTimeId) throws Exception;
DeliverVo.DeliverInfo selectDeliverInfo(Long currentUserId, Long deliverId, Long subTimeId,String token) throws Exception;
DeliverVo.DeliverFileList selectDeliverList(Long currentUserId, Integer page, Integer pageSize, String key, String start, String end) throws Exception;
DeliverVo.DeliverInfo checkDeliver(Long currentUserId, DeliverDto.CheckDeliver checker) throws Exception;
DeliverVo.DeliverInfo checkDeliver(Long currentUserId, DeliverDto.CheckDeliver checker,String token) throws Exception;
void deleteDeliverByTaskId(Long taskId)throws Exception;

9
tall/src/main/java/com/ccsens/tall/service/ITaskPluginService.java

@ -36,5 +36,12 @@ public interface ITaskPluginService {
* @param pluginId 被查询的插件的id不是笔记插件的id,只查询任务的笔记时不需要传参
* @return 返回任务下的所有笔记信息
*/
List<PluginVo.NotesInfo> listNotesInfo(Long currentUserId, Long taskId, Long pluginId);
List<PluginVo.NotesInfo> queryNotesInfo(Long currentUserId, Long taskId, Long pluginId);
/**
* 删除笔记记录
* @param currentUserId userId
* @param notesId 笔记记录id
*/
void deleteNotes(Long currentUserId, Long notesId);
}

31
tall/src/main/java/com/ccsens/tall/service/ProjectService.java

@ -19,7 +19,6 @@ import com.ccsens.util.exception.BaseException;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@ -60,6 +59,8 @@ public class ProjectService implements IProjectService {
private SysLabelDao sysLabelDao;
@Resource
private SysRingMsgDao sysRingMsgDao;
@Resource
private IWpsService wpsService;
@Override
public void saveProject(SysProject sysProject) {
@ -144,7 +145,7 @@ public class ProjectService implements IProjectService {
* @throws Exception 分解日期时抛错
*/
@Override
public List<ProjectVo.ProjectInfo> getProjectInfo(Long currentUserId, String date,Integer orderType,Integer order) throws Exception {
public List<ProjectVo.ProjectInfo> getProjectInfo(Long currentUserId, String date,Integer orderType,Integer order,String token) throws Exception {
//获取日期的开始结束时间
Map<String, Long> timeMap;
timeMap = DateUtil.projectFormatDateTime(date);
@ -152,10 +153,10 @@ public class ProjectService implements IProjectService {
Long endMillisTime = timeMap.get("endMillisTime") + 1;
//查找此用户关注的项目
List<ProjectVo.ProjectInfo> projectInfoList = sysProjectDao.findProjectIdByUserId01(currentUserId, startMillisTime, endMillisTime,orderType,order);
projectByProject(projectInfoList,currentUserId);
projectByProject(projectInfoList,currentUserId,token);
return projectInfoList;
}
private void projectByProject(List<ProjectVo.ProjectInfo> projectInfoList, Long currentUserId){
private void projectByProject(List<ProjectVo.ProjectInfo> projectInfoList, Long currentUserId,String token){
if (CollectionUtil.isNotEmpty(projectInfoList)) {
projectInfoList.forEach(projectInfo -> {
//是否是创建者
@ -195,6 +196,8 @@ public class ProjectService implements IProjectService {
//查找项目未处理的消息数量
ProjectVo.ProjectUnreadMsg unreadMsg = getUnreadMsgByProject(currentUserId,projectInfo.getId());
projectInfo.setProjectUnreadMsg(unreadMsg);
//获取wps文件路径
projectInfo.setWbsFilePaths(wpsService.queryVisitUrls(projectInfo.getId(), (byte) 0,token));
});
}
}
@ -280,7 +283,7 @@ public class ProjectService implements IProjectService {
* @return 返回项目信息
*/
@Override
public ProjectVo.ProjectInfo getProjectInfoById(Long userId, Long projectId) {
public ProjectVo.ProjectInfo getProjectInfoById(Long userId, Long projectId,String token) {
SysProject sysProject = sysProjectDao.selectByPrimaryKey(projectId);
if(ObjectUtil.isNull(sysProject)){
throw new BaseException(CodeEnum.NOT_PROJECT);
@ -329,6 +332,8 @@ public class ProjectService implements IProjectService {
if(CollectionUtil.isNotEmpty(labelList)){
projectInfo.setLabelList(labelList);
}
//获取wps文件路径
projectInfo.setWbsFilePaths(wpsService.queryVisitUrls(projectInfo.getId(), (byte) 0,token));
return projectInfo;
}
@ -520,7 +525,7 @@ public class ProjectService implements IProjectService {
* 复制项目
*/
@Override
public ProjectVo.ProjectInfo copyProject(Long userId, ProjectDto.ProjectIdDto projectDto) {
public ProjectVo.ProjectInfo copyProject(Long userId, ProjectDto.ProjectIdDto projectDto,String token) {
// ProjectVo.ProjectInfo projectInfo = new ProjectVo.ProjectInfo();
SysProject oldProject = sysProjectDao.selectByPrimaryKey(projectDto.getProjectId());
@ -552,7 +557,7 @@ public class ProjectService implements IProjectService {
// projectInfo.setCreator(true);
// }
return getProjectInfoById(userId, newProject.getId());
return getProjectInfoById(userId, newProject.getId(),token);
}
/**
@ -749,7 +754,7 @@ public class ProjectService implements IProjectService {
* 修改项目信息
*/
@Override
public ProjectVo.ProjectInfo changeProjectInfo(Long currentUserId, ProjectDto.ProjectInfoDto projectInfoDto) {
public ProjectVo.ProjectInfo changeProjectInfo(Long currentUserId, ProjectDto.ProjectInfoDto projectInfoDto,String token) {
//查找项目
SysProject project = sysProjectDao.selectByPrimaryKey(projectInfoDto.getId());
if (ObjectUtil.isNotNull(project)) {
@ -787,7 +792,7 @@ public class ProjectService implements IProjectService {
} else {
throw new BaseException(CodeEnum.NOT_PROJECT);
}
return getProjectInfoById(currentUserId, project.getId());
return getProjectInfoById(currentUserId, project.getId(),token);
}
/**
@ -797,14 +802,14 @@ public class ProjectService implements IProjectService {
* @return 返回根据标签查找出的所有项目
*/
@Override
public ProjectVo.ProjectAllDetailed selectByLabelName(Long currentUserId, String labelName,Integer pageSize ,Integer page) {
public ProjectVo.ProjectAllDetailed selectByLabelName(Long currentUserId, String labelName,Integer pageSize ,Integer page,String token) {
// List<ProjectVo.ProjectInfo> projectInfoList = sysProjectDao.selectByLabelName(currentUserId,labelName);
// projectByProject(projectInfoList,currentUserId);
PageHelper.startPage(page, pageSize);
List<ProjectVo.ProjectInfo> projectInfoList = sysProjectDao.selectByLabelName(currentUserId,labelName);
PageInfo<ProjectVo.ProjectInfo> projectInfoPage = new PageInfo<>(projectInfoList);
projectByProject(projectInfoList,currentUserId);
projectByProject(projectInfoList,currentUserId,token);
ProjectVo.ProjectAllDetailed projectAllDetailed = new ProjectVo.ProjectAllDetailed();
projectAllDetailed.setProjectInfoList(projectInfoList);
@ -821,7 +826,7 @@ public class ProjectService implements IProjectService {
}
@Override
public ProjectVo.ProjectInfo updateProjectConfig(Long currentUserId, ProjectDto.ProjectConfig projectConfig) {
public ProjectVo.ProjectInfo updateProjectConfig(Long currentUserId, ProjectDto.ProjectConfig projectConfig,String token) {
//检查项目id是否正确
SysProject project = sysProjectDao.selectByPrimaryKey(projectConfig.getProjectId());
if(ObjectUtil.isNull(project)){
@ -850,6 +855,6 @@ public class ProjectService implements IProjectService {
}
proShowDao.updateByPrimaryKeySelective(proShow);
}
return getProjectInfoById(currentUserId,projectConfig.getProjectId());
return getProjectInfoById(currentUserId,projectConfig.getProjectId(),token);
}
}

366
tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java

@ -5,17 +5,16 @@ import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.ccsens.tall.bean.dto.DeliverDto;
import com.ccsens.tall.bean.dto.WpsDto;
import com.ccsens.tall.bean.dto.message.BaseMessageDto;
import com.ccsens.tall.bean.dto.message.DeliverMessageWithCheckerDto;
import com.ccsens.tall.bean.dto.message.DeliverMessageWithDeleteDto;
import com.ccsens.tall.bean.dto.message.DeliverMessageWithUploadDto;
import com.ccsens.tall.bean.po.*;
import com.ccsens.tall.bean.vo.DeliverVo;
import com.ccsens.tall.bean.vo.MessageVo;
import com.ccsens.tall.bean.vo.ProjectVo;
import com.ccsens.tall.bean.vo.TaskVo;
import com.ccsens.tall.persist.dao.*;
import com.ccsens.tall.util.RobotUtil;
import com.ccsens.util.*;
import com.ccsens.util.bean.message.common.InMessage;
import com.ccsens.util.bean.message.common.MessageConstant;
@ -23,54 +22,54 @@ import com.ccsens.util.bean.message.common.MessageRule;
import com.ccsens.util.config.RabbitMQConfig;
import com.ccsens.util.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.omg.CORBA.OBJ_ADAPTER;
import org.omg.CORBA.StructMember;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.File;
import java.math.BigDecimal;
import java.util.*;
/**
* @author
*/
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class TaskDeliverService implements ITaskDeliverService {
@Autowired
@Resource
private TaskDeliverDao taskDeliverDao;
@Autowired
@Resource
private SysCommitedFileDao commitedFileDao;
@Autowired
@Resource
private ProTaskDeliverPostLogDao deliverPostLogDao;
@Autowired
@Resource
private PostLogCheckerDao postLogCheckerDao;
@Autowired
@Resource
private TaskDetailDao taskDetailDao;
@Autowired
@Resource
private TaskSubTimeDao taskSubTimeDao;
@Autowired
@Resource
private ProRoleDao proRoleDao;
@Autowired
@Resource
private ProSubTimeMemberDao proSubTimeMemberDao;
@Autowired
private ProMemberDao proMemberDao;
@Autowired
@Resource
private IProMemberService proMemberService;
@Autowired
@Resource
private IUserService userService;
@Autowired
@Resource
private IMessageService messageService;
@Autowired
@Resource
private Snowflake snowflake;
@Autowired
@Resource
private AmqpTemplate rabbitTemplate;
@Autowired
@Resource
private IRobotService robotService;
@Autowired
@Resource
private SysProjectDao sysProjectDao;
@Resource
private IWpsService wpsService;
@Override
public void saveDeliver(ProTaskDeliver taskDeliver) {
@ -89,14 +88,14 @@ public class TaskDeliverService implements ITaskDeliverService {
List<ProTaskDeliver> deliverList = taskDeliverDao.selectByExample(deliverExample);
if (CollectionUtil.isNotEmpty(deliverList)) {
for (ProTaskDeliver deliver : deliverList) {
TaskVo.TaskDeliverByMVP.DeliverInfoByMVP deliverInfoByMVP = new TaskVo.TaskDeliverByMVP.DeliverInfoByMVP();
deliverInfoByMVP.setId(deliver.getId());
deliverInfoByMVP.setName(deliver.getName());
TaskVo.TaskDeliverByMVP.DeliverInfoByMVP deliverInfoByMvp = new TaskVo.TaskDeliverByMVP.DeliverInfoByMVP();
deliverInfoByMvp.setId(deliver.getId());
deliverInfoByMvp.setName(deliver.getName());
if (ObjectUtil.isNotNull(deliver.getIsFinal())) {
if (deliver.getIsFinal() == 0) {
deliverInfoByMVP.setFinals(false);
deliverInfoByMvp.setFinals(false);
} else if (deliver.getIsFinal() == 1) {
deliverInfoByMVP.setFinals(true);
deliverInfoByMvp.setFinals(true);
}
}
if (ObjectUtil.isNotNull(subTimeId)) {
@ -107,32 +106,32 @@ public class TaskDeliverService implements ITaskDeliverService {
if (CollectionUtil.isNotEmpty(postLogList)) {
ProTaskDeliverPostLog postLog = postLogList.get(0);
SysCommitedFile file = commitedFileDao.selectByPrimaryKey(postLog.getFileId());
deliverInfoByMVP.setUrl(WebConstant.TEST_URL_BASE + file.getPath());
deliverInfoByMvp.setUrl(WebConstant.TEST_URL_BASE + file.getPath());
ProTaskDeliverPostLogCheckerExample checkerExample = new ProTaskDeliverPostLogCheckerExample();
checkerExample.createCriteria().andDeliverPostLogIdEqualTo(postLog.getId());
List<ProTaskDeliverPostLogChecker> postLogCheckerList = postLogCheckerDao.selectByExample(checkerExample);
if (CollectionUtil.isNotEmpty(postLogCheckerList)) {
Boolean isChecker = true;
boolean isChecker = true;
for (ProTaskDeliverPostLogChecker checker : postLogCheckerList) {
if (checker.getCheckStatus() == 0) {
deliverInfoByMVP.setStatus("待检查");
deliverInfoByMvp.setStatus("待检查");
isChecker = false;
} else if(checker.getCheckStatus() == -1) {
deliverInfoByMVP.setStatus("未通过");
deliverInfoByMvp.setStatus("未通过");
isChecker = false;
break;
}
}
if(isChecker){
deliverInfoByMVP.setStatus("已通过");
deliverInfoByMvp.setStatus("已通过");
}
}
} else {
deliverInfoByMVP.setStatus("未上传");
deliverInfoByMvp.setStatus("未上传");
}
}
deliverInfoByMVPList.add(deliverInfoByMVP);
deliverInfoByMVPList.add(deliverInfoByMvp);
}
}
return deliverInfoByMVPList;
@ -168,62 +167,55 @@ public class TaskDeliverService implements ITaskDeliverService {
*/
@Override
public ProjectVo.DeliverInfo addDeliver(Long currentUserId, DeliverDto.UploadDeliver uploadDeliver) throws Exception {
Long now = System.currentTimeMillis();
Long subTimeId = isTaskOrSubTime(uploadDeliver.getTaskId());
if (ObjectUtil.isNull(subTimeId)) {
throw new BaseException(CodeEnum.NOT_TASK);
}
ProjectVo.DeliverInfo deliverInfo = null;
//查找交付
ProTaskDeliver d = taskDeliverDao.selectByPrimaryKey(uploadDeliver.getDeliverId());
if (ObjectUtil.isNull(d)) {
ProTaskDeliver taskDeliver = taskDeliverDao.selectByPrimaryKey(uploadDeliver.getDeliverId());
if (ObjectUtil.isNull(taskDeliver)) {
throw new BaseException(CodeEnum.NOT_DELIVER);
}
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(d.getTaskDetailId());
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(taskDeliver.getTaskDetailId());
ProRole role = proRoleDao.selectByPrimaryKey(taskDetail.getExecutorRole());
Boolean isBelongRole = proMemberService.userIsBelongRole(currentUserId, role.getId());
if (role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.AllMember.phase) || isBelongRole) {
//发送信息
List<BaseMessageDto.MessageUser> messageUserList = new ArrayList<>();
BaseMessageDto.MessageUser messageUser = null;
List<Long> userIdList = new ArrayList<>();
//查找以前的交付物。如果有,改为历史信息
if (!role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.AllMember.phase) && !isBelongRole){
throw new BaseException(CodeEnum.NOT_CHECKER);
}
//查找以前上传的不为历史信息的文件。改为历史信息
ProTaskDeliverPostLogExample logExample = new ProTaskDeliverPostLogExample();
logExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId)
.andDeliverIdEqualTo(uploadDeliver.getDeliverId()).andUserIdEqualTo(currentUserId);
logExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId).andDeliverIdEqualTo(uploadDeliver.getDeliverId())
.andUserIdEqualTo(currentUserId).andIsHistoryEqualTo(0);
List<ProTaskDeliverPostLog> deliverPostLogList = deliverPostLogDao.selectByExample(logExample);
if (CollectionUtil.isNotEmpty(deliverPostLogList)) {
for (ProTaskDeliverPostLog deliverPostLog : deliverPostLogList) {
if (deliverPostLog.getIsHistory() == 0) {
deliverPostLog.setIsHistory(1);
deliverPostLogDao.updateByPrimaryKeySelective(deliverPostLog);
}
}
//将文件信息与交付物绑定,添加记录deliverPostLog
if (CollectionUtil.isNotEmpty(uploadDeliver.getFileInfo())) {
for (DeliverDto.FileInfo fileInfo : uploadDeliver.getFileInfo()) {
SysCommitedFile file = commitedFileDao.selectByPrimaryKey(fileInfo.getId());
if(ObjectUtil.isNull(file)){
throw new BaseException(CodeEnum.NOT_DELIVER_FILE);
}
//添加PostLog
ProTaskDeliverPostLog deliverPostLog = new ProTaskDeliverPostLog();
deliverPostLog.setId(snowflake.nextId());
deliverPostLog.setDeliverId(uploadDeliver.getDeliverId());
deliverPostLog.setTaskSubTimeId(subTimeId);
//如果有文件则添加,没有不添加
if (CollectionUtil.isNotEmpty(uploadDeliver.getFileInfo())) {
for (DeliverDto.fileInfo fileInfo : uploadDeliver.getFileInfo()) {
SysCommitedFile file = commitedFileDao.selectByPrimaryKey(fileInfo.getId());
if(ObjectUtil.isNotNull(file)){
deliverPostLog.setFileId(file.getId());
}else {
throw new BaseException(CodeEnum.NOT_DELIVER_FILE);
}
}
}
deliverPostLog.setUserId(currentUserId);
deliverPostLog.setDescription(uploadDeliver.getDescription());
deliverPostLog.setTime(System.currentTimeMillis());
deliverPostLog.setTime(now);
deliverPostLog.setIsHistory(0);
deliverPostLogDao.insertSelective(deliverPostLog);
//添加交付物检查人表
if (CollectionUtil.isNotEmpty(uploadDeliver.getCheckerIdList())) {
ProTaskDeliverPostLogChecker postLogChecker = null;
ProTaskDeliverPostLogChecker postLogChecker;
for (Long checkerId : uploadDeliver.getCheckerIdList()) {
postLogChecker = new ProTaskDeliverPostLogChecker();
postLogChecker.setId(snowflake.nextId());
@ -234,68 +226,187 @@ public class TaskDeliverService implements ITaskDeliverService {
} else {
throw new BaseException(CodeEnum.NOT_CHECKER);
}
//保存wps的文件消息
saveWpsFile(currentUserId,deliverPostLog.getId(),fileInfo);
}
//修改交付物状态
ProTaskDeliver deliver = new ProTaskDeliver();
deliver.setId(uploadDeliver.getDeliverId());
deliver.setIsUpload(1);
taskDeliverDao.updateByPrimaryKeySelective(deliver);
//返回
List<ProjectVo.DeliverInfo> deliverInfoList = taskDeliverDao.selectByDeliverId(uploadDeliver.getDeliverId());
if (CollectionUtil.isNotEmpty(deliverInfoList)) {
deliverInfo = deliverInfoList.get(0);
deliverInfo.setUrl(WebConstant.TEST_URL_BASE + deliverInfo.getUrl());
}
// if (role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.AllMember.phase) || isBelongRole) {
// //发送信息
// List<BaseMessageDto.MessageUser> messageUserList = new ArrayList<>();
// BaseMessageDto.MessageUser messageUser;
// List<Long> userIdList = new ArrayList<>();
// //查找以前的交付物。如果有,改为历史信息
// ProTaskDeliverPostLogExample logExample = new ProTaskDeliverPostLogExample();
// logExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId)
// .andDeliverIdEqualTo(uploadDeliver.getDeliverId()).andUserIdEqualTo(currentUserId);
// List<ProTaskDeliverPostLog> deliverPostLogList = deliverPostLogDao.selectByExample(logExample);
// if (CollectionUtil.isNotEmpty(deliverPostLogList)) {
// for (ProTaskDeliverPostLog deliverPostLog : deliverPostLogList) {
// if (deliverPostLog.getIsHistory() == 0) {
// deliverPostLog.setIsHistory(1);
// deliverPostLogDao.updateByPrimaryKeySelective(deliverPostLog);
// }
// }
// }
// //添加PostLog
// ProTaskDeliverPostLog deliverPostLog = new ProTaskDeliverPostLog();
// deliverPostLog.setId(snowflake.nextId());
// deliverPostLog.setDeliverId(uploadDeliver.getDeliverId());
// deliverPostLog.setTaskSubTimeId(subTimeId);
// //如果有文件则添加,没有不添加
// if (CollectionUtil.isNotEmpty(uploadDeliver.getFileInfo())) {
// for (DeliverDto.FileInfo fileInfo : uploadDeliver.getFileInfo()) {
// SysCommitedFile file = commitedFileDao.selectByPrimaryKey(fileInfo.getId());
// if(ObjectUtil.isNotNull(file)){
// deliverPostLog.setFileId(file.getId());
// }else {
// throw new BaseException(CodeEnum.NOT_DELIVER_FILE);
// }
// }
// }
// deliverPostLog.setUserId(currentUserId);
// deliverPostLog.setDescription(uploadDeliver.getDescription());
// deliverPostLog.setTime(now);
// deliverPostLog.setIsHistory(0);
// deliverPostLogDao.insertSelective(deliverPostLog);
// //添加交付物检查人表
// if (CollectionUtil.isNotEmpty(uploadDeliver.getCheckerIdList())) {
// ProTaskDeliverPostLogChecker postLogChecker;
// for (Long checkerId : uploadDeliver.getCheckerIdList()) {
// postLogChecker = new ProTaskDeliverPostLogChecker();
// postLogChecker.setId(snowflake.nextId());
// postLogChecker.setDeliverPostLogId(deliverPostLog.getId());
// postLogChecker.setCheckerId(checkerId);
// postLogCheckerDao.insertSelective(postLogChecker);
// }
// } else {
// throw new BaseException(CodeEnum.NOT_CHECKER);
// }
//
// //修改交付物状态
// ProTaskDeliver deliver = new ProTaskDeliver();
// deliver.setId(uploadDeliver.getDeliverId());
// deliver.setIsUpload(1);
// taskDeliverDao.updateByPrimaryKeySelective(deliver);
// //返回
// List<ProjectVo.DeliverInfo> deliverInfoList = taskDeliverDao.selectByDeliverId(uploadDeliver.getDeliverId());
// if (CollectionUtil.isNotEmpty(deliverInfoList)) {
// deliverInfo = deliverInfoList.get(0);
// deliverInfo.setUrl(WebConstant.TEST_URL_BASE + deliverInfo.getUrl());
// }
//消息的内容
// //消息的内容
// if (CollectionUtil.isNotEmpty(uploadDeliver.getCheckerIdList())) {
// for (Long postLogCheckerId : uploadDeliver.getCheckerIdList()) {
// userIdList.addAll(userService.selectUserIdByRoleId(postLogCheckerId));
// }
// }
//// Set<String> userIdSet = new HashSet<>();
// if (CollectionUtil.isNotEmpty(userIdList)) {
// HashSet<Long> h = new HashSet<>(userIdList);
// userIdList.clear();
// userIdList.addAll(h);
// for (Long userId : userIdList) {
//// userIdSet.add(userId.toString());
// messageUser = new BaseMessageDto.MessageUser();
// messageUser.setUserId(userId);
// messageUserList.add(messageUser);
// }
// }
// DeliverMessageWithUploadDto uploadMessage = new DeliverMessageWithUploadDto();
// DeliverMessageWithUploadDto.Data uploadMessageData = new DeliverMessageWithUploadDto.Data();
// uploadMessageData.setProjectId(taskDetail.getProjectId());
// Long roleId;
// if (role.getName().equals(WebConstant.ROLE_NAME.AllMember.phase)) {
// List<ProRole> roleList = proMemberService.selectRolesByUserIdAndProjectId(currentUserId, taskDetail.getProjectId());
// roleId = roleList.get(0).getId();
// } else {
// roleId = taskDetail.getExecutorRole();
// }
//
// DeliverMessageWithUploadDto uploadMessage = new DeliverMessageWithUploadDto(taskDetail.getProjectId(),roleId,taskDetail.getId(),
// taskDeliver.getId(),taskDeliver.getName(),currentUserId,now,uploadDeliver.getFileInfo(),messageUserList);
// uploadMessageData.setTaskId(taskDetail.getId());
// uploadMessageData.setDeliverId(taskDeliver.getId());
// uploadMessageData.setDeliverName(taskDeliver.getName());
// uploadMessageData.setUploadTime(System.currentTimeMillis());
// uploadMessageData.setFile(uploadDeliver.getFileInfo());
// uploadMessage.setData(uploadMessageData);
// uploadMessage.setReceivers(messageUserList);
// log.info("检查交付物:{}",JacksonUtil.beanToJson(uploadMessage));
// rabbitTemplate.convertAndSend(RabbitMQConfig.RabbitMQ_QUEUE_NAME,
// JacksonUtil.beanToJson(uploadMessage));
//
// } else {
// throw new BaseException(CodeEnum.IS_NOT_EXECUTOR);
// }
//发送WS信息
//获取所有接收者的id
List<BaseMessageDto.MessageUser> messageUserList = new ArrayList<>();
BaseMessageDto.MessageUser messageUser;
HashSet<Long> userIdSet = new HashSet<>();
if (CollectionUtil.isNotEmpty(uploadDeliver.getCheckerIdList())) {
for (Long postLogCheckerId : uploadDeliver.getCheckerIdList()) {
userIdList.addAll(userService.selectUserIdByRoleId(postLogCheckerId));
userIdSet.addAll(userService.selectUserIdByRoleId(postLogCheckerId));
}
}
// Set<String> userIdSet = new HashSet<>();
if (CollectionUtil.isNotEmpty(userIdList)) {
HashSet<Long> h = new HashSet<>(userIdList);
userIdList.clear();
userIdList.addAll(h);
for (Long userId : userIdList) {
// userIdSet.add(userId.toString());
for (Long userId : userIdSet) {
messageUser = new BaseMessageDto.MessageUser();
messageUser.setUserId(userId);
messageUserList.add(messageUser);
}
}
DeliverMessageWithUploadDto uploadMessage = new DeliverMessageWithUploadDto();
DeliverMessageWithUploadDto.Data uploadMessageData = new DeliverMessageWithUploadDto.Data();
uploadMessageData.setProjectId(taskDetail.getProjectId());
Long roleId;
if (role.getName().equals(WebConstant.ROLE_NAME.AllMember.phase)) {
List<ProRole> roleList = proMemberService.selectRolesByUserIdAndProjectId(currentUserId, taskDetail.getProjectId());
uploadMessageData.setRoleId(roleList.get(0).getId());
roleId = roleList.get(0).getId();
} else {
uploadMessageData.setRoleId(taskDetail.getExecutorRole());
}
uploadMessageData.setTaskId(taskDetail.getId());
uploadMessageData.setDeliverId(d.getId());
uploadMessageData.setDeliverName(d.getName());
uploadMessageData.setUploadTime(System.currentTimeMillis());
uploadMessageData.setFile(uploadDeliver.getFileInfo());
uploadMessage.setData(uploadMessageData);
uploadMessage.setReceivers(messageUserList);
log.info("检查交付物:{}",JacksonUtil.beanToJson(uploadMessage));
roleId = taskDetail.getExecutorRole();
}
DeliverMessageWithUploadDto uploadMessage = new DeliverMessageWithUploadDto(taskDetail.getProjectId(),roleId,taskDetail.getId(),
taskDeliver.getId(),taskDeliver.getName(),currentUserId,now,uploadDeliver.getFileInfo(),messageUserList);
log.info("上传交付物:{}",JacksonUtil.beanToJson(uploadMessage));
rabbitTemplate.convertAndSend(RabbitMQConfig.RabbitMQ_QUEUE_NAME,
JacksonUtil.beanToJson(uploadMessage));
} else {
throw new BaseException(CodeEnum.IS_NOT_EXECUTOR);
}
//用智能助手发送消息
SysProject project = sysProjectDao.selectByPrimaryKey(taskDetail.getProjectId());
robotService.addDeliverRobotSend(currentUserId,d.getName(),subTimeId, project);
robotService.addDeliverRobotSend(currentUserId,taskDeliver.getName(),subTimeId, project);
//返回
List<ProjectVo.DeliverInfo> deliverInfoList = taskDeliverDao.selectByDeliverId(uploadDeliver.getDeliverId());
if (CollectionUtil.isNotEmpty(deliverInfoList)) {
deliverInfo = deliverInfoList.get(0);
deliverInfo.setUrl(WebConstant.TEST_URL_BASE + deliverInfo.getUrl());
}
return deliverInfo;
}
private void saveWpsFile(Long currentUserId, Long deliverLogId, DeliverDto.FileInfo fileInfo) {
File file = new File(WebConstant.UPLOAD_PATH_BASE + File.separator + fileInfo.getUrl());
if(file.exists()) {
//添加wps的信息
WpsDto.Business business = new WpsDto.Business();
business.setBusinessId(deliverLogId);
business.setWpsFileId(fileInfo.getWpsFileId());
business.setBusinessType((byte) 1);
business.setUserId(currentUserId);
business.setFileName(fileInfo.getName());
business.setFilePath(fileInfo.getUrl());
business.setFileSize(file.length());
business.setOperation(WebConstant.Wps.USER_OPERATION_NEW);
business.setPrivilege(WebConstant.Wps.PROJECT_PRIVILEGE_READ);
wpsService.saveFile(business);
}else {
throw new BaseException(CodeEnum.NOT_DELIVER_FILE);
}
}
/**
* 判断id是taskId还是subTimeId
*/
@ -340,13 +451,13 @@ public class TaskDeliverService implements ITaskDeliverService {
* 获取任务下所有交付物的信息
*/
@Override
public List<DeliverVo.DeliverInfo> selectTaskDeliver(Long currentUserId, Long taskId) throws Exception {
public List<DeliverVo.DeliverInfo> selectTaskDeliver(Long currentUserId, Long taskId,String token) throws Exception {
Long subTimeId = isTaskOrSubTime(taskId);
if (ObjectUtil.isNull(subTimeId)) {
throw new BaseException(CodeEnum.NOT_TASK);
}
List<DeliverVo.DeliverInfo> deliverInfoList = new ArrayList<>();
DeliverVo.DeliverInfo deliverInfo = null;
DeliverVo.DeliverInfo deliverInfo;
ProTaskSubTime subTime = taskSubTimeDao.selectByPrimaryKey(subTimeId);
if (ObjectUtil.isNotNull(subTimeId)) {
//获取角色负责人信息
@ -358,7 +469,7 @@ public class TaskDeliverService implements ITaskDeliverService {
if (CollectionUtil.isNotEmpty(taskDeliverList)) {
for (ProTaskDeliver deliver : taskDeliverList) {
if (deliver.getIsInput() == 0) {
deliverInfo = selectDeliverInfo(currentUserId, deliver.getId(), subTimeId);
deliverInfo = selectDeliverInfo(currentUserId, deliver.getId(), subTimeId,token);
deliverInfoList.add(deliverInfo);
}
}
@ -371,7 +482,7 @@ public class TaskDeliverService implements ITaskDeliverService {
* 查看单个交付物的信息
*/
@Override
public DeliverVo.DeliverInfo selectDeliverInfo(Long currentUserId, Long deliverId, Long taskId) throws Exception {
public DeliverVo.DeliverInfo selectDeliverInfo(Long currentUserId, Long deliverId, Long taskId,String token) throws Exception {
Long subTimeId = isTaskOrSubTime(taskId);
if (ObjectUtil.isNull(subTimeId)) {
throw new BaseException(CodeEnum.NOT_TASK);
@ -390,7 +501,7 @@ public class TaskDeliverService implements ITaskDeliverService {
}
//负责人信息
List<DeliverVo.DRole> executorRoleList = new ArrayList<>();
DeliverVo.DRole executorRole = null;
DeliverVo.DRole executorRole;
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(taskSubTimeDao.selectByPrimaryKey(subTimeId).getTaskDetailId());
if (ObjectUtil.isNotNull(taskDetail)) {
ProRole role = proRoleDao.selectByPrimaryKey(taskDetail.getExecutorRole());
@ -416,9 +527,9 @@ public class TaskDeliverService implements ITaskDeliverService {
}
//检查人信息
List<DeliverVo.Checker> checkerList = null;
Boolean isChecker = false;
DeliverVo.Checker checker = null;
List<DeliverVo.Checker> checkerList;
boolean isChecker = false;
DeliverVo.Checker checker;
//交付物文件的信息按时间排序
List<DeliverVo.FilePath> fileIds = taskDeliverDao.selectFileIdByDeliverId(deliver.getId(), subTimeId);
if (CollectionUtil.isNotEmpty(fileIds)) {
@ -476,6 +587,8 @@ public class TaskDeliverService implements ITaskDeliverService {
}
filePath.setCheckerList(checkerList);
filePath.setIsChecker(isChecker);
//获取wps里的文件路径
filePath.setWbsFilePaths(wpsService.queryVisitUrls(filePath.getDeliverLogId(), (byte) 1,token));
}
deliverInfo.setFileList(fileIds);
}
@ -486,19 +599,23 @@ public class TaskDeliverService implements ITaskDeliverService {
* 检查人检查交付物
*/
@Override
public DeliverVo.DeliverInfo checkDeliver(Long currentUserId, DeliverDto.CheckDeliver checkDeliver) throws Exception {
public DeliverVo.DeliverInfo checkDeliver(Long currentUserId, DeliverDto.CheckDeliver checkDeliver,String token) throws Exception {
Long subTimeId = isTaskOrSubTime(checkDeliver.getTaskId());
if (ObjectUtil.isNull(subTimeId)) {
throw new BaseException(CodeEnum.NOT_TASK);
}
List<BaseMessageDto.MessageUser> messageUserList = new ArrayList<>();
BaseMessageDto.MessageUser messageUser = null;
BaseMessageDto.MessageUser messageUser;
ProRole checkRole = null;
Set<String> userIdSet = new HashSet<>();
Long uploadUserId = null;
//查找该用户在此项目的角色
ProTaskDeliver deliver = taskDeliverDao.selectByPrimaryKey(checkDeliver.getDeliverId());
//获取交付物记录
ProTaskDeliverPostLog deliverPostLog = deliverPostLogDao.selectByPrimaryKey(checkDeliver.getDeliverLogId());
if(ObjectUtil.isNull(deliverPostLog)){
throw new BaseException(CodeEnum.NOT_DELIVER);
}
//查找交付物信息
ProTaskDeliver deliver = taskDeliverDao.selectByPrimaryKey(deliverPostLog.getDeliverId());
if(ObjectUtil.isNull(deliver)){
throw new BaseException(CodeEnum.NOT_DELIVER);
}
@ -510,15 +627,15 @@ public class TaskDeliverService implements ITaskDeliverService {
List<ProRole> roleList = proMemberService.selectRolesByUserIdAndProjectId(currentUserId, task.getProjectId());
if (CollectionUtil.isNotEmpty(roleList)) {
for (ProRole role : roleList) {
ProTaskDeliverPostLogExample logExample = new ProTaskDeliverPostLogExample();
logExample.createCriteria().andDeliverIdEqualTo(checkDeliver.getDeliverId()).andTaskSubTimeIdEqualTo(subTimeId);
logExample.setOrderByClause("time DESC");
List<ProTaskDeliverPostLog> deliverPostLogList = deliverPostLogDao.selectByExample(logExample);
if (CollectionUtil.isNotEmpty(deliverPostLogList)) {
ProTaskDeliverPostLog postLog = deliverPostLogList.get(0);
// ProTaskDeliverPostLogExample logExample = new ProTaskDeliverPostLogExample();
// logExample.createCriteria().andDeliverIdEqualTo(checkDeliver.getDeliverId()).andTaskSubTimeIdEqualTo(subTimeId);
// logExample.setOrderByClause("time DESC");
// List<ProTaskDeliverPostLog> deliverPostLogList = deliverPostLogDao.selectByExample(logExample);
// if (CollectionUtil.isNotEmpty(deliverPostLogList)) {
// ProTaskDeliverPostLog postLog = deliverPostLogList.get(0);
// for (ProTaskDeliverPostLog postLog : deliverPostLogList) {
ProTaskDeliverPostLogCheckerExample checkerExample = new ProTaskDeliverPostLogCheckerExample();
checkerExample.createCriteria().andDeliverPostLogIdEqualTo(postLog.getId()).andCheckerIdEqualTo(role.getId());
checkerExample.createCriteria().andDeliverPostLogIdEqualTo(deliverPostLog.getId()).andCheckerIdEqualTo(role.getId());
List<ProTaskDeliverPostLogChecker> postLogCheckerList = postLogCheckerDao.selectByExample(checkerExample);
if (CollectionUtil.isNotEmpty(postLogCheckerList)) {
for (ProTaskDeliverPostLogChecker postLogChecker : postLogCheckerList) {
@ -533,17 +650,18 @@ public class TaskDeliverService implements ITaskDeliverService {
postLogCheckerDao.updateByPrimaryKeySelective(postLogChecker);
}
}
}
userIdSet.add(postLog.getUserId().toString());
uploadUserId = postLog.getUserId();
// }
userIdSet.add(deliverPostLog.getUserId().toString());
uploadUserId = deliverPostLog.getUserId();
checkRole = role;
// }
}
}
if (ObjectUtil.isNull(checkRole)) {
throw new BaseException(CodeEnum.IS_NOT_CHECKER);
}
}
}
//发送消息
Long checkTime = System.currentTimeMillis();
DeliverMessageWithCheckerDto checkerDto = new DeliverMessageWithCheckerDto();
@ -583,7 +701,7 @@ public class TaskDeliverService implements ITaskDeliverService {
messageService.sendDeliverMessageWithChecker(inMessage);
//检查完,返回数据
DeliverVo.DeliverInfo deliverInfo = selectDeliverInfo(currentUserId, deliver.getId(), checkDeliver.getTaskId());
DeliverVo.DeliverInfo deliverInfo = selectDeliverInfo(currentUserId, deliver.getId(), checkDeliver.getTaskId(),token);
//用智能助手发送消息+ws/公众号发送
robotService.checkDeliverRobotSend(currentUserId,task,uploadUserId,deliver.getName());
return deliverInfo;
@ -620,7 +738,7 @@ public class TaskDeliverService implements ITaskDeliverService {
//获取日期的开始结束时间
Long startMillisTime = null;
Long endMillisTime = null;
Map<String, Long> timeMap = null;
Map<String, Long> timeMap;
if (StrUtil.isNotEmpty(start)) {
timeMap = DateUtil.projectFormatDateTime(start);
startMillisTime = timeMap.get("startMillisTime");
@ -784,7 +902,7 @@ public class TaskDeliverService implements ITaskDeliverService {
/**
* 删除任务下的交付物彻底删除
* @param taskId
* @param taskId 任务id
*/
@Override
public void deleteDeliverByTaskId(Long taskId) {

27
tall/src/main/java/com/ccsens/tall/service/TaskPluginService.java

@ -20,9 +20,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author
@ -242,8 +240,27 @@ public class TaskPluginService implements ITaskPluginService{
}
@Override
public List<PluginVo.NotesInfo> listNotesInfo(Long currentUserId, Long taskId, Long pluginId) {
// List<PluginVo.NotesInfo> notesInfoList = proNotesDao.listNotesInfo(currentUserId,taskId,pluginId);
return null;
public List<PluginVo.NotesInfo> queryNotesInfo(Long currentUserId, Long taskId, Long pluginId) {
return proNotesDao.queryNotesInfo(currentUserId,taskId,pluginId);
}
@Override
public void deleteNotes(Long currentUserId, Long notesId) {
ProNotes notes = proNotesDao.selectByPrimaryKey(notesId);
if(ObjectUtil.isNull(notes)){
throw new BaseException(CodeEnum.PARAM_ERROR);
}
ProTaskDetail proTaskDetail = taskDetailDao.selectByPrimaryKey(notes.getTaskId());
if(ObjectUtil.isNotNull(proTaskDetail)){
//只有管理员和发表评论的本人可以删除
int power = proRoleService.selectPowerByRoleName(currentUserId, proTaskDetail.getProjectId());
if (power > 1 || currentUserId.longValue() == notes.getUserId()) {
notes.setRecStatus((byte) 2);
proNotesDao.updateByPrimaryKeySelective(notes);
}else {
throw new BaseException(CodeEnum.NOT_POWER);
}
}
}
}

8
tall/src/main/java/com/ccsens/tall/service/WpsService.java

@ -78,7 +78,7 @@ public class WpsService implements IWpsService {
ProProjectFileExample example = new ProProjectFileExample();
example.createCriteria().andBusinessIdEqualTo(business.getBusinessId())
.andBusinessTypeEqualTo(business.getBusinessType())
.andFileIdEqualTo(business.getWpsFileId());
.andWpsFileIdEqualTo(business.getWpsFileId());
List<ProProjectFile> proProjectFiles = proProjectFileMapper.selectByExample(example);
if (CollectionUtil.isEmpty(proProjectFiles)) {
throw new BaseException(CodeEnum.PARAM_ERROR);
@ -112,7 +112,7 @@ public class WpsService implements IWpsService {
ProProjectFile proProjectFile;
proProjectFile = new ProProjectFile();
proProjectFile.setId(snowflake.nextId());
proProjectFile.setFileId(wpsFile.getId());
proProjectFile.setWpsFileId(wpsFile.getId());
proProjectFile.setBusinessId(business.getBusinessId());
proProjectFile.setBusinessType(business.getBusinessType());
proProjectFile.setPrivilege(business.getPrivilege());
@ -270,7 +270,7 @@ public class WpsService implements IWpsService {
JSONObject json = new JSONObject();
json.put("id", projectFile.getBusinessId());
json.put("type", projectFile.getBusinessType());
json.put("fileId", projectFile.getFileId());
json.put("fileId", projectFile.getWpsFileId());
String result = RestTemplateUtil.postBody(projectFile.getPrivilegeQueryUrl(), json);
user.setPermission(result);
}
@ -301,7 +301,7 @@ public class WpsService implements IWpsService {
private List<ProProjectFile> getProProjectFiles(Long fileId) {
ProProjectFileExample projectFileExample = new ProProjectFileExample();
projectFileExample.createCriteria().andFileIdEqualTo(fileId);
projectFileExample.createCriteria().andWpsFileIdEqualTo(fileId);
return proProjectFileMapper.selectByExample(projectFileExample);
}

19
tall/src/main/java/com/ccsens/tall/web/DeliverController.java

@ -19,6 +19,9 @@ import javax.servlet.http.Part;
import java.io.File;
import java.util.List;
/**
* @author
*/
@Api(tags = "交付物相关API", description = "DeliverController | 交付物操作控制器类")
@RestController
@RequestMapping("/delivers")
@ -66,7 +69,9 @@ public class DeliverController {
public JsonResponse<List<DeliverVo.DeliverInfo>> selectTaskDeliver(HttpServletRequest request,
@RequestParam(required = true) Long taskId) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
List<DeliverVo.DeliverInfo> deliverInfo = deliverService.selectTaskDeliver(currentUserId, taskId);
String authHeader = request.getHeader(WebConstant.HEADER_KEY_TOKEN);
String token = authHeader.substring(WebConstant.HEADER_KEY_TOKEN_PREFIX.length());
List<DeliverVo.DeliverInfo> deliverInfo = deliverService.selectTaskDeliver(currentUserId, taskId,token);
return JsonResponse.newInstance().ok(deliverInfo);
}
@ -79,7 +84,9 @@ public class DeliverController {
public JsonResponse<DeliverVo.DeliverInfo> selectDeliver(HttpServletRequest request,
@RequestParam(required = true)Long deliverId, Long taskId) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
DeliverVo.DeliverInfo deliverInfo = deliverService.selectDeliverInfo(currentUserId,deliverId,taskId);
String authHeader = request.getHeader(WebConstant.HEADER_KEY_TOKEN);
String token = authHeader.substring(WebConstant.HEADER_KEY_TOKEN_PREFIX.length());
DeliverVo.DeliverInfo deliverInfo = deliverService.selectDeliverInfo(currentUserId,deliverId,taskId,token);
return JsonResponse.newInstance().ok(deliverInfo);
}
@ -92,7 +99,9 @@ public class DeliverController {
public JsonResponse<DeliverVo.DeliverInfo> selectInput(HttpServletRequest request,
@RequestParam(required = true)Long inputId, Long taskId) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
DeliverVo.DeliverInfo deliverInfo = deliverService.selectDeliverInfo(currentUserId,inputId,taskId);
String authHeader = request.getHeader(WebConstant.HEADER_KEY_TOKEN);
String token = authHeader.substring(WebConstant.HEADER_KEY_TOKEN_PREFIX.length());
DeliverVo.DeliverInfo deliverInfo = deliverService.selectDeliverInfo(currentUserId,inputId,taskId,token);
return JsonResponse.newInstance().ok(deliverInfo);
}
@ -104,7 +113,9 @@ public class DeliverController {
public JsonResponse<DeliverVo.DeliverInfo> checkDeliver(HttpServletRequest request,
@ApiParam @RequestBody DeliverDto.CheckDeliver checker) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
DeliverVo.DeliverInfo deliverInfo = deliverService.checkDeliver(currentUserId,checker);
String authHeader = request.getHeader(WebConstant.HEADER_KEY_TOKEN);
String token = authHeader.substring(WebConstant.HEADER_KEY_TOKEN_PREFIX.length());
DeliverVo.DeliverInfo deliverInfo = deliverService.checkDeliver(currentUserId,checker,token);
return JsonResponse.newInstance().ok(deliverInfo);
}

14
tall/src/main/java/com/ccsens/tall/web/ExcelController.java

@ -15,6 +15,7 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
@ -24,9 +25,9 @@ import java.io.File;
@RestController
@RequestMapping("/projects")
public class ExcelController {
@Autowired
@Resource
private IExcelService excelService;
@Autowired
@Resource
private IExportWbsService exportWbsService;
@ApiOperation(value = "导入WBS",notes = "文件大小不能超过20M,支持后缀:.xls|.xlsx")
@ -34,7 +35,9 @@ public class ExcelController {
@ApiImplicitParam(name = "file", value = "WBS表", required = true, paramType = "form",dataType = "__file")
})
@RequestMapping(value = "/wbs", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<ProjectVo.ProjectInfo> btproImport(HttpServletRequest request, HttpServletResponse response, @RequestParam(required = true) Part file) throws Exception {
public JsonResponse<ProjectVo.ProjectInfo> btproImport(HttpServletRequest request, HttpServletResponse response,
@RequestParam(required = true) Part file,
@RequestParam(required = true) Long wpsFileId) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
//1.上传文件
@ -42,8 +45,13 @@ public class ExcelController {
String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator;
String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir);
System.out.println(dir+""+path);
//获取文件路径,文件名,和文件大小
String filePath = WebConstant.UPLOAD_PATH_PROJECT + File.separator + path;
String name = UploadFileUtil_Servlet3.getFileNameByPart(file);
//导入数据库
ProjectVo.ProjectInfo projectInfo = excelService.readXls(dir+""+path,currentUserId);
//保存文件信息、添加wps信息
excelService.saveWbsExcelFile(currentUserId,projectInfo.getId(),filePath,name,file.getSize(),wpsFileId);
return JsonResponse.newInstance().ok(projectInfo);
}

18
tall/src/main/java/com/ccsens/tall/web/PluginController.java

@ -121,15 +121,27 @@ public class PluginController {
@ApiOperation(value = "查找笔记", notes = "")
@ApiImplicitParams({
@ApiImplicitParam(name = "page", value = "任务Id", required = true, paramType = "query"),
@ApiImplicitParam(name = "page", value = "被查询的插件的id,不是笔记插件的id,只查询任务的笔记时不需要传参", required = true, paramType = "query")
@ApiImplicitParam(name = "taskId", value = "任务Id", required = true, paramType = "query"),
@ApiImplicitParam(name = "pluginId", value = "被查询的插件的id,不是笔记插件的id,只查询任务的笔记时不需要传参", required = true, paramType = "query")
})
@RequestMapping(value = "notes", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<PluginVo.NotesInfo>> getNotesInfo(HttpServletRequest request,
@RequestParam(required = true) Long taskId,
@RequestParam(required = false) Long pluginId) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
List<PluginVo.NotesInfo> notesInfoList = taskPluginService.listNotesInfo(currentUserId,taskId,pluginId);
List<PluginVo.NotesInfo> notesInfoList = taskPluginService.queryNotesInfo(currentUserId,taskId,pluginId);
return JsonResponse.newInstance().ok(notesInfoList);
}
@ApiOperation(value = "删除评论", notes = "")
@ApiImplicitParams({
})
@RequestMapping(value = "delNotes", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse deleteNotes(HttpServletRequest request,
@RequestParam(required = true) Long notesId) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
taskPluginService.deleteNotes(currentUserId,notesId);
return JsonResponse.newInstance().ok();
}
}

26
tall/src/main/java/com/ccsens/tall/web/ProjectController.java

@ -1,5 +1,6 @@
package com.ccsens.tall.web;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.tall.bean.dto.ProjectDto;
import com.ccsens.tall.bean.vo.ProjectVo;
import com.ccsens.tall.bean.vo.TaskVo;
@ -62,7 +63,10 @@ public class ProjectController {
orderType = orderType == null ? 0 : orderType;
order = order == null ? 0 : order;
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
List<ProjectVo.ProjectInfo> projectInfoList = projectService.getProjectInfo(currentUserId,date,orderType,order);
String authHeader = request.getHeader(WebConstant.HEADER_KEY_TOKEN);
String token = authHeader.substring(WebConstant.HEADER_KEY_TOKEN_PREFIX.length());
System.out.println(token);
List<ProjectVo.ProjectInfo> projectInfoList = projectService.getProjectInfo(currentUserId,date,orderType,order,token);
return JsonResponse.newInstance().ok(projectInfoList);
}
@ -73,7 +77,9 @@ public class ProjectController {
@RequestMapping(value = "id", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"})
public JsonResponse<ProjectVo.ProjectInfo> getProjectById(HttpServletRequest request, @RequestParam(required = true) Long projectId) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
ProjectVo.ProjectInfo projectInfo = projectService.getProjectInfoById(currentUserId,projectId);
String authHeader = request.getHeader(WebConstant.HEADER_KEY_TOKEN);
String token = authHeader.substring(WebConstant.HEADER_KEY_TOKEN_PREFIX.length());
ProjectVo.ProjectInfo projectInfo = projectService.getProjectInfoById(currentUserId,projectId,token);
return JsonResponse.newInstance().ok(projectInfo);
}
@ -214,7 +220,9 @@ public class ProjectController {
public JsonResponse<ProjectVo.ProjectInfo> addProject(HttpServletRequest request,
@Validated @RequestBody ProjectDto.ProjectIdDto projectDto) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
ProjectVo.ProjectInfo projectInfo = projectService.copyProject(currentUserId,projectDto);
String authHeader = request.getHeader(WebConstant.HEADER_KEY_TOKEN);
String token = authHeader.substring(WebConstant.HEADER_KEY_TOKEN_PREFIX.length());
ProjectVo.ProjectInfo projectInfo = projectService.copyProject(currentUserId,projectDto,token);
return JsonResponse.newInstance().ok(projectInfo);
}
@ -225,7 +233,9 @@ public class ProjectController {
public JsonResponse<ProjectVo.ProjectInfo> updateProject(HttpServletRequest request,
@Validated @RequestBody ProjectDto.ProjectInfoDto projectInfoDto) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
ProjectVo.ProjectInfo projectInfo = projectService.changeProjectInfo(currentUserId,projectInfoDto);
String authHeader = request.getHeader(WebConstant.HEADER_KEY_TOKEN);
String token = authHeader.substring(WebConstant.HEADER_KEY_TOKEN_PREFIX.length());
ProjectVo.ProjectInfo projectInfo = projectService.changeProjectInfo(currentUserId,projectInfoDto,token);
return JsonResponse.newInstance().ok(projectInfo);
}
@ -239,7 +249,9 @@ public class ProjectController {
Integer pageSize = 10;
page = page == null ? 1 : page;
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
ProjectVo.ProjectAllDetailed projectInfoList = projectService.selectByLabelName(currentUserId,labelName,pageSize,page);
String authHeader = request.getHeader(WebConstant.HEADER_KEY_TOKEN);
String token = authHeader.substring(WebConstant.HEADER_KEY_TOKEN_PREFIX.length());
ProjectVo.ProjectAllDetailed projectInfoList = projectService.selectByLabelName(currentUserId,labelName,pageSize,page,token);
return JsonResponse.newInstance().ok(projectInfoList);
}
@ -262,7 +274,9 @@ public class ProjectController {
public JsonResponse<ProjectVo.ProjectInfo> updateProjectConfig(HttpServletRequest request,
@Validated @RequestBody ProjectDto.ProjectConfig projectConfig) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
ProjectVo.ProjectInfo projectInfo = projectService.updateProjectConfig(currentUserId,projectConfig);
String authHeader = request.getHeader(WebConstant.HEADER_KEY_TOKEN);
String token = authHeader.substring(WebConstant.HEADER_KEY_TOKEN_PREFIX.length());
ProjectVo.ProjectInfo projectInfo = projectService.updateProjectConfig(currentUserId,projectConfig,token);
return JsonResponse.newInstance().ok(projectInfo);
}

2
tall/src/main/resources/mapper_dao/DeliverDao.xml

@ -139,7 +139,7 @@
<select id="selectFileIdByDeliverId" parameterType="java.util.Map"
resultMap="resultMap_FilePath">
SELECT
l.id as postLogId,
l.id as deliverLogId,
f.id as fileId,
l.updated_at as updateTime,
l.description as description,

38
tall/src/main/resources/mapper_dao/ProNotesDao.xml

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.tall.persist.dao.ProNotesDao">
<select id="queryNotesInfo" parameterType="java.util.Map" resultType="com.ccsens.tall.bean.vo.PluginVo$NotesInfo">
SELECT
n.id,
n.task_id as taskId,
n.role_id as roleId,
n.plugin_id as pluginId,
n.time as notesTime,
n.value as value,
n.publicity as publicity
from
t_pro_notes n
WHERE
n.task_id = #{taskId}
and
(
n.publicity = 1
or
n.role_id in (
SELECT
r.id
from
t_pro_role r LEFT JOIN t_pro_member_role mr on r.id = mr.role_id
LEFT JOIN t_pro_member m on mr.member_id = m.id
WHERE
m.user_id = #{userId}
)
)
<if test="pluginId != null">
n.plugin_id = #{pluginId}
</if>
</select>
</mapper>

2
tall/src/main/resources/mapper_dao/WpsFileDao.xml

@ -87,7 +87,7 @@
t_pro_project_file p,
t_wps_file f
WHERE
p.file_id = f.id
p.wps_file_id = f.id
AND p.business_id = #{businessId}
AND p.business_type = #{businessType}
AND p.rec_status = 0

28
tall/src/main/resources/mapper_raw/ProProjectFileMapper.xml

@ -4,7 +4,7 @@
<resultMap id="BaseResultMap" type="com.ccsens.tall.bean.po.ProProjectFile">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="business_id" jdbcType="BIGINT" property="businessId" />
<result column="file_id" jdbcType="BIGINT" property="fileId" />
<result column="wps_file_id" jdbcType="BIGINT" property="wpsFileId" />
<result column="business_type" jdbcType="TINYINT" property="businessType" />
<result column="privilege" jdbcType="TINYINT" property="privilege" />
<result column="privilege_query_url" jdbcType="VARCHAR" property="privilegeQueryUrl" />
@ -71,7 +71,7 @@
</where>
</sql>
<sql id="Base_Column_List">
id, business_id, file_id, business_type, privilege, privilege_query_url, created_at,
id, business_id, wps_file_id, business_type, privilege, privilege_query_url, created_at,
updated_at, rec_status
</sql>
<select id="selectByExample" parameterType="com.ccsens.tall.bean.po.ProProjectFileExample" resultMap="BaseResultMap">
@ -105,11 +105,11 @@
</if>
</delete>
<insert id="insert" parameterType="com.ccsens.tall.bean.po.ProProjectFile">
insert into t_pro_project_file (id, business_id, file_id,
insert into t_pro_project_file (id, business_id, wps_file_id,
business_type, privilege, privilege_query_url,
created_at, updated_at, rec_status
)
values (#{id,jdbcType=BIGINT}, #{businessId,jdbcType=BIGINT}, #{fileId,jdbcType=BIGINT},
values (#{id,jdbcType=BIGINT}, #{businessId,jdbcType=BIGINT}, #{wpsFileId,jdbcType=BIGINT},
#{businessType,jdbcType=TINYINT}, #{privilege,jdbcType=TINYINT}, #{privilegeQueryUrl,jdbcType=VARCHAR},
#{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT}
)
@ -123,8 +123,8 @@
<if test="businessId != null">
business_id,
</if>
<if test="fileId != null">
file_id,
<if test="wpsFileId != null">
wps_file_id,
</if>
<if test="businessType != null">
business_type,
@ -152,8 +152,8 @@
<if test="businessId != null">
#{businessId,jdbcType=BIGINT},
</if>
<if test="fileId != null">
#{fileId,jdbcType=BIGINT},
<if test="wpsFileId != null">
#{wpsFileId,jdbcType=BIGINT},
</if>
<if test="businessType != null">
#{businessType,jdbcType=TINYINT},
@ -190,8 +190,8 @@
<if test="record.businessId != null">
business_id = #{record.businessId,jdbcType=BIGINT},
</if>
<if test="record.fileId != null">
file_id = #{record.fileId,jdbcType=BIGINT},
<if test="record.wpsFileId != null">
wps_file_id = #{record.wpsFileId,jdbcType=BIGINT},
</if>
<if test="record.businessType != null">
business_type = #{record.businessType,jdbcType=TINYINT},
@ -220,7 +220,7 @@
update t_pro_project_file
set id = #{record.id,jdbcType=BIGINT},
business_id = #{record.businessId,jdbcType=BIGINT},
file_id = #{record.fileId,jdbcType=BIGINT},
wps_file_id = #{record.wpsFileId,jdbcType=BIGINT},
business_type = #{record.businessType,jdbcType=TINYINT},
privilege = #{record.privilege,jdbcType=TINYINT},
privilege_query_url = #{record.privilegeQueryUrl,jdbcType=VARCHAR},
@ -237,8 +237,8 @@
<if test="businessId != null">
business_id = #{businessId,jdbcType=BIGINT},
</if>
<if test="fileId != null">
file_id = #{fileId,jdbcType=BIGINT},
<if test="wpsFileId != null">
wps_file_id = #{wpsFileId,jdbcType=BIGINT},
</if>
<if test="businessType != null">
business_type = #{businessType,jdbcType=TINYINT},
@ -264,7 +264,7 @@
<update id="updateByPrimaryKey" parameterType="com.ccsens.tall.bean.po.ProProjectFile">
update t_pro_project_file
set business_id = #{businessId,jdbcType=BIGINT},
file_id = #{fileId,jdbcType=BIGINT},
wps_file_id = #{wpsFileId,jdbcType=BIGINT},
business_type = #{businessType,jdbcType=TINYINT},
privilege = #{privilege,jdbcType=TINYINT},
privilege_query_url = #{privilegeQueryUrl,jdbcType=VARCHAR},

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

@ -128,6 +128,7 @@ public enum CodeEnum {
;
public CodeEnum addMsg(String msg){

1
util/src/main/java/com/ccsens/util/WebConstant.java

@ -168,6 +168,7 @@ public class WebConstant {
public static final String UPLOAD_PATH_DELIVER = UPLOAD_PATH_BASE + File.separator + "delivers";
public static final String UPLOAD_PATH_DELIVER1 ="delivers";
public static final String UPLOAD_PATH_PROJECT ="project";
public static final String UPLOAD_PATH_WPS ="wps";
public static final String UPLOAD_PATH_AVATAR_URL ="avatarUrl";

3
util/src/test/java/com/ccsens/util/Base64Test.java

@ -42,7 +42,8 @@ public class Base64Test {
@Test
public void test02() throws Exception {
File file = new File("d:"+File.separator+"1.png");
System.out.println(file.length());
}

Loading…
Cancel
Save