Browse Source

平车新增病例接口

pt
ma 4 years ago
parent
commit
6c9e95edcb
  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. 98
      cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/ProjectVo.java
  4. 30
      cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java
  5. 23
      tall/src/main/java/com/ccsens/tall/bean/dto/MemberDto.java
  6. 8
      tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberDao.java
  7. 8
      tall/src/main/java/com/ccsens/tall/persist/dao/ProRoleDao.java
  8. 7
      tall/src/main/java/com/ccsens/tall/service/IProMemberService.java
  9. 3
      tall/src/main/java/com/ccsens/tall/service/IProjectService.java
  10. 74
      tall/src/main/java/com/ccsens/tall/service/ProMemberService.java
  11. 4
      tall/src/main/java/com/ccsens/tall/service/ProjectService.java
  12. 12
      tall/src/main/java/com/ccsens/tall/web/MemberController.java
  13. 8
      tall/src/main/java/com/ccsens/tall/web/ProjectController.java
  14. 5
      tall/src/main/resources/application.yml
  15. 10
      tall/src/main/resources/mapper_dao/ProMemberDao.xml
  16. 10
      tall/src/main/resources/mapper_dao/ProRoleDao.xml
  17. 17
      wisdomcar/src/main/java/com/ccsens/wisdomcar/api/PatientAndFamilyController.java
  18. 19
      wisdomcar/src/main/java/com/ccsens/wisdomcar/api/WisdomCarController.java
  19. 38
      wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/CreateCaseDto.java
  20. 9
      wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/HospitalWrokingDao.java
  21. 12
      wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IWisdomCarService.java
  22. 155
      wisdomcar/src/main/java/com/ccsens/wisdomcar/service/WisdomCarService.java
  23. 47
      wisdomcar/src/main/java/com/ccsens/wisdomcar/util/Constant.java
  24. 16
      wisdomcar/src/main/resources/mapper_dao/HospitalWorkingDao.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;
}
}

98
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<String> roles = new ArrayList<>();
@ApiModelProperty("当前用户在本项目中的最高权限")
private int power;
@ApiModelProperty("当前用户是否是本项目的创建者")
private boolean creator;
@ApiModelProperty("WPS文件信息")
private List<String> wpsFilePaths;
@ApiModelProperty("子项目信息")
private List<ProjectInfo> 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));
}
}
}

30
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<ProjectVo.ProjectInfo> copyProjectNew(QueryDto<ProjectDto.CopyProject> copyProject);
/**
* 给复制后的模板项目添加成员
* @param memberForTemplate 项目id/角色名称/成员手机号或userId
* @return 成功/失败
*/
@RequestMapping("/members/addMemberForTemplate")
JsonResponse addMemberForTemplate(MemberRoleDto.SaveMemberForTemplate memberForTemplate);
}
@Slf4j
@ -400,6 +418,16 @@ class TallFeignClientFallBack implements FallbackFactory<TallFeignClient> {
public JsonResponse deleteRole(MemberRoleDto.DeleteRole deleteRole) {
return JsonResponse.newInstance().fail();
}
@Override
public JsonResponse copyProjectNew(QueryDto<ProjectDto.CopyProject> copyProject) {
return JsonResponse.newInstance().fail();
}
@Override
public JsonResponse addMemberForTemplate(MemberRoleDto.SaveMemberForTemplate memberForTemplate) {
return JsonResponse.newInstance().fail();
}
};
}

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

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

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

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

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

8
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<ProjectVo.ProjectInfo> copyProjectNew(@ApiParam @Validated @RequestBody QueryDto<ProjectDto.ProjectIdDto> params) throws Exception {
public JsonResponse<ProjectVo.ProjectInfo> copyProjectNew(@ApiParam @Validated @RequestBody QueryDto<com.ccsens.cloudutil.bean.tall.dto.ProjectDto.CopyProject> 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();
}
}

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>

17
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 {
}

19
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<CreateCaseDto.PatientInfo> params) {
log.info("创建病例接口:{}", params);
wisdomCarService.createCase(params.getParam(), params.getUserId());
log.info("创建病例接口");
return JsonResponse.newInstance().ok();
}
}

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

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

12
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<WisdomCarVo.FreeCar> queryFreeCar(WisdomCarDto.FreeCar param, Long userId);
/**
* 创建病例
* @param param 患者信息与家属信息
* @param userId 当前用户id
*/
void createCase(CreateCaseDto.PatientInfo param, Long userId);
}

155
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<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> 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<WisdomCarVo.FreeCar> queryFreeCar(WisdomCarDto.FreeCar param, Long userId) {

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

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>
Loading…
Cancel
Save