From 97a0cf01c0632df9e868ccda5df230c20d3c98f2 Mon Sep 17 00:00:00 2001 From: ma <1062634917@qq.com> Date: Thu, 3 Jun 2021 20:55:11 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ccsens/wisdomcar/persist/dao/StepDao.java | 2 +- wisdomcar/src/main/resources/mapper_dao/StepDao.xml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/StepDao.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/StepDao.java index 02016870..426f0feb 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/StepDao.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/StepDao.java @@ -36,5 +36,5 @@ public interface StepDao extends StepMapper { * @param patientCarId 患者平车id * @return 环节信息 */ - List findStepIsOver(Long patientCarId); + List findStepIsOver(@Param("patientCarId") Long patientCarId); } diff --git a/wisdomcar/src/main/resources/mapper_dao/StepDao.xml b/wisdomcar/src/main/resources/mapper_dao/StepDao.xml index 924ecc28..27cb7927 100644 --- a/wisdomcar/src/main/resources/mapper_dao/StepDao.xml +++ b/wisdomcar/src/main/resources/mapper_dao/StepDao.xml @@ -51,10 +51,11 @@ FROM t_step AS s LEFT JOIN t_patient_data AS pd ON s.id = pd.step_id - AND pd.patient_car_id = 0 + AND pd.patient_car_id = #{patientCarId} LEFT JOIN t_hospital_member AS hm ON pd.user_id = hm.user_id WHERE s.step_type = 0 + ORDER BY s.`code`+1 From d3b7832b1420ea1be4738f4f68cd9af77b2d01ed Mon Sep 17 00:00:00 2001 From: zhizhi wu <2377881365@qq.com> Date: Thu, 3 Jun 2021 21:14:38 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E5=9B=BE=E5=83=8F=E8=AF=86=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wisdomcar/api/ProjectController.java | 33 +++++++++++++++++++ .../ccsens/wisdomcar/bean/dto/ProjectDto.java | 16 +++++++++ .../ccsens/wisdomcar/bean/vo/ProjectVo.java | 11 +++++++ .../wisdomcar/persist/dao/PatientDataDao.java | 14 ++++++++ .../wisdomcar/service/IProjectService.java | 7 ++++ .../wisdomcar/service/ProjectService.java | 11 ++++--- .../wisdomcar/service/WisdomCarService.java | 17 ++++++---- .../com/ccsens/wisdomcar/util/Constant.java | 6 ++++ .../resources/mapper_dao/PatientDataDao.xml | 11 +++++++ 9 files changed, 115 insertions(+), 11 deletions(-) diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/ProjectController.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/ProjectController.java index d851b0fc..1c1fc62d 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/ProjectController.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/ProjectController.java @@ -1,11 +1,16 @@ package com.ccsens.wisdomcar.api; +import cn.hutool.core.collection.CollectionUtil; import com.ccsens.cloudutil.annotation.MustLogin; import com.ccsens.util.JsonResponse; +import com.ccsens.util.baidu.BaiDuDto; +import com.ccsens.util.baidu.BaiDuUtil; +import com.ccsens.util.baidu.BaiDuVo; 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 com.ccsens.wisdomcar.util.Constant; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -17,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; /** @@ -51,4 +57,31 @@ public class ProjectController { log.info("查询称重和剂量:{}", list); return JsonResponse.newInstance().ok(list); } + @MustLogin + @ApiOperation(value = "查询开始时间", notes = "whj") + @RequestMapping(value = "/getStartTime", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse getStartTime(@ApiParam @Validated @RequestBody QueryDto params){ + log.info("查询开始时间:{}", params); + ProjectVo.GetStartTime time = projectService.getStartTime(params.getParam(), params.getUserId()); + log.info("查询开始时间结束:{}", time); + return JsonResponse.newInstance().ok(time); + } + @MustLogin + @ApiOperation(value = "图像识别", notes = "whj") + @RequestMapping(value = "/identifyWords", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse> identifyWords(@ApiParam @Validated @RequestBody QueryDto params){ + log.info("图像识别:{}", params); + BaiDuDto.GeneralBasic basic = new BaiDuDto.GeneralBasic(); + basic.setUrl(params.getParam().getUrl()); + BaiDuVo.GeneralBasic words = BaiDuUtil.accurateBasic(Constant.BaiDu.APP_KEY, Constant.BaiDu.SECRET_KEY, basic); + List result; + if (words != null && CollectionUtil.isNotEmpty(words.getWordsResult())) { + result = words.getWordsResult(); + } else { + result = new ArrayList<>(); + } + log.info("图像识别结束:{}", result); + return JsonResponse.newInstance().ok(result); + } + } diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/ProjectDto.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/ProjectDto.java index 23521dc3..7dd99d3a 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/ProjectDto.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/ProjectDto.java @@ -30,4 +30,20 @@ public class ProjectDto { @ApiModelProperty("分解任务ID") private Long taskSubId; } + + @Data + @ApiModel("查询任务开始时间--请求") + public static class GetStartTime { + @NotNull(message="请说明您的任务") + @ApiModelProperty("分解任务ID") + private Long taskSubId; + } + + @Data + @ApiModel("图像识别--请求") + public static class Img { + @NotNull + @ApiModelProperty("文件路径") + private String url; + } } diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/ProjectVo.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/ProjectVo.java index de1ecacb..2edba34a 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/ProjectVo.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/ProjectVo.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; + /** * @description: * @author: whj @@ -39,4 +41,13 @@ public class ProjectVo { private Long endTime; } + + @Data + @ApiModel("查询任务开始时间--响应") + public static class GetStartTime { + @ApiModelProperty("任务ID") + private Long taskSubId; + @ApiModelProperty("开始时间") + private Long startTime; + } } diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/PatientDataDao.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/PatientDataDao.java index 4907a48b..f6a8464f 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/PatientDataDao.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/PatientDataDao.java @@ -2,6 +2,7 @@ package com.ccsens.wisdomcar.persist.dao; import com.ccsens.wisdomcar.bean.po.PatientData; import com.ccsens.wisdomcar.bean.po.PatientDataExample; +import com.ccsens.wisdomcar.bean.vo.ProjectVo; import com.ccsens.wisdomcar.persist.mapper.PatientDataMapper; import org.apache.ibatis.annotations.Param; @@ -12,4 +13,17 @@ import java.util.List; */ public interface PatientDataDao extends PatientDataMapper { + /** + * 为和taskSubId中一批的、尚无消息平车信息的记录添加平车记录 + * @param carId 患者绑定平车ID + * @param taskSubId 任务ID + */ + void updateCarId(@Param("carId") Long carId, @Param("taskSubId") Long taskSubId); + + /** + * 查询任务开始时间 + * @param taskSubId 任务ID + * @return 开始时间 + */ + ProjectVo.GetStartTime getStartTime(@Param("taskSubId") Long taskSubId); } \ No newline at end of file diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IProjectService.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IProjectService.java index 01a82b64..0d3bcd3f 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IProjectService.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IProjectService.java @@ -35,4 +35,11 @@ public interface IProjectService { */ void saveData(Long startTime, StepTask stepTask, Long operationId, byte operation); + /** + * 查询开始时间 + * @param param 任务ID + * @param userId userId + * @return 开始时间 + */ + ProjectVo.GetStartTime getStartTime(ProjectDto.GetStartTime param, Long userId); } diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/ProjectService.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/ProjectService.java index d5acd6cd..eca4d66e 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/ProjectService.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/ProjectService.java @@ -68,11 +68,9 @@ public class ProjectService implements IProjectService { if (step != null && max != null && step.getSequence() != null && step.getSequence().intValue() == max.intValue()) { // 修改平车结束时间点 ProjectVo.BindCar bindCar = stepTaskDao.getBindCarTaskId(stepTask.getTaskSubId()); - if (bindCar == null) { + boolean needModifyEndTime = bindCar != null && (bindCar.getEndTime() == null || bindCar.getEndTime() == 0); + if (needModifyEndTime) { log.info("出现异常,未找到绑定平车:{}", stepTask.getTaskSubId()); - throw new BaseException(CodeEnum.PARAM_ERROR); - } - if (bindCar.getEndTime() == null || bindCar.getEndTime() == 0) { PatientWisdomCar patientWisdomCar = new PatientWisdomCar(); patientWisdomCar.setId(bindCar.getId()); patientWisdomCar.setEndTime(startTime); @@ -115,6 +113,11 @@ public class ProjectService implements IProjectService { asyncService.pushTime(stepTask, data); } + @Override + public ProjectVo.GetStartTime getStartTime(ProjectDto.GetStartTime param, Long userId) { + return patientDataDao.getStartTime(param.getTaskSubId()); + } + @Override public List queryWeight(ProjectDto.Weight param, Long userId) { ProjectVo.BindCar bindCar = stepTaskDao.getBindCarTaskId(param.getTaskSubId()); 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 b78b8950..d2a3ad64 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/WisdomCarService.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/WisdomCarService.java @@ -65,7 +65,8 @@ public class WisdomCarService implements IWisdomCarService { private IProjectService projectService; @Resource private PatientDoctorDao patientDoctorDao; - + @Resource + private PatientDataDao patientDataDao; @Override public void createCase(CreateCaseDto.PatientInfo param, Long userId) { @@ -285,14 +286,16 @@ public class WisdomCarService implements IWisdomCarService { if (CollectionUtil.isEmpty(carRecords)) { pc.setBindingStatus(Constant.PUSH_STATUS_SUCCESS); patientWisdomCarDao.insertSelective(pc); - return; + } else { + carRecords.forEach(record -> { + projectService.saveData(record.getTime(), record.getStepTask(), record.getId(), Constant.OPERATION_CAR); + }); + pc.setBindingStatus(Constant.PUSH_STATUS_SUCCESS); + patientWisdomCarDao.insertSelective(pc); } - carRecords.forEach(record -> { - projectService.saveData(record.getTime(), record.getStepTask(), record.getId(), Constant.OPERATION_CAR); - }); - pc.setBindingStatus(Constant.PUSH_STATUS_SUCCESS); - patientWisdomCarDao.insertSelective(pc); + // 更新患者数据中,尚未绑定平车的数据 + patientDataDao.updateCarId(pc.getId(), param.getTaskSubId()); } @Override 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 9a77e9ca..695d3a06 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/util/Constant.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/util/Constant.java @@ -124,4 +124,10 @@ public class Constant { * 调用Tall异常 */ public static final Byte TASK_DETAIL_LEVEL_TWO = 2; + public static class BaiDu{ + public static final String APP_KEY = "F43SLi3hDra3EgWiSi8bIH8c"; + public static final String SECRET_KEY = "wGhbTXGsrbxfuCQT7WyLDndYRxrSYqbD"; + public static final String KEY = "key"; + public static final String NUM = "num"; + } } diff --git a/wisdomcar/src/main/resources/mapper_dao/PatientDataDao.xml b/wisdomcar/src/main/resources/mapper_dao/PatientDataDao.xml index c92111b0..f641e954 100644 --- a/wisdomcar/src/main/resources/mapper_dao/PatientDataDao.xml +++ b/wisdomcar/src/main/resources/mapper_dao/PatientDataDao.xml @@ -2,4 +2,15 @@ + + update t_patient_data set patient_car_id = #{carId} where task_sub_id in + (select t2.id from t_step_task t1, t_step_task t2 + where t1.patient_id = t2.patient_id and t1.batch = t2.batch + and t1.task_sub_id = #{taskSubId} + and t1.rec_status = 0 and t2.rec_status = 0) + and patient_car_id = 0 and rec_status = 0 + + \ No newline at end of file From ff908844a1a59d7bd627b562c4c2e778b119d68e Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Fri, 4 Jun 2021 09:18:41 +0800 Subject: [PATCH 3/8] =?UTF-8?q?20210604=E7=AE=80=E5=8D=95=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recovery/api/PatientController.java | 2 +- .../ccsens/recovery/bean/dto/PatientDto.java | 2 +- .../recovery/service/PatientService.java | 31 ++++++++++++++----- .../src/main/resources/application-dev.yml | 2 +- .../main/resources/mapper_dao/PatientDao.xml | 8 +++-- .../main/resources/mapper_dao/RecDrillDao.xml | 10 +++--- tall/src/main/resources/application-dev.yml | 8 ++--- 7 files changed, 43 insertions(+), 20 deletions(-) diff --git a/recovery/src/main/java/com/ccsens/recovery/api/PatientController.java b/recovery/src/main/java/com/ccsens/recovery/api/PatientController.java index c567b9ee..f10e0e0c 100644 --- a/recovery/src/main/java/com/ccsens/recovery/api/PatientController.java +++ b/recovery/src/main/java/com/ccsens/recovery/api/PatientController.java @@ -102,7 +102,7 @@ public class PatientController { } @MustLogin - @ApiOperation(value = "开启训练", notes = "zy:") + @ApiOperation(value = "开始一个训练", notes = "zy:") @RequestMapping(value = "/start", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public JsonResponse startDrill(@ApiParam @Validated @RequestBody QueryDto params) throws Exception { log.info("开启训练:{}",params); diff --git a/recovery/src/main/java/com/ccsens/recovery/bean/dto/PatientDto.java b/recovery/src/main/java/com/ccsens/recovery/bean/dto/PatientDto.java index dd958196..dbc0d186 100644 --- a/recovery/src/main/java/com/ccsens/recovery/bean/dto/PatientDto.java +++ b/recovery/src/main/java/com/ccsens/recovery/bean/dto/PatientDto.java @@ -32,7 +32,7 @@ public class PatientDto { @Data @ApiModel("任务详情id") public static class TaskDetailId{ - @NotNull(message = "任务详情id") + @NotNull(message = "任务详情id不能为空") @ApiModelProperty("任务详情id") private Long detailId; } diff --git a/recovery/src/main/java/com/ccsens/recovery/service/PatientService.java b/recovery/src/main/java/com/ccsens/recovery/service/PatientService.java index 3b926ffc..ef9e6c3f 100644 --- a/recovery/src/main/java/com/ccsens/recovery/service/PatientService.java +++ b/recovery/src/main/java/com/ccsens/recovery/service/PatientService.java @@ -50,6 +50,8 @@ public class PatientService implements IPatientService{ @Resource private RecipeRecordMapper recipeRecordMapper; @Resource + private RecipeProjectMapper recipeProjectMapper; + @Resource private RecDrillDao recDrillDao; @Resource private RecoveryDoctorMapper recoveryDoctorMapper; @@ -118,6 +120,15 @@ public class PatientService implements IPatientService{ @Override public PatientVo.RecipeRecordId startDrill(PatientDto.StartDrill param, Long userId) throws Exception { + //查找患者 + Patient patient = patientDao.selectByPrimaryKey(param.getPatientId()); + if(ObjectUtil.isNull(patient)){ + return null; + } + RecipeProject recipeProject = recipeProjectMapper.selectByPrimaryKey(param.getRecipeProjectId()); + if(ObjectUtil.isNull(recipeProject)){ + return null; + } //存储一条训练记录 RecipeRecord recRecord = new RecipeRecord(); recRecord.setId(snowflake.nextId()); @@ -137,11 +148,14 @@ public class PatientService implements IPatientService{ data.setGameId(param.getGameId()); recoveryWithStartDrill.setData(data); //查询患者当前关联的机器人 - RecoveryRobot recoveryRobot = patientDao.getRobotByPatientId(param.getPatientId()); + //查询接收者 Set userIdSet = new HashSet<>(); - userIdSet.add(recoveryRobot.getUserid().toString()); userIdSet.add(param.getPatientId().toString()); + RecoveryRobot recoveryRobot = patientDao.getRobotByPatientId(param.getPatientId()); + if(ObjectUtil.isNotNull(recoveryRobot)){ + userIdSet.add(recoveryRobot.getUserid().toString()); + } //封装成inMessage MessageRule messageRule = MessageRule.defaultRule(MessageConstant.DomainType.User); messageRule.setAckRule(MessageRule.AckRule.NONE); @@ -215,17 +229,20 @@ public class PatientService implements IPatientService{ @Override public PatientVo.PatientFullScreen fullScreen(PatientDto.TaskDetailId param, Long userId) { PatientVo.PatientFullScreen patientFullScreen = patientDao.getPatientFllScreen(param.getDetailId()); - List gameList = recDrillDao.getGameByDrillId(patientFullScreen.getDrillId()); - if (CollectionUtil.isNotEmpty(gameList)) { - patientFullScreen.setGameId(gameList.get(0).getId()); - patientFullScreen.setGameName(gameList.get(0).getName()); - patientFullScreen.setGameUrl(gameList.get(0).getGameUrl()); + if(ObjectUtil.isNotNull(patientFullScreen)) { + List gameList = recDrillDao.getGameByDrillId(patientFullScreen.getDrillId()); + if (CollectionUtil.isNotEmpty(gameList)) { + patientFullScreen.setGameId(gameList.get(0).getId()); + patientFullScreen.setGameName(gameList.get(0).getName()); + patientFullScreen.setGameUrl(gameList.get(0).getGameUrl()); + } } return patientFullScreen; } @Override public void completeRecovery(PatientDto.EndRecovery param, Long userId) throws Exception { + //TODO 给患者和机器人关联的记录添加结束时间 //TODO 将处方项目关联的任务设为完成 //发送消息,让机器人切回康复中心的项目 Set userIdSet = new HashSet<>(); diff --git a/recovery/src/main/resources/application-dev.yml b/recovery/src/main/resources/application-dev.yml index 0e06960b..758e2593 100644 --- a/recovery/src/main/resources/application-dev.yml +++ b/recovery/src/main/resources/application-dev.yml @@ -11,7 +11,7 @@ spring: datasource: type: com.alibaba.druid.pool.DruidDataSource rabbitmq: - host: test.tall.wiki + host: 192.168.4.113 # host: 127.0.0.1 password: 111111 port: 5672 diff --git a/recovery/src/main/resources/mapper_dao/PatientDao.xml b/recovery/src/main/resources/mapper_dao/PatientDao.xml index 0e9bbc52..1408e6f1 100644 --- a/recovery/src/main/resources/mapper_dao/PatientDao.xml +++ b/recovery/src/main/resources/mapper_dao/PatientDao.xml @@ -137,15 +137,19 @@ FROM t_patient p, t_doctor d, + t_recipe re, t_recipe_project rp, t_recipe_project_decompose rpd, t_rec_drill rd WHERE p.doctor_id = d.id + and re.patient_id = p.id + and re.id = rp.recipe_id and rp.id = rpd.recipe_project_id and rp.drill_id = rd.id and p.rec_status = 0 and d.rec_status = 0 + and re.rec_status = 0 and rp.rec_status = 0 and rpd.rec_status = 0 and rd.rec_status = 0 @@ -172,7 +176,7 @@ p.`name` as `name`, p.sex as sex, p.age as age, - p.id_card as idCord, + p.id_card as idCard, p.phone as phone, p.address as address, c.id as recoveryCentreId, @@ -189,7 +193,7 @@ and p.rec_status = 0 and d.rec_status = 0 and c.rec_status = 0 - and c.id = #{recoveryCentreId} + and c.id = #{centreId} and p.id_card like concat('%',#{idCard},'%') \ No newline at end of file diff --git a/recovery/src/main/resources/mapper_dao/RecDrillDao.xml b/recovery/src/main/resources/mapper_dao/RecDrillDao.xml index ef22e4b5..b046939f 100644 --- a/recovery/src/main/resources/mapper_dao/RecDrillDao.xml +++ b/recovery/src/main/resources/mapper_dao/RecDrillDao.xml @@ -5,11 +5,13 @@ \ No newline at end of file