提交 98f6d724 authored 作者: aiqingguo's avatar aiqingguo

接单

上级 f105b81a
package com.clx.performance.app;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@NoArgsConstructor
public class SaveOrderChildParam {
@ApiModelProperty(value = "货单编号", example = "100000000")
@NotBlank(message = "货单编号不能为空")
private String orderGoodsNo;
@ApiModelProperty(value = "车辆id", example = "1")
@NotNull(message = "车辆id空")
private Integer truckId;
@ApiModelProperty(value = "司机用户编号", example = "1")
@NotNull(message = "司机用户编号空")
private Long driverUserNo;
}
package com.clx.performance.app;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@NoArgsConstructor
public class SaveOrderChildVo {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
private String childNo;
}
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
public enum OrderChildEnum {
;
@Getter
@AllArgsConstructor
public enum Status {
CREATED(10, "新创建"),
ORDERS(20, "接单成功"),
GO_TO_SEND(30, "前往货源地"),
ARRIVE_SEND(40, "到达货源地"),
COMPLETE(150, "完成"),//完成
//
// OWNER_CONFIRM(50, "货主确认车辆"),//货主确认车辆
// OWNER_LOAD(51, "货主装车"),//货主装车
// DRIVER_CONFIRM(52, "司机确认装车"),//司机确认装车
// GO_TO_RECEIVE(53, "前往目的地"),//前往目的地
// ARRIVE_RECEIVE(54 , "到达目的地"),//到达目的地
//
//
// OWNER_CONFIRM_TRUCK(100, "货主确认车辆"),//货主确认收货
// COMPENSATION_SCAN_CODE(99, "质检员扫码"),//质检员扫码
// OWNER_CONFIRM_UNLOAD(101, "货主确认收货"),//货主确认收货
// DRIVER_CONFIRM_UNLOAD(102, "司机确认收货"),//司机确认收货
// DRIVER_COMPLETE_ORDER(103, "已交货"),//已交货
//
// //运单取消规则的状态
// CANCEL_CONSULT_ORDER(110, "协商中"),//取消协商中
//
// PAYING(120, "支付中"),//支付中
// LOAD_PAYING(121, "货主装车支付中"),//货主装车支付中
// RECEIVE_PAYING(122, "确认收货支付中"),//确认收货支付中
// CANCEL_CONSULT_PAYING(123, "取消协商支付中"),//取消协商支付中
//
//
// EVALUATE(151, "评价完成"),
//
// REFUSE_LOAD(200, "拒绝装车"),//拒绝装车
// OWNER_CANCELED(210, "货主取消"),
// DRIVER_CANCELED(211, "司机取消"),
// SYSTEM_SERVICE_CANCELED(213, "系统取消"),
// CUSTOMER_SERVICE_CANCELED(212, "客服取消"),
//
//
// CONSULT(220, "收货协商中"),
// CUSTOMER_SERVICE_HANDLED(221, "客服处理完毕"),
// LOAD_CONSULT(222,"装货协商中"),
//
// PAY_FAIL(230, "司机接单支付失败"),
// LOAD_PAY_FAIL(231, "货主装车调整支付失败"),
// RECEIVE_PAY_FAIL(232, "确认收货支付失败"),
// CANCEL_CONSULT_PAY_FAIL(233, "取消协商支付失败")//取消协商支付失败
;
private final int code;
private final String name;
public static Optional<Status> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
}
}
package com.clx.performance.controller.app;
import com.clx.performance.app.SaveOrderChildParam;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.app.SaveOrderChildVo;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
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: aiqingguo
* @Description: 运单
* @Date: 2023-8-21 12:10:16
* @Version: 1.0
*/
@Slf4j
@RestController
@RequestMapping(value="/app/driver/orderchild")
@Validated
@Api(tags = "APP-运单")
@AllArgsConstructor
public class DriverOrderChildController {
private final OrderChildService orderChildService;
@ApiOperation(value = "接单", notes = "<br>By:艾庆国")
@PostMapping("/saveOrderChild")
public Result<SaveOrderChildVo> saveOrderChild(@RequestBody @Validated SaveOrderChildParam param) {
return Result.ok(orderChildService.saveOrderChild(param));
}
}
package com.clx.performance.controller.temp;
import com.msl.common.result.Result;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: aiqingguo
* @Description: 临时接口
* @Date: 2023-8-21 12:10:16
* @Version: 1.0
*/
@Slf4j
@RestController
@RequestMapping(value="/temp")
public class TempController {
@ApiOperation(value = "test", notes = "<br>By:艾庆国")
@RequestMapping(value = "/test", method = RequestMethod.GET)
public Result<Void> test() {
return Result.ok();
}
}
package com.clx.performance.dao;
import com.clx.performance.mapper.OrderChildMapper;
import com.clx.performance.model.OrderChild;
import com.msl.common.dao.BaseDao;
/**
* @Author: aiqinguo
* @Description: 运单表
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Integer> {
}
package com.clx.performance.dao;
import com.clx.performance.mapper.OrderChildImageMapper;
import com.clx.performance.model.OrderChildImage;
import com.msl.common.dao.BaseDao;
/**
* @Author: aiqinguo
* @Description: 运单图片
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
public interface OrderChildImageDao extends BaseDao<OrderChildImageMapper, OrderChildImage, Integer> {
}
package com.clx.performance.dao;
import com.clx.performance.mapper.OrderChildLogMapper;
import com.clx.performance.model.OrderChildLog;
import com.msl.common.dao.BaseDao;
/**
* @Author: aiqinguo
* @Description: 运单日志
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
public interface OrderChildLogDao extends BaseDao<OrderChildLogMapper, OrderChildLog, Integer> {
}
package com.clx.performance.dao.impl;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.mapper.OrderChildMapper;
import com.clx.performance.model.OrderChild;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
/**
* @Author: aiqinguo
* @Description: 运单表
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
@Repository
public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, Integer> implements OrderChildDao {
}
package com.clx.performance.dao.impl;
import com.clx.performance.dao.OrderChildImageDao;
import com.clx.performance.mapper.OrderChildImageMapper;
import com.clx.performance.model.OrderChildImage;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
/**
* @Author: aiqinguo
* @Description: 运单表
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
@Repository
public class OrderChildImageImpl extends BaseDaoImpl<OrderChildImageMapper, OrderChildImage, Integer> implements OrderChildImageDao {
}
package com.clx.performance.dao.impl;
import com.clx.performance.dao.OrderChildLogDao;
import com.clx.performance.mapper.OrderChildLogMapper;
import com.clx.performance.model.OrderChildLog;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
/**
* @Author: aiqinguo
* @Description: 运单图片
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
@Repository
public class OrderChildLogDaoImpl extends BaseDaoImpl<OrderChildLogMapper, OrderChildLog, Integer> implements OrderChildLogDao {
}
package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.OrderChildImage;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: aiqinguo
* @Description: 运单图片
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
@Mapper
public interface OrderChildImageMapper extends BaseMapper<OrderChildImage> {
}
\ No newline at end of file
package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.OrderChildLog;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: aiqinguo
* @Description: 运单日志
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
@Mapper
public interface OrderChildLogMapper extends BaseMapper<OrderChildLog> {
}
\ No newline at end of file
package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.OrderChild;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: aiqinguo
* @Description: 运单表
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
@Mapper
public interface OrderChildMapper extends BaseMapper<OrderChild> {
}
\ No newline at end of file
package com.clx.performance.model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @Author: aiqinguo
* @Description: 运单表
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
@TableName(autoResultMap = true)
public class OrderChild implements HasKey<Integer> {
private Integer id; //id
private Long userNo; //用户编号
private Long ownerUserNo; //货主用户编号
private String childNo; //运单编号
private String orderGoodsNo; //货单编号
private String orderNo; //订单编号
private Integer goodsId; //货物id
private String goodsName; //货物名称
private BigDecimal freightPrice; //运费单价(分)
private Integer sendAddressId; //发货地址id
private String sendAddress; //发货地址
private Integer receiveAddressId; //收货地址id
private String receiveAddress; //收货地址
private Integer truckId; //车辆ID
private String truckNo; //车牌号
private BigDecimal truckLoad; //载重(单位吨)
private Long driverUserNo; //司机用户编号
private String driverName; //司机姓名
private String driverMobile; //司机手机号
private BigDecimal loadWeight; //装车净重(单位吨)
private BigDecimal unloadWeight; //卸车净重(单位吨)
private BigDecimal weight; //净重(单位吨)
private Integer status; //状态
private LocalDateTime payTime; //支付时间
private LocalDateTime loadTime; //装车时间
private LocalDateTime unloadTime; //卸车时间
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
@KeyColumn("id")
@Override
public Integer gainKey() {
return id;
}
}
\ No newline at end of file
package com.clx.performance.model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
/**
* @Author: aiqinguo
* @Description: 运单图片
* @Date: 2023/09/18 11:43:33
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
@TableName(autoResultMap = true)
public class OrderChildImage implements HasKey<Integer> {
private Integer id; //id
private String childNo; //运单编号
private Integer type; //图片类型
private String image; //图片地址
private String createTime; //创建时间
private String modifiedTime; //修改时间
@KeyColumn("id")
@Override
public Integer gainKey() {
return id;
}
}
\ No newline at end of file
package com.clx.performance.model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @Author: aiqinguo
* @Description: 运单日志
* @Date: 2023/09/18 11:43:34
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
@TableName(autoResultMap = true)
public class OrderChildLog implements HasKey<Integer> {
private Integer id; //id
private String childNo; //运单编号
private Integer type; //类型
private String remark; //内容
private Integer createType; //操作人类型1,货主 2,承运端
private Long createBy; //操作人编号
private String createName; //操作人名称
private String createTime; //创建时间
private String modifiedTime; //修改时间
@KeyColumn("id")
@Override
public Integer gainKey() {
return id;
}
}
\ No newline at end of file
package com.clx.performance.service;
public interface OrderChildImageService {
}
package com.clx.performance.service;
public interface OrderChildLogService {
void saveOrderChildLog(String childNo, Integer type, String remark,
Integer createType,Long createBy, String createName);
}
package com.clx.performance.service;
import com.clx.performance.app.SaveOrderChildParam;
import com.clx.performance.app.SaveOrderChildVo;
/**
* @Author: aiqinguo
* @Description: 运单表
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
public interface OrderChildService {
SaveOrderChildVo saveOrderChild(SaveOrderChildParam param);
}
package com.clx.performance.service.impl;
import com.clx.performance.dao.OrderChildLogDao;
import com.clx.performance.model.OrderChildLog;
import com.clx.performance.service.OrderChildLogService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class OrderChildLogServiceImpl implements OrderChildLogService {
@Autowired
private OrderChildLogDao orderChildLogDao;
@Override
public void saveOrderChildLog(String childNo, Integer type, String remark,
Integer createType,Long createBy, String createName) {
OrderChildLog orderChildLog = new OrderChildLog();
orderChildLog.setChildNo(childNo);
orderChildLog.setType(type);
orderChildLog.setRemark(remark);
orderChildLog.setCreateType(createType);
orderChildLog.setCreateBy(createBy);
orderChildLog.setCreateName(createName);
orderChildLogDao.saveEntity(orderChildLog);
}
}
package com.clx.performance.service.impl;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.app.SaveOrderChildParam;
import com.clx.performance.app.SaveOrderChildVo;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.service.OrderChildLogService;
import com.clx.performance.service.OrderChildService;
import com.msl.common.enums.ResultCodeEnum;
import com.msl.common.exception.ServiceSystemException;
import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @Author: aiqinguo
* @Description: 运单表
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
@Slf4j
@Service
@AllArgsConstructor
public class OrderChildServiceImpl implements OrderChildService {
private final OrderChildDao orderChildDao;
private final OrderGoodsDao orderGoodsDao;
private final OrderChildLogService orderChildLogService;
@Override
@Transactional(rollbackFor = Exception.class)
public SaveOrderChildVo saveOrderChild(SaveOrderChildParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo();
String childNo = "1";
BigDecimal truckLoad = BigDecimal.valueOf(1L);
LocalDateTime now = LocalDateTime.now();
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(param.getOrderGoodsNo()).orElseThrow(ResultCodeEnum.FAIL);
// 库存验证
if (orderGoods.getResidueTransportWeight().compareTo(BigDecimal.ZERO) <= 0) {throw new ServiceSystemException(ResultCodeEnum.FAIL);}
if (orderGoods.getResidueTransportWeight().compareTo(truckLoad) < 0) {throw new ServiceSystemException(ResultCodeEnum.FAIL);}
OrderChild orderChild = new OrderChild();
orderChild.setChildNo(childNo);
orderChild.setUserNo(userNo);
orderChild.setOwnerUserNo(orderGoods.getUserNo());
orderChild.setOrderNo(orderGoods.getOrderNo());
orderChild.setOrderGoodsNo(orderGoods.getOrderGoodsNo());
orderChild.setFreightPrice(orderGoods.getPendingOrderFreight());
orderChild.setGoodsId(0);
orderChild.setGoodsName(orderGoods.getGoodsName());
orderChild.setSendAddressId(orderGoods.getSendAddressId());
orderChild.setSendAddress(orderGoods.getSendAddressShorter());
orderChild.setReceiveAddressId(orderGoods.getReceiveAddressId());
orderChild.setReceiveAddress(orderGoods.getReceiveAddressShorter());
orderChild.setDriverUserNo(param.getDriverUserNo());
orderChild.setDriverName("");
orderChild.setDriverMobile("");
orderChild.setTruckId(param.getTruckId());
orderChild.setTruckNo("");
orderChild.setTruckLoad(truckLoad);
orderChild.setWeight(orderChild.getTruckLoad());
orderChild.setPayTime(now);
orderChild.setStatus(OrderChildEnum.Status.CREATED.getCode());
orderChild.setCreateTime(now);
// 更新货单数据
updateOrderGoodsAmount(orderGoods, truckLoad);
// 新增运单
orderChildDao.saveEntity(orderChild);
// 更新司机状态
// 更新车辆状态
// 新增日志
orderChildLogService.saveOrderChildLog(childNo, 1,"创建运单",
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
SaveOrderChildVo result = new SaveOrderChildVo();
result.setChildNo(childNo);
return result;
}
/**
* 更新货单数据
*/
private void updateOrderGoodsAmount(OrderGoods orderGoods, BigDecimal weight){
if (orderGoods.getResidueTransportWeight().compareTo(weight) <= 0) {orderGoods.setOrderGoodsStatus(0);}
// orderGoodsDao.updateEntityByKey(orderGoods, weight);
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论