提交 d59310ee authored 作者: aiqingguo's avatar aiqingguo

接单

上级 f4fb5b99
package com.clx.performance.app;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildArriveReceiveAddressParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
private String childNo;
}
package com.clx.performance.app;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildArriveSendAddressParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
private String childNo;
}
package com.clx.performance.app;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildCancelParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
private String childNo;
@ApiModelProperty(value = "取消原因", example = "信息错误")
@NotBlank(message = "取消原因不能为空")
private String remark;
}
package com.clx.performance.app;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildConfirmParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
private String childNo;
}
package com.clx.performance.app;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildGoToReceiveAddressParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
private String childNo;
}
package com.clx.performance.app;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildGoToSendAddressParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
private String childNo;
}
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.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildLoadAndUnloadAgainParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
private String childNo;
@ApiModelProperty(value = "装货毛重(单位吨)", example = "2.46")
@NotNull(message = "装货毛重不能为空")
private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重(单位吨)", example = "1.23")
@NotNull(message = "装货皮重不能为空")
private BigDecimal loadTare;
@ApiModelProperty(value = "装货净重(单位吨)", example = "1.23")
@NotNull(message = "装货净重不能为空")
private BigDecimal loadNet;
@ApiModelProperty(value = "磅单图片列表")
@NotEmpty(message = "请上传磅单照片")
private List<String> loadImageList;
@ApiModelProperty(value = "卸货毛重(单位吨)", example = "2.46")
@NotNull(message = "装货毛重不能为空")
private BigDecimal unloadRough;
@ApiModelProperty(value = "卸货皮重(单位吨)", example = "1.23")
@NotNull(message = "装货皮重不能为空")
private BigDecimal unloadTare;
@ApiModelProperty(value = "卸货净重(单位吨)", example = "1.23")
@NotNull(message = "装货净重不能为空")
private BigDecimal unloadNet;
@ApiModelProperty(value = "磅单图片列表")
@NotEmpty(message = "请上传磅单照片")
private List<String> unloadImageList;
}
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.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildLoadParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
private String childNo;
@ApiModelProperty(value = "装货毛重(单位吨)", example = "2.46")
@NotNull(message = "装货毛重不能为空")
private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重(单位吨)", example = "1.23")
@NotNull(message = "装货皮重不能为空")
private BigDecimal loadTare;
@ApiModelProperty(value = "装货净重(单位吨)", example = "1.23")
@NotNull(message = "装货净重不能为空")
private BigDecimal loadNet;
@ApiModelProperty(value = "磅单图片列表")
@NotEmpty(message = "请上传磅单照片")
private List<String> loadImageList;
}
...@@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull; ...@@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull;
@Getter @Getter
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
public class SaveOrderChildParam { public class OrderChildSaveParam {
@ApiModelProperty(value = "货单编号", example = "100000000") @ApiModelProperty(value = "货单编号", example = "100000000")
@NotBlank(message = "货单编号不能为空") @NotBlank(message = "货单编号不能为空")
......
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.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildUnloadParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
private String childNo;
@ApiModelProperty(value = "卸货毛重(单位吨)", example = "2.46")
@NotNull(message = "装货毛重不能为空")
private BigDecimal unloadRough;
@ApiModelProperty(value = "卸货皮重(单位吨)", example = "1.23")
@NotNull(message = "装货皮重不能为空")
private BigDecimal unloadTare;
@ApiModelProperty(value = "卸货净重(单位吨)", example = "1.23")
@NotNull(message = "装货净重不能为空")
private BigDecimal unloadNet;
@ApiModelProperty(value = "磅单图片列表")
@NotEmpty(message = "请上传磅单照片")
private List<String> unloadImageList;
}
...@@ -13,12 +13,24 @@ public enum OrderChildEnum { ...@@ -13,12 +13,24 @@ public enum OrderChildEnum {
@AllArgsConstructor @AllArgsConstructor
public enum Status { public enum Status {
CREATED(10, "新创建"), CREATED(10, "已接单"),
ORDERS(20, "接单成功"),
PAYING(20, "支付中"),
GO_TO_SEND(30, "前往货源地"), GO_TO_SEND(30, "前往货源地"),
ARRIVE_SEND(40, "到达货源地"), ARRIVE_SEND(40, "到达货源地"),
LOAD(60 , "装货成功"),
GO_TO_RECEIVE(50, "前往目的地"),
ARRIVE_RECEIVE(60 , "到达目的地"),
DRIVER_CONFIRM(70, "收货待确认"),
POUND_AUDIT_FAIL(80, "磅单审核驳回"),
UNSETTLED(80, "待结算"),
COMPLETE(150, "完成"),//完成 COMPLETE(100, "完成"),
DRIVER_CANCEL(200, "司机取消"),
PLATFORM_CANCEL(200, "平台取消"),
// //
// OWNER_CONFIRM(50, "货主确认车辆"),//货主确认车辆 // OWNER_CONFIRM(50, "货主确认车辆"),//货主确认车辆
...@@ -71,4 +83,5 @@ public enum OrderChildEnum { ...@@ -71,4 +83,5 @@ public enum OrderChildEnum {
} }
} }
} }
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
public enum OrderChildLogEnum {
;
@Getter
@AllArgsConstructor
public enum Type {
CREATED(1, "接单成功"),
GO_TO_SEND(3, "前往货源地"),
ARRIVE_SEND(4, "到达货源地"),
GO_TO_RECEIVE(5, "前往目的地"),
ARRIVE_RECEIVE(6 , "到达目的地"),
POUND_AUDIT(7, "磅单审核"),
LOAD(11, "提交装货信息"),
UNLOAD(12, "提交卸货信息"),
RELOAD(13, "修改装货信息"),
REUNLOAD(14, "修改卸货信息"),
RELOAD_AND_REUNLOAD(15, "修改装货、卸货信息"),
DRIVER_CONFIRM(21, "司机确认收货"),
COMPLETE(21, "完成"),
DRIVER_CANCEL(31, "司机取消运单"),
OWNER_CANCEL(32, "货主取消运单"),
;
private final int code;
private final String msg;
public static Optional<Type> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
}
}
package com.clx.performance.controller.app; package com.clx.performance.controller.app;
import com.clx.performance.app.SaveOrderChildParam; import com.clx.performance.app.*;
import com.clx.performance.service.OrderChildService; import com.clx.performance.service.OrderChildService;
import com.clx.performance.app.SaveOrderChildVo;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -33,9 +32,81 @@ public class DriverOrderChildController { ...@@ -33,9 +32,81 @@ public class DriverOrderChildController {
@ApiOperation(value = "接单", notes = "<br>By:艾庆国") @ApiOperation(value = "接单", notes = "<br>By:艾庆国")
@PostMapping("/saveOrderChild") @PostMapping("/saveOrderChild")
public Result<SaveOrderChildVo> saveOrderChild(@RequestBody @Validated SaveOrderChildParam param) { public Result<SaveOrderChildVo> saveOrderChild(@RequestBody @Validated OrderChildSaveParam param) {
return Result.ok(orderChildService.saveOrderChild(param)); return Result.ok(orderChildService.saveOrderChild(param));
} }
@ApiOperation(value = "前往货源地", notes = "<br>By:艾庆国")
@PostMapping("/updateGotoSendAddress")
public Result<Void> updateGotoSendAddress(@RequestBody @Validated OrderChildGoToSendAddressParam param) {
orderChildService.updateGotoSendAddress(param);
return Result.ok();
}
@ApiOperation(value = "到达货源地", notes = "<br>By:艾庆国")
@PostMapping("/updateArriveSendAddress")
public Result<Void> updateArriveSendAddress(@RequestBody @Validated OrderChildArriveSendAddressParam param) {
orderChildService.updateArriveSendAddress(param);
return Result.ok();
}
@ApiOperation(value = "前往目的地", notes = "<br>By:艾庆国")
@PostMapping("/updateGotoReceiveAddress")
public Result<Void> updateGotoReceiveAddress(@RequestBody @Validated OrderChildGoToReceiveAddressParam param) {
orderChildService.updateGotoReceiveAddress(param);
return Result.ok();
}
@ApiOperation(value = "到达目的地", notes = "<br>By:艾庆国")
@PostMapping("/updateArriveReceiveAddress")
public Result<Void> updateArriveReceiveAddress(@RequestBody @Validated OrderChildArriveReceiveAddressParam param) {
orderChildService.updateArriveReceiveAddress(param);
return Result.ok();
}
@ApiOperation(value = "装车(首次、再次)", notes = "<br>By:艾庆国")
@PostMapping("/updateLoad")
public Result<Void> updateLoad(@RequestBody @Validated OrderChildLoadParam param) {
orderChildService.updateLoad(param);
return Result.ok();
}
@ApiOperation(value = "卸车(首次、再次)", notes = "<br>By:艾庆国")
@PostMapping("/updateUnload")
public Result<Void> updateUnload(@RequestBody @Validated OrderChildUnloadParam param) {
orderChildService.updateUnload(param);
return Result.ok();
}
@ApiOperation(value = "重新装车卸车", notes = "修改装车卸车信息<br>By:艾庆国")
@PostMapping("/updateLoadAndUnloadAgain")
public Result<Void> updateLoadAndUnloadAgain(@RequestBody @Validated OrderChildLoadAndUnloadAgainParam param) {
orderChildService.updateLoadAndUnloadAgain(param);
return Result.ok();
}
@ApiOperation(value = "确认交货", notes = "<br>By:艾庆国")
@PostMapping("/updateConfirm")
public Result<Void> updateConfirm(@RequestBody @Validated OrderChildConfirmParam param) {
orderChildService.updateConfirm(param);
return Result.ok();
}
@ApiOperation(value = "取消运单", notes = "<br>By:艾庆国")
@PostMapping("/updateCancel")
public Result<Void> updateCancel(@RequestBody @Validated OrderChildCancelParam param) {
orderChildService.updateCancel(param);
return Result.ok();
}
} }
...@@ -2,8 +2,11 @@ package com.clx.performance.dao; ...@@ -2,8 +2,11 @@ package com.clx.performance.dao;
import com.clx.performance.mapper.OrderChildMapper; import com.clx.performance.mapper.OrderChildMapper;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
import java.time.LocalDateTime;
/** /**
* @Author: aiqinguo * @Author: aiqinguo
* @Description: 运单表 * @Description: 运单表
...@@ -12,6 +15,16 @@ import com.msl.common.dao.BaseDao; ...@@ -12,6 +15,16 @@ import com.msl.common.dao.BaseDao;
*/ */
public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Integer> { public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Integer> {
boolean updateCancel(OrderChild item);
boolean updateLoad(OrderChild item);
boolean updateUnload(OrderChild item);
boolean updateLoadAndUnload(OrderChild item);
boolean updateDriverConfirm(OrderChild item);
Optional<OrderChild> getByChildNo(String childNo);
long countOfCancel(Long userNo, LocalDateTime startTime, LocalDateTime endTime);
} }
...@@ -11,4 +11,9 @@ import com.msl.common.dao.BaseDao; ...@@ -11,4 +11,9 @@ import com.msl.common.dao.BaseDao;
* @Version: 1.0 * @Version: 1.0
*/ */
public interface OrderChildImageDao extends BaseDao<OrderChildImageMapper, OrderChildImage, Integer> { public interface OrderChildImageDao extends BaseDao<OrderChildImageMapper, OrderChildImage, Integer> {
boolean deleteLoad(String childNo);
boolean deleteUnload(String childNo);
boolean deleteLoadAndUnload(String childNo);
} }
package com.clx.performance.dao.impl; package com.clx.performance.dao.impl;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.mapper.OrderChildMapper; import com.clx.performance.mapper.OrderChildMapper;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl; import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
/** /**
* @Author: aiqinguo * @Author: aiqinguo
* @Description: 运单表 * @Description: 运单表
...@@ -14,4 +18,51 @@ import org.springframework.stereotype.Repository; ...@@ -14,4 +18,51 @@ import org.springframework.stereotype.Repository;
*/ */
@Repository @Repository
public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, Integer> implements OrderChildDao { public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, Integer> implements OrderChildDao {
@Override
public boolean updateCancel(OrderChild item) {
return update(lUdWrapper()
.eq(OrderChild::getChildNo, item.getChildNo())
.set(OrderChild::getStatus, item.getStatus())
);
}
@Override
public boolean updateLoad(OrderChild item) {
return false;
}
@Override
public boolean updateUnload(OrderChild item) {
return false;
}
@Override
public boolean updateLoadAndUnload(OrderChild item) {
return false;
}
@Override
public boolean updateDriverConfirm(OrderChild item) {
return false;
}
@Override
public Optional<OrderChild> getByChildNo(String childNo) {
return Optional.of(childNo)
.map(item -> lQrWrapper()
.eq(OrderChild::getChildNo, item)
)
.map(super::getOne);
}
@Override
public long countOfCancel(Long userNo, LocalDateTime startTime, LocalDateTime endTime) {
return count(lQrWrapper()
.eq(OrderChild::getChildNo, userNo)
.eq(OrderChild::getStatus, OrderChildEnum.Status.DRIVER_CANCEL.getCode())
.ge(OrderChild::getCreateTime, startTime)
.le(OrderChild::getCreateTime, endTime)
);
}
} }
...@@ -14,4 +14,30 @@ import org.springframework.stereotype.Repository; ...@@ -14,4 +14,30 @@ import org.springframework.stereotype.Repository;
*/ */
@Repository @Repository
public class OrderChildImageImpl extends BaseDaoImpl<OrderChildImageMapper, OrderChildImage, Integer> implements OrderChildImageDao { public class OrderChildImageImpl extends BaseDaoImpl<OrderChildImageMapper, OrderChildImage, Integer> implements OrderChildImageDao {
@Override
public boolean deleteLoad(String childNo) {
return remove(lQrWrapper()
.eq(OrderChildImage::getChildNo, childNo)
.eq(OrderChildImage::getType, OrderChildImage.Type.LOAD.getCode())
);
}
@Override
public boolean deleteUnload(String childNo) {
return remove(lQrWrapper()
.eq(OrderChildImage::getChildNo, childNo)
.eq(OrderChildImage::getType, OrderChildImage.Type.UNLOAD.getCode())
);
}
@Override
public boolean deleteLoadAndUnload(String childNo) {
return remove(lQrWrapper()
.eq(OrderChildImage::getChildNo, childNo)
.in(OrderChildImage::getType, OrderChildImage.Type.LOAD.getCode(), OrderChildImage.Type.UNLOAD.getCode())
);
}
} }
...@@ -45,9 +45,15 @@ public class OrderChild implements HasKey<Integer> { ...@@ -45,9 +45,15 @@ public class OrderChild implements HasKey<Integer> {
private String driverName; //司机姓名 private String driverName; //司机姓名
private String driverMobile; //司机手机号 private String driverMobile; //司机手机号
private BigDecimal loadWeight; //装车净重(单位吨) private BigDecimal loadRough; //装货毛重(单位吨)
private BigDecimal unloadWeight; //卸车净重(单位吨) private BigDecimal loadTare; //装货皮重(单位吨)
private BigDecimal weight; //净重(单位吨) private BigDecimal loadNet; //装货净重(单位吨)
private BigDecimal unloadRough; //卸货毛重(单位吨)
private BigDecimal unloadTare; //卸货皮重(单位吨)
private BigDecimal unloadNet; //卸货净重(单位吨)
private BigDecimal weight; //拉运重量(单位吨)
private Integer status; //状态 private Integer status; //状态
private LocalDateTime payTime; //支付时间 private LocalDateTime payTime; //支付时间
......
...@@ -3,10 +3,14 @@ package com.clx.performance.model; ...@@ -3,10 +3,14 @@ package com.clx.performance.model;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn; import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey; import com.msl.common.model.HasKey;
import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import java.util.Arrays;
import java.util.Optional;
/** /**
* @Author: aiqinguo * @Author: aiqinguo
* @Description: 运单图片 * @Description: 运单图片
...@@ -33,4 +37,21 @@ public class OrderChildImage implements HasKey<Integer> { ...@@ -33,4 +37,21 @@ public class OrderChildImage implements HasKey<Integer> {
return id; return id;
} }
@Getter
@AllArgsConstructor
public enum Type {
LOAD(1, "装货磅单图片"),
UNLOAD(2, "卸货磅单图片")
;
private final Integer code;
private final String msg;
public static Optional<Type> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
}
} }
\ No newline at end of file
package com.clx.performance.service; package com.clx.performance.service;
import com.clx.performance.app.SaveOrderChildParam; import com.clx.performance.app.*;
import com.clx.performance.app.SaveOrderChildVo;
/** /**
...@@ -13,5 +12,19 @@ import com.clx.performance.app.SaveOrderChildVo; ...@@ -13,5 +12,19 @@ import com.clx.performance.app.SaveOrderChildVo;
public interface OrderChildService { public interface OrderChildService {
SaveOrderChildVo saveOrderChild(SaveOrderChildParam param); SaveOrderChildVo saveOrderChild(OrderChildSaveParam param);
void updateGotoSendAddress(OrderChildGoToSendAddressParam param);
void updateArriveSendAddress(OrderChildArriveSendAddressParam param);
void updateGotoReceiveAddress(OrderChildGoToReceiveAddressParam param);
void updateArriveReceiveAddress(OrderChildArriveReceiveAddressParam param);
void updateLoad(OrderChildLoadParam param);
void updateUnload(OrderChildUnloadParam param);
void updateLoadAndUnloadAgain(OrderChildLoadAndUnloadAgainParam param);
void updateConfirm(OrderChildConfirmParam param);
void updateCancel(OrderChildCancelParam param);
} }
package com.clx.performance.service.impl; package com.clx.performance.service.impl;
import com.clx.performance.app.*;
import com.clx.performance.dao.OrderChildImageDao;
import com.clx.performance.enums.OrderChildEnum; 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.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao; import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.enums.OrderChildLogEnum;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildImage;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.service.OrderChildLogService; import com.clx.performance.service.OrderChildLogService;
import com.clx.performance.service.OrderChildService; import com.clx.performance.service.OrderChildService;
import com.msl.common.enums.ResultCodeEnum; import com.msl.common.enums.ResultCodeEnum;
import com.msl.common.exception.ServiceSystemException; import com.msl.common.exception.ServiceSystemException;
import com.msl.common.utils.DateUtils;
import com.msl.user.data.UserSessionData; import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil; import com.msl.user.utils.TokenUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
...@@ -20,6 +23,9 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -20,6 +23,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/** /**
* @Author: aiqinguo * @Author: aiqinguo
...@@ -33,15 +39,17 @@ import java.time.LocalDateTime; ...@@ -33,15 +39,17 @@ import java.time.LocalDateTime;
@AllArgsConstructor @AllArgsConstructor
public class OrderChildServiceImpl implements OrderChildService { public class OrderChildServiceImpl implements OrderChildService {
private final OrderGoodsDao orderGoodsDao;
private final OrderChildDao orderChildDao; private final OrderChildDao orderChildDao;
private final OrderGoodsDao orderGoodsDao; private final OrderChildImageDao orderChildImageDao;
private final OrderChildLogService orderChildLogService; private final OrderChildLogService orderChildLogService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public SaveOrderChildVo saveOrderChild(SaveOrderChildParam param) { public SaveOrderChildVo saveOrderChild(OrderChildSaveParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo(); Long userNo = loginUserInfo.getUserNo();
...@@ -52,6 +60,12 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -52,6 +60,12 @@ public class OrderChildServiceImpl implements OrderChildService {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(param.getOrderGoodsNo()).orElseThrow(ResultCodeEnum.FAIL); OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(param.getOrderGoodsNo()).orElseThrow(ResultCodeEnum.FAIL);
// 状态验证
if (!Objects.equals(orderGoods.getOrderGoodsStatus(), 1)
&& !Objects.equals(orderGoods.getOrderGoodsStatus(), 1)){
throw new ServiceSystemException(ResultCodeEnum.FAIL);
}
// 库存验证 // 库存验证
if (orderGoods.getResidueTransportWeight().compareTo(BigDecimal.ZERO) <= 0) {throw new ServiceSystemException(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);} if (orderGoods.getResidueTransportWeight().compareTo(truckLoad) < 0) {throw new ServiceSystemException(ResultCodeEnum.FAIL);}
...@@ -96,7 +110,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -96,7 +110,7 @@ public class OrderChildServiceImpl implements OrderChildService {
// 更新车辆状态 // 更新车辆状态
// 新增日志 // 新增日志
orderChildLogService.saveOrderChildLog(childNo, 1,"创建运单", orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.CREATED.getCode(), OrderChildLogEnum.Type.CREATED.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName()); 1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
SaveOrderChildVo result = new SaveOrderChildVo(); SaveOrderChildVo result = new SaveOrderChildVo();
...@@ -104,6 +118,324 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -104,6 +118,324 @@ public class OrderChildServiceImpl implements OrderChildService {
return result; return result;
} }
@Override
public void updateGotoSendAddress(OrderChildGoToSendAddressParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo();
String childNo = param.getChildNo();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(ResultCodeEnum.FAIL);
if (!Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode())){
throw new ServiceSystemException(ResultCodeEnum.FAIL);
}
orderChild.setStatus(OrderChildEnum.Status.GO_TO_SEND.getCode());
orderChildDao.updateLoad(orderChild);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_RECEIVE.getCode(), OrderChildLogEnum.Type.ARRIVE_RECEIVE.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
@Override
public void updateArriveSendAddress(OrderChildArriveSendAddressParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo();
String childNo = param.getChildNo();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(ResultCodeEnum.FAIL);
if (!Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode())){
throw new ServiceSystemException(ResultCodeEnum.FAIL);
}
orderChild.setStatus(OrderChildEnum.Status.ARRIVE_RECEIVE.getCode());
orderChildDao.updateLoad(orderChild);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_RECEIVE.getCode(), OrderChildLogEnum.Type.ARRIVE_RECEIVE.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
@Override
public void updateGotoReceiveAddress(OrderChildGoToReceiveAddressParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo();
String childNo = param.getChildNo();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(ResultCodeEnum.FAIL);
if (!Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode())){
throw new ServiceSystemException(ResultCodeEnum.FAIL);
}
orderChild.setStatus(OrderChildEnum.Status.GO_TO_RECEIVE.getCode());
orderChildDao.updateLoad(orderChild);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_RECEIVE.getCode(), OrderChildLogEnum.Type.ARRIVE_RECEIVE.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
@Override
public void updateArriveReceiveAddress(OrderChildArriveReceiveAddressParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo();
String childNo = param.getChildNo();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(ResultCodeEnum.FAIL);
if (!Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode())){
throw new ServiceSystemException(ResultCodeEnum.FAIL);
}
orderChild.setStatus(OrderChildEnum.Status.ARRIVE_RECEIVE.getCode());
orderChildDao.updateLoad(orderChild);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_RECEIVE.getCode(), OrderChildLogEnum.Type.ARRIVE_RECEIVE.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateLoad(OrderChildLoadParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo();
String childNo = param.getChildNo();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(ResultCodeEnum.FAIL);
if (orderChild.getLoadTime() == null) {
updateLoadFirst(param, orderChild);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.LOAD.getCode(), OrderChildLogEnum.Type.LOAD.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
} else {
updateReload(param, orderChild);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.RELOAD.getCode(), OrderChildLogEnum.Type.RELOAD.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
}
private void updateLoadFirst(OrderChildLoadParam param, OrderChild orderChild) {
String childNo = param.getChildNo();
List<OrderChildImage> imageList = new ArrayList<>();
for (String item : param.getLoadImageList()) {
OrderChildImage image = new OrderChildImage();
image.setChildNo(orderChild.getChildNo());
image.setType(OrderChildImage.Type.LOAD.getCode());
image.setImage(item);
}
orderChild.setLoadRough(param.getLoadRough());
orderChild.setLoadTare(param.getLoadTare());
orderChild.setLoadNet(param.getLoadNet());
orderChild.setLoadTime(LocalDateTime.now());
orderChild.setWeight(orderChildWeightCalc(orderChild));
orderChildDao.updateLoad(orderChild);
orderChildImageDao.batchSaveEntity(imageList);
}
private void updateReload(OrderChildLoadParam param, OrderChild orderChild) {
String childNo = param.getChildNo();
List<OrderChildImage> imageList = new ArrayList<>();
for (String item : param.getLoadImageList()) {
OrderChildImage image = new OrderChildImage();
image.setChildNo(orderChild.getChildNo());
image.setType(OrderChildImage.Type.LOAD.getCode());
image.setImage(item);
}
orderChild.setLoadRough(param.getLoadRough());
orderChild.setLoadTare(param.getLoadTare());
orderChild.setLoadNet(param.getLoadNet());
orderChild.setLoadTime(LocalDateTime.now());
orderChild.setWeight(orderChildWeightCalc(orderChild));
orderChildDao.updateLoad(orderChild);
orderChildImageDao.deleteLoad(childNo);
orderChildImageDao.batchSaveEntity(imageList);
}
@Override
public void updateUnload(OrderChildUnloadParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo();
String childNo = param.getChildNo();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(ResultCodeEnum.FAIL);
if (orderChild.getUnloadTime() == null) {
updateUnloadFirst(param, orderChild);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.UNLOAD.getCode(), OrderChildLogEnum.Type.UNLOAD.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
} else {
updateReUnload(param, orderChild);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.REUNLOAD.getCode(), OrderChildLogEnum.Type.REUNLOAD.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
}
private void updateUnloadFirst(OrderChildUnloadParam param, OrderChild orderChild) {
String childNo = param.getChildNo();
List<OrderChildImage> imageList = new ArrayList<>();
for (String item : param.getUnloadImageList()) {
OrderChildImage image = new OrderChildImage();
image.setChildNo(orderChild.getChildNo());
image.setType(OrderChildImage.Type.UNLOAD.getCode());
image.setImage(item);
}
orderChild.setUnloadRough(param.getUnloadRough());
orderChild.setUnloadTare(param.getUnloadTare());
orderChild.setUnloadNet(param.getUnloadNet());
orderChild.setUnloadTime(LocalDateTime.now());
orderChild.setWeight(orderChildWeightCalc(orderChild));
orderChild.setStatus(OrderChildEnum.Status.DRIVER_CONFIRM.getCode());
orderChildDao.updateUnload(orderChild);
orderChildImageDao.batchSaveEntity(imageList);
}
private void updateReUnload(OrderChildUnloadParam param, OrderChild orderChild) {
String childNo = param.getChildNo();
List<OrderChildImage> imageList = new ArrayList<>();
for (String item : param.getUnloadImageList()) {
OrderChildImage image = new OrderChildImage();
image.setChildNo(orderChild.getChildNo());
image.setType(OrderChildImage.Type.UNLOAD.getCode());
image.setImage(item);
}
orderChild.setUnloadRough(param.getUnloadRough());
orderChild.setUnloadTare(param.getUnloadTare());
orderChild.setUnloadNet(param.getUnloadNet());
orderChild.setUnloadTime(LocalDateTime.now());
orderChild.setWeight(orderChildWeightCalc(orderChild));
orderChildDao.updateUnload(orderChild);
orderChildImageDao.deleteUnload(childNo);
orderChildImageDao.batchSaveEntity(imageList);
}
@Override
public void updateLoadAndUnloadAgain(OrderChildLoadAndUnloadAgainParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo();
String childNo = param.getChildNo();
LocalDateTime now = LocalDateTime.now();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(ResultCodeEnum.FAIL);
if (!Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.POUND_AUDIT_FAIL.getCode())){
throw new ServiceSystemException(ResultCodeEnum.FAIL);
}
List<OrderChildImage> imageList = new ArrayList<>();
for (String item : param.getLoadImageList()) {
OrderChildImage image = new OrderChildImage();
image.setChildNo(orderChild.getChildNo());
image.setType(OrderChildImage.Type.LOAD.getCode());
image.setImage(item);
}
for (String item : param.getUnloadImageList()) {
OrderChildImage image = new OrderChildImage();
image.setChildNo(orderChild.getChildNo());
image.setType(OrderChildImage.Type.UNLOAD.getCode());
image.setImage(item);
}
orderChild.setLoadRough(param.getLoadRough());
orderChild.setLoadTare(param.getLoadTare());
orderChild.setLoadNet(param.getLoadNet());
// orderChild.setLoadTime(now);
orderChild.setUnloadRough(param.getUnloadRough());
orderChild.setUnloadTare(param.getUnloadTare());
orderChild.setUnloadNet(param.getUnloadNet());
// orderChild.setUnloadTime(now);
orderChild.setWeight(orderChildWeightCalc(orderChild));
orderChild.setStatus(OrderChildEnum.Status.DRIVER_CONFIRM.getCode());
orderChildDao.updateLoadAndUnload(orderChild);
orderChildImageDao.deleteLoadAndUnload(childNo);
orderChildImageDao.batchSaveEntity(imageList);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.RELOAD_AND_REUNLOAD.getCode(), OrderChildLogEnum.Type.RELOAD_AND_REUNLOAD.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
@Override
public void updateConfirm(OrderChildConfirmParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo();
String childNo = param.getChildNo();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(ResultCodeEnum.FAIL);
if (!Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.DRIVER_CONFIRM.getCode())){
throw new ServiceSystemException(ResultCodeEnum.FAIL);
}
orderChild.setStatus(OrderChildEnum.Status.COMPLETE.getCode());
orderChildDao.updateDriverConfirm(orderChild);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CONFIRM.getCode(), OrderChildLogEnum.Type.DRIVER_CONFIRM.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
@Override
public void updateCancel(OrderChildCancelParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo();
String childNo = param.getChildNo();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(ResultCodeEnum.FAIL);
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.CREATED.getCode())
||Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.GO_TO_SEND.getCode())
||Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_SEND.getCode())
){}
else {
throw new ServiceSystemException(ResultCodeEnum.FAIL);
}
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(ResultCodeEnum.FAIL);
// 取消量验证
if (!cancelCountCheck(userNo)){throw new ServiceSystemException(ResultCodeEnum.FAIL);}
orderChild.setStatus(OrderChildEnum.Status.DRIVER_CANCEL.getCode());
// 取消
orderChildDao.updateCancel(orderChild);
// 返回吨数
cancelReturnWeight(orderChild, orderGoods);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CANCEL.getCode(), OrderChildLogEnum.Type.DRIVER_CANCEL.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
/** /**
* 更新货单数据 * 更新货单数据
*/ */
...@@ -112,4 +444,30 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -112,4 +444,30 @@ public class OrderChildServiceImpl implements OrderChildService {
// orderGoodsDao.updateEntityByKey(orderGoods, weight); // orderGoodsDao.updateEntityByKey(orderGoods, weight);
} }
/**
* 取消检测
*/
private boolean cancelCountCheck(Long userNo){
LocalDateTime startTime = DateUtils.parseDateTime(DateUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd").get() + " 00:00:00").get();
LocalDateTime endTime = DateUtils.parseDateTime(DateUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd").get() + " 00:00:00").get();
long count = orderChildDao.countOfCancel(userNo, startTime, endTime);
return count<10;
}
/**
* 取消返吨数
*/
private void cancelReturnWeight(OrderChild orderChild, OrderGoods orderGoods){
}
/**
* 运单拉运吨数计算
*/
private BigDecimal orderChildWeightCalc(OrderChild orderChild){
return orderChild.getLoadNet();
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论