From abd8a30262af3974164912750519277979327aa3 Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Wed, 28 Apr 2021 18:12:39 +0800 Subject: [PATCH] 20210428v1.6 --- mt/src/main/resources/application-test.yml | 2 +- mt/src/main/resources/application.yml | 4 +- pom.xml | 2 +- .../com/ccsens/tall/bean/vo/MemberVo.java | 24 +- .../ccsens/tall/persist/dao/ProMemberDao.java | 7 + .../ccsens/tall/service/ExportWbsService.java | 240 ++++++++++++++++-- .../ccsens/tall/service/IExcelService.java | 1 + .../tall/service/IExportWbsService.java | 19 ++ .../ccsens/tall/service/ProRoleService.java | 15 +- .../com/ccsens/tall/service/RobotService.java | 5 +- .../tall/service/TaskSubTimeService.java | 6 +- .../com/ccsens/tall/web/ExcelController.java | 45 +++- .../resources/mapper_dao/ProMemberDao.xml | 29 +++ 13 files changed, 356 insertions(+), 43 deletions(-) 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