Browse Source

异步推送

pt
zhizhi wu 4 years ago
parent
commit
60dbf57226
  1. 30
      cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/dto/TaskDto.java
  2. 15
      cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java
  3. 105
      tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java
  4. 5
      tall/src/main/java/com/ccsens/tall/web/TaskController.java
  5. 11
      wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/WisdomCarVo.java
  6. 11
      wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/WisdomCarRecordDao.java
  7. 71
      wisdomcar/src/main/java/com/ccsens/wisdomcar/service/AsyncService.java
  8. 20
      wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IAsyncService.java
  9. 10
      wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IProjectService.java
  10. 43
      wisdomcar/src/main/java/com/ccsens/wisdomcar/service/ProjectService.java
  11. 2
      wisdomcar/src/main/java/com/ccsens/wisdomcar/service/RecordService.java
  12. 14
      wisdomcar/src/main/java/com/ccsens/wisdomcar/service/WisdomCarService.java
  13. 4
      wisdomcar/src/main/resources/application.yml
  14. 2
      wisdomcar/src/main/resources/mapper_dao/StepTaskDao.xml
  15. 43
      wisdomcar/src/main/resources/mapper_dao/WisdomCarRecordDao.xml

30
cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/dto/TaskDto.java

@ -0,0 +1,30 @@
package com.ccsens.cloudutil.bean.tall.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/3 10:10
*/
public class TaskDto {
@ApiModel
@Data
public static class StartTask {
@ApiModelProperty("项目Id")
@NotNull(message = "projectId is required.")
private Long projectId;
@ApiModelProperty("角色Id")
@NotNull(message = "roleId is required.")
private Long roleId;
@ApiModelProperty("任务在当前时间的subTimeId")
@NotNull(message = "taskId is required.")
private Long taskId;
@ApiModelProperty("开始任务的时间 如果为空则为当前时间")
private Long startTime;
}
}

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

@ -12,8 +12,10 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
@ -256,6 +258,14 @@ public interface TallFeignClient {
@RequestMapping(value = "/members/addMemberForTemplate",method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"})
JsonResponse addMemberForTemplate(QueryDto<MemberRoleDto.SaveMemberForTemplate> memberForTemplate);
/**
* 开始节点
* @param param 时间
* @return 结果
* @throws Exception
*/
@RequestMapping(value = "/tasks/start", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
JsonResponse startNode(TaskDto.StartTask param) throws Exception;
}
@ -429,6 +439,11 @@ class TallFeignClientFallBack implements FallbackFactory<TallFeignClient> {
public JsonResponse addMemberForTemplate(QueryDto<MemberRoleDto.SaveMemberForTemplate> memberForTemplate) {
return JsonResponse.newInstance().fail();
}
@Override
public JsonResponse startNode(TaskDto.StartTask param) throws Exception {
return JsonResponse.newInstance().fail();
}
};
}

105
tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java

@ -258,71 +258,74 @@ public class TaskSubTimeService implements ITaskSubTimeService {
//开始指定的任务
taskSubTime.setRealBeginTime(now);
if(taskSubTime.getRealEndTime() != 0){
if (taskSubTime.getRealEndTime() != 0) {
taskSubTime.setRealEndTime(0L);
}
taskSubTime.setComplatedStatus(1);
taskSubTimeDao.updateByPrimaryKeySelective(taskSubTime);
//查找任务的负责人名
String player = null;
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(taskSubTime.getTaskDetailId());
if (ObjectUtil.isNotNull(taskDetail)) {
player = taskDetail.getDescription();
}
// //发送消息
// SyncMessageWithStartDto syncMessage = new SyncMessageWithStartDto();
// SyncMessageWithStartDto.Data syncMessageData = new SyncMessageWithStartDto.Data();
// syncMessageData.setPlayer(player);
// syncMessageData.setBeginTaskId(taskSubTime.getTaskDetailId());
// syncMessageData.setDuration(taskSubTime.getEndTime() - taskSubTime.getBeginTime());
// syncMessageData.setTime(now);
//接收者
List<BaseMessageDto.MessageUser> messageUserList = new ArrayList<>();
ProMemberExample memberExample = new ProMemberExample();
memberExample.createCriteria().andProjectIdEqualTo(startTaskDto.getProjectId()).andUserIdNotEqualTo(0L);
List<ProMember> memberList = proMemberDao.selectByExample(memberExample);
Set<String> userSet = new HashSet<>();
if (CollectionUtil.isNotEmpty(memberList)) {
for (ProMember member : memberList) {
if (ObjectUtil.isNotNull(member.getUserId())) {
BaseMessageDto.MessageUser messageUser = new BaseMessageDto.MessageUser();
messageUser.setUserId(member.getUserId());
messageUserList.add(messageUser);
userSet.add(member.getUserId().toString());
if (startTaskDto.getRoleId() != null && startTaskDto.getRoleId() != 0) {
// //发送消息
// SyncMessageWithStartDto syncMessage = new SyncMessageWithStartDto();
// SyncMessageWithStartDto.Data syncMessageData = new SyncMessageWithStartDto.Data();
// syncMessageData.setPlayer(player);
// syncMessageData.setBeginTaskId(taskSubTime.getTaskDetailId());
// syncMessageData.setDuration(taskSubTime.getEndTime() - taskSubTime.getBeginTime());
// syncMessageData.setTime(now);
//接收者
List<BaseMessageDto.MessageUser> messageUserList = new ArrayList<>();
ProMemberExample memberExample = new ProMemberExample();
memberExample.createCriteria().andProjectIdEqualTo(startTaskDto.getProjectId()).andUserIdNotEqualTo(0L);
List<ProMember> memberList = proMemberDao.selectByExample(memberExample);
Set<String> userSet = new HashSet<>();
if (CollectionUtil.isNotEmpty(memberList)) {
for (ProMember member : memberList) {
if (ObjectUtil.isNotNull(member.getUserId())) {
BaseMessageDto.MessageUser messageUser = new BaseMessageDto.MessageUser();
messageUser.setUserId(member.getUserId());
messageUserList.add(messageUser);
userSet.add(member.getUserId().toString());
}
}
}
BaseMessageDto.MessageUser messageUser1990 = new BaseMessageDto.MessageUser();
messageUser1990.setUserId(1990L);
messageUserList.add(messageUser1990);
userSet.add("1990");
BaseMessageDto.MessageUser messageUser1991 = new BaseMessageDto.MessageUser();
messageUser1991.setUserId(1991L);
messageUserList.add(messageUser1991);
userSet.add("1991");
BaseMessageDto.MessageUser messageUser1995 = new BaseMessageDto.MessageUser();
messageUser1995.setUserId(1995L);
messageUserList.add(messageUser1995);
userSet.add("1995");
BaseMessageDto.MessageUser messageUser1998 = new BaseMessageDto.MessageUser();
messageUser1998.setUserId(1998L);
messageUserList.add(messageUser1998);
userSet.add("1998");
Long duration = taskSubTime.getEndTime() - taskSubTime.getBeginTime();
SyncMessageWithStartDto syncMessage = new SyncMessageWithStartDto(startTaskDto.getProjectId(), null, null,
startTaskDto.getRoleId(), taskSubTime.getTaskDetailId(), null, now, duration, player);
// messageService.sendStartTaskMessage(syncMessage);
InMessage inMessage = new InMessage();
inMessage.setToDomain(MessageConstant.DomainType.User);
inMessage.setTos(userSet);
inMessage.setData(JacksonUtil.beanToJson(syncMessage));
log.info("开始任务消息,{}", JacksonUtil.beanToJson(inMessage));
rabbitTemplate.convertAndSend(RabbitMQConfig.MESSAGE_QUEUE_NAME,
JacksonUtil.beanToJson(inMessage));
}
BaseMessageDto.MessageUser messageUser1990 = new BaseMessageDto.MessageUser();
messageUser1990.setUserId(1990L);
messageUserList.add(messageUser1990);
userSet.add("1990");
BaseMessageDto.MessageUser messageUser1991 = new BaseMessageDto.MessageUser();
messageUser1991.setUserId(1991L);
messageUserList.add(messageUser1991);
userSet.add("1991");
BaseMessageDto.MessageUser messageUser1995 = new BaseMessageDto.MessageUser();
messageUser1995.setUserId(1995L);
messageUserList.add(messageUser1995);
userSet.add("1995");
BaseMessageDto.MessageUser messageUser1998 = new BaseMessageDto.MessageUser();
messageUser1998.setUserId(1998L);
messageUserList.add(messageUser1998);
userSet.add("1998");
Long duration = taskSubTime.getEndTime() - taskSubTime.getBeginTime();
SyncMessageWithStartDto syncMessage = new SyncMessageWithStartDto(startTaskDto.getProjectId(),null,null,
startTaskDto.getRoleId(),taskSubTime.getTaskDetailId(),null,now,duration,player);
// messageService.sendStartTaskMessage(syncMessage);
InMessage inMessage = new InMessage();
inMessage.setToDomain(MessageConstant.DomainType.User);
inMessage.setTos(userSet);
inMessage.setData(JacksonUtil.beanToJson(syncMessage));
log.info("开始任务消息,{}",JacksonUtil.beanToJson(inMessage));
rabbitTemplate.convertAndSend(RabbitMQConfig.MESSAGE_QUEUE_NAME,
JacksonUtil.beanToJson(inMessage));
//3.添加记录
proLogService.addNewProLog(now, taskSubTime.getId(),

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

@ -14,6 +14,7 @@ import com.ccsens.util.bean.dto.QueryDto;
import io.jsonwebtoken.Claims;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -48,8 +49,10 @@ public class TaskController {
@ApiImplicitParams({
})
@RequestMapping(value = "start", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse startNode(HttpServletRequest request, @Validated @RequestBody TaskDto.StartTask dto) throws Exception {
public JsonResponse startNode(HttpServletRequest request, @Validated @RequestBody com.ccsens.cloudutil.bean.tall.dto.TaskDto.StartTask param) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
TaskDto.StartTask dto = new TaskDto.StartTask();
BeanUtils.copyProperties(param, dto);
subTimeService.startTask(currentUserId,dto);
return JsonResponse.newInstance().ok();
}

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

@ -1,5 +1,6 @@
package com.ccsens.wisdomcar.bean.vo;
import com.ccsens.wisdomcar.bean.po.StepTask;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -18,4 +19,14 @@ public class WisdomCarVo {
@ApiModelProperty("平车编号")
private String carNumber;
}
@Data
public static class CarStepRecord{
@ApiModelProperty("平车记录ID")
private Long id;
@ApiModelProperty("数据上传时间")
private Long time;
@ApiModelProperty("对应任务")
private StepTask stepTask;
}
}

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

@ -2,6 +2,7 @@ package com.ccsens.wisdomcar.persist.dao;
import com.ccsens.wisdomcar.bean.vo.ProjectVo;
import com.ccsens.wisdomcar.bean.vo.RecordVo;
import com.ccsens.wisdomcar.bean.vo.WisdomCarVo;
import com.ccsens.wisdomcar.persist.mapper.WisdomCarRecordMapper;
import org.apache.ibatis.annotations.Param;
@ -40,4 +41,14 @@ public interface WisdomCarRecordDao extends WisdomCarRecordMapper {
* @return 记录
*/
List<ProjectVo.Record> queryRecent(@Param("carId") Long carId, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("typeArr") byte... typeArr);
/**
* 查询平车记录和对应的环节信息
* @param carId 平车ID
* @param patientId 患者ID
* @param startTime 开始时间
* @param endTime 结束时间
* @return 平车记录和对应的环节信息
*/
List<WisdomCarVo.CarStepRecord> queryStepRecord(@Param("carId") Long carId, @Param("patientId") Long patientId, @Param("startTime") Long startTime, @Param("endTime") Long endTime);
}

71
wisdomcar/src/main/java/com/ccsens/wisdomcar/service/AsyncService.java

@ -0,0 +1,71 @@
package com.ccsens.wisdomcar.service;
import com.ccsens.cloudutil.bean.tall.dto.TaskDto;
import com.ccsens.cloudutil.feign.TallFeignClient;
import com.ccsens.util.CodeEnum;
import com.ccsens.util.JsonResponse;
import com.ccsens.wisdomcar.bean.po.PatientData;
import com.ccsens.wisdomcar.bean.po.PatientProject;
import com.ccsens.wisdomcar.bean.po.StepTask;
import com.ccsens.wisdomcar.persist.dao.PatientDataDao;
import com.ccsens.wisdomcar.persist.mapper.PatientProjectMapper;
import com.ccsens.wisdomcar.util.Constant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
* @description:
* @author: whj
* @time: 2021/6/3 10:16
*/
@Async
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class AsyncService implements IAsyncService {
@Resource
private TallFeignClient tallFeignClient;
@Resource
private PatientDataDao patientDataDao;
@Resource
private PatientProjectMapper patientProjectMapper;
@Override
public void pushTime(StepTask stepTask, PatientData data) {
PatientData updateData = new PatientData();
updateData.setId(data.getId());
// 查询项目ID
PatientProject patient = patientProjectMapper.selectByPrimaryKey(stepTask.getPatientId());
if (patient == null) {
return;
}
// 推送开始时间
TaskDto.StartTask startTask = new TaskDto.StartTask();
startTask.setTaskId(startTask.getTaskId());
startTask.setRoleId(0L);
startTask.setProjectId(patient.getProjectId());
startTask.setStartTime(data.getStartTime());
updateData.setPushStatus(Constant.PUSH_STATUS_FAIL);
try {
JsonResponse response = tallFeignClient.startNode(startTask);
log.info("推送开始任务结果:{},请求:{}", response, startTask);
if (response != null && response.getCode() != null && response.getCode().intValue() == CodeEnum.SUCCESS.getCode().intValue()) {
updateData.setPushStatus(Constant.PUSH_STATUS_SUCCESS);
}
} catch (Exception e) {
log.error("开始任务出现异常", e);
}
// 更新状态
patientDataDao.updateByPrimaryKeySelective(updateData);
}
}

20
wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IAsyncService.java

@ -0,0 +1,20 @@
package com.ccsens.wisdomcar.service;
import com.ccsens.wisdomcar.bean.po.PatientData;
import com.ccsens.wisdomcar.bean.po.StepTask;
import java.util.List;
/**
* @description:
* @author: whj
* @time: 2021/6/3 10:16
*/
public interface IAsyncService {
/**
* 推送任务开始并更新推送状态
* @param stepTask 任务
* @param data 数据
*/
void pushTime(StepTask stepTask, PatientData data);
}

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

@ -1,6 +1,7 @@
package com.ccsens.wisdomcar.service;
import com.ccsens.wisdomcar.bean.dto.ProjectDto;
import com.ccsens.wisdomcar.bean.po.StepTask;
import com.ccsens.wisdomcar.bean.vo.ProjectVo;
import java.util.List;
@ -25,4 +26,13 @@ public interface IProjectService {
*/
List<ProjectVo.Record> queryWeight(ProjectDto.Weight param, Long userId);
/**
* 存储数据
* @param startTime 开始时间
* @param stepTask 任务环节
* @param operationId userID/carRecordId
* @param operation
*/
void saveData(Long startTime, StepTask stepTask, Long operationId, byte operation);
}

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

@ -42,6 +42,8 @@ public class ProjectService implements IProjectService {
@Resource
private PatientWisdomCarMapper patientWisdomCarMapper;
@Resource
private IAsyncService asyncService;
@Resource
private Snowflake snowflake;
@Override
@ -55,53 +57,58 @@ public class ProjectService implements IProjectService {
}
// TODO 待确认,是否处理成已提交不再修改????
StepTask stepTask = stepTasks.get(0);
saveData(param.getStartTime(), stepTask, userId, Constant.OPERATION_USER);
}
@Override
public void saveData(Long startTime, StepTask stepTask, Long operationId, byte operation) {
PatientDataExample dataExample = new PatientDataExample();
dataExample.createCriteria().andTaskSubIdEqualTo(param.getTaskSubId()).andStepIdEqualTo(stepTask.getStepId());
dataExample.createCriteria().andTaskSubIdEqualTo(stepTask.getTaskSubId()).andStepIdEqualTo(stepTask.getStepId());
List<PatientData> patientData = patientDataDao.selectByExample(dataExample);
if (CollectionUtil.isNotEmpty(patientData)){
log.info("taskId:{}, stepId:{}已经存在,不再修改", param.getTaskSubId(), stepTask.getStepId());
log.info("taskId:{}, stepId:{}已经存在,不再修改", stepTask.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);
// 异步推送数据 根据结果修改状态
asyncService.pushTime(stepTask, data);
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());
ProjectVo.BindCar bindCar = stepTaskDao.getBindCarTaskId(stepTask.getTaskSubId());
if (bindCar == null) {
log.info("出现异常,未找到绑定平车:{}", param.getTaskSubId());
log.info("出现异常,未找到绑定平车:{}", stepTask.getTaskSubId());
throw new BaseException(CodeEnum.PARAM_ERROR);
}
PatientWisdomCar patientWisdomCar = new PatientWisdomCar();
patientWisdomCar.setId(bindCar.getId());
patientWisdomCar.setEndTime(param.getStartTime());
patientWisdomCar.setEndTime(startTime);
patientWisdomCarMapper.updateByPrimaryKeySelective(patientWisdomCar);
}
PatientData data = new PatientData();
data.setId(snowflake.nextId());
data.setUserId(userId);
data.setTaskSubId(param.getTaskSubId());
if (operation == Constant.OPERATION_USER) {
data.setUserId(operationId);
} else {
data.setWisdomCarRecordId(operationId);
}
data.setTaskSubId(stepTask.getTaskSubId());
data.setStepId(stepTask.getStepId());
data.setPushStatus(Constant.PUSH_STATUS_NO);
data.setStartTime(param.getStartTime());
data.setType(Constant.OPERATION_USER);
data.setStartTime(startTime);
data.setType(operation);
patientDataDao.insertSelective(data);
// TODO 异步推送数据 根据结果修改状态
// 异步推送数据 根据结果修改状态
asyncService.pushTime(stepTask, data);
}
@Override

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

@ -150,6 +150,8 @@ public class RecordService implements IRecordService{
// rfid且有对应的真实环节 存储患者数据表
if (carRecordMessageDto.getType() == Constant.CAR_RECORD_RFID && step != null && step.getStepType() == Constant.STEP_TYPE_REAL) {
// TODO 异步推送数据
// projectService.saveData(wisdomCarRecord.getTime(), , wisdomCarRecord.getId(), Constant.OPERATION_CAR);
}
}

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

@ -57,9 +57,12 @@ public class WisdomCarService implements IWisdomCarService {
private WisdomCarRecordDao wisdomCarRecordDao;
@Resource
private PatientWisdomCarDao patientWisdomCarDao;
@Resource
private StepDao stepDao;
@Resource
private StepTaskDao stepTaskDao;
@Resource
private IProjectService projectService;
@Override
@ -255,12 +258,7 @@ public class WisdomCarService implements IWisdomCarService {
PatientProject patient = patientProjects.get(0);
// TODO 是否需要判断患者是否已经绑定平车???
// 查询平车记录
WisdomCarRecordExample recordExample = new WisdomCarRecordExample();
WisdomCarRecordExample.Criteria criteria = recordExample.createCriteria().andCarIdEqualTo(param.getCarId()).andTimeGreaterThanOrEqualTo(param.getStartTime());
if (param.getEndTime() != null && param.getEndTime() > 0) {
criteria.andTimeLessThanOrEqualTo(param.getEndTime());
}
List<WisdomCarRecord> carRecords = wisdomCarRecordDao.selectByExample(recordExample);
List<WisdomCarVo.CarStepRecord> carRecords = wisdomCarRecordDao.queryStepRecord(param.getCarId(), patient.getId(), param.getStartTime(), param.getEndTime());
// 绑定平车
PatientWisdomCar pc = new PatientWisdomCar();
pc.setId(snowflake.nextId());
@ -277,7 +275,9 @@ public class WisdomCarService implements IWisdomCarService {
patientWisdomCarDao.insertSelective(pc);
if (pc.getBindingStatus() == Constant.PUSH_STATUS_NO) {
// TOOD 异步推送开始时间
carRecords.forEach(record -> {
projectService.saveData(record.getTime(), record.getStepTask(), record.getId(), Constant.OPERATION_CAR);
});
}
}

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

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

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

@ -8,6 +8,6 @@
(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
where batch.batch = st.batch and batch.patient_id = st.patient_id 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>

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

@ -2,6 +2,17 @@
<!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.WisdomCarRecordDao">
<resultMap id="stepRecord" type="com.ccsens.wisdomcar.bean.vo.WisdomCarVo$CarStepRecord">
<id property="id" column="id"/>
<result column="time" property="time"/>
<association property="stepTask" javaType="com.ccsens.wisdomcar.bean.po.StepTask">
<result property="id" column="stId"/>
<result property="stepId" column="step_id"/>
<result property="taskSubId" column="task_sub_id"/>
<result property="patientId" column="patient_id"/>
<result property="batch" column="batch"/>
</association>
</resultMap>
<select id="queryWeightAndRfid" resultType="com.ccsens.wisdomcar.bean.vo.RecordVo$WeightAndRfid">
select * from (
@ -52,4 +63,36 @@
order by created_at desc limit 1)
</foreach>
</select>
<select id="queryStepRecord" resultMap="stepRecord">
SELECT
cr.id,
cr.time,
st.id AS stId,
st.step_id,
st.task_sub_id,
st.patient_id,
st.batch
FROM
t_wisdom_car_record cr,
t_rfid r,
t_step s,
t_step_task st
WHERE
cr.car_id = #{carId}
<if test="startTime != null and startTime > 0" >
AND cr.time &gt;= #{startTime}
</if>
<if test="endTime != null and endTime > 0" >
AND cr.time &lt;= #{endTime}
</if>
AND st.patient_id = #{patientId}
AND cr.VALUE = r.rfid
AND r.step_id = s.id
AND s.id = st.step_id
and cr.type = 2
AND cr.rec_status = 0
AND r.rec_status = 0
AND s.rec_status = 0
AND st.rec_status = 0
</select>
</mapper>
Loading…
Cancel
Save