|
|
@@ -1,12 +1,14 @@
|
|
|
package com.ruoyi.info.order.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.ruoyi.common.constant.UserConstants;
|
|
|
import com.ruoyi.common.core.domain.PageQuery;
|
|
|
import com.ruoyi.common.core.page.TableDataInfo;
|
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
|
@@ -19,14 +21,21 @@ import com.ruoyi.info.hospital.domain.vo.HospitalStatisticsVo;
|
|
|
import com.ruoyi.info.hospital.domain.vo.HospitalVo;
|
|
|
import com.ruoyi.info.hospital.service.IHospitalDepartmentService;
|
|
|
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.service.INursingWorkerService;
|
|
|
import com.ruoyi.info.order.domain.Order;
|
|
|
import com.ruoyi.info.order.domain.bo.OrderBo;
|
|
|
+import com.ruoyi.info.order.domain.bo.OrderWorkerChangeRecordBo;
|
|
|
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.IOrderService;
|
|
|
+import com.ruoyi.info.order.service.IOrderWorkerChangeRecordService;
|
|
|
import com.ruoyi.info.patient.domain.Patient;
|
|
|
import com.ruoyi.info.patient.domain.vo.PatientVo;
|
|
|
import com.ruoyi.info.patient.service.IPatientService;
|
|
|
@@ -65,6 +74,9 @@ public class OrderServiceImpl implements IOrderService {
|
|
|
private final IHospitalDepartmentService hospitalDepartmentService;
|
|
|
private final IPatientService patientService;
|
|
|
private final IUserService userService;
|
|
|
+ private final INursingWorkerService nursingWorkerService;
|
|
|
+ private final IOrderWorkerChangeRecordService orderWorkerChangeRecordService;
|
|
|
+ private final IManagementTeacherService managementTeacherService;
|
|
|
|
|
|
/**
|
|
|
* 查询订单分页
|
|
|
@@ -109,6 +121,7 @@ public class OrderServiceImpl implements IOrderService {
|
|
|
lqw.eq(bo.getSellingPrice() != null, Order::getSellingPrice, bo.getSellingPrice());
|
|
|
lqw.eq(bo.getTotalPrice() != null, Order::getTotalPrice, bo.getTotalPrice());
|
|
|
lqw.eq(bo.getWorkerId() != null, Order::getWorkerId, bo.getWorkerId());
|
|
|
+ lqw.in(CollUtil.isNotEmpty(bo.getHospitalDepartmentIds()), Order::getHospitalDepartmentId, bo.getHospitalDepartmentIds());
|
|
|
//日期
|
|
|
buildTime(bo);
|
|
|
lqw.ge(bo.getStartTime() != null, Order::getCreateTime, bo.getStartTime());
|
|
|
@@ -145,6 +158,16 @@ public class OrderServiceImpl implements IOrderService {
|
|
|
vo.setUserName(user.getNickname());
|
|
|
vo.setUserMobile(user.getMobile());
|
|
|
}
|
|
|
+ //护工
|
|
|
+ if (ObjectUtil.isNotNull(vo.getWorkerId())) {
|
|
|
+ OrderWorkerChangeRecordVo orderWorkerChangeRecordVo = orderWorkerChangeRecordService.queryByOrderAndWorker(vo.getId(), vo.getWorkerId());
|
|
|
+ ManagementTeacherVo managementTeacherVo = managementTeacherService.queryById(orderWorkerChangeRecordVo.getOperatingTeacherId());
|
|
|
+ if (ObjectUtil.isNotNull(managementTeacherVo)) {
|
|
|
+ orderWorkerChangeRecordVo.setOperatingTeacherName(managementTeacherVo.getName());
|
|
|
+ orderWorkerChangeRecordVo.setOperatingTeacherPhoneNumber(managementTeacherVo.getPhoneNumber());
|
|
|
+ }
|
|
|
+ vo.setOrderWorkerChangeRecord(orderWorkerChangeRecordVo);
|
|
|
+ }
|
|
|
return vo;
|
|
|
}
|
|
|
|
|
|
@@ -250,16 +273,18 @@ public class OrderServiceImpl implements IOrderService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public boolean cancel(Long id, Long userId) {
|
|
|
+ public boolean cancel(Long id, Long userId, CancellationMethod cancellationMethod) {
|
|
|
Order order = loadById(id, true);
|
|
|
- if (!order.getUserId().equals(userId)) {
|
|
|
- throw new ServiceException(OrderExceptionEnum.Order_IS_NOT_YOURS);
|
|
|
+ if (CancellationMethod.user_canceled.equals(cancellationMethod)) {
|
|
|
+ if (!order.getUserId().equals(userId)) {
|
|
|
+ throw new ServiceException(OrderExceptionEnum.Order_IS_NOT_YOURS);
|
|
|
+ }
|
|
|
}
|
|
|
if (!OrderStatus.wait_confirmed.equals(order.getStatus())) {
|
|
|
throw new ServiceException(OrderExceptionEnum.Order_STATUS_ERROR);
|
|
|
}
|
|
|
order.setStatus(OrderStatus.canceled);
|
|
|
- order.setCancellationMethod(CancellationMethod.user_canceled);
|
|
|
+ order.setCancellationMethod(cancellationMethod);
|
|
|
order.setCancellationTime(new Date());
|
|
|
return baseMapper.updateById(order) > 0;
|
|
|
}
|
|
|
@@ -303,6 +328,38 @@ public class OrderServiceImpl implements IOrderService {
|
|
|
}).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public boolean assignWorker(OrderBo bo, Long teacherId) {
|
|
|
+ Order order = loadById(bo.getId(), true);
|
|
|
+ if (!OrderStatus.wait_confirmed.equals(order.getStatus()) && !OrderStatus.wait_service.equals(order.getStatus())
|
|
|
+ && !OrderStatus.in_progress.equals(order.getStatus())) {
|
|
|
+ throw new ServiceException(OrderExceptionEnum.Order_STATUS_IS_NOT_ASSIGN);
|
|
|
+ }
|
|
|
+ //判断护工
|
|
|
+ NursingWorker nursingWorker = nursingWorkerService.loadById(bo.getWorkerId(), true);
|
|
|
+ if (!nursingWorker.getHospitalId().equals(order.getHospitalId())) {
|
|
|
+ throw new ServiceException(OrderExceptionEnum.Order_WORKER_NOT_IN_HOSPITAL);
|
|
|
+ }
|
|
|
+ if (!nursingWorker.getEnableStatus().equals(UserConstants.NORMAL)) {
|
|
|
+ throw new ServiceException(OrderExceptionEnum.Order_WORKER_NOT_ENABLE);
|
|
|
+ }
|
|
|
+ order.setWorkerId(bo.getWorkerId());
|
|
|
+ if (OrderStatus.wait_confirmed.equals(order.getStatus())) {
|
|
|
+ order.setStatus(OrderStatus.wait_service);
|
|
|
+ }
|
|
|
+ //新增护工分配记录
|
|
|
+ OrderWorkerChangeRecordBo orderWorkerChangeRecordBo = new OrderWorkerChangeRecordBo();
|
|
|
+ orderWorkerChangeRecordBo.setOrderId(order.getId());
|
|
|
+ orderWorkerChangeRecordBo.setWorkerId(nursingWorker.getId());
|
|
|
+ orderWorkerChangeRecordBo.setWorkerName(nursingWorker.getName());
|
|
|
+ orderWorkerChangeRecordBo.setWorkerPhoneNumber(nursingWorker.getPhoneNumber());
|
|
|
+ orderWorkerChangeRecordBo.setSex(nursingWorker.getSex());
|
|
|
+ orderWorkerChangeRecordBo.setOperatingTeacherId(teacherId);
|
|
|
+ orderWorkerChangeRecordService.insertByBo(orderWorkerChangeRecordBo);
|
|
|
+ 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);
|