Browse Source

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

pt
zy_Java 5 years ago
parent
commit
c283c7a17e
  1. 22
      cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/dto/MemberRoleDto.java
  2. 23
      cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/dto/ProjectDto.java
  3. 46
      cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/ProjectVo.java
  4. 20
      cloudutil/src/main/java/com/ccsens/cloudutil/config/FeignTokenConfig.java
  5. 37
      cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java
  6. 16
      cloudutil/src/main/resources/application-util-dev.yml
  7. 23
      tall/src/main/java/com/ccsens/tall/bean/dto/MemberDto.java
  8. 8
      tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberDao.java
  9. 8
      tall/src/main/java/com/ccsens/tall/persist/dao/ProRoleDao.java
  10. 7
      tall/src/main/java/com/ccsens/tall/service/IProMemberService.java
  11. 2
      tall/src/main/java/com/ccsens/tall/service/IProjectService.java
  12. 74
      tall/src/main/java/com/ccsens/tall/service/ProMemberService.java
  13. 64
      tall/src/main/java/com/ccsens/tall/service/ProjectService.java
  14. 12
      tall/src/main/java/com/ccsens/tall/web/MemberController.java
  15. 16
      tall/src/main/java/com/ccsens/tall/web/ProjectController.java
  16. 6
      tall/src/main/resources/application-dev.yml
  17. 5
      tall/src/main/resources/application.yml
  18. 10
      tall/src/main/resources/mapper_dao/ProMemberDao.xml
  19. 10
      tall/src/main/resources/mapper_dao/ProRoleDao.xml
  20. 2
      tcm/src/main/java/com/ccsens/tcm/service/PatientService.java
  21. 1
      util/src/main/java/com/ccsens/util/CodeEnum.java
  22. 6
      wisdomcar/src/main/java/com/ccsens/wisdomcar/api/OtherRecordsController.java
  23. 54
      wisdomcar/src/main/java/com/ccsens/wisdomcar/api/PatientAndFamilyController.java
  24. 54
      wisdomcar/src/main/java/com/ccsens/wisdomcar/api/ProjectController.java
  25. 82
      wisdomcar/src/main/java/com/ccsens/wisdomcar/api/WisdomCarController.java
  26. 16
      wisdomcar/src/main/java/com/ccsens/wisdomcar/api/WisdomCatController.java
  27. 38
      wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/CreateCaseDto.java
  28. 2
      wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/OtherRecordsDto.java
  29. 45
      wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/PatientAndFamilyDto.java
  30. 33
      wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/ProjectDto.java
  31. 30
      wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/WisdomCarDto.java
  32. 11
      wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/po/PatientWisdomCar.java
  33. 60
      wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/po/PatientWisdomCarExample.java
  34. 2
      wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/OtherRecordsVo.java
  35. 42
      wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/ProjectVo.java
  36. 21
      wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/WisdomCarVo.java
  37. 9
      wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/HospitalWrokingDao.java
  38. 7
      wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/StepDao.java
  39. 7
      wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/StepTaskDao.java
  40. 18
      wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/WisdomCarDao.java
  41. 11
      wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/WisdomCarRecordDao.java
  42. 2
      wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IOtherRecordsService.java
  43. 23
      wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IPatientAndFamilyService.java
  44. 28
      wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IProjectService.java
  45. 45
      wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IWisdomCarService.java
  46. 76
      wisdomcar/src/main/java/com/ccsens/wisdomcar/service/OtherRecordsService.java
  47. 58
      wisdomcar/src/main/java/com/ccsens/wisdomcar/service/PatientAndFamilyService.java
  48. 116
      wisdomcar/src/main/java/com/ccsens/wisdomcar/service/ProjectService.java
  49. 207
      wisdomcar/src/main/java/com/ccsens/wisdomcar/service/WisdomCarService.java
  50. 74
      wisdomcar/src/main/java/com/ccsens/wisdomcar/util/Constant.java
  51. 2
      wisdomcar/src/main/resources/application-dev.yml
  52. 16
      wisdomcar/src/main/resources/mapper_dao/HospitalWorkingDao.xml
  53. 3
      wisdomcar/src/main/resources/mapper_dao/StepDao.xml
  54. 8
      wisdomcar/src/main/resources/mapper_dao/StepTaskDao.xml
  55. 23
      wisdomcar/src/main/resources/mapper_dao/WisdomCarDao.xml
  56. 14
      wisdomcar/src/main/resources/mapper_dao/WisdomCarRecordDao.xml
  57. 29
      wisdomcar/src/main/resources/mapper_raw/PatientWisdomCarMapper.xml

22
cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/dto/MemberRoleDto.java

@ -144,4 +144,26 @@ public class MemberRoleDto {
@ApiModelProperty("token")
private String token;
}
@Data
@ApiModel("给模板项目添加成员")
public static class SaveMemberForTemplate {
@NotNull(message = "项目id不能为空")
@ApiModelProperty("项目id")
private Long projectId;
@ApiModelProperty("成员列表")
private List<MemberForTemplate> memberForTemplate;
}
@Data
@ApiModel("模板项目成员信息")
public static class MemberForTemplate {
@ApiModelProperty("用户id(医生)")
private Long userId;
@ApiModelProperty("成员名")
private String memberName;
@ApiModelProperty("成员手机号")
private String phone;
@ApiModelProperty("所属角色的名称")
private List<String> roleName;
}
}

23
cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/dto/ProjectDto.java

@ -0,0 +1,23 @@
package com.ccsens.cloudutil.bean.tall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author AUSU
*/
@Data
public class ProjectDto {
@Data
@ApiModel("根据模板复制项目")
public static class CopyProject{
@NotNull(message = "请选择要复制得项目")
@ApiModelProperty("项目id")
private Long projectId;
}
}

46
cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/ProjectVo.java

@ -0,0 +1,46 @@
package com.ccsens.cloudutil.bean.tall.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author AUSU
*/
@Data
public class ProjectVo {
@Data
@ApiModel("复制的项目信息")
public static class ProjectInfo{
@ApiModelProperty("项目id")
private Long id;
@ApiModelProperty("任务详情")
private List<TaskDetail> taskDetails;
}
@Data
@ApiModel("任务详情")
public static class TaskDetail{
@ApiModelProperty("任务详情id")
private Long taskDetailId;
@ApiModelProperty("任务详情名称")
private String taskDetailName;
@ApiModelProperty("任务等级")
private Byte taskDetailLevel;
@ApiModelProperty("任务详情下的分解任务")
private List<TaskSub> taskSubList;
}
@Data
@ApiModel("分解任务")
public static class TaskSub{
@ApiModelProperty("分解任务id")
private Long taskSubId;
@ApiModelProperty("分解任务开始时间")
private Long startTime;
@ApiModelProperty("分解任务结束时间")
private Long endTime;
}
}

20
cloudutil/src/main/java/com/ccsens/cloudutil/config/FeignTokenConfig.java

@ -4,16 +4,32 @@ import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
/**
* @author
*/
@Component
@Configuration
public class FeignTokenConfig implements RequestInterceptor {
@Override
public void apply(RequestTemplate template) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
System.out.println("attributes:"+attributes);
if (attributes != null) {
HttpServletRequest request = attributes.getRequest();
System.out.println("token:" + request.getHeader(HttpHeaders.AUTHORIZATION));
//添加token
template.header(HttpHeaders.AUTHORIZATION, request.getHeader(HttpHeaders.AUTHORIZATION));
return;
}
byte[] body = template.body();
if (body == null) {
return;
@ -23,5 +39,7 @@ public class FeignTokenConfig implements RequestInterceptor {
//添加token
template.header("Authorization", jsonObject.getStr("token"));
}
}

37
cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java

@ -1,11 +1,12 @@
package com.ccsens.cloudutil.feign;
import com.alibaba.fastjson.JSONObject;
import com.ccsens.cloudutil.bean.QueryParam;
import com.ccsens.cloudutil.bean.tall.dto.*;
import com.ccsens.cloudutil.bean.tall.vo.*;
import com.ccsens.cloudutil.config.FeignTokenConfig;
import com.ccsens.util.JsonResponse;
import feign.RequestInterceptor;
import com.ccsens.util.bean.dto.QueryDto;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FeignClient;
@ -238,6 +239,24 @@ public interface TallFeignClient {
*/
@RequestMapping("/roles/delete")
JsonResponse deleteRole(MemberRoleDto.DeleteRole deleteRole);
/**
* 根据项目模板复制项目
* @param copyProject 项目id
* @return 项目
*/
@RequestMapping(value = "/projects/copyProject",method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"})
JsonResponse<ProjectVo.ProjectInfo> copyProjectNew(QueryDto<ProjectDto.CopyProject> copyProject);
/**
* 给复制后的模板项目添加成员
* @param memberForTemplate 项目id/角色名称/成员手机号或userId
* @return 成功/失败
*/
@RequestMapping(value = "/members/addMemberForTemplate",method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"})
JsonResponse addMemberForTemplate(MemberRoleDto.SaveMemberForTemplate memberForTemplate);
}
@Slf4j
@ -246,10 +265,7 @@ class TallFeignClientFallBack implements FallbackFactory<TallFeignClient> {
@Override
public TallFeignClient create(Throwable throwable) {
String msg = throwable == null ? "" : throwable.getMessage();
if (!StringUtils.isEmpty(msg)) {
log.error(msg);
}
log.error("yichang", throwable);
return new TallFeignClient() {
@Override
public JsonResponse mergeUserId(Long userId, Long uselessId) {
@ -400,6 +416,17 @@ class TallFeignClientFallBack implements FallbackFactory<TallFeignClient> {
public JsonResponse deleteRole(MemberRoleDto.DeleteRole deleteRole) {
return JsonResponse.newInstance().fail();
}
@Override
public JsonResponse<ProjectVo.ProjectInfo> copyProjectNew(QueryDto<ProjectDto.CopyProject> copyProject) {
return JsonResponse.newInstance().fail();
}
@Override
public JsonResponse addMemberForTemplate(MemberRoleDto.SaveMemberForTemplate memberForTemplate) {
return JsonResponse.newInstance().fail();
}
};
}

16
cloudutil/src/main/resources/application-util-dev.yml

@ -31,14 +31,14 @@ eureka:
status-page-url-path: ${server.servlet.context-path}/actuator/info
health-check-url-path: ${server.servlet.context-path}/actuator/health
ribbon:
ConnectTimeout: 5000
ReadTimeout: 5000
ConnectTimeout: 50000
ReadTimeout: 50000
feign:
client:
config:
default:
connectTime: 5000
readTimeout: 5000
connectTime: 50000
readTimeout: 50000
# NONE【性能最佳,适用于生产】:不记录任何日志(默认值)。
# BASIC【适用于生产环境追踪问题】:仅记录请求方法、URL、响应状态代码以及执行时间。
# HEADERS:记录BASIC级别的基础上,记录请求和响应的header。
@ -46,6 +46,14 @@ feign:
loggerLevel: basic
hystrix:
enabled: true
hystrix:
command:
default:
execution:
isolation:
strategy: SEMAPHORE
thread:
timeoutInMilliseconds: 60000
# sleuth
logging:
level:

23
tall/src/main/java/com/ccsens/tall/bean/dto/MemberDto.java

@ -65,4 +65,27 @@ public class MemberDto {
@ApiModelProperty("奖惩干系人姓名")
private String stakeholderName;
}
@Data
@ApiModel("为模板项目添加成员")
public static class SaveMemberForTemplate {
@NotNull(message = "项目id不能为空")
@ApiModelProperty("项目id")
private Long projectId;
@ApiModelProperty("成员列表")
private List<MemberForTemplate> memberForTemplate;
}
@Data
@ApiModel("模板项目成员信息")
public static class MemberForTemplate {
@ApiModelProperty("用户id(医生)")
private Long userId;
@ApiModelProperty("成员名")
private String memberName;
@ApiModelProperty("成员手机号")
private String phone;
@ApiModelProperty("所属角色的名称")
private List<String> roleName;
}
}

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

@ -67,4 +67,12 @@ public interface ProMemberDao extends ProMemberMapper{
* @return 返回所有成员信息及奖惩干系人
*/
List<MemberVo.ExportMember> queryByProjectId(@Param("projectId")Long projectId);
/**
* 通过项目id和手机号查询用户是否存在
* @param projectId 项目id
* @param phone 手机号
* @return 0为不存在
*/
int findUserIsExist(@Param("projectId") Long projectId,@Param("phone") String phone);
}

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

@ -135,6 +135,14 @@ public interface ProRoleDao extends ProRoleMapper{
*/
ProRole getMoneyStakeholder(@Param("projectId") Long projectId);
/**
* 根据项目id和角色名称查找角色id
* @param projectId 项目id
* @param roleName 角色名称
* @return 角色id
*/
Long findRoelIdByProjectAndName(@Param("projectId") Long projectId,@Param("roleName") String roleName);
// /**
// * 查找项目下的所有成员的名字用“,”分隔

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

@ -84,4 +84,11 @@ public interface IProMemberService {
* @return
*/
ProjectVo.MemberList getMemberByPhone(MemberDto.GetMemberByPhone memberByPhone);
/**
* 为模板项目添加成员
* @param param 项目id,成员手机号
*
*/
void addMemberForTemplate(MemberDto.SaveMemberForTemplate param);
}

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

@ -71,5 +71,5 @@ public interface IProjectService {
* @param userId 当前用户id
* @return 复制成功的项目
*/
ProjectVo.ProjectInfo copyProjectNew(ProjectDto.ProjectIdDto param, Long userId);
com.ccsens.cloudutil.bean.tall.vo.ProjectVo.ProjectInfo copyProjectNew(com.ccsens.cloudutil.bean.tall.dto.ProjectDto.CopyProject param, Long userId);
}

74
tall/src/main/java/com/ccsens/tall/service/ProMemberService.java

@ -521,4 +521,78 @@ public class ProMemberService implements IProMemberService {
}
return member;
}
@Override
public void addMemberForTemplate(MemberDto.SaveMemberForTemplate param) {
if (CollectionUtil.isNotEmpty(param.getMemberForTemplate())){
for (MemberDto.MemberForTemplate memberForTemplate : param.getMemberForTemplate()) {
//只有手机号的情况
if (ObjectUtil.isNotNull(memberForTemplate.getPhone())){
//用项目id和手机号判断用户是否存在
int isExist = proMemberDao.findUserIsExist(param.getProjectId(),memberForTemplate.getPhone());
if (0!=isExist) {
throw new BaseException(CodeEnum.WBS_REPEAT_MEMBER_PHONE);
}
//添加成员
ProMember proMember = new ProMember();
proMember.setId(snowflake.nextId());
proMember.setProjectId(param.getProjectId());
if(ObjectUtil.isNotNull(memberForTemplate.getMemberName())){
proMember.setNickname(memberForTemplate.getMemberName());
}
proMember.setPhone(memberForTemplate.getPhone());
proMemberDao.insertSelective(proMember);
//关联成员和角色
for (String roleName : memberForTemplate.getRoleName()) {
Long roleId = proRoleDao.findRoelIdByProjectAndName(param.getProjectId(),roleName);
if (null != roleId){
ProMemberRole proMemberRole = new MemberRoleDto();
proMemberRole.setId(snowflake.nextId());
proMemberRole.setRoleId(roleId);
proMemberRole.setMemberId(proMember.getId());
proMemberRoleDao.insertSelective(proMemberRole);
}
}
}
//知道成员的userId的情况
if (ObjectUtil.isNotNull(memberForTemplate.getUserId())){
SysUser user = userDao.selectByPrimaryKey(memberForTemplate.getUserId());
String phone = userService.getPhone(memberForTemplate.getUserId());
//用项目id和手机号判断用户是否存在
int isExist = proMemberDao.findUserIsExist(param.getProjectId(),phone);
if (0!=isExist) {
throw new BaseException(CodeEnum.WBS_REPEAT_MEMBER_PHONE);
}
//添加成员
ProMember proMember = new ProMember();
proMember.setId(snowflake.nextId());
proMember.setPhone(phone);
proMember.setUserId(memberForTemplate.getUserId());
proMember.setProjectId(param.getProjectId());
if(ObjectUtil.isNotNull(user.getNickname())){
proMember.setNickname(user.getNickname());
}
proMemberDao.insertSelective(proMember);
for (String roleName : memberForTemplate.getRoleName()) {
Long roleId = proRoleDao.findRoelIdByProjectAndName(param.getProjectId(),roleName);
if (null != roleId){
ProMemberRole proMemberRole = new MemberRoleDto();
proMemberRole.setId(snowflake.nextId());
proMemberRole.setRoleId(roleId);
proMemberRole.setMemberId(proMember.getId());
proMemberRoleDao.insertSelective(proMemberRole);
}
}
}
}
}
}
}

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

@ -648,7 +648,7 @@ public class ProjectService implements IProjectService {
userAttention.setProjectId(newProject.getId());
attentionDao.insertSelective(userAttention);
//添加角色
copyRole(oldProject.getId(), newProject.getId(),userId);
copyRole(oldProject.getId(), newProject.getId(),userId,null);
//复制项目配置信息
copyProjectConfig(oldProject.getId(), newProject.getId(),userId);
} else {
@ -691,7 +691,7 @@ public class ProjectService implements IProjectService {
/**
* 复制角色
*/
private void copyRole(Long oldProjectId, Long newProjectId,Long userId) {
private void copyRole(Long oldProjectId, Long newProjectId,Long userId,com.ccsens.cloudutil.bean.tall.vo.ProjectVo.ProjectInfo projectFeign) {
//查找被复制的项目下的二级角色
Map<Long, String> oldRoleMap = new HashMap<>();
Map<String, Long> newRoleMap = new HashMap<>();
@ -750,7 +750,7 @@ public class ProjectService implements IProjectService {
//添加对谁不可见
copyRoleExclude(oldRoleList, oldRoleMap, newRoleMap);
//复制任务(包括分解任务)
copyTask(oldProjectId, newProjectId, oldRoleMap, newRoleMap);
copyTask(oldProjectId, newProjectId, oldRoleMap, newRoleMap,projectFeign);
}
}
@ -765,7 +765,7 @@ public class ProjectService implements IProjectService {
ProRoleExclude newRoleExeclude = new ProRoleExclude();
newRoleExeclude.setId(snowflake.nextId());
newRoleExeclude.setRoleId(newRoleMap.get(oldRoleMap.get(roleExeclude.getRoleId())));
newRoleExeclude.setOtherRoleId(newRoleMap.get(oldRoleMap.get(roleExeclude.getRoleId())));
newRoleExeclude.setOtherRoleId(newRoleMap.get(oldRoleMap.get(roleExeclude.getOtherRoleId())));
roleExcludeDao.insertSelective(newRoleExeclude);
}
}
@ -776,7 +776,10 @@ public class ProjectService implements IProjectService {
/**
* 复制任务插件插件配置和交付物任务配置
*/
private void copyTask(Long oldProjectId, Long newProjectId, Map<Long, String> oldRoleMap, Map<String, Long> newRoleMap) {
private void copyTask(Long oldProjectId, Long newProjectId, Map<Long, String> oldRoleMap, Map<String, Long> newRoleMap,com.ccsens.cloudutil.bean.tall.vo.ProjectVo.ProjectInfo projectFeign) {
List<com.ccsens.cloudutil.bean.tall.vo.ProjectVo.TaskDetail> taskDetailListFeign = new ArrayList<>();
Map<Long,Long> oldIdAndNewId = new HashMap<>();
SysProject oldProject = sysProjectDao.selectByPrimaryKey(oldProjectId);
SysProject newProject = sysProjectDao.selectByPrimaryKey(newProjectId);
@ -802,9 +805,15 @@ public class ProjectService implements IProjectService {
newDetail.setCheckerRole(newRoleMap.get(oldRoleMap.get(newDetail.getCheckerRole())));
}
taskDetailDao.insertSelective(newDetail);
com.ccsens.cloudutil.bean.tall.vo.ProjectVo.TaskDetail taskDetailFeignOne = new com.ccsens.cloudutil.bean.tall.vo.ProjectVo.TaskDetail();
taskDetailFeignOne.setTaskDetailId(newDetail.getId());
taskDetailFeignOne.setTaskDetailLevel(newDetail.getLevel());
taskDetailFeignOne.setTaskDetailName(newDetail.getName());
oldIdAndNewId.put(oldDetail.getId(),newDetail.getId());
//复制分解任务
copyTaskSubTime(timeDifference,newDetail.getId(),oldDetail.getId());
copyTaskSubTime(timeDifference,newDetail.getId(),oldDetail.getId(),taskDetailFeignOne);
taskDetailListFeign.add(taskDetailFeignOne);
//查找一级任务下的二级任务
ProTaskDetailExample oldSecondTask = new ProTaskDetailExample();
oldSecondTask.createCriteria().andParentIdEqualTo(oldDetail.getId()).andLevelEqualTo((byte) 2);
@ -827,8 +836,13 @@ public class ProjectService implements IProjectService {
newSecondDetail.setUpdatedAt(null);
taskDetailDao.insertSelective(newSecondDetail);
oldIdAndNewId.put(oldSecondDetail.getId(),newSecondDetail.getId());
com.ccsens.cloudutil.bean.tall.vo.ProjectVo.TaskDetail taskDetailFeignTwo = new com.ccsens.cloudutil.bean.tall.vo.ProjectVo.TaskDetail();
taskDetailFeignTwo.setTaskDetailId(newSecondDetail.getId());
taskDetailFeignTwo.setTaskDetailName(newSecondDetail.getName());
taskDetailFeignTwo.setTaskDetailLevel(newSecondDetail.getLevel());
//复制分解任务
copyTaskSubTime(timeDifference,newSecondDetail.getId(),oldSecondDetail.getId());
copyTaskSubTime(timeDifference,newSecondDetail.getId(),oldSecondDetail.getId(),taskDetailFeignTwo);
taskDetailListFeign.add(taskDetailFeignTwo);
//分解时间
//taskToSubTime(newSecondDetail);
//查找二级任务的子任务
@ -853,8 +867,13 @@ public class ProjectService implements IProjectService {
newSubDetail.setUpdatedAt(null);
taskDetailDao.insertSelective(newSubDetail);
oldIdAndNewId.put(oldSubDetail.getId(),newSubDetail.getId());
com.ccsens.cloudutil.bean.tall.vo.ProjectVo.TaskDetail taskDetailFeignThree = new com.ccsens.cloudutil.bean.tall.vo.ProjectVo.TaskDetail();
taskDetailFeignThree.setTaskDetailLevel(newSubDetail.getLevel());
taskDetailFeignThree.setTaskDetailId(newSubDetail.getId());
taskDetailFeignThree.setTaskDetailName(newSubDetail.getName());
//复制分解任务
copyTaskSubTime(timeDifference,newSubDetail.getId(),oldSubDetail.getId());
copyTaskSubTime(timeDifference,newSubDetail.getId(),oldSubDetail.getId(),taskDetailFeignThree);
taskDetailListFeign.add(taskDetailFeignThree);
//分解时间
//taskToSubTime(newSubDetail);
//复制插件、插件配置和交付物
@ -869,8 +888,8 @@ public class ProjectService implements IProjectService {
copyPluginAndDeliver(oldDetail.getId(), newDetail.getId(), oldRoleMap, newRoleMap,oldIdAndNewId,newProjectId);
copyTaskConfig(oldDetail.getId(),newDetail.getId(),oldProjectId,newProjectId);
}
projectFeign.setTaskDetails(taskDetailListFeign);
}
}
@ -879,7 +898,9 @@ public class ProjectService implements IProjectService {
* @param newTaskDetailId 新的详情任务
* @param timeDifference 时间差
*/
public void copyTaskSubTime(Long timeDifference,Long newTaskDetailId,Long oldTaskDetailId){
public void copyTaskSubTime(Long timeDifference,Long newTaskDetailId,Long oldTaskDetailId,com.ccsens.cloudutil.bean.tall.vo.ProjectVo.TaskDetail taskDetailFeign){
List<com.ccsens.cloudutil.bean.tall.vo.ProjectVo.TaskSub> taskSubListFeign = new ArrayList<>();
Map<Long,Long> oldTaskSubIdAndNewId = new HashMap<>();
//复制分解任务
ProTaskSubTimeExample proTaskSubTimeExample = new ProTaskSubTimeExample();
@ -897,6 +918,15 @@ public class ProjectService implements IProjectService {
newTaskSubTime.setUpdatedAt(null);
taskSubTimeDao.insertSelective(newTaskSubTime);
oldTaskSubIdAndNewId.put(oldTaskSubTime.getId(),newTaskSubTime.getId());
//分解任务的返回值
com.ccsens.cloudutil.bean.tall.vo.ProjectVo.TaskSub taskSubFeign = new com.ccsens.cloudutil.bean.tall.vo.ProjectVo.TaskSub();
taskSubFeign.setTaskSubId(newTaskSubTime.getId());
taskSubFeign.setStartTime(newTaskSubTime.getBeginTime());
taskSubFeign.setEndTime(newTaskSubTime.getEndTime());
taskSubListFeign.add(taskSubFeign);
//复制任务提示信息
ProRemindExample remindExample = new ProRemindExample();
remindExample.createCriteria().andSubTaskIdEqualTo(oldTaskSubTime.getId());
@ -913,6 +943,7 @@ public class ProjectService implements IProjectService {
}
}
}
taskDetailFeign.setTaskSubList(taskSubListFeign);
}
}
@ -1471,7 +1502,9 @@ public class ProjectService implements IProjectService {
* @return 复制后的项目
*/
@Override
public ProjectVo.ProjectInfo copyProjectNew(ProjectDto.ProjectIdDto param, Long userId) {
public com.ccsens.cloudutil.bean.tall.vo.ProjectVo.ProjectInfo copyProjectNew(com.ccsens.cloudutil.bean.tall.dto.ProjectDto.CopyProject param, Long userId) {
//返回对象
com.ccsens.cloudutil.bean.tall.vo.ProjectVo.ProjectInfo newProjectFeign = new com.ccsens.cloudutil.bean.tall.vo.ProjectVo.ProjectInfo();
//当前时间
long currentTime = System.currentTimeMillis();
SysProject oldProject = sysProjectDao.selectByPrimaryKey(param.getProjectId());
@ -1512,12 +1545,17 @@ public class ProjectService implements IProjectService {
userAttention.setUserId(userId);
userAttention.setProjectId(newProject.getId());
attentionDao.insertSelective(userAttention);
//为返回值赋值
newProjectFeign.setId(newProject.getId());
//添加角色
copyRole(oldProject.getId(), newProject.getId(),userId);
copyRole(oldProject.getId(), newProject.getId(),userId,newProjectFeign);
//复制项目配置信息
copyProjectConfig(oldProject.getId(), newProject.getId(),userId);
//复制项目下的角色
return null;
return newProjectFeign;
}
}

12
tall/src/main/java/com/ccsens/tall/web/MemberController.java

@ -1,5 +1,6 @@
package com.ccsens.tall.web;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.tall.bean.dto.MemberDto;
import com.ccsens.tall.bean.dto.ProjectDto;
import com.ccsens.tall.bean.vo.ProjectVo;
@ -8,6 +9,7 @@ import com.ccsens.tall.service.IProMemberService;
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.Api;
import io.swagger.annotations.ApiImplicitParams;
@ -104,4 +106,14 @@ public class MemberController {
ProjectVo.MemberList membersInfo = proMemberService.getMemberByPhone(memberByPhone);
return JsonResponse.newInstance().ok(membersInfo);
}
@ApiOperation(value = "复制后的项目添加成员", notes = "")
@RequestMapping(value = "/addMemberForTemplate", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse addMemberForTemplate(@ApiParam @Validated @RequestBody QueryDto<MemberDto.SaveMemberForTemplate> params) throws Exception {
log.info("根据模板复制项目新:{}",params);
proMemberService.addMemberForTemplate(params.getParam());
log.info("根据模板复制项目新结束");
return JsonResponse.newInstance().ok();
}
}

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

@ -1,5 +1,6 @@
package com.ccsens.tall.web;
import com.alibaba.fastjson.JSONObject;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.tall.annotation.MustLoginTall;
import com.ccsens.tall.bean.dto.ProjectDto;
@ -10,10 +11,12 @@ import com.ccsens.tall.service.IProMemberService;
import com.ccsens.tall.service.IProRoleService;
import com.ccsens.tall.service.IProTaskDetailService;
import com.ccsens.tall.service.IProjectService;
import com.ccsens.util.JacksonUtil;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.WebConstant;
import com.ccsens.util.annotation.OperateType;
import com.ccsens.util.bean.dto.QueryDto;
import com.fasterxml.jackson.core.JsonProcessingException;
import io.jsonwebtoken.Claims;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
@ -336,10 +339,15 @@ public class ProjectController {
@MustLogin
@ApiOperation(value = "根据模板复制项目新", notes = "")
@RequestMapping(value = "/copyProject", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<ProjectVo.ProjectInfo> copyProjectNew(@ApiParam @Validated @RequestBody QueryDto<ProjectDto.ProjectIdDto> params) throws Exception {
public JsonResponse<com.ccsens.cloudutil.bean.tall.vo.ProjectVo.ProjectInfo> copyProjectNew(@ApiParam @Validated @RequestBody QueryDto<com.ccsens.cloudutil.bean.tall.dto.ProjectDto.CopyProject> params) throws JsonProcessingException {
log.info("根据模板复制项目新:{}",params);
ProjectVo.ProjectInfo projectInfo = projectService.copyProjectNew(params.getParam(),params.getUserId());
log.info("根据模板复制项目新结束");
return JsonResponse.newInstance().ok(projectInfo);
com.ccsens.cloudutil.bean.tall.vo.ProjectVo.ProjectInfo newProject = projectService.copyProjectNew(params.getParam(), params.getUserId());
log.info("根据模板复制项目新结束{}",newProject);
// com.ccsens.cloudutil.bean.tall.vo.ProjectVo.ProjectInfo info = new com.ccsens.cloudutil.bean.tall.vo.ProjectVo.ProjectInfo();
// info.setId(1L);
JsonResponse<com.ccsens.cloudutil.bean.tall.vo.ProjectVo.ProjectInfo> info = JsonResponse.newInstance().ok(newProject);
log.info("duixiang:{}", JacksonUtil.beanToJson(info));
return info;
}
}

6
tall/src/main/resources/application-dev.yml

@ -11,11 +11,11 @@ spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
rabbitmq:
host: test.tall.wiki
host: 192.168.4.113
# host: 127.0.0.1
password: guest
password: 111111
port: 5672
username: guest
username: admin
redis:
database: 0
host: 127.0.0.1

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

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

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

@ -374,4 +374,14 @@
LEFT JOIN
t_pro_member pm on pm.id = a.stakeholder_id and pm.rec_status = 0 and pm.nickname != ''
</select>
<select id="findUserIsExist" resultType="Integer">
SELECT
count( id )
FROM
t_pro_member
WHERE
project_id = #{projectId}
AND phone =#{phone}
</select>
</mapper>

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

@ -475,4 +475,14 @@
(SELECT id FROM t_pro_role WHERE name = 'MoneyStakeholder' and project_id = #{projectId})
limit 1
</select>
<select id="findRoelIdByProjectAndName" resultType="java.lang.Long">
SELECT
r.id
FROM
t_pro_role AS r
WHERE
r.project_id = #{projectId}
AND r.`name` = #{roleName}
</select>
</mapper>

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

@ -292,7 +292,7 @@ public class PatientService implements IPatientService {
public StatisticVo.SelCountS countCase(StatisticDto.SelCount param, Long userId) {
StatisticVo.SelCountS selCountS=new StatisticVo.SelCountS();
selCountS.setNewNums(patientDao.countCase(param,(byte)0));
selCountS.setNewNums(patientDao.countCase(param,(byte)0,(byte)1));
selCountS.setOverNums(patientDao.countCase(param,(byte)2,(byte)5,(byte)6));
return selCountS;

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

@ -213,6 +213,7 @@ public enum CodeEnum {
DELIVER_REPEAT(173,"交付物已存在",true),
PARENT_PROJECT_NOT_MATCHING(174,"父任务与项目不匹配",true),
PM_NOT_MEMBER(175,"项目经理下必须有一个成员",true),
WisdomCar_NOT_Found(176,"没有找到绑定的平车信息",true)
;

6
wisdomcar/src/main/java/com/ccsens/wisdomcar/api/OtherRecordsController.java

@ -42,10 +42,10 @@ public class OtherRecordsController {
@ApiOperation(value = "查询上传图片和记录", notes = "")
@RequestMapping(value = "/query", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<OtherRecordsVo.Query>> query(@ApiParam @Validated @RequestBody QueryDto<OtherRecordsDto.Query> params){
@RequestMapping(value = "/queryList", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<OtherRecordsVo.TypeAndComment>> queryList(@ApiParam @Validated @RequestBody QueryDto<OtherRecordsDto.QueryId> params){
log.info("查询上传图片和记录:{}", params);
List<OtherRecordsVo.Query> list = iOtherRecordsService.query(params.getParam());
List<OtherRecordsVo.TypeAndComment> list = iOtherRecordsService.queryList(params.getParam());
log.info("查询上传图片和记录成功");
return JsonResponse.newInstance().ok(list);
}

54
wisdomcar/src/main/java/com/ccsens/wisdomcar/api/PatientAndFamilyController.java

@ -0,0 +1,54 @@
package com.ccsens.wisdomcar.api;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import com.ccsens.wisdomcar.bean.dto.CreateCaseDto;
import com.ccsens.wisdomcar.bean.dto.PatientAndFamilyDto;
import com.ccsens.wisdomcar.service.IPatientAndFamilyService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author
*/
@Slf4j
@Api(tags = "患者与家属相关接口" , description = "")
@RestController
@RequestMapping("/patientAndFamily")
public class PatientAndFamilyController {
@Resource
IPatientAndFamilyService patientAndFamilyService;
@MustLogin
@ApiOperation(value = "修改(补录)患者信息", notes = "mz")
@RequestMapping(value = "/updatePatientInfo", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse updatePatientInfo(@ApiParam @Validated @RequestBody QueryDto<PatientAndFamilyDto.PatientInfo> params) {
log.info("修改(补录)患者信息:{}", params);
patientAndFamilyService.updatePatientInfo(params.getParam());
log.info("修改(补录)患者信息");
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "修改(补录)患者家属信息", notes = "mz")
@RequestMapping(value = "/updatePatientFamilyInfo", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse updatePatientFamilyInfo(@ApiParam @Validated @RequestBody QueryDto<PatientAndFamilyDto.PatientFamilyInfo> params) {
log.info("修改(补录)患者家属信息:{}", params);
patientAndFamilyService.updatePatientFamilyInfo(params.getParam());
log.info("修改(补录)患者家属信息");
return JsonResponse.newInstance().ok();
}
}

54
wisdomcar/src/main/java/com/ccsens/wisdomcar/api/ProjectController.java

@ -0,0 +1,54 @@
package com.ccsens.wisdomcar.api;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import com.ccsens.wisdomcar.bean.dto.ProjectDto;
import com.ccsens.wisdomcar.bean.vo.ProjectVo;
import com.ccsens.wisdomcar.service.IProjectService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @description: 项目页面的操作
* @author: whj
* @time: 2021/6/1 13:31
*/
@Slf4j
@Api(tags = "页面相关api" , description = "")
@RestController
@RequestMapping("/project")
public class ProjectController {
@Resource
private IProjectService projectService;
@MustLogin
@ApiOperation(value = "点击开始", notes = "whj")
@RequestMapping(value = "/start", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse start(@ApiParam @Validated @RequestBody QueryDto<ProjectDto.Start> params){
log.info("点击开始:{}", params);
projectService.start(params.getParam(), params.getUserId());
log.info("点击开始结束");
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "查询称重和剂量", notes = "whj")
@RequestMapping(value = "/weight", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<ProjectVo.Record> weight(@ApiParam @Validated @RequestBody QueryDto<ProjectDto.Weight> params){
log.info("查询称重和剂量:{}", params);
List<ProjectVo.Record> list = projectService.queryWeight(params.getParam(), params.getUserId());
log.info("查询称重和剂量:{}", list);
return JsonResponse.newInstance().ok(list);
}
}

82
wisdomcar/src/main/java/com/ccsens/wisdomcar/api/WisdomCarController.java

@ -0,0 +1,82 @@
package com.ccsens.wisdomcar.api;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import com.ccsens.wisdomcar.bean.dto.RecordDto;
import com.ccsens.wisdomcar.bean.dto.WisdomCarDto;
import com.ccsens.wisdomcar.bean.vo.RecordVo;
import com.ccsens.wisdomcar.bean.vo.WisdomCarVo;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import com.ccsens.wisdomcar.bean.dto.CreateCaseDto;
import com.ccsens.wisdomcar.bean.dto.StatisticsDto;
import com.ccsens.wisdomcar.bean.vo.StatisticsVo;
import com.ccsens.wisdomcar.service.IWisdomCarService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @author
*/
@Slf4j
@Api(tags = "平车相关api" , description = "")
@RestController
@RequestMapping("/car")
public class WisdomCarController {
@Resource
private IWisdomCarService wisdomCarService;
@MustLogin
@ApiOperation(value = "空闲平车查询", notes = "whj")
@RequestMapping(value = "/free", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<WisdomCarVo.FreeCar> freeCar(@ApiParam @Validated @RequestBody QueryDto<WisdomCarDto.FreeCar> params){
log.info("空闲平车查询:{}", params);
List<WisdomCarVo.FreeCar> list = wisdomCarService.queryFreeCar(params.getParam(), params.getUserId());
log.info("空闲平车查询结果:{}", list);
return JsonResponse.newInstance().ok(list);
}
@MustLogin
@ApiOperation(value = "创建病例接口", notes = "")
@RequestMapping(value = "/createCase", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse createCase(@ApiParam @Validated @RequestBody QueryDto<CreateCaseDto.PatientInfo> params) {
log.info("创建病例接口:{}", params);
wisdomCarService.createCase(params.getParam(), params.getUserId());
log.info("创建病例接口");
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "绑定平车", notes = "")
@RequestMapping(value = "/bindingCar", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse bindingCar(@ApiParam @Validated @RequestBody QueryDto<WisdomCarDto.BindingCar> params) {
log.info("绑定平车:{}", params);
wisdomCarService.bindingCar(params.getParam(),params.getUserId());
log.info("绑定平车");
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "平车数据上传", notes = "")
@RequestMapping(value = "/uploadCarData", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse uploadCarData(@ApiParam @Validated @RequestBody QueryDto<WisdomCarDto.UploadCarData> params) {
log.info("平车数据上传:{}", params);
wisdomCarService.uploadCarData(params.getParam(),params.getUserId());
log.info("平车数据上传");
return JsonResponse.newInstance().ok();
}
}

16
wisdomcar/src/main/java/com/ccsens/wisdomcar/api/WisdomCatController.java

@ -1,16 +0,0 @@
package com.ccsens.wisdomcar.api;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author
*/
@Slf4j
@Api(tags = "平车相关api" , description = "")
@RestController
@RequestMapping("/car")
public class WisdomCatController {
}

38
wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/CreateCaseDto.java

@ -0,0 +1,38 @@
package com.ccsens.wisdomcar.bean.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author AUSU
*/
@Data
public class CreateCaseDto {
@Data
@ApiModel("患者与家属信息")
public static class PatientInfo{
@ApiModelProperty("患者姓名")
private String patientName;
@ApiModelProperty("患者性别(0-女,1-男)")
private Byte patientSex;
@ApiModelProperty("患者年龄")
private int patientAge;
@ApiModelProperty("患者身份证号")
private String patientIdCard;
@ApiModelProperty("患者手机号")
private int patientPhone;
@ApiModelProperty("患者病案号")
private String medicalRecordNum;
@ApiModelProperty("患者家属姓名")
private String familyName;
@ApiModelProperty("患者家属手机号")
private String familyPhone;
}
}

2
wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/OtherRecordsDto.java

@ -26,7 +26,7 @@ public class OtherRecordsDto {
}
@Data
@ApiModel("查询上传图片和记录")
public static class Query {
public static class QueryId {
@ApiModelProperty("分解任务id")
private Long id;
}

45
wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/PatientAndFamilyDto.java

@ -0,0 +1,45 @@
package com.ccsens.wisdomcar.bean.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author
*/
@Data
public class PatientAndFamilyDto {
@Data
@ApiModel("修改(补录)患者信息")
public static class PatientInfo {
@ApiModelProperty("患者id")
private Long id;
@ApiModelProperty("患者姓名")
private String name;
@ApiModelProperty("患者性别(0-女,1-男)")
private Byte sex;
@ApiModelProperty("患者年龄")
private Integer age;
@ApiModelProperty("患者身份证号")
private String idCard;
@ApiModelProperty("患者手机号")
private String phone;
}
@Data
@ApiModel("修改(补录)患者家属信息")
public static class PatientFamilyInfo {
@ApiModelProperty("患者家属id")
private Long id;
@ApiModelProperty("患者家属姓名")
private String name;
@ApiModelProperty("患者家属手机号")
private String phone;
}
}

33
wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/ProjectDto.java

@ -0,0 +1,33 @@
package com.ccsens.wisdomcar.bean.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @description:页面上操作
* @author: whj
* @time: 2021/6/1 13:34
*/
public class ProjectDto {
@Data
@ApiModel("点击开始-请求")
public static class Start {
@ApiModelProperty("开始时间")
private Long startTime = System.currentTimeMillis();
@NotNull(message="请说明您的任务")
@ApiModelProperty("分解任务ID")
private Long taskSubId;
}
@Data
@ApiModel("查询称重和剂量--请求")
public static class Weight {
@NotNull(message="请说明您的任务")
@ApiModelProperty("分解任务ID")
private Long taskSubId;
}
}

30
wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/WisdomCarDto.java

@ -0,0 +1,30 @@
package com.ccsens.wisdomcar.bean.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @description: 平车相关
* @author: whj
* @time: 2021/6/1 13:01
*/
public class WisdomCarDto {
@Data
@ApiModel("查询空闲平车--请求参数")
public static class FreeCar{
}
@Data
@ApiModel("绑定平车")
public class BindingCar {
}
@Data
@ApiModel("平车数据上传")
public class UploadCarData {
}
}

11
wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/po/PatientWisdomCar.java

@ -24,6 +24,8 @@ public class PatientWisdomCar implements Serializable {
private Byte recStatus;
private Byte bindingStatus;
private static final long serialVersionUID = 1L;
public Long getId() {
@ -106,6 +108,14 @@ public class PatientWisdomCar implements Serializable {
this.recStatus = recStatus;
}
public Byte getBindingStatus() {
return bindingStatus;
}
public void setBindingStatus(Byte bindingStatus) {
this.bindingStatus = bindingStatus;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
@ -122,6 +132,7 @@ public class PatientWisdomCar implements Serializable {
sb.append(", createdAt=").append(createdAt);
sb.append(", updatedAt=").append(updatedAt);
sb.append(", recStatus=").append(recStatus);
sb.append(", bindingStatus=").append(bindingStatus);
sb.append("]");
return sb.toString();
}

60
wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/po/PatientWisdomCarExample.java

@ -704,6 +704,66 @@ public class PatientWisdomCarExample {
addCriterion("rec_status not between", value1, value2, "recStatus");
return (Criteria) this;
}
public Criteria andBindingStatusIsNull() {
addCriterion("binding_status is null");
return (Criteria) this;
}
public Criteria andBindingStatusIsNotNull() {
addCriterion("binding_status is not null");
return (Criteria) this;
}
public Criteria andBindingStatusEqualTo(Byte value) {
addCriterion("binding_status =", value, "bindingStatus");
return (Criteria) this;
}
public Criteria andBindingStatusNotEqualTo(Byte value) {
addCriterion("binding_status <>", value, "bindingStatus");
return (Criteria) this;
}
public Criteria andBindingStatusGreaterThan(Byte value) {
addCriterion("binding_status >", value, "bindingStatus");
return (Criteria) this;
}
public Criteria andBindingStatusGreaterThanOrEqualTo(Byte value) {
addCriterion("binding_status >=", value, "bindingStatus");
return (Criteria) this;
}
public Criteria andBindingStatusLessThan(Byte value) {
addCriterion("binding_status <", value, "bindingStatus");
return (Criteria) this;
}
public Criteria andBindingStatusLessThanOrEqualTo(Byte value) {
addCriterion("binding_status <=", value, "bindingStatus");
return (Criteria) this;
}
public Criteria andBindingStatusIn(List<Byte> values) {
addCriterion("binding_status in", values, "bindingStatus");
return (Criteria) this;
}
public Criteria andBindingStatusNotIn(List<Byte> values) {
addCriterion("binding_status not in", values, "bindingStatus");
return (Criteria) this;
}
public Criteria andBindingStatusBetween(Byte value1, Byte value2) {
addCriterion("binding_status between", value1, value2, "bindingStatus");
return (Criteria) this;
}
public Criteria andBindingStatusNotBetween(Byte value1, Byte value2) {
addCriterion("binding_status not between", value1, value2, "bindingStatus");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {

2
wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/OtherRecordsVo.java

@ -17,7 +17,7 @@ public class OtherRecordsVo {
@Data
@ApiModel("查询上传图片和记录")
public static class Query {
public static class TypeAndComment {
@ApiModelProperty("类型(0-图片,1-文本)")
private byte type;
@ApiModelProperty("内容")

42
wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/ProjectVo.java

@ -0,0 +1,42 @@
package com.ccsens.wisdomcar.bean.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: whj
* @time: 2021/6/1 13:34
*/
public class ProjectVo {
public static class Start {
}
@Data
@ApiModel("查询称重和剂量--响应")
public static class Record {
@ApiModelProperty("类型 1:体重 8溶栓剂量 9团注剂量 10维持剂量")
private byte type;
@ApiModelProperty("对应的值")
private String value;
}
@ApiModel("患者平车绑定信息")
@Data
public static class BindCar {
@ApiModelProperty("患者平车绑定ID")
private Long id;
@ApiModelProperty("任务ID")
private Long taskSubId;
@ApiModelProperty("患者ID")
private Long patientId;
@ApiModelProperty("平车ID")
private Long carId;
@ApiModelProperty("开始时间")
private Long startTime;
@ApiModelProperty("结束时间")
private Long endTime;
}
}

21
wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/WisdomCarVo.java

@ -0,0 +1,21 @@
package com.ccsens.wisdomcar.bean.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description: 平车相关
* @author: whj
* @time: 2021/6/1 13:02
*/
public class WisdomCarVo {
@Data
@ApiModel("查询空闲平车--响应参数")
public static class FreeCar{
@ApiModelProperty("平车ID")
private Long id;
@ApiModelProperty("平车编号")
private String carNumber;
}
}

9
wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/HospitalWrokingDao.java

@ -1,5 +1,6 @@
package com.ccsens.wisdomcar.persist.dao;
import com.ccsens.wisdomcar.bean.po.HospitalMember;
import com.ccsens.wisdomcar.bean.po.HospitalWroking;
import com.ccsens.wisdomcar.bean.po.HospitalWrokingExample;
import com.ccsens.wisdomcar.persist.mapper.HospitalWrokingMapper;
@ -12,4 +13,12 @@ import java.util.List;
*/
public interface HospitalWrokingDao extends HospitalWrokingMapper {
/**
* 查找正在值班医生
* @param hospitalId 医院id
* @param currentTime 当前时间
* @return 值班医生
*/
List<HospitalMember> findWorkingDoctor(@Param("hospitalId") Long hospitalId,@Param("currentTime") Long currentTime);
}

7
wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/StepDao.java

@ -21,4 +21,11 @@ public interface StepDao extends StepMapper {
StepVo.Step getCodeByStepOne();
String getRecordByCarIdAndType(@Param("carId") Long carId, @Param("type") byte type);
/**
* 查询最大序号
* @param stepType 类型
* @return 最大序号
*/
Integer getMaxSequence(@Param("stepType") byte stepType);
}

7
wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/StepTaskDao.java

@ -2,6 +2,7 @@ package com.ccsens.wisdomcar.persist.dao;
import com.ccsens.wisdomcar.bean.po.StepTask;
import com.ccsens.wisdomcar.bean.po.StepTaskExample;
import com.ccsens.wisdomcar.bean.vo.ProjectVo;
import com.ccsens.wisdomcar.persist.mapper.StepTaskMapper;
import org.apache.ibatis.annotations.Param;
@ -12,4 +13,10 @@ import java.util.List;
*/
public interface StepTaskDao extends StepTaskMapper {
/**
* 查找对应绑定平车的任务ID
* @param taskSubId 查询的任务ID
* @return 绑定平车任务ID
*/
ProjectVo.BindCar getBindCarTaskId(@Param("taskSubId") Long taskSubId);
}

18
wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/WisdomCarDao.java

@ -0,0 +1,18 @@
package com.ccsens.wisdomcar.persist.dao;
import com.ccsens.wisdomcar.bean.vo.WisdomCarVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author whj
*/
public interface WisdomCarDao {
/**
* 查询空闲平车
* @param hospitalId 医院ID
* @return 空闲平车
*/
List<WisdomCarVo.FreeCar> queryFreeCar(@Param("hospitalId") Long hospitalId);
}

11
wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/WisdomCarRecordDao.java

@ -1,10 +1,10 @@
package com.ccsens.wisdomcar.persist.dao;
import com.ccsens.wisdomcar.bean.vo.ProjectVo;
import com.ccsens.wisdomcar.bean.vo.RecordVo;
import com.ccsens.wisdomcar.persist.mapper.WisdomCarRecordMapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
@ -31,4 +31,13 @@ public interface WisdomCarRecordDao extends WisdomCarRecordMapper {
*/
List<RecordVo.WeightAndRfid> queryRecords(@Param("carId") Long carId, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("type") byte type);
/**
* 查询平车最近的记录
* @param carId 平车ID
* @param startTime 开始时间
* @param endTime 结束时间
* @param typeArr 数据类型
* @return 记录
*/
List<ProjectVo.Record> queryRecent(@Param("carId") Long carId, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("typeArr") byte... typeArr);
}

2
wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IOtherRecordsService.java

@ -20,5 +20,5 @@ public interface IOtherRecordsService {
* @param
* @throws
*/
List<OtherRecordsVo.Query> query(OtherRecordsDto.Query param);
List<OtherRecordsVo.TypeAndComment> queryList(OtherRecordsDto.QueryId param);
}

23
wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IPatientAndFamilyService.java

@ -0,0 +1,23 @@
package com.ccsens.wisdomcar.service;
import com.ccsens.wisdomcar.bean.dto.PatientAndFamilyDto;
/**
* @author
*/
public interface IPatientAndFamilyService {
/**
* 修改(补录)患者信息
* @param param 患者信息
*/
void updatePatientInfo(PatientAndFamilyDto.PatientInfo param);
/**
* 修改(补录)患者家属信息
* @param param 家属信息
*/
void updatePatientFamilyInfo(PatientAndFamilyDto.PatientFamilyInfo param);
}

28
wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IProjectService.java

@ -0,0 +1,28 @@
package com.ccsens.wisdomcar.service;
import com.ccsens.wisdomcar.bean.dto.ProjectDto;
import com.ccsens.wisdomcar.bean.vo.ProjectVo;
import java.util.List;
/**
* @author whj
*/
public interface IProjectService {
/**
* 网页设置结点开始
* @param param 设置参数
* @param userId userId
*/
void start(ProjectDto.Start param, Long userId);
/**
* 查询称重和剂量
* @param param param
* @param userId userId
* @return 称重和剂量
*/
List<ProjectVo.Record> queryWeight(ProjectDto.Weight param, Long userId);
}

45
wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IWisdomCarService.java

@ -0,0 +1,45 @@
package com.ccsens.wisdomcar.service;
import com.ccsens.wisdomcar.bean.dto.CreateCaseDto;
import com.ccsens.wisdomcar.bean.dto.WisdomCarDto;
import com.ccsens.wisdomcar.bean.vo.WisdomCarVo;
import com.ccsens.wisdomcar.bean.dto.CreateCaseDto;
import java.util.List;
/**
* @author whj
*/
public interface IWisdomCarService {
/**
* 查询空闲平车
* @param param 平车要求暂无
* @param userId 用户userId,根据userId查询医院ID
* @return 空闲平车
*/
List<WisdomCarVo.FreeCar> queryFreeCar(WisdomCarDto.FreeCar param, Long userId);
/**
* 创建病例
* @param param 患者信息与家属信息
* @param userId 当前用户id
*/
void createCase(CreateCaseDto.PatientInfo param, Long userId);
/**
* 绑定平车
* @param param 参数
* @param userId 当前用户id
*/
void bindingCar(WisdomCarDto.BindingCar param, Long userId);
/**
* 平车数据上传
* @param param 参数
* @param userId 当前用户id
*/
void uploadCarData(WisdomCarDto.UploadCarData param, Long userId);
}

76
wisdomcar/src/main/java/com/ccsens/wisdomcar/service/OtherRecordsService.java

@ -1,15 +1,20 @@
package com.ccsens.wisdomcar.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.util.CodeEnum;
import com.ccsens.util.StringUtil;
import com.ccsens.util.exception.BaseException;
import com.ccsens.wisdomcar.bean.dto.OtherRecordsDto;
import com.ccsens.wisdomcar.bean.po.PatientInformationRecord;
import com.ccsens.wisdomcar.bean.po.PatientInformationRecordExample;
import com.ccsens.wisdomcar.bean.po.PatientWisdomCar;
import com.ccsens.wisdomcar.bean.po.PatientWisdomCarExample;
import com.ccsens.wisdomcar.bean.vo.OtherRecordsVo;
import com.ccsens.wisdomcar.bean.vo.ProjectVo;
import com.ccsens.wisdomcar.persist.dao.PatientWisdomCarDao;
import com.ccsens.wisdomcar.persist.dao.StepTaskDao;
import com.ccsens.wisdomcar.persist.mapper.PatientInformationRecordMapper;
import com.ccsens.wisdomcar.persist.mapper.PatientWisdomCarMapper;
import com.ccsens.wisdomcar.persist.mapper.WisdomCarMapper;
@ -38,6 +43,8 @@ public class OtherRecordsService implements IOtherRecordsService {
@Resource
private PatientWisdomCarDao patientWisdomCarDao;
@Resource
private StepTaskDao stepTaskDao;
@Resource
private PatientInformationRecordMapper patientInformationRecordMapper;
@ -48,48 +55,53 @@ public class OtherRecordsService implements IOtherRecordsService {
@Override
public void upload(OtherRecordsDto.PicturesAndRecords param) {
//通过t_patient_information_record里面的分解任务id 找到患者平车id 最新的 拿到患者平车id t_patient_information_record
List<Long> longs = patientWisdomCarDao.queryByNew(param.getId()); //拿到患者平车id
if(ObjectUtil.isNotNull(longs)){
if(param.getPictures().size()!=0){ //判断是否是图片是否为空
for (int i = 0; i < param.getPictures().size(); i++) {
PatientInformationRecord patientInformationRecord = new PatientInformationRecord();
patientInformationRecord.setId(snowflake.nextId());
patientInformationRecord.setPatientCarId(longs.get(0));
patientInformationRecord.setTaskSubId(param.getId());
patientInformationRecord.setInformationType((byte) 0); //上传图片
patientInformationRecord.setContent(param.getPictures().get(i)); //拿到图片 存到库里面
patientInformationRecord.setRecStatus((byte) 0);
patientInformationRecordMapper.insertSelective(patientInformationRecord);
}
}
if(!StringUtil.isEmpty(param.getRecords())) { //判断是否是记录是否为空
//拿到患者平车id
ProjectVo.BindCar bindCar = stepTaskDao.getBindCarTaskId(param.getId());
if (bindCar == null) {
log.info("没有找到绑定的平车信息:{}", param);
throw new BaseException(CodeEnum.WisdomCar_NOT_Found);
}
//判断是否是图片是否为空
if (CollectionUtil.isNotEmpty(param.getPictures())){
for (int i = 0; i < param.getPictures().size(); i++) {
PatientInformationRecord patientInformationRecord = new PatientInformationRecord();
patientInformationRecord.setId(snowflake.nextId());
patientInformationRecord.setPatientCarId(longs.get(0));
patientInformationRecord.setPatientCarId(bindCar.getId());
patientInformationRecord.setTaskSubId(param.getId());
patientInformationRecord.setInformationType((byte) 1); //上传记录
patientInformationRecord.setContent(param.getRecords()); //拿到记录 存到库里面
patientInformationRecord.setRecStatus((byte) 0);
//上传图片
patientInformationRecord.setInformationType((byte) 0);
//拿到图片 存到库里面
patientInformationRecord.setContent(param.getPictures().get(i));
patientInformationRecordMapper.insertSelective(patientInformationRecord);
}
}
//判断是否是记录是否为空
if(!StringUtil.isEmpty(param.getRecords())) {
PatientInformationRecord patientInformationRecord = new PatientInformationRecord();
patientInformationRecord.setId(snowflake.nextId());
patientInformationRecord.setPatientCarId(bindCar.getId());
patientInformationRecord.setTaskSubId(param.getId());
patientInformationRecord.setInformationType((byte) 1);
patientInformationRecord.setContent(param.getRecords());
patientInformationRecordMapper.insertSelective(patientInformationRecord);
}
}
@Override
public List<OtherRecordsVo.Query> query(OtherRecordsDto.Query param) {
List<OtherRecordsVo.Query> patientInformationRecordList = new ArrayList<>();
public List<OtherRecordsVo.TypeAndComment> queryList(OtherRecordsDto.QueryId param) {
List<OtherRecordsVo.TypeAndComment> patientInformationRecordList = new ArrayList<>();
//通过任务id 找到创建的最新的
List<Long> longs = patientWisdomCarDao.queryByNew(param.getId()); //拿到患者平车id
if(ObjectUtil.isNotNull(longs)){
PatientInformationRecordExample patientInformationRecordExample = new PatientInformationRecordExample();
patientInformationRecordExample.createCriteria().andPatientCarIdEqualTo(longs.get(0)).andTaskSubIdEqualTo(param.getId());
List<PatientInformationRecord> patientInformationRecords = patientInformationRecordMapper.selectByExample(patientInformationRecordExample);
for (PatientInformationRecord patientInformationRecord : patientInformationRecords) {
OtherRecordsVo.Query query = new OtherRecordsVo.Query();
query.setComment(patientInformationRecord.getContent());
query.setType(patientInformationRecord.getInformationType());
patientInformationRecordList.add(query);
}
//拿到患者平车id
PatientInformationRecordExample patientInformationRecordExample = new PatientInformationRecordExample();
patientInformationRecordExample.createCriteria().andTaskSubIdEqualTo(param.getId());
List<PatientInformationRecord> patientInformationRecords = patientInformationRecordMapper.selectByExample(patientInformationRecordExample);
for (PatientInformationRecord patientInformationRecord : patientInformationRecords) {
OtherRecordsVo.TypeAndComment query = new OtherRecordsVo.TypeAndComment();
query.setComment(patientInformationRecord.getContent());
query.setType(patientInformationRecord.getInformationType());
patientInformationRecordList.add(query);
}
return patientInformationRecordList;
}

58
wisdomcar/src/main/java/com/ccsens/wisdomcar/service/PatientAndFamilyService.java

@ -0,0 +1,58 @@
package com.ccsens.wisdomcar.service;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.util.exception.BaseException;
import com.ccsens.wisdomcar.bean.dto.PatientAndFamilyDto;
import com.ccsens.wisdomcar.bean.po.PatientProject;
import com.ccsens.wisdomcar.persist.dao.PatientProjectDao;
import com.ccsens.wisdomcar.util.Constant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/**
* @author
*/
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class PatientAndFamilyService implements IPatientAndFamilyService{
@Resource
private PatientProjectDao patientProjectDao;
@Override
public void updatePatientInfo(PatientAndFamilyDto.PatientInfo param) {
PatientProject patient = patientProjectDao.selectByPrimaryKey(param.getId());
if (ObjectUtil.isNotNull(param)){
if (ObjectUtil.isNotNull(param.getName())){
patient.setName(param.getName());
}
if (ObjectUtil.isNotNull(param.getPhone())){
patient.setPhone(param.getPhone());
}
if (ObjectUtil.isNotNull(param.getAge())){
patient.setAge(param.getAge());
}
if (ObjectUtil.isNotNull(param.getIdCard())){
patient.setIdCard(param.getIdCard());
}
if (ObjectUtil.isNotNull(param.getSex())){
patient.setSex(param.getSex());
}
patientProjectDao.updateByPrimaryKeySelective(patient);
}else{
throw new BaseException(Constant.PATIENT_NOT_FOUND);
}
}
@Override
public void updatePatientFamilyInfo(PatientAndFamilyDto.PatientFamilyInfo param) {
}
}

116
wisdomcar/src/main/java/com/ccsens/wisdomcar/service/ProjectService.java

@ -0,0 +1,116 @@
package com.ccsens.wisdomcar.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake;
import com.ccsens.util.CodeEnum;
import com.ccsens.util.exception.BaseException;
import com.ccsens.wisdomcar.bean.dto.ProjectDto;
import com.ccsens.wisdomcar.bean.po.*;
import com.ccsens.wisdomcar.bean.vo.ProjectVo;
import com.ccsens.wisdomcar.persist.dao.PatientDataDao;
import com.ccsens.wisdomcar.persist.dao.StepDao;
import com.ccsens.wisdomcar.persist.dao.StepTaskDao;
import com.ccsens.wisdomcar.persist.dao.WisdomCarRecordDao;
import com.ccsens.wisdomcar.persist.mapper.PatientWisdomCarMapper;
import com.ccsens.wisdomcar.util.Constant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: whj
* @time: 2021/6/1 21:15
*/
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class ProjectService implements IProjectService {
@Resource
private StepTaskDao stepTaskDao;
@Resource
private WisdomCarRecordDao wisdomCarRecordDao;
@Resource
private PatientDataDao patientDataDao;
@Resource
private StepDao stepDao;
@Resource
private PatientWisdomCarMapper patientWisdomCarMapper;
@Resource
private Snowflake snowflake;
@Override
public void start(ProjectDto.Start param, Long userId) {
StepTaskExample taskExample = new StepTaskExample();
taskExample.createCriteria().andTaskSubIdEqualTo(param.getTaskSubId());
List<StepTask> stepTasks = stepTaskDao.selectByExample(taskExample);
if (CollectionUtil.isEmpty(stepTasks)) {
log.info("没有找到对应任务的患者信息:{}", param);
throw new BaseException(CodeEnum.PARAM_ERROR);
}
// TODO 待确认,是否处理成已提交不再修改????
StepTask stepTask = stepTasks.get(0);
PatientDataExample dataExample = new PatientDataExample();
dataExample.createCriteria().andTaskSubIdEqualTo(param.getTaskSubId()).andStepIdEqualTo(stepTask.getStepId());
List<PatientData> patientData = patientDataDao.selectByExample(dataExample);
if (CollectionUtil.isNotEmpty(patientData)){
log.info("taskId:{}, stepId:{}已经存在,不再修改", param.getTaskSubId(), stepTask.getStepId());
PatientData data = patientData.get(0);
// 未推送
if (data.getPushStatus() == Constant.PUSH_STATUS_SUCCESS) {
log.info("已推送成功,不处理");
return;
}
// TODO 异步推送数据 根据结果修改状态
PatientData updateData = new PatientData();
updateData.setId(data.getId());
updateData.setPushStatus(Constant.PUSH_STATUS_SUCCESS);
patientDataDao.updateByPrimaryKeySelective(updateData);
return;
}
// TODO 判断是否为结束结点
Step step = stepDao.selectByPrimaryKey(stepTask.getStepId());
Integer max = stepDao.getMaxSequence(Constant.STEP_TYPE_REAL);
if (step != null && max != null && step.getSequence() != null && step.getSequence().intValue() == max.intValue()) {
// 修改平车结束时间点
ProjectVo.BindCar bindCar = stepTaskDao.getBindCarTaskId(param.getTaskSubId());
if (bindCar == null) {
log.info("出现异常,未找到绑定平车:{}", param.getTaskSubId());
throw new BaseException(CodeEnum.PARAM_ERROR);
}
PatientWisdomCar patientWisdomCar = new PatientWisdomCar();
patientWisdomCar.setId(bindCar.getId());
patientWisdomCar.setEndTime(param.getStartTime());
patientWisdomCarMapper.updateByPrimaryKeySelective(patientWisdomCar);
}
PatientData data = new PatientData();
data.setId(snowflake.nextId());
data.setUserId(userId);
data.setTaskSubId(param.getTaskSubId());
data.setStepId(stepTask.getStepId());
data.setPushStatus(Constant.PUSH_STATUS_NO);
data.setStartTime(param.getStartTime());
data.setType(Constant.OPERATION_USER);
patientDataDao.insertSelective(data);
// TODO 异步推送数据 根据结果修改状态
}
@Override
public List<ProjectVo.Record> queryWeight(ProjectDto.Weight param, Long userId) {
ProjectVo.BindCar bindCar = stepTaskDao.getBindCarTaskId(param.getTaskSubId());
if (bindCar == null) {
log.info("没有找到绑定的平车信息:{},userId:{}", param, userId);
return new ArrayList<>();
}
return wisdomCarRecordDao.queryRecent(bindCar.getCarId(), bindCar.getStartTime(), bindCar.getEndTime(), (byte)1,(byte)8,(byte)9,(byte)10);
}
}

207
wisdomcar/src/main/java/com/ccsens/wisdomcar/service/WisdomCarService.java

@ -0,0 +1,207 @@
package com.ccsens.wisdomcar.service;
import cn.hutool.core.collection.CollectionUtil;
import com.ccsens.util.bean.dto.QueryDto;
import com.ccsens.util.exception.BaseException;
import com.ccsens.wisdomcar.bean.dto.WisdomCarDto;
import com.ccsens.wisdomcar.bean.po.HospitalMember;
import com.ccsens.wisdomcar.bean.po.HospitalMemberExample;
import com.ccsens.wisdomcar.bean.vo.WisdomCarVo;
import com.ccsens.wisdomcar.persist.dao.HospitalMemberDao;
import com.ccsens.wisdomcar.persist.dao.WisdomCarDao;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.cloudutil.bean.tall.dto.MemberRoleDto;
import com.ccsens.cloudutil.bean.tall.dto.ProjectDto;
import com.ccsens.cloudutil.bean.tall.vo.ProjectVo;
import com.ccsens.cloudutil.feign.TallFeignClient;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.RedisUtil;
import com.ccsens.wisdomcar.bean.dto.CreateCaseDto;
import com.ccsens.wisdomcar.bean.po.*;
import com.ccsens.wisdomcar.persist.dao.HospitalWrokingDao;
import com.ccsens.wisdomcar.persist.dao.PatientFamilyDao;
import com.ccsens.wisdomcar.persist.dao.PatientProjectDao;
import com.ccsens.wisdomcar.util.Constant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @author AUSU
*/
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class WisdomCarService implements IWisdomCarService {
@Resource
private PatientProjectDao patientProjectDao;
@Resource
private PatientFamilyDao patientFamilyDao;
@Resource
private HospitalMemberDao hospitalMemberDao;
@Resource
private Snowflake snowflake;
@Resource
private RedisUtil redisUtil;
@Resource
private HospitalWrokingDao hospitalWrokingDao;
@Resource
private TallFeignClient tallFeignClient;
@Resource
private WisdomCarDao wisdomcarDao;
@Override
public void createCase(CreateCaseDto.PatientInfo param, Long userId) {
//tall中需要添加的成员
MemberRoleDto.SaveMemberForTemplate saveMemberForTemplate = new MemberRoleDto.SaveMemberForTemplate();
List<MemberRoleDto.MemberForTemplate> memberList = new ArrayList<>();
//查找医院id
HospitalMemberExample hospitalMemberExample = new HospitalMemberExample();
hospitalMemberExample.createCriteria().andUserIdEqualTo(userId);
List<HospitalMember> hospitalMembers = hospitalMemberDao.selectByExample(hospitalMemberExample);
HospitalMember hospitalMember;
//患者
PatientProject patient = new PatientProject();
patient.setId(snowflake.nextId());
//设置病历号,redis自增
if (CollectionUtil.isNotEmpty(hospitalMembers)){
hospitalMember = hospitalMembers.get(0);
long incr = redisUtil.incr("医院_" + hospitalMember.getHospitalId().toString(), 1L);
patient.setMedicalRecordNum(String.valueOf(incr));
}
if (ObjectUtil.isNotNull(param.getPatientName())){
patient.setName(param.getPatientName());
}
if (ObjectUtil.isNotNull(param.getPatientSex())){
patient.setSex(param.getPatientSex());
}
if (ObjectUtil.isNotNull(param.getPatientAge())){
patient.setAge(param.getPatientAge());
}
if (ObjectUtil.isNotNull(param.getPatientIdCard())){
patient.setIdCard(param.getPatientIdCard());
}
if (ObjectUtil.isNotNull(param.getPatientPhone())){
patient.setPhone(param.getFamilyPhone());
}
patientProjectDao.insertSelective(patient);
//患者家属
if (ObjectUtil.isNotNull(param.getFamilyName()) || ObjectUtil.isNotNull(param.getFamilyPhone())){
PatientFamily patientFamily = new PatientFamily();
patientFamily.setId(snowflake.nextId());
patientFamily.setName(param.getFamilyName());
patientFamily.setPhone(param.getFamilyPhone());
patientFamily.setPatientId(patient.getId());
patientFamilyDao.insertSelective(patientFamily);
if (ObjectUtil.isNotNull(param.getFamilyPhone())){
MemberRoleDto.MemberForTemplate memberForTemplate = new MemberRoleDto.MemberForTemplate();
//添加对应角色名称
List<String> roleName = new ArrayList<>();
roleName.add(Constant.PATIENT_FAMILY);
memberForTemplate.setRoleName(roleName);
memberForTemplate.setPhone(param.getFamilyPhone());
if (ObjectUtil.isNotNull(param.getFamilyName())){
memberForTemplate.setMemberName(param.getFamilyName());
}
memberList.add(memberForTemplate);
}
}
//查找正在值班得急救医生和急救护士
if (CollectionUtil.isNotEmpty(hospitalMembers)){
long currentTime = System.currentTimeMillis();
//正在值班的医生(0-急诊护士,1-急诊医生,2-专科医生,3-分诊台)
List<HospitalMember> doctor = hospitalWrokingDao.findWorkingDoctor(hospitalMembers.get(0).getHospitalId(),currentTime);
for (HospitalMember member : doctor) {
MemberRoleDto.MemberForTemplate memberForTemplate = new MemberRoleDto.MemberForTemplate();
List<String> roleName = new ArrayList<>();
memberForTemplate.setUserId(member.getUserId());
//急诊护士
if (Constant.EMERGENCY_NURSE_ZERO.equals(member.getPosition())){
roleName.add(Constant.EMERGENCY_NURSE);
}
//急诊医生
if (Constant.EMERGENCY_DOCTOR_ONE.equals(member.getPosition())){
roleName.add(Constant.EMERGENCY_DOCTOR);
}
//专科医生
if (Constant.SPECIALIST_TWO.equals(member.getPosition())){
roleName.add(Constant.SPECIALIST);
}
memberForTemplate.setRoleName(roleName);
memberList.add(memberForTemplate);
}
}
ProjectDto.CopyProject copyProject = new ProjectDto.CopyProject();
copyProject.setProjectId(Constant.TEMPLATE_PROJECT);
log.info("调用tall内的复制项目:{}",copyProject);
QueryDto<ProjectDto.CopyProject> dto = new QueryDto<>();
dto.setParam(copyProject);
JsonResponse<ProjectVo.ProjectInfo> projectId = tallFeignClient.copyProjectNew(dto);
log.info("复制项目后返回:{}", projectId);
if (ObjectUtil.isNull(projectId)) {
log.info("调用tall返回null");
throw new BaseException(Constant.RETURN_NULL);
}
if(!projectId.getCode().equals(Constant.RESPONSE_OK)){
log.info("调用tall异常后返回:{}", projectId.getMsg());
throw new BaseException(Constant.RETURN_ERROR);
}
ProjectVo.ProjectInfo data = projectId.getData();
if (ObjectUtil.isNotNull(data)){
saveMemberForTemplate.setProjectId(data.getId());
saveMemberForTemplate.setMemberForTemplate(memberList);
//调用tall的添加成员接口
log.info("调用tall内的给复制的项目添加成员接口");
JsonResponse jsonResponse = tallFeignClient.addMemberForTemplate(saveMemberForTemplate);
if (!jsonResponse.getCode().equals(Constant.RESPONSE_OK)){
log.info("调用tall异常后返回:{}",jsonResponse.getMsg());
throw new BaseException(Constant.RETURN_ERROR);
}
}else{
throw new BaseException(Constant.RETURN_NULL);
}
}
@Override
public List<WisdomCarVo.FreeCar> queryFreeCar(WisdomCarDto.FreeCar param, Long userId) {
HospitalMemberExample example = new HospitalMemberExample();
example.createCriteria().andUserIdEqualTo(userId);
List<HospitalMember> hospitalMembers = hospitalMemberDao.selectByExample(example);
if (CollectionUtil.isEmpty(hospitalMembers)) {
return new ArrayList<>();
}
Long hospitalId = hospitalMembers.get(0).getHospitalId();
return wisdomcarDao.queryFreeCar(hospitalId);
}
@Override
public void bindingCar(WisdomCarDto.BindingCar param, Long userId) {
}
@Override
public void uploadCarData(WisdomCarDto.UploadCarData param, Long userId) {
}
}

74
wisdomcar/src/main/java/com/ccsens/wisdomcar/util/Constant.java

@ -36,5 +36,79 @@ public class Constant {
/**维持剂量*/
public static final byte MAINTENANCE_DOSE = 10;
/**推送成功*/
public static final byte PUSH_STATUS_SUCCESS = 2;
/**推送失败*/
public static final byte PUSH_STATUS_FAIL = 1;
/**未推送*/
public static final byte PUSH_STATUS_NO = 0;
/**数据来源:用户*/
public static final byte OPERATION_USER = 1;
/**数据来源:平车*/
public static final byte OPERATION_CAR = 0;
/**环节:真实*/
public static final byte STEP_TYPE_REAL = 0;
/**
* 智慧平车,模板项目id
*/
public static final Long TEMPLATE_PROJECT = 1399649478197252096L;
/**
* 角色名称:患者家属
*/
public static final String PATIENT_FAMILY = "家属";
/**
* 角色名称:急诊医生
*/
public static final String EMERGENCY_DOCTOR = "急诊医生";
/**
* 角色名称:急诊护士
*/
public static final String EMERGENCY_NURSE = "急诊护士";
/**
* 角色名称:专科医生
*/
public static final String SPECIALIST = "专科医生";
/**
* 角色名称:分诊台
*/
public static final String TRIAGE_TABLE = "分诊台";
/**
* 0急诊护士
*/
public static final Byte EMERGENCY_NURSE_ZERO = 0;
/**
* 1-急诊医生
*/
public static final Byte EMERGENCY_DOCTOR_ONE = 1;
/**
* 2-专科医生
*/
public static final Byte SPECIALIST_TWO = 2;
/**
* 3-分诊台
*/
public static final Byte TRIAGE_TABLE_THREE = 3;
/**
* 响应成功
*/
public static final Integer RESPONSE_OK = 200;
/**
* 患者不存在
*/
public static final String PATIENT_NOT_FOUND = "患者不存在";
/**
* 患者不存在
*/
public static final String RETURN_NULL = "调用tall返回null";
/**
* 调用Tall异常
*/
public static final String RETURN_ERROR = "调用Tall异常";
}

2
wisdomcar/src/main/resources/application-dev.yml

@ -10,7 +10,7 @@ spring:
rabbitmq:
# host: 192.144.182.42
# host: test.tall.wiki
host: 192.168.0.99
host: 192.168.4.113
password: 111111
port: 5672
username: admin

16
wisdomcar/src/main/resources/mapper_dao/HospitalWorkingDao.xml

@ -2,4 +2,20 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.wisdomcar.persist.dao.HospitalWrokingDao">
<select id="findWorkingDoctor" resultType="com.ccsens.wisdomcar.bean.po.HospitalMember">
SELECT
hm.position AS position,
hm.user_id AS userId,
hm.position AS position
FROM
t_hospital_member AS hm
LEFT JOIN t_hospital_wroking AS hw ON hm.id = hw.hospital_member_id
AND hw.rec_status = 0
WHERE
hm.rec_status = 0
AND hm.hospital_id = #{hospitalId}
AND hw.start_time &lt; #{currentTime}
AND hw.end_time &gt; #{currentTime}
</select>
</mapper>

3
wisdomcar/src/main/resources/mapper_dao/StepDao.xml

@ -36,4 +36,7 @@
ORDER BY time DESC
limit 1
</select>
<select id="getMaxSequence" resultType="java.lang.Integer">
select max(sequence) from t_step where step_type = #{stepType} and rec_status = 0
</select>
</mapper>

8
wisdomcar/src/main/resources/mapper_dao/StepTaskDao.xml

@ -2,4 +2,12 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.wisdomcar.persist.dao.StepTaskDao">
<select id="getBindCarTaskId" resultType="com.ccsens.wisdomcar.bean.vo.ProjectVo$BindCar" parameterType="java.lang.Long">
select c.id, c.task_sub_id as taskSubId, c.patient_id as patientId, c.car_id as carId, c.start_time as startTime, c.end_time as endTime FROM
(select patient_id, batch from t_step_task where task_sub_id = #{taskSubId} and rec_status = 0) batch,
(select id from t_step where code = 1 and step_type = 0 and rec_status = 0) step,
t_step_task st,
t_patient_wisdom_car c
where batch.batch = st.batch and step.id = st.step_id and st.task_sub_id = c.task_sub_id and st.rec_status = 0 and c.rec_status = 0 order by c.start_time desc limit 1
</select>
</mapper>

23
wisdomcar/src/main/resources/mapper_dao/WisdomCarDao.xml

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.wisdomcar.persist.dao.WisdomCarDao">
<select id="queryFreeCar" resultType="com.ccsens.wisdomcar.bean.vo.WisdomCarVo$FreeCar">
( SELECT id, car_number FROM t_wisdom_car WHERE hospital_id = #{hospitalId} AND rec_status = 0 ) EXCEPT
(
SELECT
c.id,
c.car_number
FROM
t_patient_wisdom_car pc,
t_wisdom_car c
WHERE
pc.car_id = c.id
AND c.hospital_id = #{hospitalId}
AND pc.end_time = 0
AND pc.start_time >= ( unix_timestamp( ) - 2 * 60 * 60 ) * 1000
AND pc.rec_status = 0
AND c.rec_status = 0
)
</select>
</mapper>

14
wisdomcar/src/main/resources/mapper_dao/WisdomCarRecordDao.xml

@ -38,4 +38,18 @@
</otherwise>
</choose>
</select>
<select id="queryRecent" resultType="com.ccsens.wisdomcar.bean.vo.ProjectVo$Record">
<foreach collection="typeArr" item="type" separator="union">
(select type, value
from t_wisdom_car_record
where type = #{type} and car_id = #{carId}
<if test="startTime!= null and startTime != ''">
and time &gt;= #{startTime}
</if>
<if test="endTime!= null and endTime != ''">
and time &lt; #{endTime}
</if>
order by created_at desc limit 1)
</foreach>
</select>
</mapper>

29
wisdomcar/src/main/resources/mapper_raw/PatientWisdomCarMapper.xml

@ -12,6 +12,7 @@
<result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
<result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
<result column="rec_status" jdbcType="TINYINT" property="recStatus" />
<result column="binding_status" jdbcType="TINYINT" property="bindingStatus" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
@ -72,8 +73,8 @@
</where>
</sql>
<sql id="Base_Column_List">
id, patient_id, task_sub_id, car_id, start_time, end_time, is_demo, created_at, updated_at,
rec_status
id, patient_id, task_sub_id, car_id, start_time, end_time, is_demo, created_at, updated_at,
rec_status, binding_status
</sql>
<select id="selectByExample" parameterType="com.ccsens.wisdomcar.bean.po.PatientWisdomCarExample" resultMap="BaseResultMap">
select
@ -108,12 +109,12 @@
<insert id="insert" parameterType="com.ccsens.wisdomcar.bean.po.PatientWisdomCar">
insert into t_patient_wisdom_car (id, patient_id, task_sub_id,
car_id, start_time, end_time,
is_demo, created_at, updated_at,
rec_status)
is_demo, created_at, updated_at,
rec_status, binding_status)
values (#{id,jdbcType=BIGINT}, #{patientId,jdbcType=BIGINT}, #{taskSubId,jdbcType=BIGINT},
#{carId,jdbcType=BIGINT}, #{startTime,jdbcType=BIGINT}, #{endTime,jdbcType=BIGINT},
#{isDemo,jdbcType=TINYINT}, #{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP},
#{recStatus,jdbcType=TINYINT})
#{recStatus,jdbcType=TINYINT}, #{bindingStatus,jdbcType=TINYINT})
</insert>
<insert id="insertSelective" parameterType="com.ccsens.wisdomcar.bean.po.PatientWisdomCar">
insert into t_patient_wisdom_car
@ -148,6 +149,9 @@
<if test="recStatus != null">
rec_status,
</if>
<if test="bindingStatus != null">
binding_status,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
@ -180,6 +184,9 @@
<if test="recStatus != null">
#{recStatus,jdbcType=TINYINT},
</if>
<if test="bindingStatus != null">
#{bindingStatus,jdbcType=TINYINT},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.ccsens.wisdomcar.bean.po.PatientWisdomCarExample" resultType="java.lang.Long">
@ -221,6 +228,9 @@
<if test="record.recStatus != null">
rec_status = #{record.recStatus,jdbcType=TINYINT},
</if>
<if test="record.bindingStatus != null">
binding_status = #{record.bindingStatus,jdbcType=TINYINT},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
@ -237,7 +247,8 @@
is_demo = #{record.isDemo,jdbcType=TINYINT},
created_at = #{record.createdAt,jdbcType=TIMESTAMP},
updated_at = #{record.updatedAt,jdbcType=TIMESTAMP},
rec_status = #{record.recStatus,jdbcType=TINYINT}
rec_status = #{record.recStatus,jdbcType=TINYINT},
binding_status = #{record.bindingStatus,jdbcType=TINYINT}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
@ -272,6 +283,9 @@
<if test="recStatus != null">
rec_status = #{recStatus,jdbcType=TINYINT},
</if>
<if test="bindingStatus != null">
binding_status = #{bindingStatus,jdbcType=TINYINT},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
@ -285,7 +299,8 @@
is_demo = #{isDemo,jdbcType=TINYINT},
created_at = #{createdAt,jdbcType=TIMESTAMP},
updated_at = #{updatedAt,jdbcType=TIMESTAMP},
rec_status = #{recStatus,jdbcType=TINYINT}
rec_status = #{recStatus,jdbcType=TINYINT},
binding_status = #{bindingStatus,jdbcType=TINYINT}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>
Loading…
Cancel
Save