提交 d8037ce3 authored 作者: liuhaiquan's avatar liuhaiquan

Merge remote-tracking branch 'origin/v4.9_create_goods_child_20230918' into…

Merge remote-tracking branch 'origin/v4.9_create_goods_child_20230918' into v4.9_create_goods_child_20230918 # Conflicts: # performance-web/src/main/java/com/clx/performance/PerformanceApplication.java
......@@ -28,7 +28,7 @@ public class PageCarrierOrderListParam extends PageParam {
@ApiModelProperty(value = "开始时间", example = "2023-09-09 12:00:01", required = true)
private String beginTime;
@ApiModelProperty(value = "结束", example = "2023-09-09 12:00:01", required = true)
@ApiModelProperty(value = "结束时间", example = "2023-09-09 12:00:01", required = true)
private String endTime;
@ApiModelProperty(value = "时间类型: 1创建时间 2拉运开始时间 3拉运结束时间 ")
......
package com.clx.order.params;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class PageOrderGoodsListParam extends PageParam {
@ApiModelProperty(value = "订单编号")
private String orderNo;
@ApiModelProperty(value = "货单编号")
private String orderGoodsNo;
@ApiModelProperty(value = "货单编号类型")
private String orderGoodsType;
@ApiModelProperty(value = "货单状态: 10:已挂单 20:挂单中 30:运输中 40:已完成 50:已取消")
private Integer orderGoodsStatus;
@ApiModelProperty(value = "开始时间", example = "2023-09-09 12:00:01")
private String beginTime;
@ApiModelProperty(value = "结束时间", example = "2023-09-09 12:00:01")
private String endTime;
@ApiModelProperty(value = "用车类型: 1平台车辆 2部分平台车辆 3自有车辆")
private Integer truckDemand;
}
......@@ -19,18 +19,18 @@ public enum OrderChildEnum {
GO_TO_SEND(30, "前往货源地"),
ARRIVE_SEND(40, "到达货源地"),
LOAD(60 , "装货成功"),
GO_TO_RECEIVE(50, "前往目的地"),
ARRIVE_RECEIVE(60 , "到达目的地"),
DRIVER_CONFIRM(70, "收货待确认"),
LOAD(50 , "装货成功"),
GO_TO_RECEIVE(60, "前往目的地"),
ARRIVE_RECEIVE(70 , "到达目的地"),
UNLOAD(80, "收货待确认"),
POUND_AUDIT_FAIL(80, "磅单审核驳回"),
UNSETTLED(80, "待结算"),
POUND_AUDIT_FAIL(90, "磅单审核驳回"),
UNSETTLED(100, "待结算"),
COMPLETE(100, "完成"),
COMPLETE(110, "完成"),
DRIVER_CANCEL(200, "司机取消"),
PLATFORM_CANCEL(200, "平台取消"),
DRIVER_CANCEL(210, "司机取消"),
PLATFORM_CANCEL(220, "平台取消"),
//
// OWNER_CONFIRM(50, "货主确认车辆"),//货主确认车辆
......
......@@ -42,4 +42,21 @@ public enum OrderChildLogEnum {
}
}
@Getter
@AllArgsConstructor
public enum CreateType {
OWNER(1, "货主"),
PLATFORM(2, "承运"),
DRIVER(3, "司机"),
;
private final int code;
private final String msg;
public static Optional<CreateType> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
}
}
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
public enum OrderChildPoundAuditEnum {
;
@Getter
@AllArgsConstructor
public enum Status {
AUDIT(0, "待审核"),
APPROVED(1, "审核通过"),
REJECT(2, "审核驳回"),
;
private final Integer code;
private final String msg;
public static Optional<Status> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
}
}
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
public enum OrderGoodsStatusEnum {
;
@Getter
@AllArgsConstructor
public enum Status {
CREATED(10, "已挂单"),
PAYING(20, "挂单中"),
GO_TO_SEND(30, "运输中"),
ARRIVE_SEND(40, "已完成"),
CANCEL(50, "已取消"),
;
private final Integer code;
private final String name;
public static Optional<Status> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
}
}
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
public enum OrderGoodsTypeEnum {
;
@Getter
@AllArgsConstructor
public enum Status {
PLATFORM("PT", "平台"),
;
private final String code;
private final String name;
public static Optional<Status> getByCode(String code) {
return Arrays.stream(values()).filter(e -> e.code .equals(code)).findFirst();
}
}
}
package com.clx.performance.enums;
import com.msl.common.enums.ResultEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum PerformanceResultEnum implements ResultEnum {
/**
* 系统
*/
SIGN_NULL(1001, "签名不存在"),
SIGN_ERROR(1002, "签名错误"),
TIMESTAMP_ERROR(1003, "请求不在时间范围内"),
INCREMENT_ERROR(1004, "编码生成失败"),
HTTP_ERROR(1005, "HTTP请求失败"),
LOCK_ERROR(1006,"加锁失败"),
TRY_LOCK_ERROR(1007,"操作频繁,请稍后重试"),
FEIGN_ERROR(1008, "服务调用失败"),
/**
* 通用
*/
USER_NULL(1101, "用户不存在"),
MOBILE_NULL(1102, "手机号码未注册"),
USER_NOT_REGISTER(1103, "用户尚未注册"),
USER_NOT_AUTH(1104, "用户暂未实名"),
DATA_NOT_FIND(1105, "数据不存在"),
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, "超出最大取消数量"),
;
private final int code;
private final String msg;
}
package com.clx.performance.param.pc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
* @Author liruixin
* @create 2023-09-19 13:33
*/
@Getter
@Setter
@NoArgsConstructor
@ToString
public class PoundAuditParam {
@NotBlank(message = "运单编号不能为空")
@ApiModelProperty(value="运单编号",example = "201457878")
private String childNo;
@ApiModelProperty(value="审核驳回类型:1装车 2卸车 3装车+卸车",example = "1")
private Integer rejectType;
@ApiModelProperty(value="驳回原因",example = "驳回原因")
private String remark;
@NotNull(message = "审核状态不能为空")
@ApiModelProperty(value="审核状态 0-待审核,1-审核失败, 2-审核成功",example = "1")
private Integer status;
@ApiModelProperty(value="装货净重",example = "11")
private BigDecimal loadNet;
@ApiModelProperty(value="卸货净重",example = "22")
private BigDecimal unloadNet;
}
package com.clx.performance.vo.app;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.NotEmpty;
import java.math.BigDecimal;
import java.util.List;
/**
* @Author: aiqinguo
* @Description: 运单表
* @Date: 2023/09/19 16:49:06
* @Version: 1.0
*/
@ApiModel(description = "运单表")
@Getter
@Setter
@ToString
@NoArgsConstructor
public class OrderChildVO {
@ApiModelProperty(value = "id", example = "")
private Integer id;
@ApiModelProperty(value = "用户编号", example = "")
private Long userNo;
@ApiModelProperty(value = "货主用户编号", example = "")
private Long ownerUserNo;
@ApiModelProperty(value = "运单编号", example = "")
private String childNo;
@ApiModelProperty(value = "货单编号", example = "")
private String orderGoodsNo;
@ApiModelProperty(value = "订单编号", example = "")
private String orderNo;
@ApiModelProperty(value = "货物id", example = "")
private Integer goodsId;
@ApiModelProperty(value = "货物名称", example = "")
private String goodsName;
@ApiModelProperty(value = "运费单价(分)", example = "")
private BigDecimal freightPrice;
@ApiModelProperty(value = "发货地址id", example = "")
private Integer sendAddressId;
@ApiModelProperty(value = "发货地址", example = "")
private String sendAddress;
@ApiModelProperty(value = "收货地址id", example = "")
private Integer receiveAddressId;
@ApiModelProperty(value = "收货地址", example = "")
private String receiveAddress;
@ApiModelProperty(value = "最晚装货时间", example = "")
private String loadDeadline;
@ApiModelProperty(value = "车辆ID", example = "")
private Integer truckId;
@ApiModelProperty(value = "车牌号", example = "")
private String truckNo;
@ApiModelProperty(value = "载重(单位吨)", example = "")
private BigDecimal truckLoad;
@ApiModelProperty(value = "司机用户编号", example = "")
private Long driverUserNo;
@ApiModelProperty(value = "司机姓名", example = "")
private String driverName;
@ApiModelProperty(value = "司机手机号", example = "")
private String driverMobile;
@ApiModelProperty(value = "装货毛重(单位吨)", example = "")
private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重(单位吨)", example = "")
private BigDecimal loadTare;
@ApiModelProperty(value = "装货净重(单位吨)", example = "")
private BigDecimal loadNet;
@ApiModelProperty(value = "卸货毛重(单位吨)", example = "")
private BigDecimal unloadRough;
@ApiModelProperty(value = "卸货皮重(单位吨)", example = "")
private BigDecimal unloadTare;
@ApiModelProperty(value = "卸货净重(单位吨)", example = "")
private BigDecimal unloadNet;
@ApiModelProperty(value = "拉运重量(单位吨)", example = "")
private BigDecimal weight;
@ApiModelProperty(value = "磅单审核状态", example = "")
private Integer poundStatus;
@ApiModelProperty(value = "状态", example = "")
private Integer status;
@ApiModelProperty(value = "支付时间", example = "")
private String payTime;
@ApiModelProperty(value = "装车时间", example = "")
private String loadTime;
@ApiModelProperty(value = "卸车时间", example = "")
private String unloadTime;
@ApiModelProperty(value = "创建时间", example = "")
private String createTime;
@ApiModelProperty(value = "修改时间", example = "")
private String modifiedTime;
@ApiModelProperty(value = "装车磅单图片列表")
private List<String> loadImageList;
@ApiModelProperty(value = "卸车磅单图片列表")
private List<String> unloadImageList;
}
\ No newline at end of file
package com.clx.performance.param.app;
package com.clx.performance.vo.app;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
......@@ -6,12 +6,11 @@ import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@NoArgsConstructor
public class SaveOrderChildVo {
public class SaveOrderChildVO {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
......
package com.clx.performance.vo.pc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.List;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildPoundAuditDetailVO {
@ApiModelProperty(value="运单编号",example = "41441")
private String childNo;
@ApiModelProperty(value="装货净重",example = "10")
private BigDecimal loadNet;
@ApiModelProperty(value="卸货净重",example = "41")
private BigDecimal unloadNet;
@ApiModelProperty(value="审核状态 0-待审核,1-审核失败, 2-审核成功",example = "1")
private Integer status;
@ApiModelProperty(value="备注",example = "41441")
private String remark;
@ApiModelProperty(value="审核驳回类型:1装车 2卸车 3装车+卸车",example = "1")
private Integer rejectType;
@ApiModelProperty(value="装车磅单图片")
private List<String> loadImages;
@ApiModelProperty(value="卸车磅单图片")
private List<String> unloadImages;
}
\ No newline at end of file
package com.clx.performance.vo.pc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildPoundLogVO {
@ApiModelProperty(value="审核状态 0-待审核,1-审核失败, 2-审核成功",example = "1")
private Integer status;
@ApiModelProperty(value="操作时间",example = "2020-01-01 10:10:10")
private String createTime;
@ApiModelProperty(value="审核人",example = "李瑞")
private String createName;
}
\ No newline at end of file
package com.clx.performance.vo.pc;
import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.convertor.field.Convert;
import com.msl.common.convertor.field.Converted;
import com.msl.common.convertor.type.MoneyOutConvert;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
/**
* @Author: aiqinguo
* @Description: 运单表
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
public class OrderGoodsVO {
@ApiModelProperty("订单编号")
private String orderNo;
@ApiModelProperty("货单编号类型")
private String orderGoodsType;
@ApiModelProperty("货单编号")
private String orderGoodsNo;
@ApiModelProperty("货单状态")
private Integer orderGoodsStatus;
@ApiModelProperty("提取吨数")
private BigDecimal extractWeight;
@ApiModelProperty("剩余拉运吨数")
private BigDecimal residueTransportWeight;
@ApiModelProperty("发货地址ID")
private Integer sendAddressId;
@ApiModelProperty("发货地址简称")
private String sendAddressShorter;
@ApiModelProperty("发货地址经度")
private BigDecimal sendLongitude;
@ApiModelProperty("发货地址纬度")
private BigDecimal sendLatitude;
@ApiModelProperty("收货地址ID")
private Integer receiveAddressId;
@ApiModelProperty("收货地址简称")
private String receiveAddressShorter;
@ApiModelProperty("收货地址经度")
private BigDecimal receiveLongitude;
@ApiModelProperty("收货地址纬度")
private BigDecimal receiveLatitude;
@ApiModelProperty("货物ID")
private Integer goodsId;
@ApiModelProperty("货物名称")
private String goodsName;
@ApiModelProperty("挂单方式 1公开派单 2定向派单")
private Integer pendingOrderWay;
@ApiModelProperty("定向运单失效时间")
private String directionalExpireTime;
@ApiModelProperty("最晚到达货源地时间/运单的最晚装货时间")
private String lastArriveSendTime;
@ApiModelProperty("挂单时间")
private String pendingOrderTime;
@ApiModelProperty("提取方式 1提取全部 2提取部分")
private Integer extractWay;
@ApiModelProperty("需要车辆/辆")
private Integer needTruckNum;
@ApiModelProperty("高级物流经理id")
private Integer seniorLogisticsManagerId;
@ApiModelProperty("高级物流经理姓名")
private String seniorLogisticsManagerName;
@ApiModelProperty("挂单运费")
@MoneyOutConvert
private BigDecimal pendingOrderFreight;
@ApiModelProperty("创建人用户编号")
private Long userNo;
@ApiModelProperty("创建人姓名")
private String userName;
@ApiModelProperty("创建时间")
private String createTime;
}
\ No newline at end of file
......@@ -17,7 +17,7 @@ import java.math.BigDecimal;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildPoundAuditVO {
public class PageOrderChildPoundAuditVO {
@ApiModelProperty(value="运单编号",example = "41441")
private String childNo;
......
......@@ -16,7 +16,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
// @ComponentScan("com.msl.common.utils.*"),
//})
@ComponentScan({"com.clx.performance.*", "com.msl.*"})
@EnableFeignClients(basePackages = {"com.msl.*", "com.clx.performance.*", "com.clx.order.*","com.clx.user.*"})
@EnableFeignClients(basePackages = {"com.msl.*", "com.clx.performance.*", "com.clx.order.*", "com.clx.user.*"})
@ViewScan(basePackage = "com.clx.user.view")
public class PerformanceApplication {
......
package com.clx.performance.controller.app;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.order.feign.OrderFeign;
import com.clx.order.params.OrderGoodsChildParams;
import com.clx.order.params.OrderGoodsParams;
import com.clx.order.params.PageCarrierOrderListParam;
import com.clx.order.params.PageOrderGoodsListParam;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.order.vo.feign.FeignPageOrderVO;
import com.clx.performance.component.OrderGoodsIdGenerate;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.constant.RedisConstants;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.OrderGoodsTypeEnum;
import com.clx.performance.mapper.OrderGoodsMapper;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.vo.pc.OrderGoodsVO;
import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.result.Result;
import com.msl.common.utils.DateUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* @ClassName GoodsOrderController
* @Description
* @Author kavin
* @Date 2023/9/17 17:16
* @Version 1.0
*/
@Slf4j
@RestController
@RequestMapping("/app/goodsOrder")
@Validated
@Api(tags = "APP-货单")
public class AppGoodsOrderController {
@Autowired
OrderGoodsService orderGoodsService;
@Autowired
OrderGoodsMapper orderGoodsMapper;
@ApiOperation(value = "查看货单详情", notes = "<br>By:胡宇帆")
@GetMapping("/getOrderGoodsInfo")
@UnitCovert(param = false)
public Result<OrderGoodsVO> getOrderGoodsInfo(@RequestParam String orderGoodsNo) {
return Result.ok(orderGoodsService.getOrderGoodsInfoByOrderGoodsNo(orderGoodsNo));
}
}
......@@ -2,6 +2,8 @@ package com.clx.performance.controller.app;
import com.clx.performance.param.app.*;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.app.SaveOrderChildVO;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......@@ -32,7 +34,7 @@ public class DriverOrderChildController {
@ApiOperation(value = "接单", notes = "<br>By:艾庆国")
@PostMapping("/saveOrderChild")
public Result<SaveOrderChildVo> saveOrderChild(@RequestBody @Validated OrderChildSaveParam param) {
public Result<SaveOrderChildVO> saveOrderChild(@RequestBody @Validated OrderChildSaveParam param) {
return Result.ok(orderChildService.saveOrderChild(param));
}
......@@ -70,7 +72,7 @@ public class DriverOrderChildController {
return Result.ok();
}
@ApiOperation(value = "装车(首次、再次)", notes = "<br>By:艾庆国")
@ApiOperation(value = "装车(首次、重复)", notes = "<br>By:艾庆国")
@PostMapping("/updateLoad")
public Result<Void> updateLoad(@RequestBody @Validated OrderChildLoadParam param) {
orderChildService.updateLoad(param);
......@@ -78,7 +80,7 @@ public class DriverOrderChildController {
return Result.ok();
}
@ApiOperation(value = "卸车(首次、再次)", notes = "<br>By:艾庆国")
@ApiOperation(value = "卸车(首次、重复)", notes = "<br>By:艾庆国")
@PostMapping("/updateUnload")
public Result<Void> updateUnload(@RequestBody @Validated OrderChildUnloadParam param) {
orderChildService.updateUnload(param);
......@@ -94,19 +96,19 @@ public class DriverOrderChildController {
return Result.ok();
}
@ApiOperation(value = "确认交货", notes = "<br>By:艾庆国")
@PostMapping("/updateConfirm")
public Result<Void> updateConfirm(@RequestBody @Validated OrderChildConfirmParam param) {
orderChildService.updateConfirm(param);
@ApiOperation(value = "取消运单", notes = "<br>By:艾庆国")
@PostMapping("/updateCancel")
public Result<Void> updateDriverCancel(@RequestBody @Validated OrderChildCancelParam param) {
orderChildService.updateDriverCancel(param);
return Result.ok();
}
@ApiOperation(value = "取消运单", notes = "<br>By:艾庆国")
@PostMapping("/updateCancel")
public Result<Void> updateCancel(@RequestBody @Validated OrderChildCancelParam param) {
orderChildService.updateCancel(param);
@ApiOperation(value = "查询运单详情", notes = "<br>By:艾庆国")
@PostMapping("/getOrderChildInfo")
public Result<OrderChildVO> getOrderChildInfo(String childNo) {
return Result.ok();
return Result.ok(orderChildService.getOrderChildInfo(childNo));
}
}
package com.clx.performance.controller.pc;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.order.feign.OrderFeign;
import com.clx.order.param.feign.FeignPageCarrierOrderListParam;
import com.clx.order.params.OrderGoodsChildParams;
import com.clx.order.params.OrderGoodsParams;
import com.clx.order.params.PageCarrierOrderListParam;
import com.clx.order.params.PageOrderGoodsListParam;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.order.vo.feign.FeignPageOrderVO;
import com.clx.performance.component.OrderGoodsIdGenerate;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.constant.RedisConstants;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.OrderGoodsTypeEnum;
import com.clx.performance.mapper.OrderGoodsMapper;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.vo.pc.OrderGoodsVO;
import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.result.Result;
import com.msl.common.utils.DateUtils;
import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
......@@ -29,19 +30,13 @@ import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.core.MessageProperties;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.List;
import java.util.concurrent.TimeUnit;
......@@ -82,6 +77,7 @@ public class GoodsOrderController {
@PostMapping("/saveGoodsOrder")
public Result<Object> saveGoodName(@RequestBody @Validated OrderGoodsParams orderGoodsParams) {
String orderNo = orderGoodsParams.getOrderNo();
LocalDateTime now = LocalDateTime.now();
LocalDateTime sendLazyTime = null;
//UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
RLock rLock = null;
......@@ -102,7 +98,6 @@ public class GoodsOrderController {
if (orderInfo.getResidueWeight().compareTo(childSum) < 0) {
throw new RuntimeException("当前货单总吨数已超订单总吨数");
}
LocalDateTime now = LocalDateTime.now();
long beginOrderGoodsId = orderGoodsIdGenerate.getOrderGoodsId("pt", childParamsList.size());
for (OrderGoodsChildParams child : childParamsList) {
if (child.getPendingOrderWay().equals(2) && child.getNeedTruckNum() == null) {
......@@ -111,7 +106,7 @@ public class GoodsOrderController {
OrderGoods orderGoods = new OrderGoods();
//提取吨数
orderGoods.setExtractWeight(child.getExtractWeight());
orderGoods.setExtractWeight(child.getExtractWeight());
orderGoods.setResidueTransportWeight(child.getExtractWeight());
//提取方式 1提取全部 2提取部分
Integer extractWay = child.getExtractWay();
orderGoods.setExtractWay(extractWay);
......@@ -121,13 +116,13 @@ public class GoodsOrderController {
orderGoods.setPendingOrderWay(child.getPendingOrderWay());
//挂单时间
LocalDateTime postedTime = DateUtils.parseDateTime(child.getPendingOrderTime()).get();
if (sendLazyTime == null) {
sendLazyTime = postedTime;
} else {
if (sendLazyTime.isAfter(postedTime)) {
sendLazyTime = postedTime;
}
} else if (sendLazyTime.isAfter(postedTime)) {
sendLazyTime = postedTime;
}
orderGoods.setPendingOrderTime(postedTime);
orderGoods.setPendingOrderFreight(child.getPendingOrderFreight());
......@@ -138,9 +133,9 @@ public class GoodsOrderController {
orderGoods.setSeniorLogisticsManagerName(child.getSeniorLogisticsManagerName());
orderGoods.setOrderNo(orderNo);
orderGoods.setOrderGoodsType("PT");
orderGoods.setOrderGoodsNo("PT" + beginOrderGoodsId);
orderGoods.setOrderGoodsStatus(10);
orderGoods.setOrderGoodsType(OrderGoodsTypeEnum.Status.PLATFORM.getCode());
orderGoods.setOrderGoodsNo(String.valueOf(beginOrderGoodsId));
orderGoods.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CREATED.getCode());
orderGoods.setSendAddressId(orderInfo.getSendAddressId());
orderGoods.setSendAddressShorter(orderInfo.getSendAddressShorter());
//收发货经纬度
......@@ -167,14 +162,13 @@ public class GoodsOrderController {
if (childParamsList.size() > 1) {
throw new RuntimeException("全部自有车辆只能全部提取");
}
LocalDateTime now = LocalDateTime.now();
long beginOrderGoodsId = orderGoodsIdGenerate.getOrderGoodsId("pt", childParamsList.size());
for (OrderGoodsChildParams child : childParamsList) {
OrderGoods orderGoods = new OrderGoods();
//提取吨数
orderGoods.setExtractWeight(child.getExtractWeight());
orderGoods.setExtractWeight(child.getExtractWeight());
orderGoods.setResidueTransportWeight(child.getExtractWeight());
//提取方式 1提取全部 2提取部分
Integer extractWay = child.getExtractWay();
if (extractWay.equals(2)) {
......@@ -187,12 +181,11 @@ public class GoodsOrderController {
orderGoods.setPendingOrderWay(child.getPendingOrderWay());
//挂单时间
LocalDateTime postedTime = DateUtils.parseDateTime(child.getPendingOrderTime()).get();
if (sendLazyTime == null) {
sendLazyTime = postedTime;
} else {
if (sendLazyTime.isAfter(postedTime)) {
sendLazyTime = postedTime;
}
} else if (sendLazyTime.isAfter(postedTime)) {
sendLazyTime = postedTime;
}
orderGoods.setPendingOrderTime(postedTime);
orderGoods.setPendingOrderFreight(child.getPendingOrderFreight());
......@@ -204,9 +197,9 @@ public class GoodsOrderController {
orderGoods.setSeniorLogisticsManagerName(child.getSeniorLogisticsManagerName());
orderGoods.setOrderNo(orderNo);
orderGoods.setOrderGoodsType("PT");
orderGoods.setOrderGoodsNo("PT" + beginOrderGoodsId);
orderGoods.setOrderGoodsStatus(10);
orderGoods.setOrderGoodsType(OrderGoodsTypeEnum.Status.PLATFORM.getCode());
orderGoods.setOrderGoodsNo(String.valueOf(beginOrderGoodsId));
orderGoods.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CREATED.getCode());
orderGoods.setSendAddressId(orderInfo.getSendAddressId());
orderGoods.setSendAddressShorter(orderInfo.getSendAddressShorter());
//收发货经纬度
......@@ -236,11 +229,10 @@ public class GoodsOrderController {
log.error("redis 分布式锁释放异常!", e);
}
}
JSONObject jsonObject = new JSONObject();
jsonObject.set("orderNo", orderNo);
rabbitTemplate.send(RabbitKeyConstants.ORDER_POSTED_EXCHANGE, RabbitKeyConstants.ORDER_POSTED_ROUTE_KEY, MessageBuilder.withBody(jsonObject.toString().getBytes()).build());
Message message = MessageBuilder.withBody(jsonObject.toString().getBytes()).build();
long epochMilli = sendLazyTime.toInstant(ZoneOffset.of("+8")).toEpochMilli();
rabbitTemplate.send(RabbitKeyConstants.ORDER_POSTED_EXCHANGE, RabbitKeyConstants.ORDER_POSTED_ROUTE_KEY, MessageBuilder.withBody(orderNo.toString().getBytes()).build());
Message message = MessageBuilder.withBody(orderNo.toString().getBytes()).build();
long epochMilli = sendLazyTime.minusMinutes(now.getMinute()).getMinute() * 60 * 1000;
message.getMessageProperties().setExpiration(String.valueOf(epochMilli));
rabbitTemplate.send(
RabbitKeyConstants.ORDER_ON_EXCHANGE, RabbitKeyConstants.ORDER_ON_ROUTE_KEY, message
......@@ -256,4 +248,22 @@ public class GoodsOrderController {
Result<PageData<FeignPageOrderVO>> dataResult = orderFeign.pageCarrierOrderList(JSONUtil.parse(param).toString());
return dataResult;
}
@ApiOperation(value = "查看货单详情", notes = "<br>By:胡宇帆")
@GetMapping("/getOrderGoodsInfo")
@UnitCovert(param = false)
public Result<OrderGoodsVO> getOrderGoodsInfo(@RequestParam String orderGoodsNo) {
return Result.ok(orderGoodsService.getOrderGoodsInfoByOrderGoodsNo(orderGoodsNo));
}
@ApiOperation(value = "查看货单列表", notes = "<br>By:胡宇帆")
@PostMapping("/pageOrderGoodsList")
@UnitCovert(param = false)
public Result<PageData<OrderGoodsVO>> pageOrderGoodsList(@RequestBody @Validated PageOrderGoodsListParam param) {
if (StringUtils.isNotBlank(param.getOrderGoodsNo())) {
param.setOrderGoodsType(param.getOrderGoodsNo().substring(0, 2));
}
IPage<OrderGoodsVO> page = orderGoodsService.pageOrderGoodsList(param);
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
}
......@@ -2,8 +2,11 @@ package com.clx.performance.controller.pc;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.param.pc.PoundAuditParam;
import com.clx.performance.service.OrderChildPoundAuditService;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.vo.pc.OrderChildPoundAuditVO;
import com.clx.performance.vo.pc.OrderChildPoundAuditDetailVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import com.msl.common.base.PageData;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
......@@ -16,21 +19,40 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
@Slf4j
@RestController
@RequestMapping(value="/pc/carrier/poundaudit")
@RequestMapping(value="/pc/carrier/poundAudit")
@Validated
@Api(tags = "承运端-运单")
@Api(tags = "承运端-磅单审核")
@AllArgsConstructor
public class OrderChildPoundAuditController {
private final OrderChildService orderChildService;
private final OrderChildPoundAuditService orderChildPoundAuditService;
@ApiOperation(value = "磅单审核列表",notes = "<br>By:李瑞新")
@PostMapping("/pagePoundAuditList")
public Result<PageData<OrderChildPoundAuditVO>> pagePoundAuditList(@RequestBody PagePoundAuditParam param) {
IPage<OrderChildPoundAuditVO> page = orderChildService.pagePoundAuditList(param);
public Result<PageData<PageOrderChildPoundAuditVO>> pagePoundAuditList(@RequestBody PagePoundAuditParam param) {
IPage<PageOrderChildPoundAuditVO> page = orderChildService.pagePoundAuditList(param);
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
@ApiOperation(value = "磅单审核详情",notes = "<br>By:李瑞新")
@PostMapping("/getPoundAuditDetail")
public Result<OrderChildPoundAuditDetailVO> pagePoundAuditList(@NotBlank(message = "运单编号不能为空") String childNo) {
return Result.ok(orderChildPoundAuditService.getPoundAuditDetail(childNo));
}
@ApiOperation(value = "磅单审核接口",notes = "<br>By:李瑞新")
@PostMapping("/updatePoundAudit")
public Result updatePoundAudit(@RequestBody @Validated PoundAuditParam param) {
orderChildPoundAuditService.updatePoundAudit(param);
return Result.ok();
}
}
package com.clx.performance.controller.pc;
import com.clx.performance.service.OrderChildPoundLogService;
import com.clx.performance.vo.pc.OrderChildPoundLogVO;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
import java.util.List;
@Slf4j
@RestController
@RequestMapping(value="/pc/carrier/poundLog")
@Validated
@Api(tags = "承运端-磅单审核")
@AllArgsConstructor
public class OrderChildPoundLogController {
private final OrderChildPoundLogService orderChildPoundLogService;
@ApiOperation(value = "磅单审核日志列表",notes = "<br>By:李瑞新")
@PostMapping("/getPoundLogList")
public Result<List<OrderChildPoundLogVO>> getPoundLogList(@NotBlank(message = "运单编号不能为空") String childNo) {
return Result.ok(orderChildPoundLogService.getPoundLogList(childNo));
}
}
......@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.OrderChildMapper;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.vo.pc.OrderChildPoundAuditVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
......@@ -20,16 +20,20 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
boolean updateCancel(OrderChild item);
boolean updateLoad(OrderChild item);
boolean updateUnload(OrderChild item);
boolean updateLoadAndUnload(OrderChild item);
boolean updateDriverConfirm(OrderChild item);
boolean updateStatus(OrderChild item);
Optional<OrderChild> getByChildNo(String childNo);
long countOfCancel(Long userNo, LocalDateTime startTime, LocalDateTime endTime);
IPage<OrderChildPoundAuditVO> pagePoundAuditList(PagePoundAuditParam param);
IPage<PageOrderChildPoundAuditVO> pagePoundAuditList(PagePoundAuditParam param);
boolean updatePoundAuditStatus(OrderChild item);
}
......@@ -2,8 +2,11 @@ package com.clx.performance.dao;
import com.clx.performance.mapper.OrderChildImageMapper;
import com.clx.performance.model.OrderChildImage;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
import java.util.List;
/**
* @Author: aiqinguo
* @Description: 运单图片
......@@ -16,4 +19,8 @@ public interface OrderChildImageDao extends BaseDao<OrderChildImageMapper, Order
boolean deleteUnload(String childNo);
boolean deleteLoadAndUnload(String childNo);
Optional<List<OrderChildImage>> getImages(String childNo, Integer type);
Optional<List<OrderChildImage>> listLoadAndUnload(String childNo);
}
......@@ -2,8 +2,10 @@ package com.clx.performance.dao;
import com.clx.performance.mapper.OrderChildPoundAuditMapper;
import com.clx.performance.model.OrderChildPoundAudit;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
/**
* @Author: aiqinguo
* @Description: 磅单审核表
......@@ -12,5 +14,5 @@ import com.msl.common.dao.BaseDao;
*/
public interface OrderChildPoundAuditDao extends BaseDao<OrderChildPoundAuditMapper, OrderChildPoundAudit, Integer> {
Optional<OrderChildPoundAudit> getPoundAuditDetail(String childNo);
}
......@@ -4,6 +4,8 @@ import com.clx.performance.mapper.OrderChildPoundLogMapper;
import com.clx.performance.model.OrderChildPoundLog;
import com.msl.common.dao.BaseDao;
import java.util.List;
/**
* @Author: aiqinguo
* @Description: 磅单日志表
......@@ -12,5 +14,5 @@ import com.msl.common.dao.BaseDao;
*/
public interface OrderChildPoundLogDao extends BaseDao<OrderChildPoundLogMapper, OrderChildPoundLog, Integer> {
List<OrderChildPoundLog> getPoundLogList(String childNo);
}
package com.clx.performance.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.order.params.PageOrderGoodsListParam;
import com.clx.performance.vo.pc.OrderGoodsVO;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
import com.clx.performance.mapper.OrderGoodsMapper;
......@@ -15,4 +18,7 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
Optional<OrderGoods> getByOrderGoodsNo(String orderGoodsNo);
Optional<OrderGoods> getOrderGoodsInfoByOrderGoodsNo(String orderGoodsNo);
IPage<OrderGoodsVO> pageOrderGoodsList(PageOrderGoodsListParam param);
}
......@@ -7,7 +7,7 @@ import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.mapper.OrderChildMapper;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.vo.pc.OrderChildPoundAuditVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
......@@ -32,17 +32,48 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
@Override
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
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
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
......@@ -50,6 +81,14 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
return false;
}
@Override
public boolean updateStatus(OrderChild item) {
return update(lUdWrapper()
.eq(OrderChild::getChildNo, item.getChildNo())
.set(OrderChild::getStatus, item.getStatus())
);
}
@Override
public Optional<OrderChild> getByChildNo(String childNo) {
return Optional.of(childNo)
......@@ -71,8 +110,19 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
}
@Override
public IPage<OrderChildPoundAuditVO> pagePoundAuditList(PagePoundAuditParam param) {
Page<OrderChildPoundAuditVO> page = Page.of(param.getPage(), param.getPageSize());
public IPage<PageOrderChildPoundAuditVO> pagePoundAuditList(PagePoundAuditParam param) {
Page<PageOrderChildPoundAuditVO> page = Page.of(param.getPage(), param.getPageSize());
return baseMapper.pagePoundAuditList(page,param);
}
@Override
public boolean updatePoundAuditStatus(OrderChild item) {
return update(lUdWrapper()
.eq(OrderChild::getChildNo, item.getChildNo())
.set(OrderChild::getStatus, item.getStatus())
.set(OrderChild::getPoundStatus, item.getPoundStatus())
.set(OrderChild::getLoadNet, item.getLoadNet())
.set(OrderChild::getUnloadNet, item.getUnloadNet())
);
}
}
......@@ -3,9 +3,12 @@ package com.clx.performance.dao.impl;
import com.clx.performance.dao.OrderChildImageDao;
import com.clx.performance.mapper.OrderChildImageMapper;
import com.clx.performance.model.OrderChildImage;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @Author: aiqinguo
* @Description: 运单表
......@@ -40,4 +43,20 @@ 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
public Optional<List<OrderChildImage>> getImages(String childNo, Integer type) {
return Optional.ofEmpty(list(lQrWrapper()
.eq(OrderChildImage::getChildNo, childNo)
.eq(OrderChildImage::getType, type)));
}
}
......@@ -3,9 +3,11 @@ package com.clx.performance.dao.impl;
import com.clx.performance.dao.OrderChildPoundAuditDao;
import com.clx.performance.mapper.OrderChildPoundAuditMapper;
import com.clx.performance.model.OrderChildPoundAudit;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
/**
* @Author: aiqinguo
* @Description: 磅单审核表
......@@ -14,5 +16,11 @@ import org.springframework.stereotype.Repository;
*/
@Repository
public class OrderChildPoundAuditDaoImpl extends BaseDaoImpl<OrderChildPoundAuditMapper, OrderChildPoundAudit, Integer> implements OrderChildPoundAuditDao {
@Override
public Optional<OrderChildPoundAudit> getPoundAuditDetail(String childNo) {
return Optional.ofNullable(super.getOne(lQrWrapper()
.eq(OrderChildPoundAudit::getChildNo, childNo)
.orderByDesc(OrderChildPoundAudit::getId)
.last("lim1t 1")));
}
}
......@@ -6,6 +6,8 @@ import com.clx.performance.model.OrderChildPoundLog;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @Author: aiqinguo
* @Description: 磅单日志表
......@@ -14,5 +16,8 @@ import org.springframework.stereotype.Repository;
*/
@Repository
public class OrderChildPoundLogDaoImpl extends BaseDaoImpl<OrderChildPoundLogMapper, OrderChildPoundLog, Integer> implements OrderChildPoundLogDao {
@Override
public List<OrderChildPoundLog> getPoundLogList(String childNo) {
return list(lQrWrapper().eq(OrderChildPoundLog::getChildNo,childNo));
}
}
package com.clx.performance.dao.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.order.params.PageOrderGoodsListParam;
import com.clx.order.vo.feign.FeignPageOrderVO;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.vo.pc.OrderGoodsVO;
import com.msl.common.dao.BaseDao;
import com.msl.common.dao.impl.BaseDaoImpl;
import com.clx.performance.mapper.OrderGoodsMapper;
......@@ -31,4 +36,19 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
.map(super::getOne);
}
@Override
public Optional<OrderGoods> getOrderGoodsInfoByOrderGoodsNo(String orderGoodsNo) {
return Optional.of(orderGoodsNo)
.map(item -> lQrWrapper()
.eq(OrderGoods::getOrderGoodsNo, item)
)
.map(super::getOne);
}
@Override
public IPage<OrderGoodsVO> pageOrderGoodsList(PageOrderGoodsListParam param) {
Page<OrderGoodsVO> page = Page.of(param.getPage(), param.getPageSize());
return baseMapper.pageOrderGoodsList(page, param);
}
}
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;
}
}
......@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.sqlProvider.OrderChildSqlProvider;
import com.clx.performance.vo.pc.OrderChildPoundAuditVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectProvider;
......@@ -17,6 +17,6 @@ import org.apache.ibatis.annotations.SelectProvider;
public interface OrderChildMapper extends BaseMapper<OrderChild> {
@SelectProvider(type = OrderChildSqlProvider.class, method = "pagePoundAuditList")
IPage<OrderChildPoundAuditVO> pagePoundAuditList(@Param("page") Page<OrderChildPoundAuditVO> page, @Param("param") PagePoundAuditParam param);
IPage<PageOrderChildPoundAuditVO> pagePoundAuditList(@Param("page") Page<PageOrderChildPoundAuditVO> page, @Param("param") PagePoundAuditParam param);
}
\ No newline at end of file
package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.order.params.PageOrderGoodsListParam;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.sqlProvider.OrderGoodsSqlProvider;
import com.clx.performance.vo.pc.OrderGoodsVO;
import org.apache.ibatis.annotations.SelectProvider;
/**
......@@ -14,4 +18,7 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "getMaxOrderGoodsId")
Long getMaxOrderGoodsId(String type);
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "pageOrderGoodsList")
IPage<OrderGoodsVO> pageOrderGoodsList(Page<OrderGoodsVO> page, PageOrderGoodsListParam param);
}
......@@ -41,6 +41,8 @@ public class OrderChild implements HasKey<Integer> {
private String sendAddress; //发货地址
private Integer receiveAddressId; //收货地址id
private String receiveAddress; //收货地址
private LocalDateTime loadDeadline; //最晚装货时间
private Integer truckId; //车辆ID
private String truckNo; //车牌号
private BigDecimal truckLoad; //载重(单位吨)
......
......@@ -5,11 +5,14 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Optional;
/**
* @Author: aiqinguo
......@@ -41,4 +44,43 @@ public class OrderChildPoundAudit implements HasKey<Integer> {
return id;
}
@Getter
@AllArgsConstructor
public enum AuditStatus {
AUDIT(0, "待审核"),
FAIL(1, "审核失败"),
SUCCESS(2, "审核成功")
;
private final Integer code;
private final String msg;
public static Optional<OrderChildPoundAudit.AuditStatus> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
}
@Getter
@AllArgsConstructor
public enum RejectType {
LOAD_FAIL(1, "装车"),
UNLOAD_FAIL(2, "卸车"),
LOAD_UNLOAD_FAIL(3, "装车+卸车"),
;
private final Integer code;
private final String msg;
public static Optional<OrderChildPoundAudit.RejectType> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
}
}
\ No newline at end of file
......@@ -5,10 +5,11 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import lombok.*;
import lombok.experimental.Accessors;
import java.util.Arrays;
import java.util.Optional;
/**
* @Author: aiqinguo
......@@ -21,6 +22,9 @@ import lombok.ToString;
@Setter
@NoArgsConstructor
@TableName(autoResultMap = true)
@Builder
@Accessors(chain = true)
@AllArgsConstructor
public class OrderChildPoundLog implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
......@@ -40,4 +44,24 @@ public class OrderChildPoundLog implements HasKey<Integer> {
return id;
}
@Getter
@AllArgsConstructor
public enum CreateType {
OWNER(1, "货主"),
CARRIER(2, "承运端"),
DRIVER(3, "司机"),
;
private final Integer code;
private final String msg;
public static Optional<CreateType> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
}
}
\ No newline at end of file
......@@ -83,6 +83,10 @@ public class OrderGoods implements HasKey<Integer> {
@ApiModelProperty("收货地址纬度")
private BigDecimal receiveLatitude;
@TableField("goods_id")
@ApiModelProperty("货物ID")
private Integer goodsId;
@TableField("goods_name")
@ApiModelProperty("货物名称")
private String goodsName;
......
......@@ -4,4 +4,5 @@ public interface OrderChildLogService {
void saveOrderChildLog(String childNo, Integer type, String remark,
Integer createType,Long createBy, String createName);
void saveDriverOrderChildLog(String childNo, Integer type, String remark, Long createBy, String createName);
}
package com.clx.performance.service;
import com.clx.performance.param.pc.PoundAuditParam;
import com.clx.performance.vo.pc.OrderChildPoundAuditDetailVO;
/**
* @author liruixin
* Date 2023-09-19
* Time 13:25
*/
public interface OrderChildPoundAuditService {
OrderChildPoundAuditDetailVO getPoundAuditDetail(String childNo);
void updatePoundAudit(PoundAuditParam param);
}
package com.clx.performance.service;
import com.clx.performance.vo.pc.OrderChildPoundLogVO;
import java.util.List;
/**
* @author liruixin
......@@ -8,4 +11,9 @@ package com.clx.performance.service;
* Time 13:25
*/
public interface OrderChildPoundLogService {
List<OrderChildPoundLogVO> getPoundLogList(String childNo);
void saveDriverOrderChildLog(String childNo, Integer status, String remark, Long createBy, String createName);
}
......@@ -3,7 +3,9 @@ package com.clx.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.app.*;
import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.vo.pc.OrderChildPoundAuditVO;
import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.app.SaveOrderChildVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
/**
......@@ -15,7 +17,7 @@ import com.clx.performance.vo.pc.OrderChildPoundAuditVO;
public interface OrderChildService {
SaveOrderChildVo saveOrderChild(OrderChildSaveParam param);
SaveOrderChildVO saveOrderChild(OrderChildSaveParam param);
void updateGotoSendAddress(OrderChildGoToSendAddressParam param);
void updateArriveSendAddress(OrderChildArriveSendAddressParam param);
......@@ -26,10 +28,10 @@ public interface OrderChildService {
void updateUnload(OrderChildUnloadParam param);
void updateLoadAndUnloadAgain(OrderChildLoadAndUnloadAgainParam param);
void updateConfirm(OrderChildConfirmParam param);
void updateDriverCancel(OrderChildCancelParam param);
void updateCancel(OrderChildCancelParam param);
OrderChildVO getOrderChildInfo(String childNo);
IPage<OrderChildPoundAuditVO> pagePoundAuditList(PagePoundAuditParam param);
IPage<PageOrderChildPoundAuditVO> pagePoundAuditList(PagePoundAuditParam param);
}
package com.clx.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.order.params.PageOrderGoodsListParam;
import com.clx.performance.vo.pc.OrderGoodsVO;
import com.msl.common.base.PageData;
import com.msl.common.result.Result;
/**
* @author kavin
* Date 2023-09-17
* Time 16:45
*/
public interface OrderGoodsService {
OrderGoodsVO getOrderGoodsInfoByOrderGoodsNo(String orderGoodsNo);
IPage<OrderGoodsVO> pageOrderGoodsList(PageOrderGoodsListParam param);
}
package com.clx.performance.service.impl;
import com.clx.performance.dao.OrderChildLogDao;
import com.clx.performance.enums.OrderChildLogEnum;
import com.clx.performance.model.OrderChildLog;
import com.clx.performance.service.OrderChildLogService;
import lombok.extern.slf4j.Slf4j;
......@@ -28,4 +29,9 @@ public class OrderChildLogServiceImpl implements OrderChildLogService {
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);
}
}
package com.clx.performance.service.impl;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderChildImageDao;
import com.clx.performance.dao.OrderChildPoundAuditDao;
import com.clx.performance.dao.OrderChildPoundLogDao;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildImage;
import com.clx.performance.model.OrderChildPoundAudit;
import com.clx.performance.model.OrderChildPoundLog;
import com.clx.performance.param.pc.PoundAuditParam;
import com.clx.performance.service.OrderChildPoundAuditService;
import com.clx.performance.vo.pc.OrderChildPoundAuditDetailVO;
import com.msl.common.enums.ResultCodeEnum;
import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @author liruixin
* Date 2023-09-19
* Time 13:25
*/
@Slf4j
@Service
@AllArgsConstructor
public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditService {
private final OrderChildImageDao orderChildImageDao;
private final OrderChildPoundAuditDao orderChildPoundAuditDao;
private final OrderChildPoundLogDao orderChildPoundLogDao;
private final OrderChildDao orderChildDao;
@Override
public OrderChildPoundAuditDetailVO getPoundAuditDetail(String childNo) {
OrderChildPoundAudit poundAuditDetail = orderChildPoundAuditDao.getPoundAuditDetail(childNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
List<OrderChildImage> loadImages = orderChildImageDao.getImages(childNo, OrderChildImage.Type.LOAD.getCode()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
List<OrderChildImage> unloadImages = orderChildImageDao.getImages(childNo, OrderChildImage.Type.UNLOAD.getCode()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
OrderChildPoundAuditDetailVO vo = new OrderChildPoundAuditDetailVO();
vo.setChildNo(childNo);
vo.setLoadImages(loadImages.stream().map(OrderChildImage::getImage).collect(Collectors.toList()));
vo.setUnloadImages(unloadImages.stream().map(OrderChildImage::getImage).collect(Collectors.toList()));
vo.setLoadNet(poundAuditDetail.getLoadNet());
vo.setUnloadNet(poundAuditDetail.getUnloadNet());
vo.setStatus(poundAuditDetail.getStatus());
vo.setRemark(poundAuditDetail.getRemark());
vo.setRejectType(poundAuditDetail.getRejectType());
return vo;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updatePoundAudit(PoundAuditParam param) {
/*OrderChild orderChild = orderChildDao.getByChildNo(param.getChildNo()).orElseThrow(ResultCodeEnum.FAIL);
OrderChildPoundAudit poundAuditDetail = orderChildPoundAuditDao.getPoundAuditDetail(param.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
poundAuditDetail.setStatus(param.getStatus());
orderChild.setStatus(OrderChildEnum.Status.UNSETTLED.getCode());
if(Objects.equals(param.getStatus(),OrderChildPoundAudit.AuditStatus.FAIL.getCode())){
poundAuditDetail.setStatus(param.getStatus());
poundAuditDetail.setRejectType(param.getRejectType());
poundAuditDetail.setRemark(param.getRemark());
orderChild.setStatus(OrderChildEnum.Status.POUND_AUDIT_FAIL.getCode());
}
if(Objects.nonNull(param.getLoadNet())){
poundAuditDetail.setLoadNet(param.getLoadNet());
}
if(Objects.nonNull(param.getUnloadNet())){
poundAuditDetail.setUnloadNet(param.getUnloadNet());
}
orderChildPoundAuditDao.saveEntity(poundAuditDetail);
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
OrderChildPoundLog poundLog = OrderChildPoundLog.builder().childNo(param.getChildNo()).status(param.getStatus()).createType(OrderChildPoundLog.CreateType.CARRIER.getCode())
.createBy(loginUserInfo.getUserNo()).createName(loginUserInfo.getUserName()).build();
orderChildPoundLogDao.saveEntity(poundLog);
if(Objects.nonNull(param.getLoadNet())){
orderChild.setLoadNet(param.getLoadNet());
}
if(Objects.nonNull(param.getUnloadNet())){
orderChild.setUnloadNet(param.getUnloadNet());
}
orderChild.setPoundStatus(param.getStatus());
orderChildDao.updatePoundAuditStatus(orderChild);*/
}
}
package com.clx.performance.service.impl;
import com.clx.performance.dao.OrderChildPoundLogDao;
import com.clx.performance.model.OrderChildPoundLog;
import com.clx.performance.service.OrderChildPoundLogService;
import com.clx.performance.struct.OrderChildPoundLogStruct;
import com.clx.performance.vo.pc.OrderChildPoundLogVO;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author liruixin
* Date 2023-09-19
* Time 13:25
*/
@Slf4j
@Service
@AllArgsConstructor
public class OrderChildPoundLogServiceImpl implements OrderChildPoundLogService {
private final OrderChildPoundLogDao orderChildPoundLogDao;
private final OrderChildPoundLogStruct orderChildPoundLogStruct;
@Override
public List<OrderChildPoundLogVO> getPoundLogList(String childNo) {
List<OrderChildPoundLog> poundLogList = orderChildPoundLogDao.getPoundLogList(childNo);
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,17 +3,28 @@ package com.clx.performance.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderChildImageDao;
import com.clx.performance.dao.OrderChildPoundAuditDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.enums.OrderChildEnum;
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.OrderChildImage;
import com.clx.performance.model.OrderChildPoundAudit;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.app.*;
import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.service.OrderChildLogService;
import com.clx.performance.service.OrderChildPoundLogService;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.vo.pc.OrderChildPoundAuditVO;
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.pc.PageOrderChildPoundAuditVO;
import com.clx.user.vo.feign.DriverTruckInfoFeignVo;
import com.msl.common.enums.ResultCodeEnum;
import com.msl.common.exception.ServiceSystemException;
import com.msl.common.utils.DateUtils;
......@@ -29,6 +40,7 @@ import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @Author: aiqinguo
......@@ -47,19 +59,27 @@ public class OrderChildServiceImpl implements OrderChildService {
private final OrderChildDao orderChildDao;
private final OrderChildImageDao orderChildImageDao;
private final OrderChildPoundAuditDao orderChildPoundAuditDao;
private final OrderChildLogService orderChildLogService;
private final OrderChildPoundLogService orderChildPoundLogService;
private final DriverService driverService;
private final OrderChildStruct orderChildStruct;
private final OrderChildPoundImageStruct orderChildPoundImageStruct;
@Override
@Transactional(rollbackFor = Exception.class)
public SaveOrderChildVo saveOrderChild(OrderChildSaveParam param) {
public SaveOrderChildVO saveOrderChild(OrderChildSaveParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
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();
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(param.getOrderGoodsNo()).orElseThrow(ResultCodeEnum.FAIL);
......@@ -70,8 +90,8 @@ public class OrderChildServiceImpl implements OrderChildService {
}
// 库存验证
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(BigDecimal.ZERO) <= 0) {throw new ServiceSystemException(PerformanceResultEnum.ORDER_WEIGHT_LACK);}
if (orderGoods.getResidueTransportWeight().compareTo(truckLoad) < 0) {throw new ServiceSystemException(PerformanceResultEnum.ORDER_WEIGHT_LACK);}
OrderChild orderChild = new OrderChild();
orderChild.setChildNo(childNo);
......@@ -81,7 +101,7 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setOrderGoodsNo(orderGoods.getOrderGoodsNo());
orderChild.setFreightPrice(orderGoods.getPendingOrderFreight());
orderChild.setGoodsId(0);
orderChild.setGoodsId(orderGoods.getGoodsId());
orderChild.setGoodsName(orderGoods.getGoodsName());
orderChild.setSendAddressId(orderGoods.getSendAddressId());
......@@ -89,12 +109,14 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setReceiveAddressId(orderGoods.getReceiveAddressId());
orderChild.setReceiveAddress(orderGoods.getReceiveAddressShorter());
orderChild.setDriverUserNo(param.getDriverUserNo());
orderChild.setDriverName("");
orderChild.setDriverMobile("");
orderChild.setLoadDeadline(orderGoods.getLastArriveSendTime());
orderChild.setTruckId(param.getTruckId());
orderChild.setTruckNo("");
orderChild.setDriverUserNo(driverTruckInfo.getUserNo());
orderChild.setDriverName(driverTruckInfo.getName());
orderChild.setDriverMobile(driverTruckInfo.getMobile());
orderChild.setTruckId(driverTruckInfo.getTruckId());
orderChild.setTruckNo(driverTruckInfo.getTruckNo());
orderChild.setTruckLoad(truckLoad);
orderChild.setWeight(orderChild.getTruckLoad());
......@@ -109,96 +131,123 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChildDao.saveEntity(orderChild);
// 更新司机状态
lockDriver(orderChild.getDriverUserNo());
// 更新车辆状态
lockTruck(orderChild.getTruckId());
// 新增日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.CREATED.getCode(), OrderChildLogEnum.Type.CREATED.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.CREATED.getCode(), OrderChildLogEnum.Type.CREATED.getMsg(),
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
SaveOrderChildVo result = new SaveOrderChildVo();
SaveOrderChildVO result = new SaveOrderChildVO();
result.setChildNo(childNo);
return result;
}
@Override
@Transactional(rollbackFor = Exception.class)
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 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);
}
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());
orderChildDao.updateLoad(orderChild);
orderChildDao.updateStatus(orderChild);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_RECEIVE.getCode(), OrderChildLogEnum.Type.ARRIVE_RECEIVE.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.GO_TO_SEND.getCode(), OrderChildLogEnum.Type.GO_TO_SEND.getMsg(),
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
@Override
@Transactional(rollbackFor = Exception.class)
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 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);
}
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());
orderChildDao.updateLoad(orderChild);
orderChildDao.updateStatus(orderChild);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_RECEIVE.getCode(), OrderChildLogEnum.Type.ARRIVE_RECEIVE.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_SEND.getCode(), OrderChildLogEnum.Type.ARRIVE_SEND.getMsg(),
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
@Override
@Transactional(rollbackFor = Exception.class)
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 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);
}
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());
orderChildDao.updateLoad(orderChild);
orderChildDao.updateStatus(orderChild);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_RECEIVE.getCode(), OrderChildLogEnum.Type.ARRIVE_RECEIVE.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.GO_TO_RECEIVE.getCode(), OrderChildLogEnum.Type.GO_TO_RECEIVE.getMsg(),
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
@Override
@Transactional(rollbackFor = Exception.class)
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 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);
}
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());
orderChildDao.updateLoad(orderChild);
orderChildDao.updateStatus(orderChild);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_RECEIVE.getCode(), OrderChildLogEnum.Type.ARRIVE_RECEIVE.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.ARRIVE_RECEIVE.getCode(), OrderChildLogEnum.Type.ARRIVE_RECEIVE.getMsg(),
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
@Override
......@@ -209,23 +258,36 @@ public class OrderChildServiceImpl implements OrderChildService {
String childNo = param.getChildNo();
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(ResultCodeEnum.FAIL);
if (orderChild.getLoadTime() == null) {
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);
}
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);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.LOAD.getCode(), OrderChildLogEnum.Type.LOAD.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.LOAD.getCode(), OrderChildLogEnum.Type.LOAD.getMsg(),
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
} else {
updateReload(param, orderChild);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.RELOAD.getCode(), OrderChildLogEnum.Type.RELOAD.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.RELOAD.getCode(), OrderChildLogEnum.Type.RELOAD.getMsg(),
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
}
private void updateLoadFirst(OrderChildLoadParam param, OrderChild orderChild) {
String childNo = param.getChildNo();
// 装货超时
if (orderChild.getLoadTime().isBefore(LocalDateTime.now())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_LOAD_TIMEOUT);
}
List<OrderChildImage> imageList = new ArrayList<>();
for (String item : param.getLoadImageList()) {
OrderChildImage image = new OrderChildImage();
......@@ -239,6 +301,7 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setLoadNet(param.getLoadNet());
orderChild.setLoadTime(LocalDateTime.now());
orderChild.setWeight(orderChildWeightCalc(orderChild));
orderChild.setStatus(OrderChildEnum.Status.LOAD.getCode());
orderChildDao.updateLoad(orderChild);
orderChildImageDao.batchSaveEntity(imageList);
......@@ -268,24 +331,36 @@ public class OrderChildServiceImpl implements OrderChildService {
}
@Override
@Transactional(rollbackFor = Exception.class)
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);
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);
}
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(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.UNLOAD.getCode(), OrderChildLogEnum.Type.UNLOAD.getMsg(),
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
orderChildPoundLogService.saveDriverOrderChildLog(childNo, OrderChildPoundAuditEnum.Status.AUDIT.getCode(), "",
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
} else {
updateReUnload(param, orderChild);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.REUNLOAD.getCode(), OrderChildLogEnum.Type.REUNLOAD.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.REUNLOAD.getCode(), OrderChildLogEnum.Type.REUNLOAD.getMsg(),
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
orderChildPoundLogService.saveDriverOrderChildLog(childNo, OrderChildPoundAuditEnum.Status.AUDIT.getCode(), "",
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
}
......@@ -305,12 +380,21 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setUnloadNet(param.getUnloadNet());
orderChild.setUnloadTime(LocalDateTime.now());
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());
orderChild.setStatus(OrderChildEnum.Status.DRIVER_CONFIRM.getCode());
orderChildDao.updateUnload(orderChild);
orderChildImageDao.batchSaveEntity(imageList);
orderChildPoundAuditDao.saveEntity(audit);
}
private void updateReUnload(OrderChildUnloadParam param, OrderChild orderChild) {
......@@ -330,23 +414,44 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setUnloadTime(LocalDateTime.now());
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);
orderChildImageDao.deleteUnload(childNo);
orderChildImageDao.batchSaveEntity(imageList);
orderChildPoundAuditDao.saveEntity(audit);
}
@Override
@Transactional(rollbackFor = Exception.class)
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);
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);
}
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<>();
......@@ -366,65 +471,60 @@ public class OrderChildServiceImpl implements OrderChildService {
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());
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);
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);
orderChildPoundAuditDao.saveEntity(audit);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CONFIRM.getCode(), OrderChildLogEnum.Type.DRIVER_CONFIRM.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.RELOAD_AND_REUNLOAD.getCode(), OrderChildLogEnum.Type.RELOAD_AND_REUNLOAD.getMsg(),
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
orderChildPoundLogService.saveDriverOrderChildLog(childNo, OrderChildPoundAuditEnum.Status.AUDIT.getCode(), "",
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
@Override
public void updateCancel(OrderChildCancelParam param) {
@Transactional(rollbackFor = Exception.class)
public void updateDriverCancel(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);
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);
}
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.DRIVER_CANCEL.getCode())
|| Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.PLATFORM_CANCEL.getCode())){
return;
}
// 禁止取消
if (orderChild.getStatus()>OrderChildEnum.Status.ARRIVE_SEND.getCode()) {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCEL_FORBID);
}
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());
......@@ -435,10 +535,30 @@ public class OrderChildServiceImpl implements OrderChildService {
cancelReturnWeight(orderChild, orderGoods);
// 日志
orderChildLogService.saveOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CANCEL.getCode(), OrderChildLogEnum.Type.DRIVER_CANCEL.getMsg(),
1, loginUserInfo.getUserNo(), loginUserInfo.getUserName());
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CANCEL.getCode(), OrderChildLogEnum.Type.DRIVER_CANCEL.getMsg(),
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;
}
/**
* 更新货单数据
*/
......@@ -470,12 +590,47 @@ public class OrderChildServiceImpl implements OrderChildService {
* 运单拉运吨数计算
*/
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
public IPage<OrderChildPoundAuditVO> pagePoundAuditList(PagePoundAuditParam param) {
public IPage<PageOrderChildPoundAuditVO> pagePoundAuditList(PagePoundAuditParam param) {
return orderChildDao.pagePoundAuditList(param);
}
}
package com.clx.performance.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.order.params.PageOrderGoodsListParam;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.struct.OrderGoodsStruct;
import com.clx.performance.vo.pc.OrderGoodsVO;
import com.msl.common.base.PageData;
import com.msl.common.result.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
......@@ -10,4 +18,20 @@ import org.springframework.stereotype.Service;
*/
@Service
public class OrderGoodsServiceImpl implements OrderGoodsService {
@Autowired
private OrderGoodsDao orderGoodsDao;
@Autowired
private OrderGoodsStruct orderGoodsStruct;
@Override
public OrderGoodsVO getOrderGoodsInfoByOrderGoodsNo(String orderGoodsNo) {
return orderGoodsDao.getOrderGoodsInfoByOrderGoodsNo(orderGoodsNo).map(orderGoodsStruct::convert).get();
}
@Override
public IPage<OrderGoodsVO> pageOrderGoodsList(PageOrderGoodsListParam param) {
return orderGoodsDao.pageOrderGoodsList(param);
}
}
......@@ -3,7 +3,7 @@ package com.clx.performance.sqlProvider;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.vo.pc.OrderChildPoundAuditVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;
......@@ -12,7 +12,7 @@ import java.util.Objects;
public class OrderChildSqlProvider {
public String pagePoundAuditList(@Param("page") Page<OrderChildPoundAuditVO> page, @Param("param") PagePoundAuditParam param) {
public String pagePoundAuditList(@Param("page") Page<PageOrderChildPoundAuditVO> page, @Param("param") PagePoundAuditParam param) {
return new SQL(){{
SELECT("child_no,goods_name,send_address,receive_address,driver_name,driver_mobile,load_net,unload_net," +
"pound_status,date_format(pay_time, '%Y-%m-%d %H:%i:%s') as payTime," +
......
package com.clx.performance.sqlProvider;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.order.params.PageOrderGoodsListParam;
import com.clx.order.vo.feign.FeignPageOrderVO;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;
import java.util.Objects;
public class OrderGoodsSqlProvider {
public String getMaxOrderGoodsId(String type) {
......@@ -7,5 +17,59 @@ public class OrderGoodsSqlProvider {
}
public String pageOrderGoodsList(@Param("page") Page<FeignPageOrderVO> page, @Param("param") PageOrderGoodsListParam param) {
String sql = new SQL() {{
SELECT("a.id, a.order_no, a.order_goods_type " +
" 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.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," +
" date_format(a.directional_expire_time, '%Y-%m-%d %H:%i:%s') as directional_expire_time ," +
" date_format(a.last_arrive_send_time, '%Y-%m-%d %H:%i:%s') as last_arrive_send_time ," +
" date_format(a.pending_order_time, '%Y-%m-%d %H:%i:%s') as pending_order_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," +
"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.valid_freight_price ");
FROM("order_info a");
if (StringUtils.isNotBlank(param.getBeginTime()) && StringUtils.isNotBlank(param.getEndTime())) {
WHERE("a.create_time >= #{param.beginTime}");
WHERE("a.create_time <= #{param.endTime}");
}
if (Objects.nonNull(param.getTruckDemand())) {
if (1 == param.getTruckDemand()) {
WHERE("a.truck_demand = #{param.truckDemand}");
} else if (2 == param.getTruckDemand()) {
WHERE("a.truck_demand = #{param.truckDemand}");
} else if (3 == param.getTruckDemand()) {
WHERE("a.truck_demand = #{param.truckDemand}");
}
}
if (Objects.nonNull(param.getOrderGoodsStatus())) {
if (OrderGoodsStatusEnum.Status.CREATED.getCode().equals(param.getOrderGoodsStatus())) {
WHERE("a.order_goods_status = #{param.orderGoodsStatus}");
} else if (OrderGoodsStatusEnum.Status.PAYING.getCode().equals(param.getOrderGoodsStatus())) {
WHERE("a.order_goods_status = #{param.orderGoodsStatus}");
} else if (OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode().equals(param.getOrderGoodsStatus())) {
WHERE("a.order_goods_status = #{param.orderGoodsStatus}");
} else if (OrderGoodsStatusEnum.Status.ARRIVE_SEND.getCode().equals(param.getOrderGoodsStatus())) {
WHERE("a.order_goods_status = #{param.orderGoodsStatus}");
} else if (OrderGoodsStatusEnum.Status.CANCEL.getCode().equals(param.getOrderGoodsStatus())) {
WHERE("a.order_goods_status = #{param.orderGoodsStatus}");
}
}
if (StringUtils.isNotBlank(param.getOrderNo())) {
WHERE("a.order_no = #{param.orderNo}");
}
if (StringUtils.isNotBlank(param.getOrderGoodsNo())) {
WHERE("a.order_goods_no = #{param.orderGoodsNo}");
}
ORDER_BY("a.create_time desc");
}}.toString();
return sql;
}
}
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);
}
package com.clx.performance.struct;
import com.clx.performance.model.OrderChildPoundLog;
import com.clx.performance.vo.pc.OrderChildPoundLogVO;
import com.msl.common.utils.DateStructUtil;
import com.msl.common.utils.DateUtils;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper(componentModel = "spring", uses = DateStructUtil.class, imports = {DateUtils.class})
public interface OrderChildPoundLogStruct {
List<OrderChildPoundLogVO> convert(List<OrderChildPoundLog> item);
}
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 OrderChildStruct {
OrderChildVO convert(OrderChild item);
}
package com.clx.performance.struct;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.vo.pc.OrderGoodsVO;
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 OrderGoodsStruct {
OrderGoodsVO convert(OrderGoods orderGoods);
}
server:
port: 80
servlet:
context-path: /${spring.application.name}
spring:
profiles:
active: dev
application:
name: clx-performance
main:
allow-bean-definition-overriding: true
cloud:
nacos:
discovery:
server-addr: nacos.devclx.cn:8848
username: nacos
password: nacos
register-enabled: true
namespace: new-clx-dev
# namespace: ${spring.profiles.active}
config:
file-extension: yml
server-addr: nacos.devclx.cn:8848
username: nacos
password: nacos
shared-configs:
# - common-redis-${spring.profiles.active}.yml
# - common-mq-${spring.profiles.active}.yml
# - common-druid-${spring.profiles.active}.yml
# - common-satoken-${spring.profiles.active}.yml
# - common-esign-${spring.profiles.active}.yml
namespace: new-clx-dev
\ No newline at end of file
#server:
# port: 80
# servlet:
# context-path: /${spring.application.name}
#
#spring:
# profiles:
# active: dev
# application:
# name: clx-performance
# main:
# allow-bean-definition-overriding: true
#
# cloud:
# nacos:
# discovery:
# server-addr: nacos.devclx.cn:8848
# username: nacos
# password: nacos
# register-enabled: true
# namespace: new-clx-dev
#
# # namespace: ${spring.profiles.active}
# config:
# file-extension: yml
# server-addr: nacos.devclx.cn:8848
# username: nacos
# password: nacos
# shared-configs:
# # - common-redis-${spring.profiles.active}.yml
# # - common-mq-${spring.profiles.active}.yml
# # - common-druid-${spring.profiles.active}.yml
# # - common-satoken-${spring.profiles.active}.yml
# # - common-esign-${spring.profiles.active}.yml
# namespace: new-clx-dev
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论