Browse Source

4.288

recovery
hyy-alt 4 years ago
parent
commit
1269293ce8
  1. 2
      mt/src/main/resources/application-test.yml
  2. 4
      mt/src/main/resources/application.yml
  3. 2
      pom.xml
  4. 24
      tall/src/main/java/com/ccsens/tall/bean/vo/MemberVo.java
  5. 7
      tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberDao.java
  6. 240
      tall/src/main/java/com/ccsens/tall/service/ExportWbsService.java
  7. 1
      tall/src/main/java/com/ccsens/tall/service/IExcelService.java
  8. 19
      tall/src/main/java/com/ccsens/tall/service/IExportWbsService.java
  9. 20
      tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java
  10. 15
      tall/src/main/java/com/ccsens/tall/service/ProRoleService.java
  11. 1799
      tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java
  12. 5
      tall/src/main/java/com/ccsens/tall/service/RobotService.java
  13. 2
      tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java
  14. 6
      tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java
  15. 45
      tall/src/main/java/com/ccsens/tall/web/ExcelController.java
  16. 29
      tall/src/main/resources/mapper_dao/ProMemberDao.xml
  17. 3
      util/src/main/java/com/ccsens/util/CodeEnum.java

2
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/

4
mt/src/main/resources/application.yml

@ -1,6 +1,6 @@
spring:
profiles:
active: prod
include: common, util-prod
active: dev
include: common, util-dev

2
pom.xml

@ -11,7 +11,7 @@
<module>tall</module>
<!-- <module>ht</module>-->
<!-- <module>game</module>-->
<!-- <module>mt</module>-->
<module>mt</module>
<!-- <module>wisdomcar</module>-->
<module>beneficiation</module>
<!-- <module>form</module>-->

24
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<Member> 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;
}
}

7
tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberDao.java

@ -60,4 +60,11 @@ public interface ProMemberDao extends ProMemberMapper{
* @return 返回所有的成员id
*/
List<Long> getIdByUserIdAndProjectId(@Param("projectIdList")List<Long> projectIdList, @Param("currentUserId")Long currentUserId);
/**
* 通过项目id查找所有的成员信息
* @param projectId 项目id
* @return 返回所有成员信息及奖惩干系人
*/
List<MemberVo.ExportMember> queryByProjectId(@Param("projectId")Long projectId);
}

240
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<PoiUtil.PoiUtilCell> 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<MemberVo.ExportMember> exportMemberList = proMemberDao.queryByProjectId(params.getProjectId());
if(CollectionUtil.isNotEmpty(exportMemberList)){
//生成写入数据
List<List<PoiUtil.PoiUtilCell>> 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<List<PoiUtil.PoiUtilCell>> writeMember(List<MemberVo.ExportMember> exportMemberList) {
List<List<PoiUtil.PoiUtilCell>> list = new ArrayList<>();
List<PoiUtil.PoiUtilCell> 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<PoiUtil.PoiUtilCell> 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<ProMember> stakeholderList = new ArrayList<>();
// if (ObjectUtil.isNotNull(memberSheet)) {
// Set<Long> 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<ProMember> 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;
}
}

1
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);
}

19
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;
}

20
tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java

@ -56,14 +56,14 @@ public interface IProTaskDetailService {
*/
List<TaskVo.TaskListByProjectId> queryAllTaskByProjectId(Long currentUserId, TaskDto.QueryAllTaskByProjectId projectId) throws Exception;
/**
* 新增和修改交付物的方法
* @param jiaoFuWu
*/
void addAndUpdateJiaoFuWu(TaskDto.JiaoFuWu jiaoFuWu);
/**
* 新增和修改交付物的方法
* @param jiaoFuWu
*/
void addAndUpdateShuWuWenDang(TaskDto.JiaoFuWu jiaoFuWu);
// /**
// * 新增和修改交付物的方法
// * @param jiaoFuWu
// */
// void addAndUpdateJiaoFuWu(TaskDto.JiaoFuWu jiaoFuWu);
// /**
// * 新增和修改交付物的方法
// * @param jiaoFuWu
// */
// void addAndUpdateShuWuWenDang(TaskDto.JiaoFuWu jiaoFuWu);
}

15
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<ProRoleExclude> 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);
}
}

1799
tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java

File diff suppressed because it is too large

5
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() : "";

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

@ -1272,7 +1272,7 @@ public class TaskDeliverService implements ITaskDeliverService {
proTaskDeliverExample.createCriteria().andTaskDetailIdEqualTo(taskDetailId).andNameEqualTo(param.getFileName()[i]);
long l = taskDeliverDao.countByExample(proTaskDeliverExample);
if(l>0){
throw new BaseException(CodeEnum.Deliver_REPEAT);
throw new BaseException(CodeEnum.DELIVER_REPEAT);
}
//添加交付物
ProTaskDeliver proTaskDeliver = new ProTaskDeliver();

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

@ -433,7 +433,7 @@ public class TaskSubTimeService implements ITaskSubTimeService {
}
//TaskSubTime
List<ProTaskSubTime> 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<CronConstant.TaskDate> 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();

45
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<String> exportMember( @ApiParam @Validated @RequestBody QueryDto<ProjectDto.ProjectIdDto> 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();
}
}

29
tall/src/main/resources/mapper_dao/ProMemberDao.xml

@ -345,4 +345,33 @@
#{id}
</foreach>
</select>
<select id="queryByProjectId" resultType="com.ccsens.tall.bean.vo.MemberVo$ExportMember">
SELECT
a.id as mId,
a.nickname as mName,
if(a.phone != null,CONCAT('',a.phone),a.phone) as mPhone,
pm.id as sId,
pm.nickname as sName,
if(pm.phone != null,CONCAT('',pm.phone),pm.phone) as sPhone
FROM
(
SELECT
m.id,
m.stakeholder_id,
m.nickname,
m.phone
FROM
t_pro_member m
LEFT JOIN t_pro_member_role mr ON mr.member_id = m.id and mr.rec_status = 0
LEFT JOIN t_pro_role r on mr.role_id = r.id and r.rec_status = 0
WHERE
m.project_id = #{projectId}
and m.rec_status = 0
and r.parent_id not in
(SELECT id FROM t_pro_role WHERE project_id = #{projectId} and parent_id = 0 and `name` = 'MoneyStakeholder' and rec_status = 0)
GROUP BY m.id
) a
LEFT JOIN
t_pro_member pm on pm.id = a.stakeholder_id and pm.rec_status = 0 and pm.nickname != ''
</select>
</mapper>

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

@ -210,7 +210,8 @@ public enum CodeEnum {
CANNOT_DELETE_PM(170,"无法删除项目经理",true),
LABEL_TOO_LONG(171,"标签长度过长,请不要超过六个字",true),
WBS_PROJECT_NAME_REPEAT(172,"项目名称不能重复",true),
Deliver_REPEAT(173,"交付物已存在",true),
DELIVER_REPEAT(173,"交付物已存在",true),
PARENT_PROJECT_NOT_MATCHING(174,"父任务与项目不匹配",true),
;

Loading…
Cancel
Save