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

运单流程

上级 e541170a
...@@ -33,6 +33,18 @@ public enum PerformanceResultEnum implements ResultEnum { ...@@ -33,6 +33,18 @@ public enum PerformanceResultEnum implements ResultEnum {
DATA_REPEAT(1106, "数据重复"), DATA_REPEAT(1106, "数据重复"),
ORDER_NO_FOUND(1200, "货单不存在"),
ORDER_WEIGHT_LACK(1200, "剩余数量不足"),
ORDER_CHILD_NO_FOUND(1301, "运单不存在"),
ORDER_CHILD_STATUS_CHANGED(1302, "运单状态已变更,请重新刷新页面"),
ORDER_CHILD_CANCELED(1303, "运单状态已取消"),
ORDER_CHILD_COMPLETE(1304, "运单状态已完成"),
ORDER_CHILD_LOAD_TIMEOUT(1305, "超过装货截止时间"),
ORDER_CHILD_CANCEL_FORBID(1306, "运单无法取消"),
ORDER_CHILD_CANCEL_FORBID_COUNT(1307, "超出最大取消数量"),
; ;
......
...@@ -37,6 +37,7 @@ public class OrderChildVO { ...@@ -37,6 +37,7 @@ public class OrderChildVO {
private String orderGoodsNo; private String orderGoodsNo;
@ApiModelProperty(value = "订单编号", example = "") @ApiModelProperty(value = "订单编号", example = "")
private String orderNo; private String orderNo;
@ApiModelProperty(value = "货物id", example = "") @ApiModelProperty(value = "货物id", example = "")
private Integer goodsId; private Integer goodsId;
@ApiModelProperty(value = "货物名称", example = "") @ApiModelProperty(value = "货物名称", example = "")
...@@ -51,6 +52,9 @@ public class OrderChildVO { ...@@ -51,6 +52,9 @@ public class OrderChildVO {
private Integer receiveAddressId; private Integer receiveAddressId;
@ApiModelProperty(value = "收货地址", example = "") @ApiModelProperty(value = "收货地址", example = "")
private String receiveAddress; private String receiveAddress;
@ApiModelProperty(value = "最晚装货时间", example = "")
private String loadDeadline;
@ApiModelProperty(value = "车辆ID", example = "") @ApiModelProperty(value = "车辆ID", example = "")
private Integer truckId; private Integer truckId;
@ApiModelProperty(value = "车牌号", example = "") @ApiModelProperty(value = "车牌号", example = "")
...@@ -63,6 +67,7 @@ public class OrderChildVO { ...@@ -63,6 +67,7 @@ public class OrderChildVO {
private String driverName; private String driverName;
@ApiModelProperty(value = "司机手机号", example = "") @ApiModelProperty(value = "司机手机号", example = "")
private String driverMobile; private String driverMobile;
@ApiModelProperty(value = "装货毛重(单位吨)", example = "") @ApiModelProperty(value = "装货毛重(单位吨)", example = "")
private BigDecimal loadRough; private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重(单位吨)", example = "") @ApiModelProperty(value = "装货皮重(单位吨)", example = "")
...@@ -77,6 +82,7 @@ public class OrderChildVO { ...@@ -77,6 +82,7 @@ public class OrderChildVO {
private BigDecimal unloadNet; private BigDecimal unloadNet;
@ApiModelProperty(value = "拉运重量(单位吨)", example = "") @ApiModelProperty(value = "拉运重量(单位吨)", example = "")
private BigDecimal weight; private BigDecimal weight;
@ApiModelProperty(value = "磅单审核状态", example = "") @ApiModelProperty(value = "磅单审核状态", example = "")
private Integer poundStatus; private Integer poundStatus;
@ApiModelProperty(value = "状态", example = "") @ApiModelProperty(value = "状态", example = "")
......
...@@ -65,7 +65,7 @@ public class AppGoodsOrderController { ...@@ -65,7 +65,7 @@ public class AppGoodsOrderController {
@GetMapping("/getOrderGoodsInfo") @GetMapping("/getOrderGoodsInfo")
@UnitCovert(param = false) @UnitCovert(param = false)
public Result<OrderGoodsVO> getOrderGoodsInfo(@RequestParam String orderGoodsNo) { public Result<OrderGoodsVO> getOrderGoodsInfo(@RequestParam String orderGoodsNo) {
return Result.ok(orderGoodsService.getOrderGoodsInfoByOrderGoodsNoForAPP(orderGoodsNo)); return Result.ok(orderGoodsService.getOrderGoodsInfoByOrderGoodsNo(orderGoodsNo));
} }
} }
...@@ -2,6 +2,7 @@ package com.clx.performance.controller.app; ...@@ -2,6 +2,7 @@ package com.clx.performance.controller.app;
import com.clx.performance.param.app.*; import com.clx.performance.param.app.*;
import com.clx.performance.service.OrderChildService; import com.clx.performance.service.OrderChildService;
import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.app.SaveOrderChildVO; import com.clx.performance.vo.app.SaveOrderChildVO;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -71,7 +72,7 @@ public class DriverOrderChildController { ...@@ -71,7 +72,7 @@ public class DriverOrderChildController {
return Result.ok(); return Result.ok();
} }
@ApiOperation(value = "装车(首次、再次)", notes = "<br>By:艾庆国") @ApiOperation(value = "装车(首次、重复)", notes = "<br>By:艾庆国")
@PostMapping("/updateLoad") @PostMapping("/updateLoad")
public Result<Void> updateLoad(@RequestBody @Validated OrderChildLoadParam param) { public Result<Void> updateLoad(@RequestBody @Validated OrderChildLoadParam param) {
orderChildService.updateLoad(param); orderChildService.updateLoad(param);
...@@ -79,7 +80,7 @@ public class DriverOrderChildController { ...@@ -79,7 +80,7 @@ public class DriverOrderChildController {
return Result.ok(); return Result.ok();
} }
@ApiOperation(value = "卸车(首次、再次)", notes = "<br>By:艾庆国") @ApiOperation(value = "卸车(首次、重复)", notes = "<br>By:艾庆国")
@PostMapping("/updateUnload") @PostMapping("/updateUnload")
public Result<Void> updateUnload(@RequestBody @Validated OrderChildUnloadParam param) { public Result<Void> updateUnload(@RequestBody @Validated OrderChildUnloadParam param) {
orderChildService.updateUnload(param); orderChildService.updateUnload(param);
...@@ -95,19 +96,19 @@ public class DriverOrderChildController { ...@@ -95,19 +96,19 @@ public class DriverOrderChildController {
return Result.ok(); return Result.ok();
} }
@ApiOperation(value = "确认交货", notes = "<br>By:艾庆国") @ApiOperation(value = "取消运单", notes = "<br>By:艾庆国")
@PostMapping("/updateConfirm") @PostMapping("/updateCancel")
public Result<Void> updateConfirm(@RequestBody @Validated OrderChildConfirmParam param) { public Result<Void> updateDriverCancel(@RequestBody @Validated OrderChildCancelParam param) {
orderChildService.updateConfirm(param); orderChildService.updateDriverCancel(param);
return Result.ok(); return Result.ok();
} }
@ApiOperation(value = "取消运单", notes = "<br>By:艾庆国") @ApiOperation(value = "查询运单详情", notes = "<br>By:艾庆国")
@PostMapping("/updateCancel") @PostMapping("/getOrderChildInfo")
public Result<Void> updateCancel(@RequestBody @Validated OrderChildCancelParam param) { public Result<OrderChildVO> getOrderChildInfo(String childNo) {
orderChildService.updateCancel(param);
return Result.ok(); return Result.ok(orderChildService.getOrderChildInfo(childNo));
} }
} }
...@@ -253,16 +253,15 @@ public class GoodsOrderController { ...@@ -253,16 +253,15 @@ public class GoodsOrderController {
@GetMapping("/getOrderGoodsInfo") @GetMapping("/getOrderGoodsInfo")
@UnitCovert(param = false) @UnitCovert(param = false)
public Result<OrderGoodsVO> getOrderGoodsInfo(@RequestParam String orderGoodsNo) { public Result<OrderGoodsVO> getOrderGoodsInfo(@RequestParam String orderGoodsNo) {
return Result.ok(orderGoodsService.getOrderGoodsInfoByOrderGoodsNoForPC(orderGoodsNo)); return Result.ok(orderGoodsService.getOrderGoodsInfoByOrderGoodsNo(orderGoodsNo));
} }
@ApiOperation(value = "查看货单列表", notes = "<br>By:胡宇帆") @ApiOperation(value = "查看货单列表", notes = "<br>By:胡宇帆")
@PostMapping("/pageOrderGoodsList") @PostMapping("/pageOrderGoodsList")
@UnitCovert(param = false) @UnitCovert(param = false)
public Result<PageData<OrderGoodsVO>> pageOrderGoodsList(@RequestBody PageOrderGoodsListParam param) { public Result<PageData<OrderGoodsVO>> pageOrderGoodsList(@RequestBody @Validated PageOrderGoodsListParam param) {
if (StringUtils.isNotBlank(param.getOrderGoodsNo())) { if (StringUtils.isNotBlank(param.getOrderGoodsNo())) {
param.setOrderGoodsType(param.getOrderGoodsNo().substring(0, 2)); param.setOrderGoodsType(param.getOrderGoodsNo().substring(0, 2));
param.setOrderNo(param.getOrderGoodsNo().substring(2));
} }
IPage<OrderGoodsVO> page = orderGoodsService.pageOrderGoodsList(param); IPage<OrderGoodsVO> page = orderGoodsService.pageOrderGoodsList(param);
return Result.page(page.getRecords(), page.getTotal(), page.getPages()); return Result.page(page.getRecords(), page.getTotal(), page.getPages());
......
...@@ -20,10 +20,11 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int ...@@ -20,10 +20,11 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
boolean updateCancel(OrderChild item); boolean updateCancel(OrderChild item);
boolean updateLoad(OrderChild item); boolean updateLoad(OrderChild item);
boolean updateUnload(OrderChild item); boolean updateUnload(OrderChild item);
boolean updateLoadAndUnload(OrderChild item); boolean updateLoadAndUnload(OrderChild item);
boolean updateDriverConfirm(OrderChild item); boolean updateDriverConfirm(OrderChild item);
boolean updateStatus(OrderChild item);
Optional<OrderChild> getByChildNo(String childNo); Optional<OrderChild> getByChildNo(String childNo);
......
...@@ -21,4 +21,6 @@ public interface OrderChildImageDao extends BaseDao<OrderChildImageMapper, Order ...@@ -21,4 +21,6 @@ public interface OrderChildImageDao extends BaseDao<OrderChildImageMapper, Order
Optional<List<OrderChildImage>> getImages(String childNo, Integer type); Optional<List<OrderChildImage>> getImages(String childNo, Integer type);
Optional<List<OrderChildImage>> listLoadAndUnload(String childNo);
} }
...@@ -18,10 +18,7 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int ...@@ -18,10 +18,7 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
Optional<OrderGoods> getByOrderGoodsNo(String orderGoodsNo); Optional<OrderGoods> getByOrderGoodsNo(String orderGoodsNo);
Optional<OrderGoods> getOrderGoodsInfoByOrderGoodsNoForPC(String orderGoodsNo); Optional<OrderGoods> getOrderGoodsInfoByOrderGoodsNo(String orderGoodsNo);
Optional<OrderGoods> getOrderGoodsInfoByOrderGoodsNoForAPP(String orderGoodsNo);
IPage<OrderGoodsVO> pageOrderGoodsList(PageOrderGoodsListParam param); IPage<OrderGoodsVO> pageOrderGoodsList(PageOrderGoodsListParam param);
} }
...@@ -32,17 +32,48 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -32,17 +32,48 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
@Override @Override
public boolean updateLoad(OrderChild item) { public boolean updateLoad(OrderChild item) {
return false; return update(lUdWrapper()
.eq(OrderChild::getChildNo, item.getChildNo())
.set(OrderChild::getLoadRough, item.getLoadRough())
.set(OrderChild::getLoadTare, item.getLoadTare())
.set(OrderChild::getLoadNet, item.getLoadNet())
.set(OrderChild::getLoadTime, item.getLoadTime())
.set(OrderChild::getWeight, item.getWeight())
.set(OrderChild::getStatus, item.getStatus())
);
} }
@Override @Override
public boolean updateUnload(OrderChild item) { public boolean updateUnload(OrderChild item) {
return false; return update(lUdWrapper()
.eq(OrderChild::getChildNo, item.getChildNo())
.set(OrderChild::getUnloadRough, item.getUnloadRough())
.set(OrderChild::getUnloadTare, item.getUnloadTare())
.set(OrderChild::getUnloadNet, item.getUnloadNet())
.set(OrderChild::getUnloadTime, item.getUnloadTime())
.set(OrderChild::getWeight, item.getWeight())
.set(OrderChild::getStatus, item.getStatus())
);
} }
@Override @Override
public boolean updateLoadAndUnload(OrderChild item) { public boolean updateLoadAndUnload(OrderChild item) {
return false; return update(lUdWrapper()
.eq(OrderChild::getChildNo, item.getChildNo())
.set(OrderChild::getLoadRough, item.getLoadRough())
.set(OrderChild::getLoadTare, item.getLoadTare())
.set(OrderChild::getLoadNet, item.getLoadNet())
.set(OrderChild::getUnloadRough, item.getUnloadRough())
.set(OrderChild::getUnloadTare, item.getUnloadTare())
.set(OrderChild::getUnloadNet, item.getUnloadNet())
.set(OrderChild::getWeight, item.getWeight())
.set(OrderChild::getPoundStatus, item.getPoundStatus())
);
} }
@Override @Override
...@@ -50,6 +81,14 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -50,6 +81,14 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
return false; return false;
} }
@Override
public boolean updateStatus(OrderChild item) {
return update(lUdWrapper()
.eq(OrderChild::getChildNo, item.getChildNo())
.set(OrderChild::getStatus, item.getStatus())
);
}
@Override @Override
public Optional<OrderChild> getByChildNo(String childNo) { public Optional<OrderChild> getByChildNo(String childNo) {
return Optional.of(childNo) return Optional.of(childNo)
......
...@@ -44,6 +44,15 @@ public class OrderChildImageImpl extends BaseDaoImpl<OrderChildImageMapper, Orde ...@@ -44,6 +44,15 @@ public class OrderChildImageImpl extends BaseDaoImpl<OrderChildImageMapper, Orde
} }
@Override
public Optional<List<OrderChildImage>> listLoadAndUnload(String childNo) {
return Optional.of(childNo)
.map(item -> lQrWrapper()
.eq(OrderChildImage::getChildNo, childNo)
)
.map(super::list);
}
@Override @Override
public Optional<List<OrderChildImage>> getImages(String childNo, Integer type) { public Optional<List<OrderChildImage>> getImages(String childNo, Integer type) {
return Optional.ofEmpty(list(lQrWrapper() return Optional.ofEmpty(list(lQrWrapper()
......
...@@ -37,21 +37,10 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods, ...@@ -37,21 +37,10 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
} }
@Override @Override
public Optional<OrderGoods> getOrderGoodsInfoByOrderGoodsNoForPC(String orderGoodsNo) { public Optional<OrderGoods> getOrderGoodsInfoByOrderGoodsNo(String orderGoodsNo) {
return Optional.of(orderGoodsNo) return Optional.of(orderGoodsNo)
.map(item -> lQrWrapper() .map(item -> lQrWrapper()
.eq(OrderGoods::getOrderGoodsType, item.substring(0,2)) .eq(OrderGoods::getOrderGoodsNo, item)
.eq(OrderGoods::getOrderGoodsNo, item.substring(2))
)
.map(super::getOne);
}
@Override
public Optional<OrderGoods> getOrderGoodsInfoByOrderGoodsNoForAPP(String orderGoodsNo) {
return Optional.of(orderGoodsNo)
.map(item -> lQrWrapper()
.eq(OrderGoods::getOrderGoodsType, item.substring(0,2))
.eq(OrderGoods::getOrderGoodsNo, item.substring(2))
) )
.map(super::getOne); .map(super::getOne);
} }
......
package com.clx.performance.extranal.user;
import com.clx.user.vo.feign.DriverTruckInfoFeignVo;
import com.msl.common.base.Optional;
public interface DriverService {
Optional<DriverTruckInfoFeignVo> getUserDetailInfo(Long driverUserNo, Integer truckId);
}
package com.clx.performance.extranal.user.impl;
import com.clx.performance.extranal.user.DriverService;
import com.clx.user.feign.DriverFeign;
import com.clx.user.vo.feign.DriverTruckInfoFeignVo;
import com.msl.common.base.Optional;
import com.msl.common.result.Result;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Slf4j
@Service
@AllArgsConstructor
public class DriverServiceImpl implements DriverService {
private final DriverFeign driverFeign;
@Override
public Optional<DriverTruckInfoFeignVo> getUserDetailInfo(Long driverUserNo, Integer truckId) {
Optional<DriverTruckInfoFeignVo> map = Optional.ofNullable(driverFeign.getDriverTruckInfo(driverUserNo, truckId))
.filter(Result::succeed)
.map(Result::getData);
return map;
}
}
...@@ -41,6 +41,8 @@ public class OrderChild implements HasKey<Integer> { ...@@ -41,6 +41,8 @@ public class OrderChild implements HasKey<Integer> {
private String sendAddress; //发货地址 private String sendAddress; //发货地址
private Integer receiveAddressId; //收货地址id private Integer receiveAddressId; //收货地址id
private String receiveAddress; //收货地址 private String receiveAddress; //收货地址
private LocalDateTime loadDeadline; //最晚装货时间
private Integer truckId; //车辆ID private Integer truckId; //车辆ID
private String truckNo; //车牌号 private String truckNo; //车牌号
private BigDecimal truckLoad; //载重(单位吨) private BigDecimal truckLoad; //载重(单位吨)
......
...@@ -4,4 +4,5 @@ public interface OrderChildLogService { ...@@ -4,4 +4,5 @@ public interface OrderChildLogService {
void saveOrderChildLog(String childNo, Integer type, String remark, void saveOrderChildLog(String childNo, Integer type, String remark,
Integer createType,Long createBy, String createName); Integer createType,Long createBy, String createName);
void saveDriverOrderChildLog(String childNo, Integer type, String remark, Long createBy, String createName);
} }
...@@ -13,4 +13,7 @@ import java.util.List; ...@@ -13,4 +13,7 @@ import java.util.List;
public interface OrderChildPoundLogService { public interface OrderChildPoundLogService {
List<OrderChildPoundLogVO> getPoundLogList(String childNo); List<OrderChildPoundLogVO> getPoundLogList(String childNo);
void saveDriverOrderChildLog(String childNo, Integer status, String remark, Long createBy, String createName);
} }
...@@ -3,6 +3,7 @@ package com.clx.performance.service; ...@@ -3,6 +3,7 @@ package com.clx.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.app.*; import com.clx.performance.param.app.*;
import com.clx.performance.param.pc.PagePoundAuditParam; import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.app.SaveOrderChildVO; import com.clx.performance.vo.app.SaveOrderChildVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO; import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
...@@ -27,9 +28,9 @@ public interface OrderChildService { ...@@ -27,9 +28,9 @@ public interface OrderChildService {
void updateUnload(OrderChildUnloadParam param); void updateUnload(OrderChildUnloadParam param);
void updateLoadAndUnloadAgain(OrderChildLoadAndUnloadAgainParam param); void updateLoadAndUnloadAgain(OrderChildLoadAndUnloadAgainParam param);
void updateConfirm(OrderChildConfirmParam param); void updateDriverCancel(OrderChildCancelParam param);
void updateCancel(OrderChildCancelParam param); OrderChildVO getOrderChildInfo(String childNo);
IPage<PageOrderChildPoundAuditVO> pagePoundAuditList(PagePoundAuditParam param); IPage<PageOrderChildPoundAuditVO> pagePoundAuditList(PagePoundAuditParam param);
......
...@@ -13,9 +13,7 @@ import com.msl.common.result.Result; ...@@ -13,9 +13,7 @@ import com.msl.common.result.Result;
* Time 16:45 * Time 16:45
*/ */
public interface OrderGoodsService { public interface OrderGoodsService {
OrderGoodsVO getOrderGoodsInfoByOrderGoodsNoForPC(String orderGoodsNo); OrderGoodsVO getOrderGoodsInfoByOrderGoodsNo(String orderGoodsNo);
OrderGoodsVO getOrderGoodsInfoByOrderGoodsNoForAPP(String orderGoodsNo);
IPage<OrderGoodsVO> pageOrderGoodsList(PageOrderGoodsListParam param); IPage<OrderGoodsVO> pageOrderGoodsList(PageOrderGoodsListParam param);
} }
package com.clx.performance.service.impl; package com.clx.performance.service.impl;
import com.clx.performance.dao.OrderChildLogDao; import com.clx.performance.dao.OrderChildLogDao;
import com.clx.performance.enums.OrderChildLogEnum;
import com.clx.performance.model.OrderChildLog; import com.clx.performance.model.OrderChildLog;
import com.clx.performance.service.OrderChildLogService; import com.clx.performance.service.OrderChildLogService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -28,4 +29,9 @@ public class OrderChildLogServiceImpl implements OrderChildLogService { ...@@ -28,4 +29,9 @@ public class OrderChildLogServiceImpl implements OrderChildLogService {
orderChildLogDao.saveEntity(orderChildLog); orderChildLogDao.saveEntity(orderChildLog);
} }
@Override
public void saveDriverOrderChildLog(String childNo, Integer type, String remark, Long createBy, String createName) {
saveOrderChildLog(childNo, type, remark, OrderChildLogEnum.CreateType.DRIVER.getCode(), createBy, createName);
}
} }
...@@ -31,4 +31,17 @@ public class OrderChildPoundLogServiceImpl implements OrderChildPoundLogService ...@@ -31,4 +31,17 @@ public class OrderChildPoundLogServiceImpl implements OrderChildPoundLogService
List<OrderChildPoundLog> poundLogList = orderChildPoundLogDao.getPoundLogList(childNo); List<OrderChildPoundLog> poundLogList = orderChildPoundLogDao.getPoundLogList(childNo);
return orderChildPoundLogStruct.convert(poundLogList); return orderChildPoundLogStruct.convert(poundLogList);
} }
@Override
public void saveDriverOrderChildLog(String childNo, Integer status, String remark, Long createBy, String createName) {
OrderChildPoundLog poundLog = new OrderChildPoundLog();
poundLog.setChildNo(childNo);
poundLog.setStatus(status);
poundLog.setRemark(remark);
poundLog.setCreateBy(createBy);
poundLog.setCreateName(createName);
orderChildPoundLogDao.saveEntity(poundLog);
}
} }
...@@ -3,18 +3,28 @@ package com.clx.performance.service.impl; ...@@ -3,18 +3,28 @@ package com.clx.performance.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderChildImageDao; import com.clx.performance.dao.OrderChildImageDao;
import com.clx.performance.dao.OrderChildPoundAuditDao;
import com.clx.performance.dao.OrderGoodsDao; import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.enums.OrderChildEnum; import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.OrderChildLogEnum; import com.clx.performance.enums.OrderChildLogEnum;
import com.clx.performance.enums.OrderChildPoundAuditEnum;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildImage; import com.clx.performance.model.OrderChildImage;
import com.clx.performance.model.OrderChildPoundAudit;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.app.*; import com.clx.performance.param.app.*;
import com.clx.performance.param.pc.PagePoundAuditParam; import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.service.OrderChildLogService; import com.clx.performance.service.OrderChildLogService;
import com.clx.performance.service.OrderChildPoundLogService;
import com.clx.performance.service.OrderChildService; import com.clx.performance.service.OrderChildService;
import com.clx.performance.struct.OrderChildPoundImageStruct;
import com.clx.performance.struct.OrderChildStruct;
import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.app.SaveOrderChildVO; import com.clx.performance.vo.app.SaveOrderChildVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO; import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import com.clx.user.vo.feign.DriverTruckInfoFeignVo;
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.common.utils.DateUtils;
...@@ -30,6 +40,7 @@ import java.time.LocalDateTime; ...@@ -30,6 +40,7 @@ import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* @Author: aiqinguo * @Author: aiqinguo
...@@ -48,19 +59,27 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -48,19 +59,27 @@ public class OrderChildServiceImpl implements OrderChildService {
private final OrderChildDao orderChildDao; private final OrderChildDao orderChildDao;
private final OrderChildImageDao orderChildImageDao; private final OrderChildImageDao orderChildImageDao;
private final OrderChildPoundAuditDao orderChildPoundAuditDao;
private final OrderChildLogService orderChildLogService; private final OrderChildLogService orderChildLogService;
private final OrderChildPoundLogService orderChildPoundLogService;
private final DriverService driverService;
private final OrderChildStruct orderChildStruct;
private final OrderChildPoundImageStruct orderChildPoundImageStruct;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public SaveOrderChildVO saveOrderChild(OrderChildSaveParam param) { public SaveOrderChildVO saveOrderChild(OrderChildSaveParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo(); Long userNo = loginUserInfo.getUserNo();
String childNo = "1"; String childNo = childNoGenerate();
BigDecimal truckLoad = BigDecimal.valueOf(1L); // 查询司机车辆信息
DriverTruckInfoFeignVo driverTruckInfo = driverService.getUserDetailInfo(param.getDriverUserNo(), param.getTruckId()).orElseThrow(ResultCodeEnum.FAIL);
BigDecimal truckLoad = driverTruckInfo.getLoad();
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);
...@@ -71,8 +90,8 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -71,8 +90,8 @@ public class OrderChildServiceImpl implements OrderChildService {
} }
// 库存验证 // 库存验证
if (orderGoods.getResidueTransportWeight().compareTo(BigDecimal.ZERO) <= 0) {throw new ServiceSystemException(ResultCodeEnum.FAIL);} if (orderGoods.getResidueTransportWeight().compareTo(BigDecimal.ZERO) <= 0) {throw new ServiceSystemException(PerformanceResultEnum.ORDER_WEIGHT_LACK);}
if (orderGoods.getResidueTransportWeight().compareTo(truckLoad) < 0) {throw new ServiceSystemException(ResultCodeEnum.FAIL);} if (orderGoods.getResidueTransportWeight().compareTo(truckLoad) < 0) {throw new ServiceSystemException(PerformanceResultEnum.ORDER_WEIGHT_LACK);}
OrderChild orderChild = new OrderChild(); OrderChild orderChild = new OrderChild();
orderChild.setChildNo(childNo); orderChild.setChildNo(childNo);
...@@ -82,7 +101,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -82,7 +101,7 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setOrderGoodsNo(orderGoods.getOrderGoodsNo()); orderChild.setOrderGoodsNo(orderGoods.getOrderGoodsNo());
orderChild.setFreightPrice(orderGoods.getPendingOrderFreight()); orderChild.setFreightPrice(orderGoods.getPendingOrderFreight());
orderChild.setGoodsId(0); orderChild.setGoodsId(orderGoods.getGoodsId());
orderChild.setGoodsName(orderGoods.getGoodsName()); orderChild.setGoodsName(orderGoods.getGoodsName());
orderChild.setSendAddressId(orderGoods.getSendAddressId()); orderChild.setSendAddressId(orderGoods.getSendAddressId());
...@@ -90,12 +109,14 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -90,12 +109,14 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setReceiveAddressId(orderGoods.getReceiveAddressId()); orderChild.setReceiveAddressId(orderGoods.getReceiveAddressId());
orderChild.setReceiveAddress(orderGoods.getReceiveAddressShorter()); orderChild.setReceiveAddress(orderGoods.getReceiveAddressShorter());
orderChild.setDriverUserNo(param.getDriverUserNo()); orderChild.setLoadDeadline(orderGoods.getLastArriveSendTime());
orderChild.setDriverName("");
orderChild.setDriverMobile(""); orderChild.setDriverUserNo(driverTruckInfo.getUserNo());
orderChild.setDriverName(driverTruckInfo.getName());
orderChild.setDriverMobile(driverTruckInfo.getMobile());
orderChild.setTruckId(param.getTruckId()); orderChild.setTruckId(driverTruckInfo.getTruckId());
orderChild.setTruckNo(""); orderChild.setTruckNo(driverTruckInfo.getTruckNo());
orderChild.setTruckLoad(truckLoad); orderChild.setTruckLoad(truckLoad);
orderChild.setWeight(orderChild.getTruckLoad()); orderChild.setWeight(orderChild.getTruckLoad());
...@@ -110,12 +131,14 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -110,12 +131,14 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChildDao.saveEntity(orderChild); orderChildDao.saveEntity(orderChild);
// 更新司机状态 // 更新司机状态
lockDriver(orderChild.getDriverUserNo());
// 更新车辆状态 // 更新车辆状态
lockTruck(orderChild.getTruckId());
// 新增日志 // 新增日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.CREATED.getCode(), OrderChildLogEnum.Type.CREATED.getMsg(), orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.CREATED.getCode(), OrderChildLogEnum.Type.CREATED.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName()); loginUserInfo.getUserNo(), loginUserInfo.getUserName());
SaveOrderChildVO result = new SaveOrderChildVO(); SaveOrderChildVO result = new SaveOrderChildVO();
result.setChildNo(childNo); result.setChildNo(childNo);
...@@ -123,83 +146,108 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -123,83 +146,108 @@ public class OrderChildServiceImpl implements OrderChildService {
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateGotoSendAddress(OrderChildGoToSendAddressParam param) { public void updateGotoSendAddress(OrderChildGoToSendAddressParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo(); Long userNo = loginUserInfo.getUserNo();
String childNo = param.getChildNo(); String childNo = param.getChildNo();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(ResultCodeEnum.FAIL); OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
if (!Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode())){ if (!Objects.equals(orderChild.getUserNo(), userNo) && !Objects.equals(orderChild.getDriverUserNo(), userNo)){
throw new ServiceSystemException(ResultCodeEnum.FAIL); throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
}
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.GO_TO_SEND.getCode())){return;}
if (!Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.CREATED.getCode())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_STATUS_CHANGED);
} }
orderChild.setStatus(OrderChildEnum.Status.GO_TO_SEND.getCode()); orderChild.setStatus(OrderChildEnum.Status.GO_TO_SEND.getCode());
orderChildDao.updateLoad(orderChild); orderChildDao.updateStatus(orderChild);
// 日志 // 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_RECEIVE.getCode(), OrderChildLogEnum.Type.ARRIVE_RECEIVE.getMsg(), orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.GO_TO_SEND.getCode(), OrderChildLogEnum.Type.GO_TO_SEND.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName()); loginUserInfo.getUserNo(), loginUserInfo.getUserName());
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateArriveSendAddress(OrderChildArriveSendAddressParam param) { public void updateArriveSendAddress(OrderChildArriveSendAddressParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo(); Long userNo = loginUserInfo.getUserNo();
String childNo = param.getChildNo(); String childNo = param.getChildNo();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(ResultCodeEnum.FAIL); OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
if (!Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode())){ if (!Objects.equals(orderChild.getUserNo(), userNo) && !Objects.equals(orderChild.getDriverUserNo(), userNo)){
throw new ServiceSystemException(ResultCodeEnum.FAIL); throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
}
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode())){return;}
if (!Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.GO_TO_SEND.getCode())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_STATUS_CHANGED);
}
// 装货超时
if (orderChild.getLoadTime().isBefore(LocalDateTime.now())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_LOAD_TIMEOUT);
} }
orderChild.setStatus(OrderChildEnum.Status.ARRIVE_RECEIVE.getCode()); orderChild.setStatus(OrderChildEnum.Status.ARRIVE_RECEIVE.getCode());
orderChildDao.updateLoad(orderChild); orderChildDao.updateStatus(orderChild);
// 日志 // 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_RECEIVE.getCode(), OrderChildLogEnum.Type.ARRIVE_RECEIVE.getMsg(), orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_SEND.getCode(), OrderChildLogEnum.Type.ARRIVE_SEND.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName()); loginUserInfo.getUserNo(), loginUserInfo.getUserName());
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateGotoReceiveAddress(OrderChildGoToReceiveAddressParam param) { public void updateGotoReceiveAddress(OrderChildGoToReceiveAddressParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo(); Long userNo = loginUserInfo.getUserNo();
String childNo = param.getChildNo(); String childNo = param.getChildNo();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(ResultCodeEnum.FAIL); OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
if (!Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode())){ if (!Objects.equals(orderChild.getUserNo(), userNo) && !Objects.equals(orderChild.getDriverUserNo(), userNo)){
throw new ServiceSystemException(ResultCodeEnum.FAIL); throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
}
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.GO_TO_RECEIVE.getCode())){return;}
if (!Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.LOAD.getCode())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_STATUS_CHANGED);
} }
orderChild.setStatus(OrderChildEnum.Status.GO_TO_RECEIVE.getCode()); orderChild.setStatus(OrderChildEnum.Status.GO_TO_RECEIVE.getCode());
orderChildDao.updateLoad(orderChild); orderChildDao.updateStatus(orderChild);
// 日志 // 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_RECEIVE.getCode(), OrderChildLogEnum.Type.ARRIVE_RECEIVE.getMsg(), orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.GO_TO_RECEIVE.getCode(), OrderChildLogEnum.Type.GO_TO_RECEIVE.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName()); loginUserInfo.getUserNo(), loginUserInfo.getUserName());
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateArriveReceiveAddress(OrderChildArriveReceiveAddressParam param) { public void updateArriveReceiveAddress(OrderChildArriveReceiveAddressParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo(); Long userNo = loginUserInfo.getUserNo();
String childNo = param.getChildNo(); String childNo = param.getChildNo();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(ResultCodeEnum.FAIL); OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
if (!Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode())){ if (!Objects.equals(orderChild.getUserNo(), userNo) && !Objects.equals(orderChild.getDriverUserNo(), userNo)){
throw new ServiceSystemException(ResultCodeEnum.FAIL); throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
}
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode())){return;}
if (!Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.GO_TO_RECEIVE.getCode())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_STATUS_CHANGED);
} }
orderChild.setStatus(OrderChildEnum.Status.ARRIVE_RECEIVE.getCode()); orderChild.setStatus(OrderChildEnum.Status.ARRIVE_RECEIVE.getCode());
orderChildDao.updateLoad(orderChild); orderChildDao.updateStatus(orderChild);
// 日志 // 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_RECEIVE.getCode(), OrderChildLogEnum.Type.ARRIVE_RECEIVE.getMsg(), orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_RECEIVE.getCode(), OrderChildLogEnum.Type.ARRIVE_RECEIVE.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName()); loginUserInfo.getUserNo(), loginUserInfo.getUserName());
} }
@Override @Override
...@@ -210,23 +258,36 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -210,23 +258,36 @@ public class OrderChildServiceImpl implements OrderChildService {
String childNo = param.getChildNo(); String childNo = param.getChildNo();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(ResultCodeEnum.FAIL); OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
if (orderChild.getLoadTime() == null) { if (!Objects.equals(orderChild.getUserNo(), userNo) && !Objects.equals(orderChild.getDriverUserNo(), userNo)){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
}
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.DRIVER_CANCEL.getCode())
|| Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.PLATFORM_CANCEL.getCode())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCELED);
}
if (orderChild.getLoadTime() == null && Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_SEND.getCode())) {
updateLoadFirst(param, orderChild); updateLoadFirst(param, orderChild);
// 日志 // 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.LOAD.getCode(), OrderChildLogEnum.Type.LOAD.getMsg(), orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.LOAD.getCode(), OrderChildLogEnum.Type.LOAD.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName()); loginUserInfo.getUserNo(), loginUserInfo.getUserName());
} else { } else {
updateReload(param, orderChild); updateReload(param, orderChild);
// 日志 // 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.RELOAD.getCode(), OrderChildLogEnum.Type.RELOAD.getMsg(), orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.RELOAD.getCode(), OrderChildLogEnum.Type.RELOAD.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName()); loginUserInfo.getUserNo(), loginUserInfo.getUserName());
} }
} }
private void updateLoadFirst(OrderChildLoadParam param, OrderChild orderChild) { private void updateLoadFirst(OrderChildLoadParam param, OrderChild orderChild) {
String childNo = param.getChildNo(); String childNo = param.getChildNo();
// 装货超时
if (orderChild.getLoadTime().isBefore(LocalDateTime.now())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_LOAD_TIMEOUT);
}
List<OrderChildImage> imageList = new ArrayList<>(); List<OrderChildImage> imageList = new ArrayList<>();
for (String item : param.getLoadImageList()) { for (String item : param.getLoadImageList()) {
OrderChildImage image = new OrderChildImage(); OrderChildImage image = new OrderChildImage();
...@@ -240,6 +301,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -240,6 +301,7 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setLoadNet(param.getLoadNet()); orderChild.setLoadNet(param.getLoadNet());
orderChild.setLoadTime(LocalDateTime.now()); orderChild.setLoadTime(LocalDateTime.now());
orderChild.setWeight(orderChildWeightCalc(orderChild)); orderChild.setWeight(orderChildWeightCalc(orderChild));
orderChild.setStatus(OrderChildEnum.Status.LOAD.getCode());
orderChildDao.updateLoad(orderChild); orderChildDao.updateLoad(orderChild);
orderChildImageDao.batchSaveEntity(imageList); orderChildImageDao.batchSaveEntity(imageList);
...@@ -269,24 +331,36 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -269,24 +331,36 @@ public class OrderChildServiceImpl implements OrderChildService {
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateUnload(OrderChildUnloadParam param) { public void updateUnload(OrderChildUnloadParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo(); Long userNo = loginUserInfo.getUserNo();
String childNo = param.getChildNo(); String childNo = param.getChildNo();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(ResultCodeEnum.FAIL); OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
if (orderChild.getUnloadTime() == null) { if (!Objects.equals(orderChild.getUserNo(), userNo) && !Objects.equals(orderChild.getDriverUserNo(), userNo)){
updateUnloadFirst(param, orderChild); throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
}
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.DRIVER_CANCEL.getCode())
|| Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.PLATFORM_CANCEL.getCode())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCELED);
}
if (orderChild.getUnloadTime() == null && Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode())) {
updateUnloadFirst(param, orderChild);
// 日志 // 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.UNLOAD.getCode(), OrderChildLogEnum.Type.UNLOAD.getMsg(), orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.UNLOAD.getCode(), OrderChildLogEnum.Type.UNLOAD.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName()); loginUserInfo.getUserNo(), loginUserInfo.getUserName());
orderChildPoundLogService.saveDriverOrderChildLog(childNo, OrderChildPoundAuditEnum.Status.AUDIT.getCode(), "",
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
} else { } else {
updateReUnload(param, orderChild); updateReUnload(param, orderChild);
// 日志 // 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.REUNLOAD.getCode(), OrderChildLogEnum.Type.REUNLOAD.getMsg(), orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.REUNLOAD.getCode(), OrderChildLogEnum.Type.REUNLOAD.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName()); loginUserInfo.getUserNo(), loginUserInfo.getUserName());
orderChildPoundLogService.saveDriverOrderChildLog(childNo, OrderChildPoundAuditEnum.Status.AUDIT.getCode(), "",
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
} }
} }
...@@ -306,12 +380,21 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -306,12 +380,21 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setUnloadNet(param.getUnloadNet()); orderChild.setUnloadNet(param.getUnloadNet());
orderChild.setUnloadTime(LocalDateTime.now()); orderChild.setUnloadTime(LocalDateTime.now());
orderChild.setWeight(orderChildWeightCalc(orderChild)); orderChild.setWeight(orderChildWeightCalc(orderChild));
orderChild.setStatus(OrderChildEnum.Status.UNLOAD.getCode()); orderChild.setStatus(OrderChildEnum.Status.UNLOAD.getCode());
orderChild.setPoundStatus(OrderChildPoundAuditEnum.Status.AUDIT.getCode());
OrderChildPoundAudit audit = new OrderChildPoundAudit();
audit.setChildNo(childNo);
audit.setStatus(OrderChildPoundAuditEnum.Status.AUDIT.getCode());
audit.setLoadNet(orderChild.getLoadNet());
audit.setUnloadNet(orderChild.getUnloadNet());
orderChildDao.updateUnload(orderChild); orderChildDao.updateUnload(orderChild);
orderChildImageDao.batchSaveEntity(imageList); orderChildImageDao.batchSaveEntity(imageList);
orderChildPoundAuditDao.saveEntity(audit);
} }
private void updateReUnload(OrderChildUnloadParam param, OrderChild orderChild) { private void updateReUnload(OrderChildUnloadParam param, OrderChild orderChild) {
...@@ -331,23 +414,44 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -331,23 +414,44 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setUnloadTime(LocalDateTime.now()); orderChild.setUnloadTime(LocalDateTime.now());
orderChild.setWeight(orderChildWeightCalc(orderChild)); orderChild.setWeight(orderChildWeightCalc(orderChild));
OrderChildPoundAudit audit = new OrderChildPoundAudit();
audit.setChildNo(childNo);
audit.setStatus(OrderChildPoundAuditEnum.Status.AUDIT.getCode());
audit.setLoadNet(orderChild.getLoadNet());
audit.setUnloadNet(orderChild.getUnloadNet());
orderChildDao.updateUnload(orderChild); orderChildDao.updateUnload(orderChild);
orderChildImageDao.deleteUnload(childNo); orderChildImageDao.deleteUnload(childNo);
orderChildImageDao.batchSaveEntity(imageList); orderChildImageDao.batchSaveEntity(imageList);
orderChildPoundAuditDao.saveEntity(audit);
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateLoadAndUnloadAgain(OrderChildLoadAndUnloadAgainParam param) { public void updateLoadAndUnloadAgain(OrderChildLoadAndUnloadAgainParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo(); Long userNo = loginUserInfo.getUserNo();
String childNo = param.getChildNo(); String childNo = param.getChildNo();
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(ResultCodeEnum.FAIL); OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
if (!Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.POUND_AUDIT_FAIL.getCode())){ if (!Objects.equals(orderChild.getUserNo(), userNo) && !Objects.equals(orderChild.getDriverUserNo(), userNo)){
throw new ServiceSystemException(ResultCodeEnum.FAIL); throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
}
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.DRIVER_CANCEL.getCode())
|| Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.PLATFORM_CANCEL.getCode())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCELED);
}
if (!Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.UNLOAD.getCode())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_STATUS_CHANGED);
}
if (Objects.equals(orderChild.getPoundStatus(), OrderChildPoundAuditEnum.Status.AUDIT.getCode())){return;}
if (!Objects.equals(orderChild.getPoundStatus(), OrderChildPoundAuditEnum.Status.REJECT.getCode())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_STATUS_CHANGED);
} }
List<OrderChildImage> imageList = new ArrayList<>(); List<OrderChildImage> imageList = new ArrayList<>();
...@@ -367,65 +471,60 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -367,65 +471,60 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setLoadRough(param.getLoadRough()); orderChild.setLoadRough(param.getLoadRough());
orderChild.setLoadTare(param.getLoadTare()); orderChild.setLoadTare(param.getLoadTare());
orderChild.setLoadNet(param.getLoadNet()); orderChild.setLoadNet(param.getLoadNet());
// orderChild.setLoadTime(now);
orderChild.setUnloadRough(param.getUnloadRough()); orderChild.setUnloadRough(param.getUnloadRough());
orderChild.setUnloadTare(param.getUnloadTare()); orderChild.setUnloadTare(param.getUnloadTare());
orderChild.setUnloadNet(param.getUnloadNet()); orderChild.setUnloadNet(param.getUnloadNet());
// orderChild.setUnloadTime(now);
orderChild.setWeight(orderChildWeightCalc(orderChild)); orderChild.setWeight(orderChildWeightCalc(orderChild));
orderChild.setStatus(OrderChildEnum.Status.UNLOAD.getCode()); orderChild.setPoundStatus(OrderChildPoundAuditEnum.Status.AUDIT.getCode());
OrderChildPoundAudit audit = new OrderChildPoundAudit();
audit.setChildNo(childNo);
audit.setStatus(OrderChildPoundAuditEnum.Status.AUDIT.getCode());
audit.setLoadNet(orderChild.getLoadNet());
audit.setUnloadNet(orderChild.getUnloadNet());
orderChildDao.updateLoadAndUnload(orderChild); orderChildDao.updateLoadAndUnload(orderChild);
orderChildImageDao.deleteLoadAndUnload(childNo); orderChildImageDao.deleteLoadAndUnload(childNo);
orderChildImageDao.batchSaveEntity(imageList); orderChildImageDao.batchSaveEntity(imageList);
orderChildPoundAuditDao.saveEntity(audit);
// 日志 // 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.RELOAD_AND_REUNLOAD.getCode(), OrderChildLogEnum.Type.RELOAD_AND_REUNLOAD.getMsg(), orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.RELOAD_AND_REUNLOAD.getCode(), OrderChildLogEnum.Type.RELOAD_AND_REUNLOAD.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName()); loginUserInfo.getUserNo(), loginUserInfo.getUserName());
orderChildPoundLogService.saveDriverOrderChildLog(childNo, OrderChildPoundAuditEnum.Status.AUDIT.getCode(), "",
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
} }
@Override @Override
public void updateConfirm(OrderChildConfirmParam param) { @Transactional(rollbackFor = Exception.class)
public void updateDriverCancel(OrderChildCancelParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo(); Long userNo = loginUserInfo.getUserNo();
String childNo = param.getChildNo(); String childNo = param.getChildNo();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(ResultCodeEnum.FAIL); OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
if (!Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.UNLOAD.getCode())){ if (!Objects.equals(orderChild.getUserNo(), userNo) && !Objects.equals(orderChild.getDriverUserNo(), userNo)){
throw new ServiceSystemException(ResultCodeEnum.FAIL); throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
} }
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.DRIVER_CANCEL.getCode())
orderChild.setStatus(OrderChildEnum.Status.COMPLETE.getCode()); || Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.PLATFORM_CANCEL.getCode())){
orderChildDao.updateDriverConfirm(orderChild); return;
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CONFIRM.getCode(), OrderChildLogEnum.Type.DRIVER_CONFIRM.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
} }
@Override // 禁止取消
public void updateCancel(OrderChildCancelParam param) { if (orderChild.getStatus()>OrderChildEnum.Status.ARRIVE_SEND.getCode()) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCEL_FORBID);
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); OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
// 取消量验证 // 取消量验证
if (!cancelCountCheck(userNo)){throw new ServiceSystemException(ResultCodeEnum.FAIL);} if (!cancelCountCheck(userNo)){throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCEL_FORBID_COUNT);}
orderChild.setStatus(OrderChildEnum.Status.DRIVER_CANCEL.getCode()); orderChild.setStatus(OrderChildEnum.Status.DRIVER_CANCEL.getCode());
...@@ -436,10 +535,30 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -436,10 +535,30 @@ public class OrderChildServiceImpl implements OrderChildService {
cancelReturnWeight(orderChild, orderGoods); cancelReturnWeight(orderChild, orderGoods);
// 日志 // 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CANCEL.getCode(), OrderChildLogEnum.Type.DRIVER_CANCEL.getMsg(), orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CANCEL.getCode(), OrderChildLogEnum.Type.DRIVER_CANCEL.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName()); loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
@Override
public OrderChildVO getOrderChildInfo(String childNo) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
if (!Objects.equals(orderChild.getUserNo(), userNo) && !Objects.equals(orderChild.getDriverUserNo(), userNo)){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
}
OrderChildVO result = orderChildStruct.convert(orderChild);
List<OrderChildImage> imageList = orderChildImageDao.listLoadAndUnload(childNo).orElse(new ArrayList<>());
result.setLoadImageList(imageList.stream().filter(item->Objects.equals(item.getId(),OrderChildImage.Type.LOAD.getCode())).map(item->item.getImage()).collect(Collectors.toList()));
result.setUnloadImageList(imageList.stream().filter(item->Objects.equals(item.getId(),OrderChildImage.Type.UNLOAD.getCode())).map(item->item.getImage()).collect(Collectors.toList()));
return result;
} }
/** /**
* 更新货单数据 * 更新货单数据
*/ */
...@@ -471,8 +590,43 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -471,8 +590,43 @@ public class OrderChildServiceImpl implements OrderChildService {
* 运单拉运吨数计算 * 运单拉运吨数计算
*/ */
private BigDecimal orderChildWeightCalc(OrderChild orderChild){ private BigDecimal orderChildWeightCalc(OrderChild orderChild){
if (orderChild.getUnloadNet() == null && orderChild.getLoadNet() == null) {return orderChild.getTruckLoad();}
else if (orderChild.getUnloadNet() == null) {return orderChild.getLoadNet();}
else {return orderChild.getUnloadNet().compareTo(orderChild.getLoadNet())>0? orderChild.getLoadNet() : orderChild.getUnloadNet();}
}
/**
* 接单锁定司机
*/
private void lockDriver(Long driverNo){
}
/**
* 接单锁定车辆
*/
private void lockTruck(Integer truckId){
}
/**
* 释放司机
*/
private void releaseDriver(Long driverNo){
}
/**
* 释放车辆
*/
private void releaseTruck(Integer truckId){
}
private String childNoGenerate(){
return orderChild.getLoadNet(); return "1";
} }
@Override @Override
......
...@@ -26,13 +26,8 @@ public class OrderGoodsServiceImpl implements OrderGoodsService { ...@@ -26,13 +26,8 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
private OrderGoodsStruct orderGoodsStruct; private OrderGoodsStruct orderGoodsStruct;
@Override @Override
public OrderGoodsVO getOrderGoodsInfoByOrderGoodsNoForPC(String orderGoodsNo) { public OrderGoodsVO getOrderGoodsInfoByOrderGoodsNo(String orderGoodsNo) {
return orderGoodsDao.getOrderGoodsInfoByOrderGoodsNoForPC(orderGoodsNo).map(orderGoodsStruct::convert).get(); return orderGoodsDao.getOrderGoodsInfoByOrderGoodsNo(orderGoodsNo).map(orderGoodsStruct::convert).get();
}
@Override
public OrderGoodsVO getOrderGoodsInfoByOrderGoodsNoForAPP(String orderGoodsNo) {
return orderGoodsDao.getOrderGoodsInfoByOrderGoodsNoForAPP(orderGoodsNo).map(orderGoodsStruct::convert).get();
} }
@Override @Override
......
...@@ -19,8 +19,8 @@ public class OrderGoodsSqlProvider { ...@@ -19,8 +19,8 @@ public class OrderGoodsSqlProvider {
public String pageOrderGoodsList(@Param("page") Page<FeignPageOrderVO> page, @Param("param") PageOrderGoodsListParam param) { public String pageOrderGoodsList(@Param("page") Page<FeignPageOrderVO> page, @Param("param") PageOrderGoodsListParam param) {
String sql = new SQL() {{ String sql = new SQL() {{
SELECT("a.id, a.order_no, a.order_goods_type," + SELECT("a.id, a.order_no, a.order_goods_type " +
" concat(a.order_goods_type,a.order_goods_no) as order_goods_no, a.order_goods_status, a.extract_weight, " + " a.order_goods_no, a.order_goods_status, a.extract_weight, " +
" a.residue_transport_weight, a.send_address_id, a.send_address_shorter,a.send_longitude," + " a.residue_transport_weight, a.send_address_id, a.send_address_shorter,a.send_longitude," +
" a.send_latitude,a.receive_address_id, a.receive_address_shorter,a.receive_longitude,a.receive_latitude," + " a.send_latitude,a.receive_address_id, a.receive_address_shorter,a.receive_longitude,a.receive_latitude," +
"a.goods_id, a.goods_name, a.pending_order_way," + "a.goods_id, a.goods_name, a.pending_order_way," +
...@@ -30,8 +30,9 @@ public class OrderGoodsSqlProvider { ...@@ -30,8 +30,9 @@ public class OrderGoodsSqlProvider {
" date_format(a.create_time, '%Y-%m-%d %H:%i:%s') as create_time," + " date_format(a.create_time, '%Y-%m-%d %H:%i:%s') as create_time," +
" date_format(a.modified_time, '%Y-%m-%d %H:%i:%s') as modified_time," + " date_format(a.modified_time, '%Y-%m-%d %H:%i:%s') as modified_time," +
"a.extract_way,a.need_truck_num,a.senior_logistics_manager_id,a.senior_logistics_manager_name,a.pending_order_freight," + "a.extract_way,a.need_truck_num,a.senior_logistics_manager_id,a.senior_logistics_manager_name,a.pending_order_freight," +
"a.user_no,a.user_name"); "a.user_no,a.user_name," +
FROM("order_goods a"); "a.valid_freight_price ");
FROM("order_info a");
if (StringUtils.isNotBlank(param.getBeginTime()) && StringUtils.isNotBlank(param.getEndTime())) { if (StringUtils.isNotBlank(param.getBeginTime()) && StringUtils.isNotBlank(param.getEndTime())) {
WHERE("a.create_time >= #{param.beginTime}"); WHERE("a.create_time >= #{param.beginTime}");
...@@ -66,7 +67,6 @@ public class OrderGoodsSqlProvider { ...@@ -66,7 +67,6 @@ public class OrderGoodsSqlProvider {
} }
if (StringUtils.isNotBlank(param.getOrderGoodsNo())) { if (StringUtils.isNotBlank(param.getOrderGoodsNo())) {
WHERE("a.order_goods_no = #{param.orderGoodsNo}"); WHERE("a.order_goods_no = #{param.orderGoodsNo}");
WHERE("a.order_goods_no = #{param.orderGoodsType}");
} }
ORDER_BY("a.create_time desc"); ORDER_BY("a.create_time desc");
}}.toString(); }}.toString();
......
package com.clx.performance.struct;
import com.clx.performance.model.OrderChild;
import com.clx.performance.vo.app.OrderChildVO;
import com.msl.common.utils.DateStructUtil;
import com.msl.common.utils.DateUtils;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring", uses = DateStructUtil.class, imports = {DateUtils.class})
public interface OrderChildPoundImageStruct {
OrderChildVO convert(OrderChild item);
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论