Browse Source

Merge branch 'pt' of dd.tall.wiki:ccsens_wiki/ccsenscloud into pt

logistics
hyy-alt 4 years ago
parent
commit
40d73cf867
  1. 10
      mt/src/main/java/com/ccsens/mt/api/CompeteController.java
  2. 32
      mt/src/main/java/com/ccsens/mt/bean/vo/CompeteVo.java
  3. 6
      mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTimeDao.java
  4. 7
      mt/src/main/java/com/ccsens/mt/service/CompeteService.java
  5. 6
      mt/src/main/java/com/ccsens/mt/service/ICompeteService.java
  6. 4
      mt/src/main/resources/application.yml
  7. 18
      mt/src/main/resources/mapper_dao/CompeteTimeDao.xml
  8. 4
      tall/src/main/java/com/ccsens/tall/bean/dto/InputDocDto.java
  9. 11
      tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java
  10. 32
      tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java
  11. 7
      tall/src/main/java/com/ccsens/tall/persist/dao/ProRoleDao.java
  12. 8
      tall/src/main/java/com/ccsens/tall/persist/dao/TaskDeliverDao.java
  13. 27
      tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java
  14. 7
      tall/src/main/java/com/ccsens/tall/service/ExcelService.java
  15. 254
      tall/src/main/java/com/ccsens/tall/service/ExportWbsService.java
  16. 8
      tall/src/main/java/com/ccsens/tall/service/IExcelService.java
  17. 10
      tall/src/main/java/com/ccsens/tall/service/IInputDocService.java
  18. 8
      tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java
  19. 14
      tall/src/main/java/com/ccsens/tall/service/ITaskDeliverService.java
  20. 27
      tall/src/main/java/com/ccsens/tall/service/InputDocService.java
  21. 11
      tall/src/main/java/com/ccsens/tall/service/LwbsService.java
  22. 44
      tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java
  23. 26
      tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java
  24. 3
      tall/src/main/java/com/ccsens/tall/service/UserInfoService.java
  25. 25
      tall/src/main/java/com/ccsens/tall/web/InputDocController.java
  26. 10
      tall/src/main/java/com/ccsens/tall/web/TaskController.java
  27. 4
      tall/src/main/resources/application.yml
  28. 13
      tall/src/main/resources/mapper_dao/DeliverDao.xml
  29. 3
      tall/src/main/resources/mapper_dao/ProMemberDao.xml
  30. 15
      tall/src/main/resources/mapper_dao/ProRoleDao.xml
  31. 1
      tall/src/main/resources/mapper_dao/ProTaskInputDocDao.xml
  32. 65
      tall/src/main/resources/mapper_dao/TaskDetailDao.xml
  33. 4
      tcm/src/main/java/com/ccsens/tcm/bean/vo/BiologicalSamplesVo.java
  34. 4
      tcm/src/main/java/com/ccsens/tcm/bean/vo/PatientVo.java
  35. 1
      tcm/src/main/java/com/ccsens/tcm/service/PatientService.java
  36. 4
      tcm/src/main/resources/application.yml
  37. 16
      tcm/src/main/resources/mapper_dao/PatientDao.xml
  38. 25
      util/src/test/java/com/ccsens/util/KeyTest.java
  39. 4
      util/src/test/java/com/ccsens/util/TestQrCord.java
  40. 32
      util/src/test/java/com/ccsens/util/VideoTest.java

10
mt/src/main/java/com/ccsens/mt/api/CompeteController.java

@ -34,6 +34,16 @@ public class CompeteController {
@Resource
private ICompeteService competeService;
@ApiOperation(value = "查看比赛列表", notes = "")
@RequestMapping(value = "/competeTimeList", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<CompeteVo.CompeteTime> getCompeteTimeList() {
log.info("查看比赛列表");
List<CompeteVo.CompeteTimeList> competeTime = competeService.getCompeteTimeList();
return JsonResponse.newInstance().ok(competeTime);
}
@MustLogin
@ApiOperation(value = "查看当前是第几届比赛", notes = "")
@RequestMapping(value = "/competeTime", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})

32
mt/src/main/java/com/ccsens/mt/bean/vo/CompeteVo.java

@ -46,6 +46,38 @@ public class CompeteVo {
@ApiModelProperty("进行的阶段,0报名阶段 1比赛进行阶段,2评审阶段,3结束")
private byte competeStatus;
}
@Data
@ApiModel("查找比赛列表")
public static class CompeteTimeList{
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("名字")
private String name;
@ApiModelProperty("类型")
private byte type;
@ApiModelProperty("开始时间")
private Long startTime;
@ApiModelProperty("结束时间")
private Long endTime;
@ApiModelProperty("报名开始时间")
private Long signUpStartTime;
@ApiModelProperty("报名结束时间")
private Long signUpEndTime;
@ApiModelProperty("进行的阶段,0未开始报名 1报名中 2报名已结束")
private byte competeStatus;
public byte getCompeteStatus() {
if(signUpStartTime > System.currentTimeMillis()){
return 0;
}else if(signUpEndTime > System.currentTimeMillis()){
return 2;
}else {
return 1;
}
}
}
@Data
@ApiModel("查找组别")
public static class CompeteGroup {

6
mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTimeDao.java

@ -63,4 +63,10 @@ public interface CompeteTimeDao extends CompeteTimeMapper {
* @return
*/
List<VideoProjectVo.GetTwoProject> selectTwoProject(@Param("teamId")Long teamId);
/**
* 查询2021比赛列表
* @return
*/
List<CompeteVo.CompeteTimeList> getCompeteTimeList();
}

7
mt/src/main/java/com/ccsens/mt/service/CompeteService.java

@ -95,8 +95,6 @@ public class CompeteService implements ICompeteService {
private CompeteScoreDao competeScoreDao;
@Resource
private CompeteCountScoreMapper competeCountScoreMapper;
// @Resource
// private CompetePlayerMapper competePlayerMapper;
@Resource
private CompeteJudgmentMapper competeJudgmentMapper;
@Resource
@ -349,6 +347,11 @@ public class CompeteService implements ICompeteService {
return competeTimeDao.getCompeteTimeByType(competeType.getType(), System.currentTimeMillis());
}
@Override
public List<CompeteVo.CompeteTimeList> getCompeteTimeList() {
return competeTimeDao.getCompeteTimeList();
}
/**
* 查看组别
*/

6
mt/src/main/java/com/ccsens/mt/service/ICompeteService.java

@ -228,6 +228,12 @@ public interface ICompeteService {
* @return
*/
CompeteVo.OneScore getResult(ScoreDto.OneScore param);
/**
* 查看比赛列表
* @return
*/
List<CompeteVo.CompeteTimeList> getCompeteTimeList();
}

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

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

18
mt/src/main/resources/mapper_dao/CompeteTimeDao.xml

@ -37,7 +37,22 @@
and
end_time &gt; #{time}
</select>
<select id="getCompeteTimeList" resultType="com.ccsens.mt.bean.vo.CompeteVo$CompeteTimeList">
SELECT
id,
`name`,
type,
start_time as startTime,
end_time as endTime,
sign_up_start_time as signUpStartTime,
sign_up_end_time as signUpEndTime
FROM
`t_compete_time`
WHERE
rec_status = 0
and
FROM_UNIXTIME( sign_up_start_time / 1000, '%Y' ) = 2021
</select>
<select id="queryCompeteGroupByType" parameterType="java.util.Map" resultType="com.ccsens.mt.bean.vo.CompeteVo$CompeteGroup">
SELECT
id as groupId,
@ -143,4 +158,5 @@
and t.rec_status = 0
and p.rec_status = 0
</select>
</mapper>

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

@ -138,7 +138,7 @@ public class InputDocDto {
@Data
@ApiModel("添加交付物")
public static class addTaskDeliver {
public static class AddTaskDeliver {
@NotNull(message = "请选择要添加交付物的任务")
@ApiModelProperty("任务id")
private Long taskId;
@ -149,7 +149,7 @@ public class InputDocDto {
@Data
@ApiModel("删除交付物")
public static class deleteTaskDeliver {
public static class DeleteTaskDeliver {
@NotNull(message = "请选择要删除的交付物")
@ApiModelProperty("交付物id")
private Long deliverId;

11
tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java

@ -483,4 +483,15 @@ public class TaskDto {
@ApiModelProperty("交付物名称")
public String names;
}
@Data
@ApiModel
public static class AboutWeekTask {
@ApiModelProperty("项目id")
private List<Long> projectIds;
@ApiModelProperty("开始时间")
private Long startTime;
@ApiModelProperty("结束时间")
private Long endTime;
}
}

32
tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java

@ -13,6 +13,7 @@ import lombok.Setter;
import javax.validation.constraints.NotNull;
import java.io.ByteArrayInputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@Data
@ -148,7 +149,7 @@ public class TaskVo {
@ApiModelProperty("插件")
private List<PluginVo> plugins;
@ApiModelProperty("二级任务")
private List<NormalTask> secondTasks;
private List<NormalTask> secondTasks = new ArrayList<>();
@ApiModelProperty("时间状态 0:正常 1:任务开始 2:任务结束")
private Byte timeStatus = 0;
@ApiModelProperty("当前周期内任务的序号")
@ -522,4 +523,33 @@ public class TaskVo {
@ApiModelProperty("二级任务")
private List<TaskListByProjectId> secondTasks;
}
@Data
@ApiModel("周会任务相关")
public static class AboutWeekTask {
@JsonIgnore
@ApiModelProperty("任务详情名称")
private String detailId;
@ApiModelProperty("任务详情名称")
private String detailName;
@ApiModelProperty("任务结束时间")
private Long taskOverTime;
@ApiModelProperty("任务时长")
private Long taskMin;
@ApiModelProperty("任务完成状态:0未开始 1进行中 2已结束")
private Integer taskOverStatus;
@ApiModelProperty("交付物")
private List<WeekTaskOfDeliver> delivers;
}
@Data
@ApiModel("周任务下的交付物")
public static class WeekTaskOfDeliver {
@ApiModelProperty("交付物名称")
private String deliverName;
@ApiModelProperty("交付物上传状态")
private Byte deliverUploadOfStatus;
@ApiModelProperty("交付物检查状态")
private Byte deliverCheckOfStatus;
}
}

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

@ -128,7 +128,12 @@ public interface ProRoleDao extends ProRoleMapper{
*/
List<ProjectVo.RolesOfNoLook> selectRoleOfNoLook(Long roleId);
/**
* 查找项目内的奖惩干系人信息
* @param projectId
* @return
*/
ProRole getMoneyStakeholder(@Param("projectId") Long projectId);
// /**

8
tall/src/main/java/com/ccsens/tall/persist/dao/TaskDeliverDao.java

@ -2,6 +2,7 @@ package com.ccsens.tall.persist.dao;
import com.ccsens.tall.bean.vo.DeliverVo;
import com.ccsens.tall.bean.vo.ProjectVo;
import com.ccsens.tall.bean.vo.TaskVo;
import com.ccsens.tall.bean.vo.WbsVo;
import com.ccsens.tall.persist.mapper.ProTaskDeliverMapper;
import org.apache.ibatis.annotations.Param;
@ -47,4 +48,11 @@ public interface TaskDeliverDao extends ProTaskDeliverMapper{
* @return 项目经理的id
*/
List<Long> selectPMIdByDeliverId(Long deliverId);
/**
* 查看每周任务下的交付物
* @param detailId 任务详情id
* @return 交付物
*/
List<TaskVo.WeekTaskOfDeliver> selectWeekTaskOfDeliver(String detailId);
}

27
tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java

@ -68,7 +68,8 @@ public interface TaskDetailDao extends ProTaskDetailMapper {
* @param startTime 开始时间
* @param endTime 结束时间
* @param userId 当前用户的userId
* @return
* @param roleIds 角色id
* @return lwb任务
*/
List<TaskVo.NormalTask> queryLwbsByProjectId(@Param("projectId")Long projectId, @Param("startTime")Long startTime, @Param("endTime")Long endTime, @Param("userId")Long userId,@Param("roleIds") List<Long> roleIds);
@ -78,4 +79,28 @@ public interface TaskDetailDao extends ProTaskDetailMapper {
* @return 项目经理id
*/
Long selectPmByTaskId(Long id);
/**
* 通过项目id和用户id查询角色信息
* @param projectIds 项目id List
* @param userId 用户id
* @return 角色id List
*/
List<Long> selectAllRolesOfProject(@Param("projectIds") List<Long> projectIds,@Param("userId") Long userId);
/**
* 查找此负责人下的任务
* @param roleIds 负责人id List
* @param startTime 开始时间
* @param endTime 结束时间
* @return 分解任务 List
*/
List<TaskVo.AboutWeekTask> selectTaskByExecutorRoleId(@Param("roleIds") List<Long> roleIds,@Param("startTime") Long startTime,@Param("endTime") Long endTime);
/**
* 根据任务详情id查询二级任务
* @param detailId 任务详情id
* @return 二级任务
*/
List<TaskVo.NormalTask> getSecondTasks(Long detailId);
}

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

@ -618,7 +618,7 @@ public class ExcelService implements IExcelService {
}
}
//TODO 每个成员都关注此项目(暂时)
addUserAttention(userIdSet, sysProject);
addUserAttention(userIdSet, sysProject.getId());
} else {
throw new BaseException(CodeEnum.WBS_NOT_MEMBER_SHEET);
}
@ -627,13 +627,14 @@ public class ExcelService implements IExcelService {
/**
* 项目成员表内的每个人都关注此项目暂时当前版本
*/
private void addUserAttention(Set<Long> userIdList, SysProject sysProject) {
@Override
public void addUserAttention(Set<Long> userIdList, Long sysProjectId) {
if (CollectionUtil.isNotEmpty(userIdList)) {
for (Long userId : userIdList) {
UserAttention userAttention = new UserAttention();
userAttention.setId(snowflake.nextId());
userAttention.setUserId(userId);
userAttention.setProjectId(sysProject.getId());
userAttention.setProjectId(sysProjectId);
userAttentionService.saveAttention(userAttention);
}
}

254
tall/src/main/java/com/ccsens/tall/service/ExportWbsService.java

@ -59,15 +59,13 @@ public class ExportWbsService implements IExportWbsService{
@Resource
private SysPluginDao sysPluginDao;
@Resource
private TaskDeliverService taskDeliverService;
@Resource
private ProTaskDetailService taskDetailService;
@Resource
private ProRoleService proRoleService;
@Resource
private IUserService userService;
@Resource
private Snowflake snowflake;
@Resource
private IExcelService excelService;
@Override
public String exportWbs(Long projectId) throws Exception {
@ -973,109 +971,138 @@ public class ExportWbsService implements IExportWbsService{
@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);
//验证权限
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("项目成员表");
if (ObjectUtil.isNull(memberSheet)) {
throw new BaseException(CodeEnum.WBS_NOT_MEMBER_SHEET);
}
// //存储表内的成员信息
// Map<String,String> mapName = new HashMap<>();
// Map<String,String> mapPhone = new HashMap<>();
// //存储奖惩干系人信息
// Map<String,String> sMapName = new HashMap<>();
// Map<String,String> sMapPhone = new HashMap<>();
//存成员
List<ProMember> memberList = new ArrayList<>();
//存奖惩干系人
List<ProMember> stakeholderList = new ArrayList<>();
//存储添加的成员和奖惩干系人的userId,为了关注此项目
Set<Long> userIdSet = new HashSet<>();
//查询项目内的奖惩干系人角色
ProRole proStakeholder = proRoleDao.getMoneyStakeholder(projectId);
//手机号格式
String regex ="^[1]([3-9])[0-9]{9}$";
//循环读取信息
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));
//成员名不存在,跳过
if ((StrUtil.isEmpty(memberCell))) {
continue;
}
//成员手机号不能为空
if (StrUtil.isEmpty(phoneCell)) {
throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(memberSheet.getSheetName(), (i + 1), memberCell));
}
//验证手机号格式
if (!phoneCell.matches(regex)) {
throw new BaseException(CodeEnum.WBS_PHONE_ERROR.addMsg(memberSheet.getSheetName(), (i + 1), memberCell));
}
//处理奖惩干系人
ProMember stakeholder = null;
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(proStakeholder.getId());
proMemberRoleDao.insertSelective(proMemberRole);
} else {
throw new BaseException(CodeEnum.WBS_STAKEHOLDER_PHONE.addMsg(memberSheet.getSheetName(), (i + 1), stakeholderCell));
}
}
//检查成员在此项目中是否已存在
ProMemberExample nameExample = new ProMemberExample();
nameExample.createCriteria().andProjectIdEqualTo(projectId).andNicknameEqualTo(memberCell);
long l2 = proMemberDao.countByExample(nameExample);
if(l2 > 0){
throw new BaseException(CodeEnum.WBS_REPEAT_MEMBER_PHONE.addMsg(memberSheet.getSheetName(),(i+1),memberCell));
}
//校验手机号是否已存在
ProMemberExample phoneExample = new ProMemberExample();
phoneExample.createCriteria().andProjectIdEqualTo(projectId).andPhoneEqualTo(phoneCell);
long l1 = proMemberDao.countByExample(phoneExample);
if(l1 > 0){
throw new BaseException(CodeEnum.WBS_REPEAT_MEMBER_PHONE.addMsg(memberSheet.getSheetName(),(i+1),phoneCell));
}
// ProMemberExample example = new ProMemberExample();
// ProMemberExample.Criteria c1 = example.createCriteria();
// c1.andProjectIdEqualTo(projectId).andPhoneEqualTo(phoneCell);
//
// 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)));
// }
// }
// ProMemberExample.Criteria c2 = example.createCriteria();
// c2.andProjectIdEqualTo(projectId).andNicknameEqualTo(memberCell);
// example.or(c2);
// long l3 = proMemberDao.countByExample(example);
// if(l3 > 0){
// throw new BaseException(CodeEnum.WBS_REPEAT_MEMBER_PHONE.addMsg(memberSheet.getSheetName(),(i+1),phoneCell));
// }
// //TODO 每个成员都关注此项目(暂时)
// addUserAttention(userIdSet, sysProject);
// } else {
// throw new BaseException(CodeEnum.WBS_NOT_MEMBER_SHEET);
// }
//成员
if (!memberAndPhoneRepeat(memberList, memberCell, phoneCell)) {
Long userId = userService.selectUserIdByPhone(phoneCell);
if (ObjectUtil.isNotNull(userId)) {
userIdSet.add(userId);
}
ProMember member = new ProMember();
member.setId(snowflake.nextId());
member.setProjectId(projectId);
member.setUserId(userId);
member.setNickname(memberCell);
member.setPhone(phoneCell);
if (ObjectUtil.isNotNull(stakeholder)) {
member.setStakeholderId(stakeholder.getId());
}
proMemberDao.insertSelective(member);
memberList.add(member);
}
}
//TODO 每个成员都关注此项目(暂时)
excelService.addUserAttention(userIdSet, projectId);
}
private boolean stakeholderWithPhone(List<ProMember> stakeholderList, String stakeholderName, String phone) {
@ -1094,4 +1121,21 @@ public class ExportWbsService implements IExportWbsService{
}
return false;
}
/**
* 判断成员和手机号是否重复
*/
private boolean memberAndPhoneRepeat(List<ProMember> proMembers, String memberName, String phone) {
if (CollectionUtil.isNotEmpty(proMembers)) {
for (ProMember proMember : proMembers) {
if (proMember.getNickname().equalsIgnoreCase(memberName)) {
return true;
}
if (proMember.getPhone().equalsIgnoreCase(phone)) {
return true;
}
}
}
return false;
}
}

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

@ -1,10 +1,12 @@
package com.ccsens.tall.service;
import com.ccsens.tall.bean.po.SysProject;
import com.ccsens.tall.bean.vo.ProjectVo;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javax.servlet.http.Part;
import java.util.Set;
public interface IExcelService {
/**
@ -36,4 +38,10 @@ public interface IExcelService {
*/
void saveWbsExcelFile(Long userId,Long projectId,String filePath, String fileName,Long fileSize,Long wpsFileId);
/**
* 用户关注项目
* @param userIdList
* @param projectId
*/
void addUserAttention(Set<Long> userIdList, Long projectId);
}

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

@ -38,17 +38,17 @@ public interface IInputDocService {
/**
* 查看文档文件上传记录
*
* @param param
* @return
* @param param 入参
* @return 历史记录
*/
List<InputDocVo.HistoryRecord> viewDocHistory(InputDocDto.ViewDocHistory param);
/**
* 添加输入文档
*
* @param param
* @param param 入参
*/
void addDoc(InputDocDto.AddDoc param);
TaskVo.NormalTask addDoc(InputDocDto.AddDoc param,Long userId) throws Exception;
/**
* 修改输入文档
@ -107,6 +107,6 @@ public interface IInputDocService {
*
* @param param
*/
void deleteDoc(InputDocDto.DeleteDoc param);
TaskVo.NormalTask deleteDoc(InputDocDto.DeleteDoc param,Long userId) throws Exception;
}

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

@ -56,6 +56,14 @@ public interface IProTaskDetailService {
*/
List<TaskVo.TaskListByProjectId> queryAllTaskByProjectId(Long currentUserId, TaskDto.QueryAllTaskByProjectId projectId) throws Exception;
/**
* 周会任务相关
* @param param 参数
* @param userId 用户id
* @return 周会相关
*/
List<TaskVo.AboutWeekTask> selectAboutWeekTask(TaskDto.AboutWeekTask param, Long userId);
// /**
// * 新增和修改交付物的方法
// * @param jiaoFuWu

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

@ -44,25 +44,27 @@ public interface ITaskDeliverService {
List<DeliverVo.QueryDeliverByTaskId> queryDeliverByTaskId(Long currentUserId, Long taskId);
/**
* 删除输出文档下所有的文件
* @param param
* @param param 参数
*/
void delAllFileOfDeliver(DeliverDto.DelAllFileOfDeliver param,Long userId) throws Exception;
/**
* 修改输出文档下的备注信息
* @param param
* @param param 参数
*/
void updateRemarkOfDeliver(DeliverDto.UpdateRemarkOfDeliver param,Long userId);
/**
* 添加交付物
* @param param
* @param param 参数
* @param userId 用户id
*/
void addTaskDeliver(InputDocDto.addTaskDeliver param);
TaskVo.NormalTask addTaskDeliver(InputDocDto.AddTaskDeliver param,Long userId) throws Exception;
/**
* 删除交付物
* @param param
* @param param 参数
* @param userId 用户id
*/
void deleteTaskDeliver(InputDocDto.deleteTaskDeliver param);
TaskVo.NormalTask deleteTaskDeliver(InputDocDto.DeleteTaskDeliver param,Long userId) throws Exception;
}

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

@ -58,6 +58,8 @@ public class InputDocService implements IInputDocService {
private IProMemberService iProMemberService;
@Resource
private TaskDeliverService taskDeliverService;
@Resource
private ProTaskDetailService taskDetailService;
// /**
@ -133,7 +135,7 @@ public class InputDocService implements IInputDocService {
}
ProTaskInputDoc doc = proTaskInputDocMapper.selectByPrimaryKey(param.getDocId());
if (ObjectUtil.isNull(doc)){
throw new BaseException("输入文档不存在或已删除");
throw new BaseException(CodeEnum.DOC_NONE);
}
//历史操作
ProDeliverHistoryRecord historyRecord = new ProDeliverHistoryRecord();
@ -253,8 +255,8 @@ public class InputDocService implements IInputDocService {
* 添加输入文档
*/
@Override
public void addDoc(InputDocDto.AddDoc param) {
public TaskVo.NormalTask addDoc(InputDocDto.AddDoc param,Long currentUserId) throws Exception {
TaskVo.NormalTask normalTask = null;
//查找任务详情id
Long taskDetailId = null;
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(param.getTaskId());
@ -267,6 +269,7 @@ public class InputDocService implements IInputDocService {
if(ObjectUtil.isNotNull(task)){
taskDetailId = task.getId();
}
taskDetail = taskDetailDao.selectByPrimaryKey(taskDetailId);
}
}
if(taskDetailId == null) {
@ -288,7 +291,8 @@ public class InputDocService implements IInputDocService {
proTaskInputDoc.setName(param.getFileName()[i]);
proTaskInputDocMapper.insertSelective(proTaskInputDoc);
}
normalTask = taskDetailService.getTaskInfoByTaskId(currentUserId, taskDetail.getProjectId(), param.getTaskId(), null);
return normalTask;
}
/**
@ -601,16 +605,25 @@ public class InputDocService implements IInputDocService {
/**
* 删除输入文档
*
* @param param
* @param param 参数
*/
@Override
public void deleteDoc(InputDocDto.DeleteDoc param) {
public TaskVo.NormalTask deleteDoc(InputDocDto.DeleteDoc param,Long currentUserId) throws Exception {
TaskVo.NormalTask taskById = null;
ProTaskInputDoc proTaskInputDoc = proTaskInputDocMapper.selectByPrimaryKey(param.getDocId());
if (ObjectUtil.isNotNull(proTaskInputDoc)){
proTaskInputDoc.setRecStatus(WebConstant.REC_STATUS.Deleted.value);
proTaskInputDocMapper.updateByPrimaryKeySelective(proTaskInputDoc);
//proTaskInputDocMapper.updateByPrimaryKey(proTaskInputDoc);
}else{
throw new BaseException(CodeEnum.DOC_NONE);
}
ProTaskDetail taskDetail = proTaskDetailMapper.selectByPrimaryKey(proTaskInputDoc.getTaskDetailId());
if (ObjectUtil.isNotNull(taskDetail)){
taskById = taskDetailService.getTaskInfoByTaskId(currentUserId, taskDetail.getProjectId(), taskDetail.getId(), null);
}
return taskById;
}

11
tall/src/main/java/com/ccsens/tall/service/LwbsService.java

@ -1,13 +1,9 @@
package com.ccsens.tall.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.tall.bean.dto.LwbsDto;
import com.ccsens.tall.bean.po.ProRole;
import com.ccsens.tall.bean.po.ProShow;
import com.ccsens.tall.bean.po.ProShowExample;
import com.ccsens.tall.bean.po.ProSubTimeMember;
import com.ccsens.tall.bean.vo.LwbsVo;
import com.ccsens.tall.bean.vo.TaskVo;
import com.ccsens.tall.persist.dao.SysProjectDao;
@ -121,6 +117,13 @@ public class LwbsService implements ILwbsService{
TaskUtil.Task task = TaskUtil.splitTask(taskList, param.getStartTime(), param.getEndTime(), param.getProcess());
proTaskInfo.setGlobalTaskList(task.getGlobal());
proTaskInfo.setNormalTaskList(task.getCommonTask());
//查看普通任务下是否有子任务
if (CollectionUtil.isNotEmpty(proTaskInfo.getNormalTaskList())){
for (TaskVo.NormalTask normalTask : proTaskInfo.getNormalTaskList()) {
List<TaskVo.NormalTask> secondTasks = taskDetailDao.getSecondTasks(normalTask.getDetailId());
normalTask.getSecondTasks().addAll(secondTasks);
}
}
}
}
return proTaskInfo;

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

@ -112,11 +112,13 @@ public class ProTaskDetailService implements IProTaskDetailService {
taskInfoByRoleId.setEndTime(taskInfoByRoleId.getEndTime() == null ? sysProject.getEndTime() : taskInfoByRoleId.getEndTime());
Object obj = null;
ProRole role = proRoleDao.selectByPrimaryKey(taskInfoByRoleId.getRoleId()); //查到了项目下的角色信息
//查到了项目下的角色信息
ProRole role = proRoleDao.selectByPrimaryKey(taskInfoByRoleId.getRoleId());
if (ObjectUtil.isNull(role)) {
throw new BaseException(CodeEnum.NOT_ROLE);
}
ProRole parentRole = proRoleDao.selectByPrimaryKey(role.getParentId()); //查到了项目下的父角色信息
//查到了项目下的父角色信息
ProRole parentRole = proRoleDao.selectByPrimaryKey(role.getParentId());
if (ObjectUtil.isNull(parentRole)) {
throw new BaseException(CodeEnum.NOT_ROLE);
}
@ -911,8 +913,10 @@ public class ProTaskDetailService implements IProTaskDetailService {
//根据任务id查询项目下项目经理
Long pmId = taskDetailDao.selectPmByTaskId(task.getId());
ProRole proRole = proRoleDao.selectByPrimaryKey(pmId);
taskDetail.setCheckerRole(proRole.getId());
taskDetail.setCheckerRoleName(proRole.getName());
if (ObjectUtil.isNotNull(proRole)){
taskDetail.setCheckerRole(proRole.getId());
taskDetail.setCheckerRoleName(proRole.getName());
}
}
}
@ -1847,6 +1851,38 @@ public class ProTaskDetailService implements IProTaskDetailService {
return taskList;
}
/**
*
* @param param 参数
* @param userId 用户id
* @return 周会相关
*/
@Override
public List<TaskVo.AboutWeekTask> selectAboutWeekTask(TaskDto.AboutWeekTask param, Long userId) {
List<TaskVo.AboutWeekTask> weekTaskList = new ArrayList<>();
if (CollectionUtil.isEmpty(param.getProjectIds())){
throw new BaseException(CodeEnum.NOT_PROJECT);
}
//如果未传开始结束时间,获取本周的开始和结束时间
Long startTime = param.getStartTime() == null ? cn.hutool.core.date.DateUtil.beginOfWeek(new Date()).getTime() : param.getStartTime();
Long endTime = param.getEndTime() == null ? cn.hutool.core.date.DateUtil.endOfWeek(new Date()).getTime() : param.getEndTime();
//查询当前用户在项目中所属的角色
List<Long> roleIds = taskDetailDao.selectAllRolesOfProject(param.getProjectIds(),userId);
if(CollectionUtil.isNotEmpty(roleIds)){
//查找每周任务相关
weekTaskList = taskDetailDao.selectTaskByExecutorRoleId(roleIds,startTime,endTime);
if(CollectionUtil.isNotEmpty(weekTaskList)){
for (TaskVo.AboutWeekTask weekTask : weekTaskList) {
List<TaskVo.WeekTaskOfDeliver> weekTaskOfDelivers = taskDeliverDao.selectWeekTaskOfDeliver(weekTask.getDetailId());
weekTask.setDelivers(weekTaskOfDelivers);
}
}
}
return weekTaskList;
}
/**
* 新增和修改交付物
* @param jiaoFuWu

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

@ -82,6 +82,8 @@ public class TaskDeliverService implements ITaskDeliverService {
private IProMemberService iProMemberService;
@Resource
private ProDeliverHistoryRecordDao deliverHistoryRecordDao;
@Resource
private ProTaskDetailService taskDetailService;
@Override
public void saveDeliver(ProTaskDeliver taskDeliver) {
@ -1244,20 +1246,27 @@ public class TaskDeliverService implements ITaskDeliverService {
/**
* 添加交付物
* @param param
* @param param 参数
*/
@Override
public void addTaskDeliver(InputDocDto.addTaskDeliver param) {
public TaskVo.NormalTask addTaskDeliver(InputDocDto.AddTaskDeliver param,Long userId) throws Exception {
TaskVo.NormalTask normalTask;
//查找任务详情id
Long taskDetailId = null;
//查找项目id
Long projectId = null;
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(param.getTaskId());
if(ObjectUtil.isNotNull(taskDetail)){
taskDetailId = taskDetail.getId();
projectId = taskDetail.getProjectId();
}else {
ProTaskSubTime proTaskSubTime = taskSubTimeDao.selectByPrimaryKey(param.getTaskId());
if(ObjectUtil.isNotNull(proTaskSubTime)){
ProTaskDetail task = taskDetailDao.selectByPrimaryKey(proTaskSubTime.getTaskDetailId());
if(ObjectUtil.isNotNull(task)){
projectId = task.getId();
taskDetailId = task.getId();
}
}
@ -1283,15 +1292,26 @@ public class TaskDeliverService implements ITaskDeliverService {
proTaskDeliver.setIsInput(0);
taskDeliverDao.insertSelective(proTaskDeliver);
}
normalTask = taskDetailService.getTaskInfoByTaskId(userId, projectId, param.getTaskId(), null);
return normalTask;
}
@Override
public void deleteTaskDeliver(InputDocDto.deleteTaskDeliver param) {
public TaskVo.NormalTask deleteTaskDeliver(InputDocDto.DeleteTaskDeliver param,Long userId) throws Exception {
TaskVo.NormalTask normalTask = null;
ProTaskDeliver proTaskDeliver = taskDeliverDao.selectByPrimaryKey(param.getDeliverId());
if (ObjectUtil.isNotNull(proTaskDeliver)){
proTaskDeliver.setRecStatus(WebConstant.REC_STATUS.Deleted.value);
taskDeliverDao.updateByPrimaryKeySelective(proTaskDeliver);
}
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(proTaskDeliver.getTaskDetailId());
if (ObjectUtil.isNotNull(taskDetail)){
normalTask = taskDetailService.getTaskInfoByTaskId(userId, taskDetail.getProjectId(),taskDetail.getId(), null);
}
return normalTask;
}
}

3
tall/src/main/java/com/ccsens/tall/service/UserInfoService.java

@ -67,9 +67,10 @@ public class UserInfoService implements IUserInfoService{
//检查数据库内账号是否存在
SysAuthExample sysAuthExample = new SysAuthExample();
sysAuthExample.createCriteria().andIdentifyTypeEqualTo((byte) WebConstant.IDENTIFY_TYPE.Account.value)
.andIdentifierEqualTo(changeAccount.getAccount());
.andIdentifierEqualTo(changeAccount.getAccount()).andUserIdNotEqualTo(userId);
List<SysAuth> sysAuthList = sysAuthDao.selectByExample(sysAuthExample);
if(CollectionUtil.isNotEmpty(sysAuthList)){
redisUtil.del(accountKey);
throw new BaseException(CodeEnum.ALREADY_EXIST_ACCOUNT);
}
//修改账号

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

@ -6,6 +6,7 @@ import com.ccsens.tall.bean.dto.InputDocDto;
import com.ccsens.tall.bean.dto.LabelDto;
import com.ccsens.tall.bean.vo.InputDocVo;
import com.ccsens.tall.bean.vo.LabelVo;
import com.ccsens.tall.bean.vo.TaskVo;
import com.ccsens.tall.service.IInputDocService;
import com.ccsens.tall.service.TaskDeliverService;
import com.ccsens.util.JsonResponse;
@ -85,41 +86,41 @@ public class InputDocController {
@MustLoginTall
@ApiOperation(value = "给任务添加输入文档", notes = "1007:添加输入文档")
@RequestMapping(value = "/addDoc", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse addDoc(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.AddDoc> params) {
public JsonResponse<TaskVo.NormalTask> addDoc(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.AddDoc> params) throws Exception {
log.info("添加输入文档:{}",params);
iInputDocService.addDoc(params.getParam());
TaskVo.NormalTask normalTask= iInputDocService.addDoc(params.getParam(),params.getUserId());
log.info("添加输入文档");
return JsonResponse.newInstance().ok();
return JsonResponse.newInstance().ok(normalTask);
}
@MustLoginTall
@ApiOperation(value = "删除任务下的输入文档", notes = "1007:删除输入文档")
@RequestMapping(value = "/deleteDoc", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse deleteDoc(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.DeleteDoc> params) {
public JsonResponse<TaskVo.NormalTask> deleteDoc(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.DeleteDoc> params) throws Exception {
log.info("删除输入文档:{}",params);
iInputDocService.deleteDoc(params.getParam());
TaskVo.NormalTask normalTask = iInputDocService.deleteDoc(params.getParam(),params.getUserId());
log.info("删除输入文档");
return JsonResponse.newInstance().ok();
return JsonResponse.newInstance().ok(normalTask);
}
@MustLoginTall
@ApiOperation(value = "给任务添加交付物", notes = "1007:添加交付物")
@RequestMapping(value = "/addTaskDeliver", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse addTaskDeliver(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.addTaskDeliver> params) {
public JsonResponse<TaskVo.NormalTask> addTaskDeliver(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.AddTaskDeliver> params) throws Exception {
log.info("添加交付物:{}",params);
taskDeliverService.addTaskDeliver(params.getParam());
TaskVo.NormalTask normalTask = taskDeliverService.addTaskDeliver(params.getParam(),params.getUserId());
log.info("添加交付物");
return JsonResponse.newInstance().ok();
return JsonResponse.newInstance().ok(normalTask);
}
@MustLoginTall
@ApiOperation(value = "删除任务下的交付物", notes = "1007:删除交付物")
@RequestMapping(value = "/deleteTaskDeliver", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse deleteTaskDeliver(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.deleteTaskDeliver> params) {
public JsonResponse<TaskVo.NormalTask> deleteTaskDeliver(@ApiParam @Validated @RequestBody QueryDto<InputDocDto.DeleteTaskDeliver> params) throws Exception {
log.info("删除交付物:{}",params);
taskDeliverService.deleteTaskDeliver(params.getParam());
TaskVo.NormalTask normalTask = taskDeliverService.deleteTaskDeliver(params.getParam(),params.getUserId());
log.info("删除交付物");
return JsonResponse.newInstance().ok();
return JsonResponse.newInstance().ok(normalTask);
}

10
tall/src/main/java/com/ccsens/tall/web/TaskController.java

@ -1,6 +1,7 @@
package com.ccsens.tall.web;
import cn.hutool.core.date.DateUtil;
import com.ccsens.tall.annotation.MustLoginTall;
import com.ccsens.tall.bean.dto.ProjectDto;
import com.ccsens.tall.bean.dto.TaskDto;
import com.ccsens.tall.bean.vo.TaskVo;
@ -9,6 +10,7 @@ import com.ccsens.tall.service.ITaskSubTimeService;
import com.ccsens.util.JsonResponse;
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.*;
import lombok.extern.slf4j.Slf4j;
@ -312,4 +314,12 @@ public class TaskController {
TaskVo.NormalTask taskInfo = taskDetailService.updateTaskConfig(currentUserId,updateTaskConfig);
return JsonResponse.newInstance().ok(taskInfo);
}
@MustLoginTall
@ApiOperation(value = "周会任务相关",notes = "")
@RequestMapping(value = "/aboutWeekTask", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<TaskVo.AboutWeekTask>> aboutWeekTask(@ApiParam @Validated @RequestBody QueryDto<TaskDto.AboutWeekTask> params) throws Exception {
List<TaskVo.AboutWeekTask> aboutWeekTask = taskDetailService.selectAboutWeekTask(params.getParam(),params.getUserId());
return JsonResponse.newInstance().ok(aboutWeekTask);
}
}

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

@ -1,5 +1,5 @@
spring:
profiles:
active: dev
include: util-dev,common
active: greenvalley
include: util-greenvalley,common

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

@ -299,6 +299,7 @@
t_pro_task_deliver AS ptd
WHERE
ptd.task_detail_id = #{taskId}
AND ptd.rec_status = 0
</select>
<select id="selectPMIdByDeliverId" resultType="java.lang.Long">
@ -334,4 +335,16 @@
`name` = 'PM'
)
</select>
<select id="selectWeekTaskOfDeliver" resultType="com.ccsens.tall.bean.vo.TaskVo$WeekTaskOfDeliver">
SELECT
td.name AS deliverName,
td.check_status AS deliverCheckOfStatus,
td.is_upload AS deliverUploadOfStatus
FROM
t_pro_task_deliver AS td
WHERE
td.task_detail_id = #{detailId}
and td.rec_status = 0
</select>
</mapper>

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

@ -170,7 +170,7 @@
t.sAccount as sAccount,
t.sPhone as sPhone
FROM
t_pro_member m LEFT JOIN t_pro_member_role mr on mr.member_id = m.id
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 r.id = mr.role_id
LEFT JOIN t_sys_auth a on a.user_id = m.user_id and a.identify_type = 3 and a.rec_status = 0
LEFT JOIN
@ -198,7 +198,6 @@
(r.rec_status = 0 or r.rec_status is null)
and
m.project_id = #{projectId}
and mr.rec_status = 0
</select>
<select id="getMemberInfoByMemberId" parameterType="java.util.Map" resultMap="memberInfos">

15
tall/src/main/resources/mapper_dao/ProRoleDao.xml

@ -394,7 +394,7 @@
FROM
t_pro_role
WHERE
parent_id = (
parent_id in (
SELECT id FROM t_pro_role WHERE project_id = #{projectId} and `name` = 'PM'
)
and
@ -462,4 +462,17 @@
WHERE
r.rec_status = 0
</select>
<select id="getMoneyStakeholder" resultType="com.ccsens.tall.bean.po.ProRole">
SELECT
id,
`name`,
description
FROM
`t_pro_role`
WHERE
project_id = #{projectId}
and parent_id in
(SELECT id FROM t_pro_role WHERE name = 'MoneyStakeholder' and project_id = #{projectId})
limit 1
</select>
</mapper>

1
tall/src/main/resources/mapper_dao/ProTaskInputDocDao.xml

@ -10,6 +10,7 @@
t_pro_task_input_doc AS tid
WHERE
tid.task_detail_id = #{taskId}
AND tid.rec_status = 0
</select>
</mapper>

65
tall/src/main/resources/mapper_dao/TaskDetailDao.xml

@ -661,6 +661,7 @@
s.rec_status = 0
and d.executor_role = #{userId}
AND d.project_id = 0
AND d.parent_id = 0
order by s.begin_time
)t
LEFT JOIN
@ -761,4 +762,68 @@
`name` = 'PM'
)
</select>
<select id="selectAllRolesOfProject" resultType="java.lang.Long">
SELECT
mr.role_id
FROM
t_pro_member AS pm
LEFT JOIN t_pro_member_role AS mr ON pm.id = mr.member_id
LEFT JOIN t_pro_role AS pr ON pr.id = mr.role_id
AND mr.rec_status = 0
WHERE
pm.user_id = #{userId}
AND pm.project_id IN
<foreach collection="projectIds" open="(" close=")" separator="," item="item">
#{item}
</foreach>
</select>
<select id="selectTaskByExecutorRoleId" resultType="com.ccsens.tall.bean.vo.TaskVo$AboutWeekTask">
SELECT
td.id AS detailId,
td.name AS detailName,
(tst.end_time-tst.begin_time) AS taskMin,
tst.end_time AS taskOverTime,
tst.complated_status AS taskOverStatus
FROM
t_pro_task_sub_time AS tst
LEFT JOIN t_pro_task_detail AS td ON tst.task_detail_id = td.id
WHERE
tst.rec_status = 0
AND td.rec_status = 0
AND td.executor_role IN
<foreach collection="roleIds" open="(" close=")" separator="," item="item">
#{item}
</foreach>
AND tst.begin_time &gt;= #{startTime}
AND tst.end_time &lt;= #{endTime}
</select>
<select id="getSecondTasks" resultType="com.ccsens.tall.bean.vo.TaskVo$NormalTask">
SELECT
td.id AS detailId,
td.executor_role AS executorRole,
td.parent_id AS parentId,
(
SELECT
`name`
FROM
t_pro_task_detail
WHERE
id = #{detailId}
) AS parentName,
td.begin_time AS beginTime,
td.end_time AS endTime,
td.priority AS priority,
td.name AS name,
tst.id AS id,
td.project_id AS projectId
FROM
t_pro_task_detail AS td
LEFT JOIN t_pro_task_sub_time AS tst ON tst.task_detail_id = td.id AND tst.rec_status = 0
WHERE
td.parent_id = #{detailId}
AND td.rec_status = 0
</select>
</mapper>

4
tcm/src/main/java/com/ccsens/tcm/bean/vo/BiologicalSamplesVo.java

@ -27,6 +27,10 @@ public class BiologicalSamplesVo {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("时间")
private Date updateAt;
@ApiModelProperty("录入人id")
private Long userId;
@ApiModelProperty("录入人名称")
private String doctorName;
}
@Data
@ApiModel("统计医院生物样本数量")

4
tcm/src/main/java/com/ccsens/tcm/bean/vo/PatientVo.java

@ -38,6 +38,10 @@ public class PatientVo {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("时间")
private Date updateAt;
@ApiModelProperty("录入人id")
private Long userId;
@ApiModelProperty("录入人名称")
private String doctorName;
}
@Data
@ApiModel("经过搜索条件查询的患者集合")

1
tcm/src/main/java/com/ccsens/tcm/service/PatientService.java

@ -94,6 +94,7 @@ public class PatientService implements IPatientService {
BeanUtils.copyProperties(param,patientInformation);
patientInformation.setId(snowflake.nextId());
patientInformation.setHospitalId(hospital.getId());
patientInformation.setUserId(userId);
// 生成编号
long incr = redisUtil.incr(StrUtil.format(Constant.Redis.HOSPITAL_NUM, hospital.getCode(), inpatient.getCode()) , 1);
DecimalFormat df=new DecimalFormat("000");

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

@ -1,5 +1,5 @@
spring:
profiles:
active: dev
include: common, util-dev
active: green
include: common, util-green

16
tcm/src/main/resources/mapper_dao/PatientDao.xml

@ -48,10 +48,13 @@
th.name as hosName,
ti.name,
ti.collection_num as collectionNum,
tpi.update_at as updateAt
tpi.update_at as updateAt,
tpi.user_id as userId,
d.`name` as doctorName
FROM
t_patient_information tpi left join t_inpatient ti on ti.rec_status=0 and ti.id=tpi.inpatient_id
left join t_hospital th on th.rec_status=0 and th.id=tpi.hospital_id
LEFT JOIN t_doctor d on tpi.user_id = d.user_id and d.rec_status = 0
WHERE
tpi.rec_status = 0
<if test="hospitalId!=null and hospitalId !=0 ">
@ -154,9 +157,12 @@
tpi.input_status AS inputStatus,
tpi.hospital_id AS hospitalId,
ti.name,
ti.collection_num as collectionNum
ti.collection_num as collectionNum,
tpi.user_id as userId,
d.`name` as doctorName
FROM
t_patient_information tpi left join t_inpatient ti on ti.rec_status=0 and ti.id=tpi.inpatient_id
LEFT JOIN t_doctor d on d.user_id = tpi.user_id and d.rec_status = 0
WHERE
tpi.rec_status =0
<if test="id != null and id!=0">
@ -393,10 +399,14 @@
t.user_id
</select>
<select id="selBiologicalSamples" resultType="com.ccsens.tcm.bean.vo.BiologicalSamplesVo$selBiolog">
select th.name,tbs.sample_type as sampleType, tpi.hospitalization, tpi.code as patientCode, tbs.code, tbs.collect_time as collectTime,tbs.update_at as updateAt
select th.name,tbs.sample_type as sampleType, tpi.hospitalization, tpi.code as patientCode, tbs.code, tbs.collect_time as collectTime,
tbs.update_at as updateAt,
tbs.user_id as userId,
d.`name` as doctorName
from t_biological_samples tbs
left join t_patient_information tpi on tpi.id=tbs.patient_information_id and tpi.rec_status=0
left join t_hospital th on th.id=tpi.hospital_id and th.rec_status=0
LEFT JOIN t_doctor d on d.user_id = tbs.user_id and d.rec_status = 0
where tbs.rec_status=0
<if test="hospitalId!=null">
and th.id=#{hospitalId}

25
util/src/test/java/com/ccsens/util/KeyTest.java

@ -24,23 +24,22 @@ public class KeyTest {
@Test
public void test3(){
// String key = "a6RlI/GctLgENUvF6DOY7w==";
String key = "g9RlI/GctLgDFJvF6DOY7w==";
String string = "sdfe@#$QW";
SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, Base64.decode(key));
String encryptHex = aes.encryptHex(string);
Console.log("{}",encryptHex);
// String key = "g9RlI/GctLgDFJvF6DOY7w==";
// String string = "sdfe@#$QW";
// SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, Base64.decode(key));
// String encryptHex = aes.encryptHex(string);
// Console.log("{}",encryptHex);
}
/**解密*/
@Test
public void test4(){
String key = "g9RlI/GctLgDFJvF6DOY7w==";
// String key = System.getenv("CCSENS_GAME");
String encryptString = "6ba13d9930a6ad888a3704376c920a75";
SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, Base64.decode(key));
//解密为字符串
String decryptStr = aes.decryptStr(encryptString, CharsetUtil.CHARSET_UTF_8);
Console.log("{}",decryptStr);
// String key = "g9RlI/GctLgDFJvF6DOY7w==";
// String encryptString = "6ba13d9930a6ad888a3704376c920a75";
// SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, Base64.decode(key));
//
// //解密为字符串
// String decryptStr = aes.decryptStr(encryptString, CharsetUtil.CHARSET_UTF_8);
// Console.log("{}",decryptStr);
}
}

4
util/src/test/java/com/ccsens/util/TestQrCord.java

@ -44,9 +44,9 @@ public class TestQrCord {
BitMatrix bitMatrix =qrCodeWriter.encode(text,BarcodeFormat.QR_CODE, 1000, 1000,hints);
//BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height);
Path path = FileSystems.getDefault().getPath(WebConstant.UPLOAD_PATH_BASE + "/" + fileName);
//Path path = FileSystems.getDefault().getPath(WebConstant.UPLOAD_PATH_BASE + "/" + fileName);
MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);
//MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);
// }
// String text = "https://test.tall.wiki/respond?groupId=1&groupName=1组";
// String fileName = "zzz/" + DateUtil.today() + "/" + 1+"组" + ".png";

32
util/src/test/java/com/ccsens/util/VideoTest.java

@ -98,22 +98,22 @@ public class VideoTest {
// 指定资源地址,下载文件测试
// downloadFile("http://1258473962.vod2.myqcloud.com/1e124671vodcq1258473962/76557f735285890810478037694/VCj25SXUgFsA.mp4", "D:/temp/");
List<Object[]> objects = PoiUtil.readExce(new File("C:\\Users\\逗\\Desktop\\跳绳比赛选手证件照.xlsx"), 0, null, 0, false);
for (int i = 0; i < objects.size(); i++) {
Object[] obj = objects.get(i);
if (obj == null || obj.length < 4) {
continue;
}
String path = (String)obj[3];
String dir = "D:\\选手证件照\\" + obj[0] + "\\" + obj[1] + "\\" + obj[2];
try{
downloadFile(path, dir);
} catch (Exception e) {
System.out.println("下载失败:" + dir);
e.printStackTrace();
}
}
// List<Object[]> objects = PoiUtil.readExce(new File("C:\\Users\\逗\\Desktop\\跳绳比赛选手证件照.xlsx"), 0, null, 0, false);
// for (int i = 0; i < objects.size(); i++) {
// Object[] obj = objects.get(i);
// if (obj == null || obj.length < 4) {
// continue;
// }
// String path = (String)obj[3];
// String dir = "D:\\选手证件照\\" + obj[0] + "\\" + obj[1] + "\\" + obj[2];
// try{
// downloadFile(path, dir);
// } catch (Exception e) {
// System.out.println("下载失败:" + dir);
// e.printStackTrace();
//
// }
// }
}
}

Loading…
Cancel
Save