diff --git a/mt/src/main/resources/application-test.yml b/mt/src/main/resources/application-test.yml
index 5130b7a9..e73d1baf 100644
--- a/mt/src/main/resources/application-test.yml
+++ b/mt/src/main/resources/application-test.yml
@@ -28,7 +28,7 @@ swagger:
enable: true
eureka:
instance:
- ip-address: 192.168.0.99
+ ip-address: 192.168.31.13
file:
path: /home/cloud/mt/uploads/
signUpUrl: https://test.tall.wiki/compete/
diff --git a/mt/src/main/resources/application.yml b/mt/src/main/resources/application.yml
index 1ac895fc..a47f2a7b 100644
--- a/mt/src/main/resources/application.yml
+++ b/mt/src/main/resources/application.yml
@@ -1,6 +1,6 @@
spring:
profiles:
- active: prod
- include: common, util-prod
+ active: dev
+ include: common, util-dev
diff --git a/pom.xml b/pom.xml
index e6b63103..c2c7812d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
tall
-
+ mt
beneficiation
diff --git a/tall/src/main/java/com/ccsens/tall/bean/vo/MemberVo.java b/tall/src/main/java/com/ccsens/tall/bean/vo/MemberVo.java
index f9d5fb3d..1526c1ae 100644
--- a/tall/src/main/java/com/ccsens/tall/bean/vo/MemberVo.java
+++ b/tall/src/main/java/com/ccsens/tall/bean/vo/MemberVo.java
@@ -1,5 +1,8 @@
package com.ccsens.tall.bean.vo;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@@ -9,7 +12,7 @@ import lombok.Data;
public class MemberVo {
@Data
- public static class MemberInfo{
+ public static class MemberInfo {
private Long id;
private Long userId;
private Long projectId;
@@ -22,7 +25,7 @@ public class MemberVo {
private Long stakeholderId;
}
-// @Data
+ // @Data
// public static class FirstRole{
// private Long id;
// private String name;
@@ -35,5 +38,20 @@ public class MemberVo {
// private String roleExclude;
// private List memberList;
// }
-
+ @ApiModel
+ @Data
+ public static class ExportMember {
+ @ApiModelProperty("成员id")
+ private Long mId;
+ @ApiModelProperty("成员姓名")
+ private String mName;
+ @ApiModelProperty("成员手机号")
+ private String mPhone;
+ @ApiModelProperty("干系人Id")
+ private Long sId;
+ @ApiModelProperty("干系人姓名")
+ private String sName;
+ @ApiModelProperty("干系人手机号")
+ private String sPhone;
+ }
}
diff --git a/tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberDao.java b/tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberDao.java
index 34178a93..60b4dc4d 100644
--- a/tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberDao.java
+++ b/tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberDao.java
@@ -60,4 +60,11 @@ public interface ProMemberDao extends ProMemberMapper{
* @return 返回所有的成员id
*/
List getIdByUserIdAndProjectId(@Param("projectIdList")List projectIdList, @Param("currentUserId")Long currentUserId);
+
+ /**
+ * 通过项目id查找所有的成员信息
+ * @param projectId 项目id
+ * @return 返回所有成员信息及奖惩干系人
+ */
+ List queryByProjectId(@Param("projectId")Long projectId);
}
diff --git a/tall/src/main/java/com/ccsens/tall/service/ExportWbsService.java b/tall/src/main/java/com/ccsens/tall/service/ExportWbsService.java
index 0ba98a3c..8d15fcc0 100644
--- a/tall/src/main/java/com/ccsens/tall/service/ExportWbsService.java
+++ b/tall/src/main/java/com/ccsens/tall/service/ExportWbsService.java
@@ -4,18 +4,25 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ZipUtil;
import cn.hutool.crypto.SecureUtil;
+import com.ccsens.tall.bean.dto.ProjectDto;
+import com.ccsens.tall.bean.dto.RoleDto;
import com.ccsens.tall.bean.po.*;
+import com.ccsens.tall.bean.vo.MemberVo;
+import com.ccsens.tall.bean.vo.ProjectVo;
+import com.ccsens.tall.bean.vo.RoleVo;
import com.ccsens.tall.bean.vo.WbsVo;
import com.ccsens.tall.persist.dao.*;
-import com.ccsens.util.PoiUtil;
-import com.ccsens.util.PropUtil;
-import com.ccsens.util.WebConstant;
+import com.ccsens.util.*;
+import com.ccsens.util.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
+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.core.io.DefaultResourceLoader;
@@ -24,6 +31,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
+import javax.annotation.Resource;
import java.io.*;
import java.io.File;
import java.math.BigDecimal;
@@ -34,26 +42,32 @@ import java.util.*;
@Service
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class ExportWbsService implements IExportWbsService{
- @Autowired
+ @Resource
private SysProjectDao sysProjectDao;
- @Autowired
+ @Resource
private ProMemberDao proMemberDao;
- @Autowired
+ @Resource
+ private ProMemberRoleDao proMemberRoleDao;
+ @Resource
private ProRoleDao proRoleDao;
- @Autowired
+ @Resource
private ProRoleExcludeDao proRoleExcludeDao;
- @Autowired
+ @Resource
private TaskDetailDao taskDetailDao;
- @Autowired
+ @Resource
private TaskDeliverDao taskDeliverDao;
- @Autowired
+ @Resource
private SysPluginDao sysPluginDao;
- @Autowired
+ @Resource
private TaskDeliverService taskDeliverService;
- @Autowired
+ @Resource
private ProTaskDetailService taskDetailService;
- @Autowired
+ @Resource
private ProRoleService proRoleService;
+ @Resource
+ private IUserService userService;
+ @Resource
+ private Snowflake snowflake;
@Override
public String exportWbs(Long projectId) throws Exception {
@@ -607,9 +621,9 @@ public class ExportWbsService implements IExportWbsService{
List taskTitle = new ArrayList<>();
taskTitle.add(new PoiUtil.PoiUtilCell("序号"));
taskTitle.add(new PoiUtil.PoiUtilCell("成员名"));
- taskTitle.add(new PoiUtil.PoiUtilCell("电话/账号"));
+ taskTitle.add(new PoiUtil.PoiUtilCell("电话"));
taskTitle.add(new PoiUtil.PoiUtilCell("奖惩干系人"));
- taskTitle.add(new PoiUtil.PoiUtilCell("干系人账号"));
+ taskTitle.add(new PoiUtil.PoiUtilCell("干系人手机号"));
memberSheet.add(taskTitle);
int index = 1;
@@ -703,13 +717,7 @@ public class ExportWbsService implements IExportWbsService{
//生成文件
String fileName = "/exportWbs/" + DateUtil.today() + "/" + System.currentTimeMillis() + ".xlsx";
String path = WebConstant.UPLOAD_PATH_BASE + fileName;
- File tmpFile = new File(path);
- if (!tmpFile.getParentFile().exists()) {
- tmpFile.getParentFile().mkdirs();
- }
- OutputStream stream = new FileOutputStream(tmpFile);
- wb.write(stream);
- stream.close();
+ writeFile(wb, path);
return PropUtil.imgDomain + "/" + fileName;
}
@@ -889,6 +897,40 @@ public class ExportWbsService implements IExportWbsService{
//生成文件
String fileName = "/"+filePath+"/" + "MVP" + ".xlsx";
String path = WebConstant.UPLOAD_PATH_BASE + fileName;
+ writeFile(wb, path);
+ }
+
+
+ /**
+ * 导出项目成员表
+ */
+ @Override
+ public String exportMember(ProjectDto.ProjectIdDto params, Long userId) throws Exception {
+ String fileName = "exportWbs/" + DateUtil.today() + "/" + System.currentTimeMillis() + ".xlsx";
+ String path = PropUtil.path + fileName;
+ //权限验证
+ int power = proRoleService.selectPowerByRoleName(userId, params.getProjectId());
+ if (power < 2) {
+ throw new BaseException(CodeEnum.NOT_POWER);
+ }
+ //查找项目内所有成员
+ List exportMemberList = proMemberDao.queryByProjectId(params.getProjectId());
+
+ if(CollectionUtil.isNotEmpty(exportMemberList)){
+ //生成写入数据
+ List> list = writeMember(exportMemberList);
+ //导出文件
+ XSSFWorkbook wb = new XSSFWorkbook();
+ //写入数据
+ PoiUtil.exportWB("项目成员表", list, wb);
+ //生成文件
+ writeFile(wb, path);
+
+ }
+ return PropUtil.imgDomain + "/" + fileName;
+ }
+
+ private void writeFile(XSSFWorkbook wb, String path) throws IOException {
File tmpFile = new File(path);
if (!tmpFile.getParentFile().exists()) {
tmpFile.getParentFile().mkdirs();
@@ -898,4 +940,158 @@ public class ExportWbsService implements IExportWbsService{
stream.close();
}
+ private List> writeMember(List exportMemberList) {
+ List> list = new ArrayList<>();
+ List title = new ArrayList<>();
+ title.add(new PoiUtil.PoiUtilCell("序号"));
+ title.add(new PoiUtil.PoiUtilCell("成员名"));
+ title.add(new PoiUtil.PoiUtilCell("电话"));
+ title.add(new PoiUtil.PoiUtilCell("奖惩干系人"));
+ title.add(new PoiUtil.PoiUtilCell("干系人手机号"));
+ title.add(new PoiUtil.PoiUtilCell("备注"));
+ list.add(title);
+
+ for (int i = 0; i < exportMemberList.size(); i++) {
+ MemberVo.ExportMember exportMember = exportMemberList.get(i);
+ List member = new ArrayList<>();
+ member.add(new PoiUtil.PoiUtilCell((i + 1) + ""));
+ member.add(new PoiUtil.PoiUtilCell(exportMember.getMName()));
+ member.add(new PoiUtil.PoiUtilCell(exportMember.getMPhone()));
+ member.add(new PoiUtil.PoiUtilCell(exportMember.getSName()));
+ member.add(new PoiUtil.PoiUtilCell(exportMember.getSPhone()));
+ list.add(member);
+ }
+ return list;
+ }
+
+ /**
+ * 导入项目成员表
+ * @param path 路径
+ * @param currentUserId userId
+ * @param projectId 项目id
+ */
+ @Override
+ public void importMember(String path, Long currentUserId, Long projectId) throws Exception {
+
+// //验证权限
+// int power = proRoleService.selectPowerByRoleName(currentUserId, projectId);
+// if (power < 2) {
+// throw new BaseException(CodeEnum.NOT_POWER);
+// }
+// //获取excel表格
+// InputStream is = new FileInputStream(path);
+// XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
+// //获取项目成员表
+// XSSFSheet memberSheet = xssfWorkbook.getSheet("项目成员表");
+//
+// //读取WBS表
+// List stakeholderList = new ArrayList<>();
+// if (ObjectUtil.isNotNull(memberSheet)) {
+// Set userIdSet = new HashSet<>();
+//
+// for (int i = 1; i <= memberSheet.getLastRowNum(); i++) {
+// XSSFRow row = memberSheet.getRow(i);
+// if(ObjectUtil.isNull(row)){
+// continue;
+// }
+// String memberCell = ExcelUtil.getCellValue(row.getCell(1));
+// String phoneCell = ExcelUtil.getCellValue(row.getCell(2));
+// String stakeholderCell = ExcelUtil.getCellValue(row.getCell(3));
+// String stakeholderPhoneCell = ExcelUtil.getCellValue(row.getCell(4));
+// ProMember stakeholder = null;
+// ProMember member;
+// //成员名为空,跳至下一行
+// if ((StrUtil.isEmpty(memberCell))) {
+// continue;
+// }
+// //手机号不能为空
+// if (StrUtil.isNotEmpty(memberCell) && StrUtil.isEmpty(phoneCell)) {
+// throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(memberSheet.getSheetName(), (i+1),memberCell));
+// }
+// //判断手机号格式
+// String regex ="^[1]([3-9])[0-9]{9}$";
+// if (StrUtil.isEmpty(phoneCell) || !phoneCell.matches(regex)){
+// throw new BaseException(CodeEnum.WBS_PHONE_ERROR.addMsg(memberSheet.getSheetName(),(i+1),memberCell));
+// }
+//
+// //添加奖惩干系人
+// if (StrUtil.isNotEmpty(stakeholderCell)) {
+// //判断奖惩干系人的手机号是否为空
+// if ( StrUtil.isEmpty(stakeholderPhoneCell)){
+// throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(memberSheet.getSheetName(), (i+1),stakeholderCell));
+// }
+// //判断奖惩干系人的手机号格式是否正确
+// if (!stakeholderPhoneCell.matches(regex)){
+// throw new BaseException(CodeEnum.WBS_PHONE_ERROR.addMsg(memberSheet.getSheetName(),(i+1),stakeholderCell));
+// }
+// if (!stakeholderWithPhone(stakeholderList, stakeholderCell, stakeholderPhoneCell)) {
+// Long userId = userService.selectUserIdByPhone(stakeholderPhoneCell);
+// if (ObjectUtil.isNotNull(userId)) {
+// userIdSet.add(userId);
+// }
+// stakeholder = new ProMember();
+// stakeholder.setId(snowflake.nextId());
+// stakeholder.setProjectId(projectId);
+// stakeholder.setUserId(userId);
+// stakeholder.setNickname(stakeholderCell);
+// stakeholder.setPhone(stakeholderPhoneCell);
+// proMemberDao.insertSelective(stakeholder);
+// stakeholderList.add(stakeholder);
+//
+// ProMemberRole proMemberRole = new ProMemberRole();
+// proMemberRole.setId(snowflake.nextId());
+// proMemberRole.setMemberId(stakeholder.getId());
+// proMemberRole.setRoleId(stakeholderId);
+// proMemberRoleDao.insertSelective(proMemberRole);
+// } else {
+// throw new BaseException(CodeEnum.WBS_STAKEHOLDER_PHONE.addMsg(memberSheet.getSheetName(),(i+1),stakeholderCell));
+// }
+// }
+// //成员
+// if (StrUtil.isNotEmpty(memberCell)) {
+// if (!memberAndPhoneRepeat(proMembers, memberCell, phoneCell)) {
+// Long userId = userService.selectUserIdByPhone(phoneCell);
+// if (ObjectUtil.isNotNull(userId)) {
+// userIdSet.add(userId);
+// }
+// member = new ProMember();
+// member.setId(snowflake.nextId());
+// member.setProjectId(sysProject.getId());
+// member.setUserId(userId);
+// member.setNickname(memberCell);
+// member.setPhone(phoneCell);
+// if (ObjectUtil.isNotNull(stakeholder)) {
+// member.setStakeholderId(stakeholder.getId());
+// }
+// proMemberService.saveMember(member);
+// proMembers.add(member);
+//// //创建者依据project的creatorId判断,不需要添加成员
+// } else {
+// throw new BaseException(CodeEnum.WBS_REPEAT_MEMBER_PHONE.addMsg(memberSheet.getSheetName(),(i+1)));
+// }
+// }
+// }
+// //TODO 每个成员都关注此项目(暂时)
+// addUserAttention(userIdSet, sysProject);
+// } else {
+// throw new BaseException(CodeEnum.WBS_NOT_MEMBER_SHEET);
+// }
+ }
+
+ private boolean stakeholderWithPhone(List stakeholderList, String stakeholderName, String phone) {
+ if (CollectionUtil.isNotEmpty(stakeholderList)) {
+ for (ProMember proMember : stakeholderList) {
+ if (stakeholderName.equalsIgnoreCase(proMember.getNickname())) {
+ if (!proMember.getPhone().equalsIgnoreCase(phone)) {
+ return true;
+ }
+ } else {
+ if (proMember.getPhone().equalsIgnoreCase(phone)) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
}
diff --git a/tall/src/main/java/com/ccsens/tall/service/IExcelService.java b/tall/src/main/java/com/ccsens/tall/service/IExcelService.java
index c3aca4fd..f509df29 100644
--- a/tall/src/main/java/com/ccsens/tall/service/IExcelService.java
+++ b/tall/src/main/java/com/ccsens/tall/service/IExcelService.java
@@ -35,4 +35,5 @@ public interface IExcelService {
* @param wpsFileId 前端传的wps里的文件id
*/
void saveWbsExcelFile(Long userId,Long projectId,String filePath, String fileName,Long fileSize,Long wpsFileId);
+
}
diff --git a/tall/src/main/java/com/ccsens/tall/service/IExportWbsService.java b/tall/src/main/java/com/ccsens/tall/service/IExportWbsService.java
index 6bbcb219..411ca7a3 100644
--- a/tall/src/main/java/com/ccsens/tall/service/IExportWbsService.java
+++ b/tall/src/main/java/com/ccsens/tall/service/IExportWbsService.java
@@ -1,5 +1,9 @@
package com.ccsens.tall.service;
+import com.ccsens.tall.bean.dto.ProjectDto;
+import com.ccsens.util.bean.dto.QueryDto;
+
+import java.io.FileNotFoundException;
import java.io.IOException;
public interface IExportWbsService {
@@ -8,4 +12,19 @@ public interface IExportWbsService {
String exportChecklist(Long userId,Long projectId,Long roleId,Long startTime,Long endTime) throws Exception;
String exportDeliver(Long currentUserId, Long projectId) throws Exception;
+
+ /**
+ * 导出项目成员表
+ * @param params
+ * @return
+ */
+ String exportMember(ProjectDto.ProjectIdDto params,Long userId) throws Exception;
+
+ /**
+ * 导入项目成员表
+ * @param path 路径
+ * @param currentUserId userId
+ * @param projectId 项目id
+ */
+ void importMember(String path, Long currentUserId, Long projectId) throws Exception;
}
diff --git a/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java b/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java
index dba00563..58606c5f 100644
--- a/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java
+++ b/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java
@@ -1136,7 +1136,7 @@ public class ProRoleService implements IProRoleService {
/**
* 修改对谁不可见
* @param param 参数
- * @param userId 当前用户id
+ * @param userId 当前用户id
*/
@Override
public void upRoleWhoNoLook(RoleDto.RoleOfNoLook param, Long userId) {
@@ -1147,14 +1147,17 @@ public class ProRoleService implements IProRoleService {
if (2 < power){
//删除之前的记录
ProRoleExcludeExample excludeExample = new ProRoleExcludeExample();
- excludeExample.createCriteria().andRoleIdEqualTo(param.getRoleId()).andRecStatusEqualTo((byte)0);
+ excludeExample.createCriteria().andRoleIdEqualTo(param.getRoleId());
List proRoleExcludes = proRoleExcludeMapper.selectByExample(excludeExample);
if (CollectionUtil.isNotEmpty(proRoleExcludes)){
for (ProRoleExclude proRoleExclude : proRoleExcludes) {
- ProRoleExclude oldExclude = new ProRoleExclude();
- oldExclude.setId(proRoleExclude.getId());
- oldExclude.setRecStatus((byte)2);
- proRoleExcludeMapper.updateByExampleSelective(oldExclude,excludeExample);
+ proRoleExclude.setRecStatus(WebConstant.REC_STATUS.Deleted.value);
+ proRoleExcludeMapper.updateByPrimaryKeySelective(proRoleExclude);
+
+// ProRoleExclude oldExclude = new ProRoleExclude();
+// oldExclude.setId(proRoleExclude.getId());
+// oldExclude.setRecStatus((byte)2);
+// proRoleExcludeMapper.updateByExampleSelective(oldExclude,excludeExample);
}
}
diff --git a/tall/src/main/java/com/ccsens/tall/service/RobotService.java b/tall/src/main/java/com/ccsens/tall/service/RobotService.java
index 8b13ab1e..72cc8daa 100644
--- a/tall/src/main/java/com/ccsens/tall/service/RobotService.java
+++ b/tall/src/main/java/com/ccsens/tall/service/RobotService.java
@@ -195,9 +195,10 @@ public class RobotService implements IRobotService{
String projectName = "";
//获取项目名
- if(ObjectUtil.isNotNull(project)){
- projectName = project.getName();
+ if(ObjectUtil.isNull(project)){
+ return;
}
+ projectName = project.getName();
// 获取角色名
TaskVo.RoleCheckList role = proRoleService.selectRoleByCheckOrExecutor(executorId);
String executorName = ObjectUtil.isNotNull(role) ? role.getName() : "";
diff --git a/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java b/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java
index 71fa9283..b063d9cd 100644
--- a/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java
+++ b/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java
@@ -433,7 +433,7 @@ public class TaskSubTimeService implements ITaskSubTimeService {
}
//TaskSubTime
List proTaskSubTimeList = new ArrayList<>();
- if (ObjectUtil.isNotNull(detail.getProjectId())) {
+// if (ObjectUtil.isNotNull(detail.getProjectId())) {
//cycle为空,只加一条数据
if (StrUtil.isEmpty(detail.getCycle())) {
ProTaskSubTime proTaskSubTime = new ProTaskSubTime();
@@ -443,12 +443,14 @@ public class TaskSubTimeService implements ITaskSubTimeService {
proTaskSubTime.setEndTime(detail.getEndTime());
taskSubTimeDao.insertSelective(proTaskSubTime);
proTaskSubTimeList.add(proTaskSubTime);
+ log.info("添加一条分解任务{}",proTaskSubTime);
} else {
Date startDate = new Date(detail.getBeginTime());
Date endDate = new Date(detail.getEndTime());
List taskDateList =
NatureToDate.generateDates(detail.getCycle(), startDate, endDate);
if (CollectionUtil.isNotEmpty(taskDateList)) {
+ log.info("添加多条分解任务");
for (CronConstant.TaskDate taskDate : taskDateList) {
ProTaskSubTime proTaskSubTime = new ProTaskSubTime();
proTaskSubTime.setId(snowflake.nextId());
@@ -460,7 +462,7 @@ public class TaskSubTimeService implements ITaskSubTimeService {
}
}
}
- }
+// }
//交付物
// if (StrUtil.isNotEmpty(addTask.getTaskDeliver())) {
// ProTaskDeliver deliver = new ProTaskDeliver();
diff --git a/tall/src/main/java/com/ccsens/tall/web/ExcelController.java b/tall/src/main/java/com/ccsens/tall/web/ExcelController.java
index f58fa66b..0ee4b28b 100644
--- a/tall/src/main/java/com/ccsens/tall/web/ExcelController.java
+++ b/tall/src/main/java/com/ccsens/tall/web/ExcelController.java
@@ -1,6 +1,9 @@
package com.ccsens.tall.web;
+import com.ccsens.tall.annotation.MustLoginTall;
+import com.ccsens.tall.bean.dto.InputDocDto;
+import com.ccsens.tall.bean.dto.ProjectDto;
import com.ccsens.tall.bean.vo.ProjectVo;
import com.ccsens.tall.service.IExcelService;
import com.ccsens.tall.service.IExportWbsService;
@@ -8,13 +11,12 @@ import com.ccsens.util.JsonResponse;
import com.ccsens.util.UploadFileUtil_Servlet3;
import com.ccsens.util.WebConstant;
import com.ccsens.util.annotation.OperateType;
+import com.ccsens.util.bean.dto.QueryDto;
import io.jsonwebtoken.Claims;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -94,4 +96,39 @@ public class ExcelController {
// String s = "https://test.tall.wiki/gateway/tall/v1.0/uploads//exportWbs/2020-05-07/1588833118577.xlsx";
return JsonResponse.newInstance().ok(wbsPath);
}
+
+ @MustLoginTall
+ @ApiOperation(value = "导出成员表", notes = "")
+ @ApiImplicitParams({
+ })
+ @RequestMapping(value = "/export/member", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
+ public JsonResponse exportMember( @ApiParam @Validated @RequestBody QueryDto params) throws Exception {
+
+ String wbsPath = exportWbsService.exportMember(params.getParam(),params.getUserId());
+ return JsonResponse.newInstance().ok(wbsPath);
+ }
+
+ @OperateType(value = 1)
+ @ApiOperation(value = "导入成员表",notes = "文件大小不能超过20M,支持后缀:.xls|.xlsx")
+ @ApiImplicitParams({
+ })
+ @RequestMapping(value = "/import/member", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
+ public JsonResponse importMember(HttpServletRequest request, HttpServletResponse response,
+ @RequestParam(required = true) Part file,
+ @RequestParam(required = true) Long projectId) throws Exception {
+ Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
+
+ //1.上传文件
+ String allowedExts = "xls,xlsx";
+ String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator;
+ String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir);
+ log.info(dir+""+path);
+ //获取文件路径,文件名,和文件大小
+ String filePath = WebConstant.UPLOAD_PATH_PROJECT + File.separator + path;
+ String name = UploadFileUtil_Servlet3.getFileNameByPart(file);
+ //添加数据
+ exportWbsService.importMember(dir+""+path,currentUserId,projectId);
+ //保存文件信息、添加wps信息
+ return JsonResponse.newInstance().ok();
+ }
}
diff --git a/tall/src/main/resources/mapper_dao/ProMemberDao.xml b/tall/src/main/resources/mapper_dao/ProMemberDao.xml
index d7be6c8f..ea178cde 100644
--- a/tall/src/main/resources/mapper_dao/ProMemberDao.xml
+++ b/tall/src/main/resources/mapper_dao/ProMemberDao.xml
@@ -345,4 +345,33 @@
#{id}
+
\ No newline at end of file