diff --git a/cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/dto/MemberRoleDto.java b/cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/dto/MemberRoleDto.java index c8b10729..2c3fc400 100644 --- a/cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/dto/MemberRoleDto.java +++ b/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; + } + @Data + @ApiModel("模板项目成员信息") + public static class MemberForTemplate { + @ApiModelProperty("用户id(医生)") + private Long userId; + @ApiModelProperty("成员名") + private String memberName; + @ApiModelProperty("成员手机号") + private String phone; + @ApiModelProperty("所属角色的名称") + private List roleName; + } } diff --git a/cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/dto/ProjectDto.java b/cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/dto/ProjectDto.java new file mode 100644 index 00000000..916aaef0 --- /dev/null +++ b/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; + } +} diff --git a/cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/ProjectVo.java b/cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/ProjectVo.java new file mode 100644 index 00000000..c2e8aca2 --- /dev/null +++ b/cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/ProjectVo.java @@ -0,0 +1,98 @@ +package com.ccsens.cloudutil.bean.tall.vo; + +import cn.hutool.core.util.ObjectUtil; +import com.ccsens.util.WebConstant; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author AUSU + */ +@Data +public class ProjectVo { + + @Data + @ApiModel("复制的项目信息") + public static class ProjectInfo{ + @ApiModelProperty("项目id") + private Long id; + @ApiModelProperty("项目名称") + private String name; + @ApiModelProperty("地点") + private String description; + @ApiModelProperty("描述信息") + private String address; + @ApiModelProperty("项目开始时间(milltime)") + private Long beginTime; + @ApiModelProperty("项目时长(milltime)") + private Long totalDuration; + @ApiModelProperty("项目结束时间(milltime)") + private Long endTime; + @ApiModelProperty("项目进行状态:0未开始,1进行中,2已过期") + private Integer process; + @ApiModelProperty("当前用户在本项目中的角色") + private List roles = new ArrayList<>(); + @ApiModelProperty("当前用户在本项目中的最高权限") + private int power; + @ApiModelProperty("当前用户是否是本项目的创建者") + private boolean creator; + @ApiModelProperty("WPS文件信息") + private List wpsFilePaths; + + @ApiModelProperty("子项目信息") + private List subProjectList; + @ApiModelProperty("是否在首页展示 0否 1是") + private Byte homePageShow; + @ApiModelProperty("是否高亮展示 0否 1是") + private Byte highlight; + @ApiModelProperty("父项目id") + private Long parentId; + + public Long getTotalDuration(){ + if(ObjectUtil.isNotNull(endTime) && ObjectUtil.isNotNull(beginTime)){ + return endTime - beginTime; + } + return null; + } + + public Integer getProcess(){ + Long current = System.currentTimeMillis(); + if(ObjectUtil.isNull(getBeginTime()) || ObjectUtil.isNull(getEndTime())) { + return null; + } + if(getBeginTime() > current){ + this.process = WebConstant.EVENT_PROCESS.Pending.value; + }else if(getEndTime() < current){ + this.process = WebConstant.EVENT_PROCESS.Expired.value; + }else{ + this.process = WebConstant.EVENT_PROCESS.Processing.value; + } + return this.process; + } + + @Override + public boolean equals(Object obj){ + if(this == obj) { + return true; + } + if(obj == null) { + return false; + } + ProjectInfo o = (ProjectInfo)obj; + if(this.id.equals(o.id)) { + return true; + } + return false; + } + + @Override + public int hashCode(){ + return (int)((id / 1000)); + } + } + +} diff --git a/cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java b/cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java index a2a5e957..576b0b43 100644 --- a/cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java +++ b/cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java @@ -5,7 +5,7 @@ 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 +238,24 @@ public interface TallFeignClient { */ @RequestMapping("/roles/delete") JsonResponse deleteRole(MemberRoleDto.DeleteRole deleteRole); + + /** + * 根据项目模板复制项目 + * @param copyProject 项目id + * @return 项目 + */ + @RequestMapping("/projects/copyProject") + JsonResponse copyProjectNew(QueryDto copyProject); + + /** + * 给复制后的模板项目添加成员 + * @param memberForTemplate 项目id/角色名称/成员手机号或userId + * @return 成功/失败 + */ + @RequestMapping("/members/addMemberForTemplate") + JsonResponse addMemberForTemplate(MemberRoleDto.SaveMemberForTemplate memberForTemplate); + + } @Slf4j @@ -400,6 +418,16 @@ class TallFeignClientFallBack implements FallbackFactory { public JsonResponse deleteRole(MemberRoleDto.DeleteRole deleteRole) { return JsonResponse.newInstance().fail(); } + + @Override + public JsonResponse copyProjectNew(QueryDto copyProject) { + return JsonResponse.newInstance().fail(); + } + + @Override + public JsonResponse addMemberForTemplate(MemberRoleDto.SaveMemberForTemplate memberForTemplate) { + return JsonResponse.newInstance().fail(); + } }; } diff --git a/tall/src/main/java/com/ccsens/tall/bean/dto/MemberDto.java b/tall/src/main/java/com/ccsens/tall/bean/dto/MemberDto.java index dd9840a7..4329b034 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/dto/MemberDto.java +++ b/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; + } + @Data + @ApiModel("模板项目成员信息") + public static class MemberForTemplate { + @ApiModelProperty("用户id(医生)") + private Long userId; + @ApiModelProperty("成员名") + private String memberName; + @ApiModelProperty("成员手机号") + private String phone; + @ApiModelProperty("所属角色的名称") + private List roleName; + } + } diff --git a/tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberDao.java b/tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberDao.java index 60b4dc4d..c024c946 100644 --- a/tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberDao.java +++ b/tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberDao.java @@ -67,4 +67,12 @@ public interface ProMemberDao extends ProMemberMapper{ * @return 返回所有成员信息及奖惩干系人 */ List queryByProjectId(@Param("projectId")Long projectId); + + /** + * 通过项目id和手机号查询用户是否存在 + * @param projectId 项目id + * @param phone 手机号 + * @return 0为不存在 + */ + int findUserIsExist(@Param("projectId") Long projectId,@Param("phone") String phone); } diff --git a/tall/src/main/java/com/ccsens/tall/persist/dao/ProRoleDao.java b/tall/src/main/java/com/ccsens/tall/persist/dao/ProRoleDao.java index 382bb1e9..e3bc928f 100644 --- a/tall/src/main/java/com/ccsens/tall/persist/dao/ProRoleDao.java +++ b/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); + // /** // * 查找项目下的所有成员的名字用“,”分隔 diff --git a/tall/src/main/java/com/ccsens/tall/service/IProMemberService.java b/tall/src/main/java/com/ccsens/tall/service/IProMemberService.java index 9c33b346..29a7d1d5 100644 --- a/tall/src/main/java/com/ccsens/tall/service/IProMemberService.java +++ b/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); } diff --git a/tall/src/main/java/com/ccsens/tall/service/IProjectService.java b/tall/src/main/java/com/ccsens/tall/service/IProjectService.java index f3ab081e..f427c153 100644 --- a/tall/src/main/java/com/ccsens/tall/service/IProjectService.java +++ b/tall/src/main/java/com/ccsens/tall/service/IProjectService.java @@ -69,7 +69,8 @@ public interface IProjectService { * 根据模板复制项目 * @param param 项目id * @param userId 当前用户id + * @param token 用户token * @return 复制成功的项目 */ - ProjectVo.ProjectInfo copyProjectNew(ProjectDto.ProjectIdDto param, Long userId); + ProjectVo.ProjectInfo copyProjectNew(ProjectDto.ProjectIdDto param, Long userId,String token); } diff --git a/tall/src/main/java/com/ccsens/tall/service/ProMemberService.java b/tall/src/main/java/com/ccsens/tall/service/ProMemberService.java index 6013103f..f12f09c2 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProMemberService.java +++ b/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); + } + } + } + + } + } + + } + } diff --git a/tall/src/main/java/com/ccsens/tall/service/ProjectService.java b/tall/src/main/java/com/ccsens/tall/service/ProjectService.java index 222706ca..2fb369d4 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProjectService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProjectService.java @@ -1471,7 +1471,7 @@ public class ProjectService implements IProjectService { * @return 复制后的项目 */ @Override - public ProjectVo.ProjectInfo copyProjectNew(ProjectDto.ProjectIdDto param, Long userId) { + public ProjectVo.ProjectInfo copyProjectNew(ProjectDto.ProjectIdDto param, Long userId,String token) { //当前时间 long currentTime = System.currentTimeMillis(); SysProject oldProject = sysProjectDao.selectByPrimaryKey(param.getProjectId()); @@ -1517,7 +1517,7 @@ public class ProjectService implements IProjectService { //复制项目配置信息 copyProjectConfig(oldProject.getId(), newProject.getId(),userId); //复制项目下的角色 - return null; + return getProjectInfoById(userId,newProject.getId(),token); } } diff --git a/tall/src/main/java/com/ccsens/tall/web/MemberController.java b/tall/src/main/java/com/ccsens/tall/web/MemberController.java index 0ca2cfb3..577039b3 100644 --- a/tall/src/main/java/com/ccsens/tall/web/MemberController.java +++ b/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 params) throws Exception { + log.info("根据模板复制项目新:{}",params); + proMemberService.addMemberForTemplate(params.getParam()); + log.info("根据模板复制项目新结束"); + return JsonResponse.newInstance().ok(); + } } diff --git a/tall/src/main/java/com/ccsens/tall/web/ProjectController.java b/tall/src/main/java/com/ccsens/tall/web/ProjectController.java index 3941c5be..640135ef 100644 --- a/tall/src/main/java/com/ccsens/tall/web/ProjectController.java +++ b/tall/src/main/java/com/ccsens/tall/web/ProjectController.java @@ -336,10 +336,12 @@ public class ProjectController { @MustLogin @ApiOperation(value = "根据模板复制项目新", notes = "") @RequestMapping(value = "/copyProject", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) - public JsonResponse copyProjectNew(@ApiParam @Validated @RequestBody QueryDto params) throws Exception { + public JsonResponse copyProjectNew(@ApiParam @Validated @RequestBody QueryDto params) throws Exception { log.info("根据模板复制项目新:{}",params); - ProjectVo.ProjectInfo projectInfo = projectService.copyProjectNew(params.getParam(),params.getUserId()); +// String authHeader = request.getHeader(WebConstant.HEADER_KEY_TOKEN); +// String token = authHeader.substring(WebConstant.HEADER_KEY_TOKEN_PREFIX.length()); +// ProjectVo.ProjectInfo projectInfo = projectService.copyProjectNew(params.getParam(),params.getUserId(),token); log.info("根据模板复制项目新结束"); - return JsonResponse.newInstance().ok(projectInfo); + return JsonResponse.newInstance().ok(); } } diff --git a/tall/src/main/resources/application.yml b/tall/src/main/resources/application.yml index ee27f352..b5408a3a 100644 --- a/tall/src/main/resources/application.yml +++ b/tall/src/main/resources/application.yml @@ -1,6 +1,5 @@ spring: profiles: - active: test - include: util-test,common - + active: dev + include: util-dev,common diff --git a/tall/src/main/resources/mapper_dao/ProMemberDao.xml b/tall/src/main/resources/mapper_dao/ProMemberDao.xml index e448a8a6..c6d5facc 100644 --- a/tall/src/main/resources/mapper_dao/ProMemberDao.xml +++ b/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 != '' + + \ No newline at end of file diff --git a/tall/src/main/resources/mapper_dao/ProRoleDao.xml b/tall/src/main/resources/mapper_dao/ProRoleDao.xml index 06100c3c..b9dbf7d2 100644 --- a/tall/src/main/resources/mapper_dao/ProRoleDao.xml +++ b/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 + + \ No newline at end of file diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/PatientAndFamilyController.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/PatientAndFamilyController.java new file mode 100644 index 00000000..ffb163cd --- /dev/null +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/PatientAndFamilyController.java @@ -0,0 +1,17 @@ +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 = "患者与家属相关接口" , description = "") +@RestController +@RequestMapping("/patientAndFamily") +public class PatientAndFamilyController { + +} diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/WisdomCarController.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/WisdomCarController.java index c1fbba36..a4be3f14 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/WisdomCarController.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/WisdomCarController.java @@ -6,6 +6,12 @@ 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; @@ -40,4 +46,17 @@ public class WisdomCarController { 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 params) { + log.info("创建病例接口:{}", params); + wisdomCarService.createCase(params.getParam(), params.getUserId()); + log.info("创建病例接口"); + return JsonResponse.newInstance().ok(); + + } } + + diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/CreateCaseDto.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/CreateCaseDto.java new file mode 100644 index 00000000..a914fcd0 --- /dev/null +++ b/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; + } +} diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/HospitalWrokingDao.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/HospitalWrokingDao.java index b2535667..87702373 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/HospitalWrokingDao.java +++ b/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 findWorkingDoctor(@Param("hospitalId") Long hospitalId,@Param("currentTime") Long currentTime); + } \ No newline at end of file diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IWisdomCarService.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IWisdomCarService.java index a59374c9..ae44c871 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IWisdomCarService.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IWisdomCarService.java @@ -1,7 +1,9 @@ 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; @@ -16,4 +18,14 @@ public interface IWisdomCarService { * @return 空闲平车 */ List queryFreeCar(WisdomCarDto.FreeCar param, Long userId); + + + + + /** + * 创建病例 + * @param param 患者信息与家属信息 + * @param userId 当前用户id + */ + void createCase(CreateCaseDto.PatientInfo param, Long userId); } diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/WisdomCarService.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/WisdomCarService.java index 1b59811a..68f4ea4c 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/WisdomCarService.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/WisdomCarService.java @@ -1,12 +1,27 @@ package com.ccsens.wisdomcar.service; import cn.hutool.core.collection.CollectionUtil; +import com.ccsens.util.bean.dto.QueryDto; 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; @@ -17,9 +32,7 @@ import java.util.ArrayList; import java.util.List; /** - * @description: - * @author: whj - * @time: 2021/6/1 21:17 + * @author AUSU */ @Slf4j @Service @@ -27,9 +40,143 @@ import java.util.List; public class WisdomCarService implements IWisdomCarService { @Resource - private WisdomCarDao wisdomcarDao; + 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 memberList = new ArrayList<>(); + + + //查找医院id + HospitalMemberExample hospitalMemberExample = new HospitalMemberExample(); + hospitalMemberExample.createCriteria().andUserIdEqualTo(userId); + List 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 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 doctor = hospitalWrokingDao.findWorkingDoctor(hospitalMembers.get(0).getHospitalId(),currentTime); + for (HospitalMember member : doctor) { + MemberRoleDto.MemberForTemplate memberForTemplate = new MemberRoleDto.MemberForTemplate(); + List 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 dto = new QueryDto<>(); + dto.setParam(copyProject); + JsonResponse projectNew = tallFeignClient.copyProjectNew(dto); + log.info("复制项目后返回:{}", projectNew); + if (ObjectUtil.isNull(projectNew)) { + log.info("调用tall返回null"); + return; + } + if(projectNew.getCode().equals(Constant.RESPONSE_OK)){ + log.info("调用tall异常后返回:{}", projectNew.getMsg()); + return; + } + + ProjectVo.ProjectInfo newProject = projectNew.getData(); + if (ObjectUtil.isNotNull(newProject)){ + saveMemberForTemplate.setProjectId(newProject.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()); + return; + } + } + } + + + @Override public List queryFreeCar(WisdomCarDto.FreeCar param, Long userId) { diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/util/Constant.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/util/Constant.java index 02578c4e..e916cd0f 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/util/Constant.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/util/Constant.java @@ -47,5 +47,52 @@ public class Constant { /**数据来源:平车*/ public static final byte OPERATION_CAR = 0; + /** + * 智慧平车,模板项目id + */ + public static final Long TEMPLATE_PROJECT = 1397074571902980096L; + /** + * 角色名称:患者家属 + */ + 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; } diff --git a/wisdomcar/src/main/resources/mapper_dao/HospitalWorkingDao.xml b/wisdomcar/src/main/resources/mapper_dao/HospitalWorkingDao.xml index 9b85e772..d2cb12ee 100644 --- a/wisdomcar/src/main/resources/mapper_dao/HospitalWorkingDao.xml +++ b/wisdomcar/src/main/resources/mapper_dao/HospitalWorkingDao.xml @@ -2,4 +2,20 @@ + + \ No newline at end of file