Ver código fonte

添加一键救援新增订单及查询接口

haoyu 2 anos atrás
pai
commit
9ee2957a34

+ 56 - 0
src/main/java/com/ydtech/modules/ser/controller/SerRescueOrderController.java

@@ -0,0 +1,56 @@
+package com.ydtech.modules.ser.controller;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.base.controller.BaseController;
+
+import com.ydtech.modules.ser.model.po.RescueOrder;
+import com.ydtech.modules.ser.model.vo.RescueOrderVo;
+import com.ydtech.modules.ser.service.SerRescueOrderService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author
+ * @description
+ * @createDate
+ */
+@Api(tags = "救援订单")
+@RequestMapping("/ser/rescue")
+@RestController
+public class SerRescueOrderController extends BaseController {
+
+
+    @Autowired
+    private SerRescueOrderService rescueOrderService;
+
+    @PostMapping("rescueOrderPage")
+    @ApiOperation("分页查询救援订单")
+    public HttpResult<PageResult> rescueOrderPage(@RequestBody RescueOrderVo rescueOrderVo) {
+        IPage<RescueOrder> rescueOrderIPage = rescueOrderService.rescueOrderPage(rescueOrderVo);
+        PageResult pageResult = buildPageResponse(rescueOrderIPage);
+        return HttpResult.ok(pageResult);
+    }
+
+    @PostMapping("count/rescueSum")
+    @ApiOperation("计算金额")
+    public HttpResult<RescueOrder> countRescueSum(@RequestBody RescueOrder rescueOrder) {
+        return rescueOrderService.countRescueSum(rescueOrder);
+    }
+
+    @PostMapping("insert/rescueOrder")
+    @ApiOperation("新增订单")
+    public HttpResult<Object> insertRescueOrder(@RequestBody RescueOrder rescueOrder) {
+        return rescueOrderService.insertRescueOrder(rescueOrder);
+    }
+
+
+}

+ 55 - 0
src/main/java/com/ydtech/modules/ser/controller/SerServePriceController.java

@@ -0,0 +1,55 @@
+package com.ydtech.modules.ser.controller;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.base.controller.BaseController;
+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 io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author
+ * @description
+ * @createDate
+ */
+@Api(tags = "服务管理")
+@RequestMapping("/ser/serve")
+@RestController
+public class SerServePriceController extends BaseController {
+
+
+    @Autowired
+    private SerServePriceService servePriceService;
+
+
+    @PostMapping("insert/serve")
+    @ApiOperation("新增服务")
+    public HttpResult<Object> insertServe(@RequestBody ServePrice servePrice) {
+        return servePriceService.insertServe(servePrice);
+    }
+
+    @PostMapping("update/serve")
+    @ApiOperation("新增服务")
+    public HttpResult<Object> updateServe(@RequestBody ServePrice servePrice) {
+        return servePriceService.updateServe(servePrice);
+    }
+
+    @PostMapping("delete/serve")
+    @ApiOperation("新增服务")
+    public HttpResult<Object> deleteServe(@RequestBody ServePrice servePrice) {
+        return servePriceService.deleteServe(servePrice);
+    }
+
+
+}

+ 8 - 0
src/main/java/com/ydtech/modules/ser/dao/SerRescueOrderMapper.java

@@ -0,0 +1,8 @@
+package com.ydtech.modules.ser.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
+import com.ydtech.modules.ser.model.po.RescueOrder;
+
+public interface SerRescueOrderMapper extends BaseMapper<RescueOrder> {
+}

+ 7 - 0
src/main/java/com/ydtech/modules/ser/dao/SerServePriceMapper.java

@@ -0,0 +1,7 @@
+package com.ydtech.modules.ser.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.ser.model.po.RescueOrder;
+import com.ydtech.modules.ser.model.po.ServePrice;
+
+public interface SerServePriceMapper extends BaseMapper<ServePrice> { }

+ 83 - 0
src/main/java/com/ydtech/modules/ser/model/po/RescueOrder.java

@@ -0,0 +1,83 @@
+package com.ydtech.modules.ser.model.po;
+
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+@TableName(value = "ser_rescue_order", autoResultMap = true)
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class RescueOrder {
+
+    @TableId(value = "id",type= IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "救援起点")
+    @TableField(value = "rescue_starting")
+    private String rescueStarting;
+
+    @ApiModelProperty(value = "起点经度")
+    @TableField(value = "rescue_starting_longitude")
+    private BigDecimal startingLongitude;
+
+    @ApiModelProperty(value = "起点纬度")
+    @TableField(value = "rescue_starting_latitude")
+    private BigDecimal startingLatitude;
+
+    @ApiModelProperty(value = "救援终点")
+    @TableField(value = "rescue_destination")
+    private String rescuePosition;
+
+    @ApiModelProperty(value = "终点经度")
+    @TableField(value = "rescue_position_longitude")
+    private BigDecimal positionLongitude;
+
+    @ApiModelProperty(value = "终点纬度")
+    @TableField(value = "rescue_position_latitude")
+    private BigDecimal positionLatitude;
+
+    @ApiModelProperty(value = "救援联系人")
+    @TableField(value = "rescue_user")
+    private String rescueUser;
+
+    @ApiModelProperty(value = "联系人电话")
+    @TableField(value = "phone_number")
+    private String phoneNumber;
+
+    @ApiModelProperty(value = "车牌号")
+    @TableField(value = "licence_plate")
+    private String licencePlate;
+
+    @ApiModelProperty(value = "救援场景")
+    @TableField(value = "rescue_scene")
+    private String rescueScene;
+
+    @ApiModelProperty(value = "订单状态")
+    @TableField(value = "order_state")
+    private String orderState;
+
+    @ApiModelProperty(value = "订单生成时间")
+    @TableField(value = "create_time",fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "服务类型")
+    @TableField(value = "serve_code")
+    private String serveCode;
+
+    @ApiModelProperty(value = "救援金额")
+    @TableField(value = "rescue_sum")
+    private Double rescueSum;
+
+    @ApiModelProperty(value = "操作人")
+    @TableField(value = "modifier")
+    private String modifier;
+
+}

+ 59 - 0
src/main/java/com/ydtech/modules/ser/model/po/ServePrice.java

@@ -0,0 +1,59 @@
+package com.ydtech.modules.ser.model.po;
+
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@TableName(value = "ser_serve_price", autoResultMap = true)
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ServePrice {
+
+
+    @TableId(value = "id",type= IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "服务名称")
+    @TableField(value = "serve_name")
+    private String serveName;
+
+    @ApiModelProperty(value = "服务金额")
+    @TableField(value = "price")
+    private Double price;
+
+    @ApiModelProperty(value = "服务编号")
+    @TableField(value = "serve_code")
+    private String code;
+
+    @ApiModelProperty(value = "限定距离上限")
+    @TableField(value = "distance_upper_limit")
+    private Double distanceUpperLimit;
+
+    @ApiModelProperty(value = "超出距离计算金额")
+    @TableField(value = "count_price")
+    private Double countPrice;
+
+    @ApiModelProperty(value = "创建人")
+    @TableField(value = "creator")
+    private String creator;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(value = "create_time",fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "修改人")
+    @TableField(value = "modifier")
+    private String modifier;
+
+    @ApiModelProperty(value = "修改时间")
+    @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+}

+ 55 - 0
src/main/java/com/ydtech/modules/ser/model/vo/RescueOrderVo.java

@@ -0,0 +1,55 @@
+package com.ydtech.modules.ser.model.vo;
+
+
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.ydtech.core.page.PageRequest;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+
+@Data
+public class RescueOrderVo extends PageRequest {
+
+    @ApiModelProperty(value = "订单ID")
+    private Integer id;
+
+    @ApiModelProperty(value = "救援起点")
+    private String rescueStarting;
+
+    @ApiModelProperty(value = "救援终点")
+    private String rescuePosition;
+
+    @ApiModelProperty(value = "救援联系人")
+    private String rescueUser;
+
+    @ApiModelProperty(value = "联系人电话")
+    private String phoneNumber;
+
+    @ApiModelProperty(value = "车牌号")
+    private String licencePlate;
+
+    @ApiModelProperty(value = "救援场景")
+    private String rescueScene;
+
+    @ApiModelProperty(value = "订单状态")
+    private String orderState;
+
+    @ApiModelProperty(value = "订单生成时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "服务编号")
+    private String serveCode;
+
+    @ApiModelProperty(value = "救援金额")
+    private Double rescueSum;
+
+    @ApiModelProperty(value = "操作人")
+    private String modifier;
+
+}

+ 16 - 0
src/main/java/com/ydtech/modules/ser/service/SerRescueOrderService.java

@@ -0,0 +1,16 @@
+package com.ydtech.modules.ser.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.ser.model.po.RescueOrder;
+import com.ydtech.modules.ser.model.vo.RescueOrderVo;
+
+public interface SerRescueOrderService extends IService<RescueOrder> {
+    HttpResult<RescueOrder> countRescueSum(RescueOrder rescueOrder);
+
+    HttpResult<Object> insertRescueOrder(RescueOrder rescueOrder);
+
+    IPage<RescueOrder> rescueOrderPage(RescueOrderVo rescueOrderVo);
+}

+ 16 - 0
src/main/java/com/ydtech/modules/ser/service/SerServePriceService.java

@@ -0,0 +1,16 @@
+package com.ydtech.modules.ser.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.ser.model.po.RescueOrder;
+import com.ydtech.modules.ser.model.po.ServePrice;
+
+public interface SerServePriceService extends IService<ServePrice> {
+
+
+    HttpResult<Object> insertServe(ServePrice servePrice);
+
+    HttpResult<Object> updateServe(ServePrice servePrice);
+
+    HttpResult<Object> deleteServe(ServePrice servePrice);
+}

+ 115 - 0
src/main/java/com/ydtech/modules/ser/service/impl/SerRescueOrderServiceImpl.java

@@ -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;
+    }
+}

+ 34 - 0
src/main/java/com/ydtech/modules/ser/service/impl/SerServePriceServiceImpl.java

@@ -0,0 +1,34 @@
+package com.ydtech.modules.ser.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.ser.dao.SerServePriceMapper;
+import com.ydtech.modules.ser.model.po.ServePrice;
+import com.ydtech.modules.ser.service.SerServePriceService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SerServePriceServiceImpl extends ServiceImpl<SerServePriceMapper, ServePrice>
+        implements SerServePriceService {
+
+
+    @Override
+    public HttpResult<Object> insertServe(ServePrice servePrice) {
+        servePrice.setModifier(BaseController.getUser().getName());
+        save(servePrice);
+        return HttpResult.ok();
+    }
+
+    @Override
+    public HttpResult<Object> updateServe(ServePrice servePrice) {
+        updateById(servePrice);
+        return HttpResult.ok();
+    }
+
+    @Override
+    public HttpResult<Object> deleteServe(ServePrice servePrice) {
+        removeById(servePrice);
+        return HttpResult.ok();
+    }
+}