|
|
@@ -24,16 +24,20 @@ import com.ruoyi.info.hospital.service.IHospitalService;
|
|
|
import com.ruoyi.info.management.domain.vo.ManagementTeacherVo;
|
|
|
import com.ruoyi.info.management.service.IManagementTeacherService;
|
|
|
import com.ruoyi.info.nursing.domain.NursingWorker;
|
|
|
+import com.ruoyi.info.nursing.domain.vo.NursingWorkerVo;
|
|
|
import com.ruoyi.info.nursing.service.INursingWorkerService;
|
|
|
import com.ruoyi.info.order.domain.Order;
|
|
|
import com.ruoyi.info.order.domain.bo.OrderBo;
|
|
|
+import com.ruoyi.info.order.domain.bo.OrderReviewsBo;
|
|
|
import com.ruoyi.info.order.domain.bo.OrderWorkerChangeRecordBo;
|
|
|
+import com.ruoyi.info.order.domain.vo.OrderReviewsVo;
|
|
|
import com.ruoyi.info.order.domain.vo.OrderVo;
|
|
|
import com.ruoyi.info.order.domain.vo.OrderWorkerChangeRecordVo;
|
|
|
import com.ruoyi.info.order.enums.CancellationMethod;
|
|
|
import com.ruoyi.info.order.enums.OrderStatus;
|
|
|
import com.ruoyi.info.order.exception.OrderExceptionEnum;
|
|
|
import com.ruoyi.info.order.mapper.OrderMapper;
|
|
|
+import com.ruoyi.info.order.service.IOrderReviewsService;
|
|
|
import com.ruoyi.info.order.service.IOrderService;
|
|
|
import com.ruoyi.info.order.service.IOrderWorkerChangeRecordService;
|
|
|
import com.ruoyi.info.patient.domain.Patient;
|
|
|
@@ -77,6 +81,7 @@ public class OrderServiceImpl implements IOrderService {
|
|
|
private final INursingWorkerService nursingWorkerService;
|
|
|
private final IOrderWorkerChangeRecordService orderWorkerChangeRecordService;
|
|
|
private final IManagementTeacherService managementTeacherService;
|
|
|
+ private final IOrderReviewsService orderReviewsService;
|
|
|
|
|
|
/**
|
|
|
* 查询订单分页
|
|
|
@@ -168,6 +173,11 @@ public class OrderServiceImpl implements IOrderService {
|
|
|
}
|
|
|
vo.setOrderWorkerChangeRecord(orderWorkerChangeRecordVo);
|
|
|
}
|
|
|
+ //评价
|
|
|
+ if (OrderStatus.done.equals(vo.getStatus())) {
|
|
|
+ OrderReviewsVo orderReviewsVo = orderReviewsService.queryByOrderId(vo.getId());
|
|
|
+ vo.setOrderReviews(orderReviewsVo);
|
|
|
+ }
|
|
|
return vo;
|
|
|
}
|
|
|
|
|
|
@@ -360,6 +370,85 @@ public class OrderServiceImpl implements IOrderService {
|
|
|
return baseMapper.updateById(order) > 0;
|
|
|
}
|
|
|
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public boolean startService(Long id, Long workerId) {
|
|
|
+ Order order = loadById(id, true);
|
|
|
+ if (!OrderStatus.wait_service.equals(order.getStatus())) {
|
|
|
+ throw new ServiceException(OrderExceptionEnum.Order_STATUS_IS_NOT_START);
|
|
|
+ }
|
|
|
+ if (!order.getWorkerId().equals(workerId)) {
|
|
|
+ throw new ServiceException(OrderExceptionEnum.Order_WORKER_IS_NOT_YOURS);
|
|
|
+ }
|
|
|
+ order.setStatus(OrderStatus.in_progress);
|
|
|
+ //更新开始时间
|
|
|
+ OrderWorkerChangeRecordVo orderWorkerChangeRecordVo = orderWorkerChangeRecordService.queryByOrderAndWorker(id, workerId);
|
|
|
+ if (ObjectUtil.isNull(orderWorkerChangeRecordVo)) {
|
|
|
+ throw new ServiceException(OrderExceptionEnum.Order_WORKER_IS_NOT_YOURS);
|
|
|
+ }
|
|
|
+ OrderWorkerChangeRecordBo orderWorkerChangeRecordBo = new OrderWorkerChangeRecordBo();
|
|
|
+ orderWorkerChangeRecordBo.setId(orderWorkerChangeRecordVo.getId());
|
|
|
+ orderWorkerChangeRecordBo.setWorkerStartTime(new Date());
|
|
|
+ orderWorkerChangeRecordService.updateByBo(orderWorkerChangeRecordBo);
|
|
|
+ return baseMapper.updateById(order) > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public boolean finishService(Long id, Long workerId) {
|
|
|
+ Order order = loadById(id, true);
|
|
|
+ if (!OrderStatus.in_progress.equals(order.getStatus())) {
|
|
|
+ throw new ServiceException(OrderExceptionEnum.Order_STATUS_IS_NOT_PROGRESS);
|
|
|
+ }
|
|
|
+ if (!order.getWorkerId().equals(workerId)) {
|
|
|
+ throw new ServiceException(OrderExceptionEnum.Order_WORKER_IS_NOT_YOURS);
|
|
|
+ }
|
|
|
+ order.setStatus(OrderStatus.wait_evaluated);
|
|
|
+ //更新结束时间
|
|
|
+ OrderWorkerChangeRecordVo orderWorkerChangeRecordVo = orderWorkerChangeRecordService.queryByOrderAndWorker(id, workerId);
|
|
|
+ if (ObjectUtil.isNull(orderWorkerChangeRecordVo)) {
|
|
|
+ throw new ServiceException(OrderExceptionEnum.Order_WORKER_IS_NOT_YOURS);
|
|
|
+ }
|
|
|
+ OrderWorkerChangeRecordBo orderWorkerChangeRecordBo = new OrderWorkerChangeRecordBo();
|
|
|
+ orderWorkerChangeRecordBo.setId(orderWorkerChangeRecordVo.getId());
|
|
|
+ orderWorkerChangeRecordBo.setWorkerEndTime(new Date());
|
|
|
+ orderWorkerChangeRecordService.updateByBo(orderWorkerChangeRecordBo);
|
|
|
+ return baseMapper.updateById(order) > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getManagerPhone(Long id, Long workerId) {
|
|
|
+ OrderWorkerChangeRecordVo orderWorkerChangeRecordVo = orderWorkerChangeRecordService.queryByOrderAndWorker(id, workerId);
|
|
|
+ if (ObjectUtil.isNotNull(orderWorkerChangeRecordVo)) {
|
|
|
+ ManagementTeacherVo managementTeacherVo = managementTeacherService.queryById(orderWorkerChangeRecordVo.getOperatingTeacherId());
|
|
|
+ return ObjectUtil.isNotNull(managementTeacherVo) ? managementTeacherVo.getPhoneNumber() : null;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getWorkerPhone(Long id, Long teacherId) {
|
|
|
+ Order order = loadById(id, true);
|
|
|
+ if (ObjectUtil.isNotNull(order.getWorkerId())) {
|
|
|
+ NursingWorkerVo nursingWorkerVo = nursingWorkerService.queryById(order.getWorkerId());
|
|
|
+ return ObjectUtil.isNotNull(nursingWorkerVo) ? nursingWorkerVo.getPhoneNumber() : null;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public boolean evaluate(OrderReviewsBo bo) {
|
|
|
+ Order order = loadById(bo.getOrderId(), true);
|
|
|
+ if (!OrderStatus.wait_evaluated.equals(order.getStatus())) {
|
|
|
+ throw new ServiceException(OrderExceptionEnum.Order_STATUS_IS_NOT_EVALUATED);
|
|
|
+ }
|
|
|
+ order.setStatus(OrderStatus.done);
|
|
|
+ //新增评价
|
|
|
+ orderReviewsService.insertByBo(bo);
|
|
|
+ return baseMapper.updateById(order) > 0;
|
|
|
+ }
|
|
|
+
|
|
|
private List<OrderVo> convertAllList(List<OrderVo> list, boolean queryPatient) {
|
|
|
return list.stream().map(o -> {
|
|
|
HospitalVo hospitalVo = JSONObject.parseObject(o.getHospitalInfo(), HospitalVo.class);
|