|
@@ -0,0 +1,115 @@
|
|
|
|
|
+package com.ydtech.modules.ser.service.impl;
|
|
|
|
|
+
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
|
+import com.ydtech.constants.enums.dict.ser.RescueTypeEnum;
|
|
|
|
|
+import com.ydtech.core.page.HttpResult;
|
|
|
|
|
+import com.ydtech.core.page.PageRequest;
|
|
|
|
|
+import com.ydtech.modules.base.controller.BaseController;
|
|
|
|
|
+import com.ydtech.modules.ser.dao.SerRescueOrderMapper;
|
|
|
|
|
+import com.ydtech.constants.enums.dict.ser.OderStateEnum;
|
|
|
|
|
+import com.ydtech.modules.ser.model.SerAnnualAuditOrder;
|
|
|
|
|
+import com.ydtech.modules.ser.model.po.RescueOrder;
|
|
|
|
|
+import com.ydtech.modules.ser.model.po.ServePrice;
|
|
|
|
|
+import com.ydtech.modules.ser.model.vo.RescueOrderVo;
|
|
|
|
|
+import com.ydtech.modules.ser.service.SerRescueOrderService;
|
|
|
|
|
+import com.ydtech.modules.ser.service.SerServePriceService;
|
|
|
|
|
+import com.ydtech.modules.ser.utils.PositionUtil;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
+
|
|
|
|
|
+@Service
|
|
|
|
|
+public class SerRescueOrderServiceImpl extends ServiceImpl<SerRescueOrderMapper, RescueOrder>
|
|
|
|
|
+ implements SerRescueOrderService {
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private SerServePriceService servePriceService;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public HttpResult<RescueOrder> countRescueSum(RescueOrder rescueOrder) {
|
|
|
|
|
+ //获取起点终点经纬度
|
|
|
|
|
+ double sLongitude = rescueOrder.getStartingLongitude().doubleValue();
|
|
|
|
|
+ double sLatitude = rescueOrder.getStartingLatitude().doubleValue();
|
|
|
|
|
+ double pLongitude = rescueOrder.getPositionLongitude().doubleValue();
|
|
|
|
|
+ double pLatitude = rescueOrder.getPositionLatitude().doubleValue();
|
|
|
|
|
+ //计算公里数
|
|
|
|
|
+ Double distance4 = PositionUtil.getDistance4(sLongitude, sLatitude, pLongitude, pLatitude);
|
|
|
|
|
+ long round = Math.round(distance4);
|
|
|
|
|
+ long kilometre = (round / 1000);
|
|
|
|
|
+ //获取服务信息
|
|
|
|
|
+ LambdaQueryWrapper<ServePrice> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ queryWrapper.eq(ServePrice::getCode, rescueOrder.getServeCode());
|
|
|
|
|
+ ServePrice servePrice = servePriceService.getOne(queryWrapper);
|
|
|
|
|
+ //设置救援金额
|
|
|
|
|
+ double rescueSum = servePrice.getPrice();
|
|
|
|
|
+ //设置超出规定公里数
|
|
|
|
|
+ double distanceUpperLimit = servePrice.getDistanceUpperLimit();
|
|
|
|
|
+ //设置超出规定计算金额
|
|
|
|
|
+ double countPrice = servePrice.getCountPrice();
|
|
|
|
|
+ //判断是否超出规定公里数
|
|
|
|
|
+ if (kilometre > distanceUpperLimit) {
|
|
|
|
|
+ rescueSum += (kilometre - distanceUpperLimit) * countPrice;
|
|
|
|
|
+ }
|
|
|
|
|
+ rescueOrder.setRescueSum(rescueSum);
|
|
|
|
|
+ rescueOrder.setServeCode(servePrice.getCode());
|
|
|
|
|
+ return HttpResult.ok(rescueOrder);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public HttpResult<Object> insertRescueOrder(RescueOrder rescueOrder) {
|
|
|
|
|
+ rescueOrder.setModifier(BaseController.getUser().getName());
|
|
|
|
|
+ rescueOrder.setOrderState(OderStateEnum.UNPAID.getDesc());
|
|
|
|
|
+ save(rescueOrder);
|
|
|
|
|
+ return HttpResult.ok();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public IPage<RescueOrder> rescueOrderPage(RescueOrderVo rescueOrderVo) {
|
|
|
|
|
+ PageRequest pageRequest = new PageRequest();
|
|
|
|
|
+ pageRequest.setPageNum(rescueOrderVo.getPageNum());
|
|
|
|
|
+ pageRequest.setPageSize(rescueOrderVo.getPageSize());
|
|
|
|
|
+ Page page = PageRequest.buildPageRequest(pageRequest);
|
|
|
|
|
+ LambdaQueryWrapper<RescueOrder> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ //起始点
|
|
|
|
|
+ if (rescueOrderVo.getRescueStarting() != null && !"".equals(rescueOrderVo.getRescueStarting())) {
|
|
|
|
|
+ queryWrapper.like(RescueOrder::getRescueStarting, rescueOrderVo.getRescueStarting());
|
|
|
|
|
+ }
|
|
|
|
|
+ //终点
|
|
|
|
|
+ if (rescueOrderVo.getRescuePosition() != null && !"".equals(rescueOrderVo.getRescuePosition())) {
|
|
|
|
|
+ queryWrapper.like(RescueOrder::getRescuePosition, rescueOrderVo.getRescuePosition());
|
|
|
|
|
+ }
|
|
|
|
|
+ //救援联系人
|
|
|
|
|
+ if (rescueOrderVo.getRescueUser() != null && !"".equals(rescueOrderVo.getRescueUser())) {
|
|
|
|
|
+ queryWrapper.like(RescueOrder::getRescueUser, rescueOrderVo.getRescueUser());
|
|
|
|
|
+ }
|
|
|
|
|
+ //联系人电话
|
|
|
|
|
+ if (rescueOrderVo.getPhoneNumber() != null && !"".equals(rescueOrderVo.getPhoneNumber())) {
|
|
|
|
|
+ queryWrapper.eq(RescueOrder::getPhoneNumber, rescueOrderVo.getPhoneNumber());
|
|
|
|
|
+ }
|
|
|
|
|
+ //车牌号
|
|
|
|
|
+ if (rescueOrderVo.getLicencePlate() != null && !"".equals(rescueOrderVo.getLicencePlate())) {
|
|
|
|
|
+ queryWrapper.eq(RescueOrder::getLicencePlate, rescueOrderVo.getLicencePlate());
|
|
|
|
|
+ }
|
|
|
|
|
+ //订单状态
|
|
|
|
|
+ if (rescueOrderVo.getOrderState() != null && !"".equals(rescueOrderVo.getOrderState())) {
|
|
|
|
|
+ OderStateEnum oderStateEnum = OderStateEnum.getOderStateEnum(rescueOrderVo.getOrderState());
|
|
|
|
|
+ queryWrapper.eq(RescueOrder::getOrderState, oderStateEnum != null ? oderStateEnum.getDesc() : null);
|
|
|
|
|
+ }
|
|
|
|
|
+ //订单生成时间
|
|
|
|
|
+ if (rescueOrderVo.getCreateTime() != null) {
|
|
|
|
|
+ queryWrapper.like(RescueOrder::getCreateTime, rescueOrderVo.getCreateTime());
|
|
|
|
|
+ }
|
|
|
|
|
+ //服务类型
|
|
|
|
|
+ if (rescueOrderVo.getServeCode() != null && !"".equals(rescueOrderVo.getServeCode())) {
|
|
|
|
|
+ RescueTypeEnum rescueTypeEnum = RescueTypeEnum.getRescueTypeEnum(rescueOrderVo.getServeCode());
|
|
|
|
|
+ queryWrapper.eq(RescueOrder::getServeCode, rescueTypeEnum != null ? rescueTypeEnum.getDesc() : null);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ Page pageData = baseMapper.selectPage(page, queryWrapper);
|
|
|
|
|
+ return pageData;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|