提交 4d9f8fa3 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
......@@ -54,5 +54,5 @@ public class OrderGoodsChildParams {
private String userName;
@ApiModelProperty("车辆列表")
private List<String> trackList;
private List<String> truckList;
}
......@@ -22,7 +22,7 @@ public class PageCarrierOrderListParam extends PageParam {
@ApiModelProperty(value = "联系人(货主)id")
private Integer contactId;
@ApiModelProperty(value = "订单状态:2报价已确认 3平台已承接 7 挂单中 8运输中 11 挂单中")
@ApiModelProperty(value = "订单状态:2:报价已确认 3:平台已承接 7:挂单中 8:运输中 11:已挂单")
private Integer orderStatus;
@ApiModelProperty(value = "开始时间", example = "2023-09-09 12:00:01", required = true)
......
......@@ -21,9 +21,6 @@ public class PageOrderGoodsListParam extends PageParam {
@ApiModelProperty(value = "货单编号")
private String orderGoodsNo;
@ApiModelProperty(value = "货单编号类型")
private String orderGoodsType;
@ApiModelProperty(value = "货单状态: 10:已挂单 20:挂单中 30:运输中 40:已完成 50:已取消")
private Integer orderGoodsStatus;
......
......@@ -4,7 +4,9 @@ import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
public enum OrderChildEnum {
;
......@@ -82,5 +84,30 @@ public enum OrderChildEnum {
}
}
// 运输中
public static final List<Integer> TRANSIT_lIST = Arrays.asList(
Status.CREATED.getCode(),
Status.PAY.getCode(),
Status.GO_TO_SEND.getCode(),
Status.ARRIVE_SEND.getCode(),
Status.LOAD.getCode(),
Status.GO_TO_RECEIVE.getCode(),
Status.ARRIVE_RECEIVE.getCode(),
Status.UNLOAD.getCode(),
Status.UNSETTLE.getCode()
);
public static ConcurrentHashMap<Integer, String> map = new ConcurrentHashMap();
static {
for(OrderChildEnum.Status orderChildStatusEnum : OrderChildEnum.Status.values()){
map.put(orderChildStatusEnum.getCode(), orderChildStatusEnum.getName());
}
}
}
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
public enum OrderGoodsPendingOrderWayStatusEnum {
;
@Getter
@AllArgsConstructor
public enum Status {
CREATED(1, "公开派单"),
PAYING(2, "定向派单"),
;
private final Integer code;
private final String name;
public static Optional<Status> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.code.equals(code)).findFirst();
}
}
}
package com.clx.performance.feign;
import com.msl.common.result.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
......@@ -17,6 +18,6 @@ public interface PerformanceFeign {
* @return
*/
@GetMapping(value = {"clx-performance/feign/orderGoodsDriverTruck/getTrucksByOrderGoodsNo"})
List<Integer> getTrucksByOrderGoodsNo(@RequestParam("orderGoodsNo") @NotBlank(message = "货单编号不可为空") String orderGoodsNo);
Result<List<Integer>> getTrucksByOrderGoodsNo(@RequestParam("orderGoodsNo") @NotBlank(message = "货单编号不可为空") String orderGoodsNo);
}
......@@ -10,7 +10,7 @@ import javax.validation.constraints.NotBlank;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildArriveReceiveAddressParam {
public class OrderChildArriveReceiveAddressParam extends PositionParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
......
......@@ -10,7 +10,7 @@ import javax.validation.constraints.NotBlank;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildArriveSendAddressParam {
public class OrderChildArriveSendAddressParam extends PositionParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
......
......@@ -10,7 +10,7 @@ import javax.validation.constraints.NotBlank;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildDriverCancelParam {
public class OrderChildDriverCancelParam extends PositionParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
......
......@@ -10,7 +10,7 @@ import javax.validation.constraints.NotBlank;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildDriverConfirmParam {
public class OrderChildDriverConfirmParam extends PositionParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
......
package com.clx.performance.param.app;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildEstimatedFreightParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
private String childNo;
@ApiModelProperty(value = "装货净重(单位吨)", example = "1.23")
@NotNull(message = "装货净重不能为空")
private BigDecimal loadNet;
}
......@@ -10,7 +10,7 @@ import javax.validation.constraints.NotBlank;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildGoToReceiveAddressParam {
public class OrderChildGoToReceiveAddressParam extends PositionParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
......
......@@ -10,7 +10,7 @@ import javax.validation.constraints.NotBlank;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildGoToSendAddressParam {
public class OrderChildGoToSendAddressParam extends PositionParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
......
......@@ -14,7 +14,7 @@ import java.util.List;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildLoadAndUnloadAgainParam {
public class OrderChildLoadAndUnloadAgainParam extends PositionParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
......
......@@ -14,7 +14,7 @@ import java.util.List;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildLoadParam {
public class OrderChildLoadParam extends PositionParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
......
......@@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildSaveParam {
public class OrderChildSaveParam extends PositionParam {
@ApiModelProperty(value = "货单编号", example = "100000000")
@NotBlank(message = "货单编号不能为空")
......
......@@ -14,7 +14,7 @@ import java.util.List;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildUnloadParam {
public class OrderChildUnloadParam extends PositionParam {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
......
......@@ -13,17 +13,11 @@ import lombok.ToString;
@ToString
public class PageOrderChildOfDriverParam extends PageParam {
@ApiModelProperty(value = "搜索内容", example = "北京")
private String content;
@ApiModelProperty(value="状态",example = "1")
@ApiModelProperty(value="状态 0全部 1运输中 2已完成 3已结算 4已取消",example = "1")
private Integer status;
@ApiModelProperty(value="开始时间")
private String beginTime;
@ApiModelProperty(value = "结束时间")
private String endTime;
public Integer getStatus() {
return status!=null && status==0? null : status;
}
@ApiModelProperty(value = "用户编号", hidden = true)
private Long userNo;
......
package com.clx.performance.param.app;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@NoArgsConstructor
@ToString
public class PageOrderChildOfDriverSearchParam extends PageParam {
@ApiModelProperty(value = "搜索内容", example = "北京")
private String content;
@ApiModelProperty(value = "用户编号", hidden = true)
private Long userNo;
}
package com.clx.performance.param.app;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
@Getter
@Setter
@NoArgsConstructor
public class PositionParam {
@ApiModelProperty(value = "经度")
private BigDecimal longitude;
@ApiModelProperty(value = "纬度")
private BigDecimal latitude;
}
package com.clx.performance.param.pc;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @Author liruixin
* @create 2023-09-19 13:33
*/
@Getter
@Setter
@NoArgsConstructor
@ToString
public class PageCarrierOrderChildParam extends PageParam {
@ApiModelProperty(value="运单编号",example = "201457878")
private String childNo;
@ApiModelProperty(value="司机姓名",example = "募资类")
private String driverName;
@ApiModelProperty(value="司机手机号",example = "12222222222")
private String driverMobile;
@ApiModelProperty(value="发货地址",example = "北京")
private String sendAddress;
@ApiModelProperty(value="收货地址",example = "黄羊城")
private String receiveAddress;
@ApiModelProperty(value="状态",example = "1")
private Integer status;
@ApiModelProperty(value="开始时间",example = "2020-01-01 10:10:10")
private String beginTime;
@ApiModelProperty(value = "结束时间",example = "2020-01-01 10:10:10")
private String endTime;
}
......@@ -32,7 +32,7 @@ public class PagePoundAuditParam extends PageParam {
@ApiModelProperty(value="收货地址",example = "黄羊城")
private String receiveAddress;
@ApiModelProperty(value="审核状态 0-待审核,1-审核失败, 2-审核成功",example = "1")
@ApiModelProperty(value="审核状态 0 待审核 1 审核通过 2 审核驳回",example = "1")
private Integer status;
@ApiModelProperty(value="开始时间",example = "2020-01-01 10:10:10")
......
......@@ -31,7 +31,7 @@ public class PoundAuditParam {
private String remark;
@NotNull(message = "审核状态不能为空")
@ApiModelProperty(value="审核状态 0-待审核,1-审核失败, 2-审核成功",example = "1")
@ApiModelProperty(value="审核状态 0 待审核 1 审核通过 2 审核驳回",example = "1")
private Integer status;
@ApiModelProperty(value="装货净重",example = "11")
......
package com.clx.performance.vo.app;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
@Getter
@Setter
@NoArgsConstructor
public class Address{
@ApiModelProperty(value="详细地址")
private String addressDetail;
@ApiModelProperty(value="地址简称")
private String address;
@ApiModelProperty(value = "经度")
private BigDecimal longitude;
@ApiModelProperty(value = "纬度")
private BigDecimal latitude;
@ApiModelProperty(value="联系人")
private String contact;
@ApiModelProperty(value="联系电话")
private String contactPhone;
}
\ No newline at end of file
package com.clx.performance.vo.app;
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;
@Getter
@Setter
@NoArgsConstructor
public class OrderChildEstimatedFreightVO {
@ApiModelProperty(value = "运费(元)", example = "12.34")
@MoneyOutConvert
private BigDecimal freight;
}
package com.clx.performance.vo.app;
import com.msl.common.convertor.type.MoneyOutConvert;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.math.BigDecimal;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class OrderChildFreightInfoVO {
@ApiModelProperty(value = "货物id", example = "1")
private Integer goodsId;
@ApiModelProperty(value = "货物名称", example = "煤")
private String goodsName;
@ApiModelProperty(value = "运费单价(元)", example = "1.23")
@MoneyOutConvert
private BigDecimal freightPrice;
@ApiModelProperty(value = "装货毛重(单位吨)", example = "1.23")
private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重(单位吨)", example = "1.23")
private BigDecimal loadTare;
@ApiModelProperty(value = "装货净重(单位吨)", example = "1.23")
private BigDecimal loadNet;
@ApiModelProperty(value = "卸货毛重(单位吨)", example = "1.23")
private BigDecimal unloadRough;
@ApiModelProperty(value = "卸货皮重(单位吨)", example = "1.23")
private BigDecimal unloadTare;
@ApiModelProperty(value = "卸货净重(单位吨)", example = "1.23")
private BigDecimal unloadNet;
@ApiModelProperty(value = "拉运重量(单位吨)", example = "1.23")
private BigDecimal weight;
@ApiModelProperty(value = "运费(元)(实际运费)", example = "1.23")
@MoneyOutConvert
private BigDecimal freight;
@ApiModelProperty(value = "总运费(元)", example = "1.23")
@MoneyOutConvert
private BigDecimal totalFreight;
public BigDecimal getTotalFreight() {
return freight;
}
@ApiModelProperty(value = "状态", example = "0")
private Integer status;
}
\ No newline at end of file
package com.clx.performance.vo.app;
import com.msl.common.convertor.type.MoneyOutConvert;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.math.BigDecimal;
import java.util.List;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class OrderChildPoundInfoVO {
@ApiModelProperty(value = "装货毛重(单位吨)", example = "1.23")
private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重(单位吨)", example = "1.23")
private BigDecimal loadTare;
@ApiModelProperty(value = "装货净重(单位吨)", example = "1.23")
private BigDecimal loadNet;
@ApiModelProperty(value = "卸货毛重(单位吨)", example = "1.23")
private BigDecimal unloadRough;
@ApiModelProperty(value = "卸货皮重(单位吨)", example = "1.23")
private BigDecimal unloadTare;
@ApiModelProperty(value = "卸货净重(单位吨)", example = "1.23")
private BigDecimal unloadNet;
@ApiModelProperty(value = "拉运重量(单位吨)", example = "1.23")
private BigDecimal weight;
@ApiModelProperty(value = "运费(元)", example = "1.23")
@MoneyOutConvert
private BigDecimal freight;
@ApiModelProperty(value = "磅单审核状态 0 待审核 1 审核通过 2 审核驳回", example = "0")
private Integer poundStatus;
@ApiModelProperty(value = "磅单审核驳回原因", example = "交货信息错误")
private String poundRemark;
@ApiModelProperty(value = "状态", example = "0")
private Integer status;
@ApiModelProperty(value = "装车磅单图片列表")
private List<String> loadImageList;
@ApiModelProperty(value = "卸车磅单图片列表")
private List<String> unloadImageList;
}
\ No newline at end of file
package com.clx.performance.vo.app;
import com.clx.performance.enums.OrderChildEnum;
import com.msl.common.convertor.type.MoneyOutConvert;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
......@@ -7,7 +9,6 @@ import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.NotEmpty;
import java.math.BigDecimal;
import java.util.List;
......@@ -25,79 +26,102 @@ import java.util.List;
@NoArgsConstructor
public class OrderChildVO {
@ApiModelProperty(value = "id", example = "")
@ApiModelProperty(value = "id", example = "1")
private Integer id;
@ApiModelProperty(value = "用户编号", example = "")
@ApiModelProperty(value = "用户编号", example = "10000000000")
private Long userNo;
@ApiModelProperty(value = "货主用户编号", example = "")
@ApiModelProperty(value = "货主用户编号", example = "100000000")
private Long ownerUserNo;
@ApiModelProperty(value = "货主名称", example = "")
@ApiModelProperty(value = "货主名称", example = "张三")
private String ownerName;
@ApiModelProperty(value = "运单编号", example = "")
@ApiModelProperty(value = "运单编号", example = "100000000")
private String childNo;
@ApiModelProperty(value = "货单编号", example = "")
@ApiModelProperty(value = "货单编号", example = "100000000")
private String orderGoodsNo;
@ApiModelProperty(value = "订单编号", example = "")
@ApiModelProperty(value = "订单编号", example = "10000000000")
private String orderNo;
@ApiModelProperty(value = "货物id", example = "")
@ApiModelProperty(value = "货物id", example = "1")
private Integer goodsId;
@ApiModelProperty(value = "货物名称", example = "")
@ApiModelProperty(value = "货物名称", example = "")
private String goodsName;
@ApiModelProperty(value = "运费单价(分)", example = "")
@ApiModelProperty(value = "运费单价(元)", example = "1.23")
@MoneyOutConvert
private BigDecimal freightPrice;
@ApiModelProperty(value = "发货地址id", example = "")
@ApiModelProperty(value = "发货地址id", example = "1")
private Integer sendAddressId;
@ApiModelProperty(value = "发货地址", example = "")
@ApiModelProperty(value = "发货地址", example = "朝阳")
private String sendAddress;
@ApiModelProperty(value = "收货地址id", example = "")
@ApiModelProperty(value = "收货地址id", example = "2")
private Integer receiveAddressId;
@ApiModelProperty(value = "收货地址", example = "")
@ApiModelProperty(value = "收货地址", example = "西城")
private String receiveAddress;
@ApiModelProperty(value = "最晚装货时间", example = "")
private String loadDeadline;
@ApiModelProperty(value = "车辆ID", example = "")
@ApiModelProperty(value = "车辆ID", example = "1")
private Integer truckId;
@ApiModelProperty(value = "车牌号", example = "")
@ApiModelProperty(value = "车牌号", example = "京A12345")
private String truckNo;
@ApiModelProperty(value = "载重(单位吨)", example = "")
@ApiModelProperty(value = "载重(单位吨)", example = "12.34")
private BigDecimal truckLoad;
@ApiModelProperty(value = "司机用户编号", example = "")
@ApiModelProperty(value = "车型", example = "挂车")
private String truckModel;
@ApiModelProperty(value = "司机用户编号", example = "1000000")
private Long driverUserNo;
@ApiModelProperty(value = "司机姓名", example = "")
@ApiModelProperty(value = "司机姓名", example = "张三")
private String driverName;
@ApiModelProperty(value = "司机手机号", example = "")
@ApiModelProperty(value = "司机手机号", example = "130000000")
private String driverMobile;
@ApiModelProperty(value = "装货毛重(单位吨)", example = "")
@ApiModelProperty(value = "装货毛重(单位吨)", example = "1.23")
private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重(单位吨)", example = "")
@ApiModelProperty(value = "装货皮重(单位吨)", example = "1.23")
private BigDecimal loadTare;
@ApiModelProperty(value = "装货净重(单位吨)", example = "")
@ApiModelProperty(value = "装货净重(单位吨)", example = "1.23")
private BigDecimal loadNet;
@ApiModelProperty(value = "卸货毛重(单位吨)", example = "")
@ApiModelProperty(value = "卸货毛重(单位吨)", example = "1.23")
private BigDecimal unloadRough;
@ApiModelProperty(value = "卸货皮重(单位吨)", example = "")
@ApiModelProperty(value = "卸货皮重(单位吨)", example = "1.23")
private BigDecimal unloadTare;
@ApiModelProperty(value = "卸货净重(单位吨)", example = "")
@ApiModelProperty(value = "卸货净重(单位吨)", example = "1.23")
private BigDecimal unloadNet;
@ApiModelProperty(value = "拉运重量(单位吨)", example = "")
@ApiModelProperty(value = "卸货磅单编号", example = "")
private String unloadPoundNo;
@ApiModelProperty(value = "拉运重量(单位吨)", example = "1.23")
private BigDecimal weight;
@ApiModelProperty(value = "运费(元)", example = "1.23")
@MoneyOutConvert
private BigDecimal freight;
@ApiModelProperty(value = "取消原因", example = "")
@ApiModelProperty(value = "取消原因", example = "抢错了")
private String cancelRemark;
@ApiModelProperty(value = "磅单审核状态 0 待审核 1 审核通过 2 审核驳回", example = "")
@ApiModelProperty(value = "磅单审核状态 0 待审核 1 审核通过 2 审核驳回", example = "0")
private Integer poundStatus;
@ApiModelProperty(value = "状态", example = "")
@ApiModelProperty(value = "磅单审核驳回原因", example = "交货信息错误")
private String poundRemark;
@ApiModelProperty(value = "状态", example = "0")
private Integer status;
@ApiModelProperty(value = "运输状态 0非运输中 1运输中", example = "1")
private Integer transitStatus;
public Integer getTransitStatus() {
return status==null || !OrderChildEnum.TRANSIT_lIST.contains(status)? 0 : 1;
}
@ApiModelProperty(value = "支付时间", example = "")
@ApiModelProperty(value = "支付时间(抢单时间)", example = "")
private String payTime;
@ApiModelProperty(value = "装车时间", example = "")
private String loadTime;
@ApiModelProperty(value = "卸车时间", example = "")
private String unloadTime;
@ApiModelProperty(value = "结算时间", example = "")
private String settleTime;
@ApiModelProperty(value = "取消时间", example = "")
private String cancelTime;
@ApiModelProperty(value = "完成时间", example = "")
private String finishTime;
@ApiModelProperty(value = "创建时间", example = "")
private String createTime;
@ApiModelProperty(value = "修改时间", example = "")
......@@ -109,4 +133,9 @@ public class OrderChildVO {
@ApiModelProperty(value = "卸车磅单图片列表")
private List<String> unloadImageList;
@ApiModelProperty(value = "发货地址详情")
private Address sendAddressInfo;
@ApiModelProperty(value = "发货地址详情")
private Address receiveAddressInfo;
}
\ No newline at end of file
......@@ -5,15 +5,12 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
@Getter
@Setter
@NoArgsConstructor
public class SaveOrderChildVO {
@ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空")
private String childNo;
}
package com.clx.performance.vo.pc;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.vo.app.Address;
import com.msl.common.convertor.type.MoneyOutConvert;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.math.BigDecimal;
import java.util.List;
@ApiModel(description = "运单表")
@Getter
@Setter
@ToString
@NoArgsConstructor
public class CarrierOrderChildDetailVO {
@ApiModelProperty(value = "id", example = "1")
private Integer id;
@ApiModelProperty(value = "用户编号", example = "10000000000")
private Long userNo;
@ApiModelProperty(value = "货主用户编号", example = "100000000")
private Long ownerUserNo;
@ApiModelProperty(value = "货主名称", example = "张三")
private String ownerName;
@ApiModelProperty(value = "运单编号", example = "100000000")
private String childNo;
@ApiModelProperty(value = "货单编号", example = "100000000")
private String orderGoodsNo;
@ApiModelProperty(value = "订单编号", example = "10000000000")
private String orderNo;
@ApiModelProperty(value = "货物id", example = "1")
private Integer goodsId;
@ApiModelProperty(value = "货物名称", example = "煤")
private String goodsName;
@ApiModelProperty(value = "运费单价(元)", example = "1.23")
@MoneyOutConvert
private BigDecimal freightPrice;
@ApiModelProperty(value = "发货地址id", example = "1")
private Integer sendAddressId;
@ApiModelProperty(value = "发货地址", example = "朝阳")
private String sendAddress;
@ApiModelProperty(value = "收货地址id", example = "2")
private Integer receiveAddressId;
@ApiModelProperty(value = "收货地址", example = "西城")
private String receiveAddress;
@ApiModelProperty(value = "最晚装货时间", example = "")
private String loadDeadline;
@ApiModelProperty(value = "车辆ID", example = "1")
private Integer truckId;
@ApiModelProperty(value = "车牌号", example = "京A12345")
private String truckNo;
@ApiModelProperty(value = "载重(单位吨)", example = "12.34")
private BigDecimal truckLoad;
@ApiModelProperty(value = "车型", example = "挂车")
private String truckModel;
@ApiModelProperty(value = "司机用户编号", example = "1000000")
private Long driverUserNo;
@ApiModelProperty(value = "司机姓名", example = "张三")
private String driverName;
@ApiModelProperty(value = "司机手机号", example = "130000000")
private String driverMobile;
@ApiModelProperty(value = "装货毛重(单位吨)", example = "1.23")
private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重(单位吨)", example = "1.23")
private BigDecimal loadTare;
@ApiModelProperty(value = "装货净重(单位吨)", example = "1.23")
private BigDecimal loadNet;
@ApiModelProperty(value = "卸货毛重(单位吨)", example = "1.23")
private BigDecimal unloadRough;
@ApiModelProperty(value = "卸货皮重(单位吨)", example = "1.23")
private BigDecimal unloadTare;
@ApiModelProperty(value = "卸货净重(单位吨)", example = "1.23")
private BigDecimal unloadNet;
@ApiModelProperty(value = "卸货磅单编号", example = "")
private String unloadPoundNo;
@ApiModelProperty(value = "拉运重量(单位吨)", example = "1.23")
private BigDecimal weight;
@ApiModelProperty(value = "运费(元)", example = "1.23")
@MoneyOutConvert
private BigDecimal freight;
@ApiModelProperty(value = "取消原因", example = "抢错了")
private String cancelRemark;
@ApiModelProperty(value = "磅单审核状态 0 待审核 1 审核通过 2 审核驳回", example = "0")
private Integer poundStatus;
@ApiModelProperty(value = "磅单审核驳回原因", example = "交货信息错误")
private String poundRemark;
@ApiModelProperty(value = "状态", example = "0")
private Integer status;
@ApiModelProperty(value = "运输状态 0非运输中 1运输中", example = "1")
private Integer transitStatus;
public Integer getTransitStatus() {
return status==null || !OrderChildEnum.TRANSIT_lIST.contains(status)? 0 : 1;
}
@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;
@ApiModelProperty(value = "发货地址详情")
private Address sendAddressInfo;
@ApiModelProperty(value = "发货地址详情")
private Address receiveAddressInfo;
}
\ 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 OrderChildPCVO {
@ApiModelProperty("订单编号")
private String orderNo;
@ApiModelProperty("货单编号")
private String orderGoodsNo;
@ApiModelProperty("运单编号")
private String childNo;
@ApiModelProperty("车牌号")
private String truckNo;
@ApiModelProperty("运单状态:10:已接单 20:支付 30:前往货源地 40:到达货源地 50:装货成功 60:前往目的地 70:到达目的地 80:收货待确认 90:待结算 100:完成 110:司机取消 111:平台取消")
private Integer status;
}
\ No newline at end of file
......@@ -23,7 +23,7 @@ public class OrderChildPoundAuditDetailVO {
@ApiModelProperty(value="卸货净重",example = "41")
private BigDecimal unloadNet;
@ApiModelProperty(value="审核状态 0-待审核,1-审核失败, 2-审核成功",example = "1")
@ApiModelProperty(value="审核状态 0 待审核 1 审核通过 2 审核驳回",example = "1")
private Integer status;
@ApiModelProperty(value="备注",example = "41441")
......
......@@ -14,7 +14,7 @@ import lombok.Setter;
public class OrderChildPoundLogVO {
@ApiModelProperty(value="审核状态 0-待审核,1-审核失败, 2-审核成功",example = "1")
@ApiModelProperty(value="审核状态 0 待审核 1 审核通过 2 审核驳回",example = "1")
private Integer status;
@ApiModelProperty(value="操作时间",example = "2020-01-01 10:10:10")
......
package com.clx.performance.vo.pc;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class OrderChildStatusVO {
@ApiModelProperty("运单状态")
private Integer status;
@ApiModelProperty("运单值")
private String value;
}
\ 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;
......@@ -11,12 +8,6 @@ import lombok.Setter;
import java.math.BigDecimal;
/**
* @Author: aiqinguo
* @Description: 运单表
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
@Getter
@Setter
......@@ -26,9 +17,6 @@ public class OrderGoodsVO {
@ApiModelProperty("订单编号")
private String orderNo;
@ApiModelProperty("货单编号类型")
private String orderGoodsType;
@ApiModelProperty("货单编号")
private String orderGoodsNo;
......
package com.clx.performance.vo.pc;
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;
@Getter
@Setter
@NoArgsConstructor
public class PageCarrierOrderChildVO {
@ApiModelProperty(value="运单编号",example = "41441")
private String childNo;
@ApiModelProperty(value="运单状态",example = "1")
private Integer status;
@ApiModelProperty(value="货单编号",example = "41441")
private String orderGoodsNo;
@ApiModelProperty(value="货物名称",example = "煤炭")
private String goodsName;
@ApiModelProperty(value="司机姓名",example = "张安")
private String driverName;
@ApiModelProperty(value="司机手机号",example = "12222222222")
private String driverMobile;
@ApiModelProperty(value = "运费单价(元)", example = "1.23")
@MoneyOutConvert
private BigDecimal freightPrice;
@ApiModelProperty(value="装货净重",example = "10")
private BigDecimal loadNet;
@ApiModelProperty(value="卸货净重",example = "41")
private BigDecimal unloadNet;
@ApiModelProperty(value="接单时间",example = "2020-01-01 10:10:10")
private String payTime;
@ApiModelProperty(value="完成时间",example = "2020-01-01 10:10:10")
private String finishTime;
@ApiModelProperty(value="发货地址",example = "吉林")
private String sendAddress;
@ApiModelProperty(value="收货地址",example = "山西")
private String receiveAddress;
}
\ No newline at end of file
......@@ -43,7 +43,7 @@ public class PageOrderChildPoundAuditVO {
@ApiModelProperty(value="卸货净重",example = "41")
private BigDecimal unloadNet;
@ApiModelProperty(value="审核状态 0-待审核,1-审核失败, 2-审核成功",example = "1")
@ApiModelProperty(value="审核状态 0 待审核 1 审核通过 2 审核驳回",example = "1")
private Integer status;
@ApiModelProperty(value="接单时间",example = "2020-01-01 10:10:10")
......
......@@ -217,6 +217,10 @@
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>com.msl</groupId>
<artifactId>log-spring-boot-starter</artifactId>
</dependency>
</dependencies>
......
......@@ -23,7 +23,7 @@ public class OrderGoodsIdGenerate {
long baseStart = Long.parseLong(DateUtils.formatDate(LocalDate.now(), "yyyyMMdd").get() + "00001");
Object o = redisTemplate.opsForHash().get(RedisConstants.ORDER_GOODS_ID, type);
if (o == null) {
Long maxOrderGoodsId = orderGoodsDao.getMaxOrderGoodsId(type);
Long maxOrderGoodsId = Long.valueOf(orderGoodsDao.getMaxOrderGoodsId(type).substring(2));
if (maxOrderGoodsId == null) {
maxOrderGoodsId = 0L;
}
......
......@@ -83,27 +83,27 @@ public class RabbitConfig implements RabbitListenerConfigurer {
// 存在此名字的bean 自带的容器工厂会不加载(yml下rabbitmq下的listener下的simple配置),如果想自定义来区分开 需要改变bean 的名称
@Bean
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory() {
SimpleRabbitListenerContainerFactory containerFactory = new SimpleRabbitListenerContainerFactory();
containerFactory.setConnectionFactory(rabbitConnectionFactory);
// 预加载消息数量 -- QOS
containerFactory.setPrefetchCount(1);
// 应答模式(此处设置为手动)
containerFactory.setAcknowledgeMode(AcknowledgeMode.MANUAL);
//消息序列化方式
containerFactory.setMessageConverter(new Jackson2JsonMessageConverter());
// 设置通知调用链 (这里设置的是重试机制的调用链)
containerFactory.setAdviceChain(
RetryInterceptorBuilder
.stateless()
.recoverer(new RejectAndDontRequeueRecoverer())
//.retryOperations(rabbitRetryTemplate())
.build()
);
return containerFactory;
}
// @Bean
// public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory() {
// SimpleRabbitListenerContainerFactory containerFactory = new SimpleRabbitListenerContainerFactory();
// containerFactory.setConnectionFactory(rabbitConnectionFactory);
//
// // 预加载消息数量 -- QOS
// containerFactory.setPrefetchCount(1);
// // 应答模式(此处设置为手动)
// containerFactory.setAcknowledgeMode(AcknowledgeMode.MANUAL);
// //消息序列化方式
// containerFactory.setMessageConverter(new Jackson2JsonMessageConverter());
// // 设置通知调用链 (这里设置的是重试机制的调用链)
// containerFactory.setAdviceChain(
// RetryInterceptorBuilder
// .stateless()
// .recoverer(new RejectAndDontRequeueRecoverer())
// //.retryOperations(rabbitRetryTemplate())
// .build()
// );
// return containerFactory;
// }
@Bean
public SimpleMessageListenerContainer simpleMessageListenerContainer(SimpleRabbitListenerContainerFactory connectionFactory) {
......@@ -133,29 +133,29 @@ public class RabbitConfig implements RabbitListenerConfigurer {
//重试的Template
@Bean
public ExponentialBackOffPolicy backOffPolicyByProperties() {
ExponentialBackOffPolicy backOffPolicy = new ExponentialBackOffPolicy();
long maxInterval = properties.getListener().getSimple().getRetry().getMaxInterval().getSeconds();
long initialInterval = properties.getListener().getSimple().getRetry().getInitialInterval().getSeconds();
double multiplier = properties.getListener().getSimple().getRetry().getMultiplier();
// 重试间隔
backOffPolicy.setInitialInterval(initialInterval * 1000);
// 重试最大间隔
backOffPolicy.setMaxInterval(maxInterval * 1000);
// 重试间隔乘法策略
backOffPolicy.setMultiplier(multiplier);
return backOffPolicy;
}
@Bean
public SimpleRetryPolicy retryPolicyByProperties() {
SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();
int maxAttempts = properties.getListener().getSimple().getRetry().getMaxAttempts();
retryPolicy.setMaxAttempts(maxAttempts);
return retryPolicy;
}
//
// @Bean
// public ExponentialBackOffPolicy backOffPolicyByProperties() {
// ExponentialBackOffPolicy backOffPolicy = new ExponentialBackOffPolicy();
// long maxInterval = properties.getListener().getSimple().getRetry().getMaxInterval().getSeconds();
// long initialInterval = properties.getListener().getSimple().getRetry().getInitialInterval().getSeconds();
// double multiplier = properties.getListener().getSimple().getRetry().getMultiplier();
// // 重试间隔
// backOffPolicy.setInitialInterval(initialInterval * 1000);
// // 重试最大间隔
// backOffPolicy.setMaxInterval(maxInterval * 1000);
// // 重试间隔乘法策略
// backOffPolicy.setMultiplier(multiplier);
// return backOffPolicy;
// }
//
// @Bean
// public SimpleRetryPolicy retryPolicyByProperties() {
// SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();
// int maxAttempts = properties.getListener().getSimple().getRetry().getMaxAttempts();
// retryPolicy.setMaxAttempts(maxAttempts);
// return retryPolicy;
// }
@Override
public void configureRabbitListeners(RabbitListenerEndpointRegistrar registrar) {
......
......@@ -19,4 +19,6 @@ public class RabbitKeyConstants {
public static final String ORDER_ON_DEAD_QUEUE ="order.on.dead.queue";
public static final String ORDER_GOODS_SYNC_TRUCK_DRIVER_INFO_QUEUE = "order.goods.sync.truck.driver.info.queue";
}
......@@ -16,4 +16,6 @@ public class RedisConstants {
public static final String TRUCK_LOCATION_KEY = "performance:truck_location_key:";
public static final String CARRIER_ORDER_NUM_POOL_KEY = "carrier:order:orderNumPool:{date}";
}
......@@ -3,19 +3,16 @@ package com.clx.performance.controller.app;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.clx.performance.vo.app.*;
import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
/**
* @Author: aiqingguo
......@@ -26,7 +23,7 @@ import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping(value="/app/driver/orderchild")
@RequestMapping(value="/app/driver/orderChild")
@Validated
@Api(tags = "APP-运单")
@AllArgsConstructor
......@@ -115,7 +112,8 @@ public class AppDriverOrderChildController {
}
@ApiOperation(value = "查询运单详情", notes = "<br>By:艾庆国")
@PostMapping("/getOrderChildInfo")
@UnitCovert(param = false)
@GetMapping("/getOrderChildInfo")
public Result<OrderChildVO> getOrderChildInfo(String childNo) {
return Result.ok(orderChildService.getOrderChildInfo(childNo));
......@@ -123,9 +121,40 @@ public class AppDriverOrderChildController {
@ApiOperation(value = "分页查询运单列表",notes = "<br>By:艾庆国")
@PostMapping("/pageOrderChild")
public Result<PageData<OrderChildVO>> pageOrderChild(@RequestBody PageOrderChildOfDriverParam param) {
public Result<PageData<OrderChildVO>> pageOrderChild(@RequestBody @Validated PageOrderChildOfDriverParam param) {
IPage<OrderChildVO> page = orderChildService.pageOrderChild(param);
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
@ApiOperation(value = "分页搜索运单列表",notes = "<br>By:艾庆国")
@PostMapping("/pageSearchOrderChild")
public Result<PageData<OrderChildVO>> pageSearchOrderChild(@RequestBody @Validated PageOrderChildOfDriverSearchParam param) {
IPage<OrderChildVO> page = orderChildService.pageSearchOrderChild(param);
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
@ApiOperation(value = "查询预估运费", notes = "<br>By:艾庆国")
@UnitCovert(param = false)
@PostMapping("/getEstimatedFreight")
public Result<OrderChildEstimatedFreightVO> getEstimatedFreight(@RequestBody @Validated OrderChildEstimatedFreightParam param) {
return Result.ok(orderChildService.getEstimatedFreight(param));
}
@ApiOperation(value = "查询运单磅单信息", notes = "<br>By:艾庆国")
@UnitCovert(param = false)
@GetMapping("/getOrderChildPoundInfo")
public Result<OrderChildPoundInfoVO> getOrderChildPoundInfo(String childNo) {
return Result.ok(orderChildService.getOrderChildPoundInfo(childNo));
}
@ApiOperation(value = "查询运单运费信息", notes = "<br>By:艾庆国")
@UnitCovert(param = false)
@GetMapping("/getOrderChildFreightInfo")
public Result<OrderChildFreightInfoVO> getOrderChildFreightInfo(String childNo) {
return Result.ok(orderChildService.getOrderChildFreightInfo(childNo));
}
}
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
......
package com.clx.performance.controller.feign;
import com.clx.performance.service.OrderGoodsDriverTruckService;
import com.clx.performance.service.OrderGoodsTruckBindService;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
......@@ -20,11 +20,11 @@ import java.util.List;
@AllArgsConstructor
public class TruckFeignController {
private final OrderGoodsDriverTruckService truckService;
private final OrderGoodsTruckBindService orderGoodsTruckService;
@GetMapping({"/getTrucksByOrderGoodsNo"})
Result<List<Integer>> getTrucksByOrderGoodsNo(@RequestParam("orderGoodsNo") @NotNull(message = "货单编号不可为空") String orderGoodsNo){
return Result.ok(truckService.getTrucksByOrderGoodsNo(orderGoodsNo));
return Result.ok(orderGoodsTruckService.getTrucksByOrderGoodsNo(orderGoodsNo));
}
}
package com.clx.performance.controller.pc;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.param.pc.PageCarrierOrderChildParam;
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.OrderChildPoundAuditDetailVO;
import com.clx.performance.vo.pc.OrderChildStatusVO;
import com.clx.performance.vo.pc.PageCarrierOrderChildVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert;
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.*;
import javax.validation.constraints.NotBlank;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
@Slf4j
@RestController
@RequestMapping(value="/pc/carrier/orderChild")
@Validated
@Api(tags = "承运端-运单列表")
@AllArgsConstructor
public class CarrierOrderChildController {
private final OrderChildService orderChildService;
private final OrderChildPoundAuditService orderChildPoundAuditService;
@ApiOperation(value = "运单列表",notes = "<br>By:李瑞新")
@PostMapping("/pageCarrierOrderChildList")
@UnitCovert(param = false)
public Result<PageData<PageCarrierOrderChildVO>> pageCarrierOrderChildList(@RequestBody PageCarrierOrderChildParam param) {
IPage<PageCarrierOrderChildVO> page = orderChildService.pageCarrierOrderChildList(param);
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
@ApiOperation(value = "运单详情详情",notes = "<br>By:李瑞新")
@GetMapping("/getCarrierOrderChildDetail")
@UnitCovert(param = false)
public Result<OrderChildPoundAuditDetailVO> getPoundAuditDetail(@NotBlank(message = "运单编号不能为空") String childNo) {
return Result.ok(orderChildPoundAuditService.getPoundAuditDetail(childNo));
}
@ApiOperation(value = "运单状态列表",notes = "<br>By:李瑞新")
@GetMapping("/getOrderChildStatusList")
public Result<List<OrderChildStatusVO>> getOrderChildStatusList() {
ConcurrentHashMap<Integer, String> map = OrderChildEnum.map;
List<OrderChildStatusVO> result = map.entrySet().stream().map(c -> new OrderChildStatusVO(c.getKey(), c.getValue())).collect(Collectors.toList());
return Result.ok(result);
}
}
package com.clx.performance.controller.pc;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.order.feign.OrderFeign;
......@@ -12,20 +13,24 @@ 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.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.OrderGoodsTypeEnum;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.mapper.OrderGoodsMapper;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.vo.pc.OrderChildPCVO;
import com.clx.performance.vo.pc.OrderGoodsVO;
import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.exception.ServiceSystemException;
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.apache.commons.lang3.StringUtils;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.amqp.core.Message;
......@@ -73,6 +78,12 @@ public class GoodsOrderController {
@Autowired
private OrderGoodsIdGenerate orderGoodsIdGenerate;
@Autowired
private OrderGoodsTruckBindDao orderGoodsTruckBindDao;
@Autowired
private OrderChildService orderChildService;
@ApiOperation(value = "提交货单", notes = "<br>By:胡宇帆")
@PostMapping("/saveGoodsOrder")
public Result<Object> saveGoodName(@RequestBody @Validated OrderGoodsParams orderGoodsParams) {
......@@ -96,12 +107,19 @@ public class GoodsOrderController {
BigDecimal childSum = childParamsList.stream().map(OrderGoodsChildParams::getExtractWeight).reduce(
BigDecimal.ZERO, BigDecimal::add);
if (orderInfo.getResidueWeight().compareTo(childSum) < 0) {
throw new RuntimeException("当前货单总吨数已超订单总吨数");
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR,"当前货单总吨数已超订单总吨数");
}
long beginOrderGoodsId = orderGoodsIdGenerate.getOrderGoodsId("pt", childParamsList.size());
long beginOrderGoodsId = orderGoodsIdGenerate.getOrderGoodsId(OrderGoodsTypeEnum.Status.PLATFORM.getCode(), childParamsList.size());
for (OrderGoodsChildParams child : childParamsList) {
if (child.getPendingOrderWay().equals(2) && child.getNeedTruckNum() == null) {
throw new RuntimeException("定向派单必须选择车辆");
if (child.getPendingOrderWay().equals(2) ) {
if (child.getNeedTruckNum() == null){
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR,"定向派单必须选择车辆");
}
if (child.getNeedTruckNum() != child.getTruckList().size()){
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR,"定向派单需要车数与已选车辆数量不一致");
}
}
OrderGoods orderGoods = new OrderGoods();
//提取吨数
......@@ -133,8 +151,7 @@ public class GoodsOrderController {
// orderGoods.setSeniorLogisticsManagerName(child.getSeniorLogisticsManagerName());
orderGoods.setOrderNo(orderNo);
orderGoods.setOrderGoodsType(OrderGoodsTypeEnum.Status.PLATFORM.getCode());
orderGoods.setOrderGoodsNo(String.valueOf(beginOrderGoodsId));
orderGoods.setOrderGoodsNo(OrderGoodsTypeEnum.Status.PLATFORM.getCode() + beginOrderGoodsId);
orderGoods.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CREATED.getCode());
orderGoods.setSendAddressId(orderInfo.getSendAddressId());
orderGoods.setSendAddressShorter(orderInfo.getSendAddressShorter());
......@@ -149,6 +166,9 @@ public class GoodsOrderController {
orderGoods.setModifiedTime(now);
orderGoods.setUserName("loginUserInfo.getUserName()");
orderGoods.setUserNo(123L);
if (CollectionUtil.isNotEmpty(child.getTruckList())) {
orderGoodsTruckBindDao.saveBatchEntity(orderNo, OrderGoodsTypeEnum.Status.PLATFORM.getCode() + beginOrderGoodsId, child.getTruckList(), now);
}
beginOrderGoodsId = beginOrderGoodsId + 1;
orderGoodsMapper.insert(orderGoods);
}
......@@ -157,12 +177,12 @@ public class GoodsOrderController {
BigDecimal childSum = childParamsList.stream().map(OrderGoodsChildParams::getExtractWeight).reduce(
BigDecimal.ZERO, BigDecimal::add);
if (orderInfo.getResidueWeight().compareTo(childSum) < 0) {
throw new RuntimeException("当前货单总吨数已超订单总吨数");
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR,"当前货单总吨数已超订单总吨数");
}
if (childParamsList.size() > 1) {
throw new RuntimeException("全部自有车辆只能全部提取");
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR,"全部自有车辆只能全部提取");
}
long beginOrderGoodsId = orderGoodsIdGenerate.getOrderGoodsId("pt", childParamsList.size());
long beginOrderGoodsId = orderGoodsIdGenerate.getOrderGoodsId(OrderGoodsTypeEnum.Status.PLATFORM.getCode(), childParamsList.size());
for (OrderGoodsChildParams child : childParamsList) {
OrderGoods orderGoods = new OrderGoods();
......@@ -172,7 +192,7 @@ public class GoodsOrderController {
//提取方式 1提取全部 2提取部分
Integer extractWay = child.getExtractWay();
if (extractWay.equals(2)) {
throw new RuntimeException("全部自有车辆只能全部提取");
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR,"全部自有车辆只能全部提取");
}
orderGoods.setExtractWay(extractWay);
//需要车辆
......@@ -197,8 +217,7 @@ public class GoodsOrderController {
// orderGoods.setSeniorLogisticsManagerName(child.getSeniorLogisticsManagerName());
orderGoods.setOrderNo(orderNo);
orderGoods.setOrderGoodsType(OrderGoodsTypeEnum.Status.PLATFORM.getCode());
orderGoods.setOrderGoodsNo(String.valueOf(beginOrderGoodsId));
orderGoods.setOrderGoodsNo(OrderGoodsTypeEnum.Status.PLATFORM.getCode() + beginOrderGoodsId);
orderGoods.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CREATED.getCode());
orderGoods.setSendAddressId(orderInfo.getSendAddressId());
orderGoods.setSendAddressShorter(orderInfo.getSendAddressShorter());
......@@ -213,7 +232,11 @@ public class GoodsOrderController {
orderGoods.setModifiedTime(now);
orderGoods.setUserName("loginUserInfo.getUserName()");
orderGoods.setUserNo(123L);
if (CollectionUtil.isNotEmpty(child.getTruckList())) {
orderGoodsTruckBindDao.saveBatchEntity(orderNo, OrderGoodsTypeEnum.Status.PLATFORM.getCode() + beginOrderGoodsId, child.getTruckList(), now);
}
beginOrderGoodsId = beginOrderGoodsId + 1;
orderGoodsMapper.insert(orderGoods);
}
}
......@@ -256,14 +279,17 @@ public class GoodsOrderController {
return Result.ok(orderGoodsService.getOrderGoodsInfoByOrderGoodsNoForPC(orderGoodsNo));
}
@ApiOperation(value = "查看货单详情-相关运单", notes = "<br>By:胡宇帆")
@GetMapping("/getOrderChildInfoByOrderGoodsNo")
@UnitCovert(param = false)
public Result<List<OrderChildPCVO>> getOrderChildInfoByOrderGoodsNo(@RequestParam String orderGoodsNo) {
return Result.ok(orderChildService.getOrderChildInfoByOrderGoodsNo(orderGoodsNo));
}
@ApiOperation(value = "查看货单列表", notes = "<br>By:胡宇帆")
@PostMapping("/pageOrderGoodsList")
@UnitCovert(param = false)
public Result<PageData<OrderGoodsVO>> pageOrderGoodsList(@RequestBody PageOrderGoodsListParam param) {
if (StringUtils.isNotBlank(param.getOrderGoodsNo())) {
param.setOrderGoodsType(param.getOrderGoodsNo().substring(0, 2));
param.setOrderNo(param.getOrderGoodsNo().substring(2));
}
IPage<OrderGoodsVO> page = orderGoodsService.pageOrderGoodsList(param);
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
......
......@@ -14,10 +14,7 @@ import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
......@@ -43,7 +40,7 @@ public class OrderChildPoundAuditController {
@ApiOperation(value = "磅单审核详情",notes = "<br>By:李瑞新")
@PostMapping("/getPoundAuditDetail")
@GetMapping("/getPoundAuditDetail")
public Result<OrderChildPoundAuditDetailVO> getPoundAuditDetail(@NotBlank(message = "运单编号不能为空") String childNo) {
return Result.ok(orderChildPoundAuditService.getPoundAuditDetail(childNo));
}
......
......@@ -8,7 +8,7 @@ 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.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -28,7 +28,7 @@ public class OrderChildPoundLogController {
private final OrderChildPoundLogService orderChildPoundLogService;
@ApiOperation(value = "磅单审核日志列表",notes = "<br>By:李瑞新")
@PostMapping("/getPoundLogList")
@GetMapping("/getPoundLogList")
public Result<List<OrderChildPoundLogVO>> getPoundLogList(@NotBlank(message = "运单编号不能为空") String childNo) {
return Result.ok(orderChildPoundLogService.getPoundLogList(childNo));
}
......
......@@ -4,13 +4,17 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.OrderChildMapper;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.app.PageOrderChildOfDriverParam;
import com.clx.performance.param.app.PageOrderChildOfDriverSearchParam;
import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.pc.PageCarrierOrderChildVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
import java.time.LocalDateTime;
import java.util.List;
/**
* @Author: aiqinguo
......@@ -32,11 +36,14 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
long countOfCancel(Long userNo, LocalDateTime startTime, LocalDateTime endTime);
IPage<OrderChildVO> pageOrderChildOfDriver(PageOrderChildOfDriverParam param);
IPage<OrderChildVO> pageSearchOrderChildOfDriver(PageOrderChildOfDriverSearchParam param);
IPage<PageOrderChildPoundAuditVO> pagePoundAuditList(PagePoundAuditParam param);
IPage<PageCarrierOrderChildVO> pageCarrierOrderChildList(PageCarrierOrderChildParam param);
boolean updatePoundAuditStatus(OrderChild item);
boolean updatePoundAuditStatus(OrderChild item);
Optional<List<OrderChild>> getOrderChildInfoByOrderGoodsNo(String childNo);
}
......@@ -19,7 +19,7 @@ import java.math.BigDecimal;
public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Integer> {
boolean updateWeight(@Param("orderId")Integer orderId, @Param("weight") BigDecimal weight);
Long getMaxOrderGoodsId(String type);
String getMaxOrderGoodsId(String type);
Optional<OrderGoods> getByOrderGoodsNo(String orderGoodsNo);
......@@ -29,4 +29,7 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
IPage<OrderGoodsVO> pageOrderGoodsList(PageOrderGoodsListParam param);
void updateOrderGoodsReduceWeightAndStatus(Integer id, BigDecimal orderChildWeight);
}
......@@ -12,5 +12,6 @@ import java.util.List;
* Time 16:45
*/
public interface OrderGoodsDriverTruckDao extends BaseDao<OrderGoodsDriverTruckMapper, OrderGoodsDriverTruck, Integer> {
List<Integer> getTrucksByOrderGoodsNo(String orderGoodsNo);
void deleteByTruckNoAndDriverUserNo(String truckNo, String driverUserNo);
}
package com.clx.performance.dao;
import com.clx.performance.mapper.OrderGoodsTruckBindMapper;
import com.clx.performance.model.OrderGoodsTruckBind;
import com.msl.common.dao.BaseDao;
import java.time.LocalDateTime;
import java.util.List;
/**
* @Author: huyufan
* @Description: 货单定向绑定车辆表
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMapper, OrderGoodsTruckBind, Integer> {
void saveBatchEntity(String orderNo, String orderGoodsNo, List<String> trackList, LocalDateTime now);
List<Integer> getTrucksByOrderGoodsNo(String orderGoodsNo);
}
......@@ -7,14 +7,18 @@ import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.mapper.OrderChildMapper;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.app.PageOrderChildOfDriverParam;
import com.clx.performance.param.app.PageOrderChildOfDriverSearchParam;
import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.pc.PageCarrierOrderChildVO;
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;
import java.time.LocalDateTime;
import java.util.List;
/**
* @Author: aiqinguo
......@@ -115,12 +119,24 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
return baseMapper.pageOrderChildOfDriver(page,param);
}
@Override
public IPage<OrderChildVO> pageSearchOrderChildOfDriver(PageOrderChildOfDriverSearchParam param) {
Page<OrderChildVO> page = Page.of(param.getPage(), param.getPageSize());
return baseMapper.pageSearchOrderChildOfDriver(page,param);
}
@Override
public IPage<PageOrderChildPoundAuditVO> pagePoundAuditList(PagePoundAuditParam param) {
Page<PageOrderChildPoundAuditVO> page = Page.of(param.getPage(), param.getPageSize());
return baseMapper.pagePoundAuditList(page,param);
}
@Override
public IPage<PageCarrierOrderChildVO> pageCarrierOrderChildList(PageCarrierOrderChildParam param) {
Page<PageCarrierOrderChildVO> page = Page.of(param.getPage(), param.getPageSize());
return baseMapper.pageCarrierOrderChildList(page,param);
}
@Override
public boolean updatePoundAuditStatus(OrderChild item) {
return update(lUdWrapper()
......@@ -130,4 +146,9 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
.set(OrderChild::getUnloadNet, item.getUnloadNet())
);
}
@Override
public Optional<List<OrderChild>> getOrderChildInfoByOrderGoodsNo(String orderGoodsNo) {
return Optional.of(list(lQrWrapper().eq(OrderChild::getOrderGoodsNo, orderGoodsNo)));
}
}
......@@ -4,6 +4,7 @@ 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.dao.OrderGoodsDao;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.mapper.OrderGoodsMapper;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.vo.pc.OrderGoodsVO;
......@@ -23,12 +24,12 @@ import java.math.BigDecimal;
public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods, Integer> implements OrderGoodsDao {
@Override
public boolean updateWeight(@Param("orderId")Integer orderId, @Param("weight") BigDecimal weight) {
return baseMapper.updateWeight(orderId, weight)>0;
public boolean updateWeight(@Param("orderId") Integer orderId, @Param("weight") BigDecimal weight) {
return baseMapper.updateWeight(orderId, weight) > 0;
}
@Override
public Long getMaxOrderGoodsId(String type) {
public String getMaxOrderGoodsId(String type) {
return baseMapper.getMaxOrderGoodsId(type);
}
......@@ -45,8 +46,7 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
public Optional<OrderGoods> getOrderGoodsInfoByOrderGoodsNoForPC(String orderGoodsNo) {
return Optional.of(orderGoodsNo)
.map(item -> lQrWrapper()
.eq(OrderGoods::getOrderGoodsType, item.substring(0,2))
.eq(OrderGoods::getOrderGoodsNo, item.substring(2))
.eq(OrderGoods::getOrderGoodsNo, item)
)
.map(super::getOne);
}
......@@ -55,8 +55,7 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
public Optional<OrderGoods> getOrderGoodsInfoByOrderGoodsNoForAPP(String orderGoodsNo) {
return Optional.of(orderGoodsNo)
.map(item -> lQrWrapper()
.eq(OrderGoods::getOrderGoodsType, item.substring(0,2))
.eq(OrderGoods::getOrderGoodsNo, item.substring(2))
.eq(OrderGoods::getOrderGoodsNo, item)
)
.map(super::getOne);
}
......@@ -67,4 +66,11 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
return baseMapper.pageOrderGoodsList(page, param);
}
@Override
public void updateOrderGoodsReduceWeightAndStatus(Integer id, BigDecimal orderChildWeight) {
baseMapper.updateOrderGoodsWeightAndStatus(id, orderChildWeight, OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode());
}
}
package com.clx.performance.dao.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
import com.clx.performance.dao.OrderGoodsDriverTruckDao;
import com.msl.common.dao.BaseDao;
import com.msl.common.dao.impl.BaseDaoImpl;
......@@ -16,8 +18,12 @@ import java.util.List;
*/
@Repository
public class OrderGoodsDriverTruckDaoImpl extends BaseDaoImpl<OrderGoodsDriverTruckMapper, OrderGoodsDriverTruck, Integer> implements OrderGoodsDriverTruckDao {
@Override
public List<Integer> getTrucksByOrderGoodsNo(String orderGoodsNo) {
return baseMapper.getTrucksByOrderGoodsNo(orderGoodsNo);
public void deleteByTruckNoAndDriverUserNo(String truckNo, String driverUserNo) {
baseMapper.delete(new QueryWrapper<OrderGoodsDriverTruck>().lambda()
.eq(OrderGoodsDriverTruck::getTruckNo,truckNo)
.eq(OrderGoodsDriverTruck::getDriverUserNo, Long.valueOf(driverUserNo))
);
}
}
package com.clx.performance.dao.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.mapper.OrderGoodsTruckBindMapper;
import com.clx.performance.model.OrderGoodsTruckBind;
import com.msl.common.dao.impl.BaseDaoImpl;
import com.msl.common.utils.DateUtils;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.List;
/**
* @Author: huyufan
* @Description: 货单定向绑定车辆表
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
@Repository
public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindMapper, OrderGoodsTruckBind, Integer> implements OrderGoodsTruckBindDao {
@Override
public void saveBatchEntity(String orderNo, String orderGoodsNo, List<String> trackList, LocalDateTime now) {
baseMapper.saveBatchEntity(orderNo, orderGoodsNo, trackList, DateUtils.formatDateTime(now).get());
}
@Override
public List<Integer> getTrucksByOrderGoodsNo(String orderGoodsNo) {
return baseMapper.getTrucksByOrderGoodsNo(orderGoodsNo);
}
}
package com.clx.performance.extranal.user;
import com.clx.order.vo.feign.FeignAddressVO;
import com.msl.common.base.Optional;
public interface AddressService {
Optional<FeignAddressVO> getSendAndReceiveAddress(Integer sendAddressId, Integer receiveAddressId);
}
package com.clx.performance.extranal.user.impl;
import com.clx.order.feign.AddressFeign;
import com.clx.order.vo.feign.FeignAddressVO;
import com.clx.performance.extranal.user.AddressService;
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;
@Service
@Slf4j
@AllArgsConstructor
public class AddressServiceImpl implements AddressService {
private final AddressFeign addressFeign;
@Override
public Optional<FeignAddressVO> getSendAndReceiveAddress(Integer sendAddressId, Integer receiveAddressId) {
return Optional.ofNullable(addressFeign.getSendAndReceiveAddress(sendAddressId, receiveAddressId))
.filter(Result::succeed)
.map(Result::getData);
}
}
package com.clx.performance.job;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.clx.performance.constant.RedisConstants;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@Slf4j
@Component
public class OrderNoGenerateJob implements InitializingBean {
@Autowired
private ThreadPoolExecutor executor;
@Resource
private RedisTemplate<String, Object> jsonTemplate;
/**
* 每天早上2点生成第二天的订单号 cron = "0 0 2 * * ?"
*
* 提前生成订单号
*/
@XxlJob("generateOrderNo")
public void generateOrderNo()throws InterruptedException {
LocalDateTime today = LocalDateTime.now();
//检验今天的订单池有没有,没有就生成一套
String todayKey = RedisConstants.CARRIER_ORDER_NUM_POOL_KEY.replace("{date}", today.format(DateTimeFormatter.BASIC_ISO_DATE));
Integer orderNum = (Integer) jsonTemplate.opsForList().leftPop(todayKey);
if(null == orderNum){
log.warn("开始生成订单池: key->{}", todayKey);
saveUniqueOrderNumList(todayKey, generateOrderNumList());
log.warn("生成订单池完成: key->{}", todayKey);
jsonTemplate.expire(todayKey, 1, TimeUnit.DAYS);
}
LocalDateTime tomorrow = today.plusDays(1);
//检验明天的订单池,没有就生成一套
String tomorrowKey = RedisConstants.CARRIER_ORDER_NUM_POOL_KEY.replace("{date}", tomorrow.format(DateTimeFormatter.BASIC_ISO_DATE));
orderNum = (Integer) jsonTemplate.opsForList().leftPop(tomorrowKey);
if(null == orderNum){
log.warn("开始生成订单池: key->{}", tomorrowKey);
saveUniqueOrderNumList(tomorrowKey, generateOrderNumList());
log.warn("生成订单池完成: key->{}", tomorrowKey);
jsonTemplate.expire(tomorrowKey, 2, TimeUnit.DAYS);
}
}
/**
* 保存到Redis
* @author
* @param key
* @param data
*/
private void saveUniqueOrderNumList(String key, List data) {
if(StringUtils.isBlank(key)){
log.info(key, "key不能为空");
return;
}
if(CollectionUtils.isEmpty(data)){
log.info(key, "data不能为空");
return;
}
for (int i = 0, j = 0; i < data.size(); i += 10000){
if(i >= data.size()){
i = data.size() -1;
}
j = i + 10000;
if(j > data.size()){
j = data.size();
}
try {
jsonTemplate.opsForList().leftPushAll(key, data.subList(i, j));
} catch (Exception e){
e.printStackTrace();
continue;
}
}
}
/**
* 生成乱序的6位的订单编号
* @author
* @return 乱序的6位订单编号从100000到999999
*/
private List<Integer> generateOrderNumList(){
List<Integer> orderNumList = new ArrayList<>();
for (Integer i = 100000; i < 999999; ++i){
orderNumList.add(i);
}
shuffleSort(orderNumList);
return orderNumList;
}
/**
* 交换
* @author
* @param data
* @param i
* @param j
*/
private static void swap(List<Integer> data, int i, int j) {
if (i == j) {
return;
}
Integer temp = data.get(i);
data.set(i, data.get(j));
data.set(j, temp);
}
/**
* 洗牌
* @author
* @param data
*/
private static void shuffleSort(List<Integer> data) {
for (int i = 0; i < data.size() - 1; i++) {
int j = ThreadLocalRandom.current().nextInt(data.size());
swap(data, i, j);
}
}
/**
* 初始化
* @throws Exception
*/
@Override
public void afterPropertiesSet() throws Exception {
//初始化redis中的订单池
executor.execute(new Runnable() {
@Override
public void run() {
try {
generateOrderNo();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
}
//package com.clx.performance.listener;
//
//import com.clx.performance.constant.RabbitKeyConstants;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.amqp.rabbit.annotation.RabbitListener;
//import org.springframework.stereotype.Component;
//
//@Component
//@Slf4j
//public class OrderGoodsDriverTruckListener {
//
//
// @RabbitListener(queues = RabbitKeyConstants.ORDER_ON_DEAD_QUEUE)
// public void onMessage(String message) throws Exception {
// log.info("处理订单状态由已挂单变为挂弹中监听器执行,订单ID为{}", message);
// if (StringUtils.isBlank(message)) {
// return;
// }
// OrderInfo orderInfo = orderInfoDao.getByOrderNo(message);
// if (orderInfo == null) {
// log.info("处理订单状态由已挂单变为挂弹中监听器未查询到订单数据,消息为{}", message);
// return;
// }
// if (OrderEnum.Status.POST_ORDER.getCode().equals(orderInfo.getOrderStatus())) {
// log.info("处理订单状态由已挂单变为挂单中监听器执行,从状态{}-----变更为{}", OrderEnum.Status.POST_ORDER.getName(), OrderEnum.Status.ON_ORDER.getName());
// orderInfoDao.updateOrderStatusById(orderInfo.getId(), OrderEnum.Status.ON_ORDER.getCode());
// }
// }
//}
package com.clx.performance.listener;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsDriverTruckDao;
import com.clx.performance.model.OrderGoodsDriverTruck;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@Component
@Slf4j
public class OrderGoodsDriverTruckListener {
@Autowired
private OrderGoodsDriverTruckDao orderGoodsDriverTruckDao;
@RabbitListener(queues = RabbitKeyConstants.ORDER_GOODS_SYNC_TRUCK_DRIVER_INFO_QUEUE)
@Transactional(rollbackFor = Exception.class)
public void onMessage(Message message) throws Exception {
log.info("处理货单定向司机表,数据为{}", message);
JSONArray jsonArray = JSONUtil.parseArray(new String(message.getBody()));
if (jsonArray.isEmpty()) {
log.info("处理货单定向司机表,数据为空,不处理");
return;
}
for (Object o : jsonArray) {
JSONObject jsonObject = (JSONObject) o;
Object driverUserNo = jsonObject.getByPath("driverUserNo");
Object operateType = jsonObject.getByPath("operateType");
Object driverName = jsonObject.getByPath("driverName");
Object truckNo = jsonObject.getByPath("truckNo");
Object driverMobile = jsonObject.getByPath("driverMobile");
switch (operateType.toString()) {
case "1":
OrderGoodsDriverTruck driverTruck = new OrderGoodsDriverTruck();
driverTruck.setTruckNo(truckNo == null ? "" : truckNo.toString());
driverTruck.setDriverMobile(driverMobile == null ? "" : driverMobile.toString());
driverTruck.setDriverName(driverName == null ? "" : driverName.toString());
driverTruck.setDriverUserNo(driverUserNo == null ? null : Long.valueOf(driverUserNo.toString()));
orderGoodsDriverTruckDao.saveEntity(driverTruck);
log.info("处理货单定向司机表:执行插入");
break;
case "2":
if (truckNo == null || driverUserNo == null) {
break;
}
orderGoodsDriverTruckDao.deleteByTruckNoAndDriverUserNo(truckNo.toString(), driverUserNo.toString());
log.info("处理货单定向司机表:执行删除");
break;
default:
break;
}
}
}
}
......@@ -5,9 +5,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.app.PageOrderChildOfDriverParam;
import com.clx.performance.param.app.PageOrderChildOfDriverSearchParam;
import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.sqlProvider.OrderChildSqlProvider;
import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.pc.PageCarrierOrderChildVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -25,8 +28,18 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> {
@SelectProvider(type = OrderChildSqlProvider.class, method = "pageOrderChildOfDriver")
IPage<OrderChildVO> pageOrderChildOfDriver(@Param("page") Page<OrderChildVO> page, @Param("param") PageOrderChildOfDriverParam param);
/**
* 搜索司机运单列表
* @see OrderChildSqlProvider#pageSearchOrderChildOfDriver(Page, PageOrderChildOfDriverSearchParam)
*/
@SelectProvider(type = OrderChildSqlProvider.class, method = "pageSearchOrderChildOfDriver")
IPage<OrderChildVO> pageSearchOrderChildOfDriver(@Param("page") Page<OrderChildVO> page, @Param("param") PageOrderChildOfDriverSearchParam param);
@SelectProvider(type = OrderChildSqlProvider.class, method = "pagePoundAuditList")
IPage<PageOrderChildPoundAuditVO> pagePoundAuditList(@Param("page") Page<PageOrderChildPoundAuditVO> page, @Param("param") PagePoundAuditParam param);
@SelectProvider(type = OrderChildSqlProvider.class, method = "pageCarrierOrderChildList")
IPage<PageCarrierOrderChildVO> pageCarrierOrderChildList(@Param("page") Page<PageCarrierOrderChildVO> page, @Param("param") PageCarrierOrderChildParam param);
}
\ No newline at end of file
......@@ -14,6 +14,5 @@ import java.util.List;
*/
public interface OrderGoodsDriverTruckMapper extends BaseMapper<OrderGoodsDriverTruck> {
@Select("select truck_id from order_goods_driver_truck where order_goods_no=#{orderGoodsNo}")
List<Integer> getTrucksByOrderGoodsNo(@Param("orderGoodsNo") String orderGoodsNo);
}
......@@ -21,13 +21,20 @@ import java.math.BigDecimal;
public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
@Update(" update order_goods set " +
" residue_transport_weight = residue_transport_weight-#{weight}, " +
" residue_transport_weight = residue_transport_weight-#{weight} " +
" where id = #{orderId}")
int updateWeight(@Param("orderId")Integer orderId, @Param("weight")BigDecimal weight);
int updateWeight(@Param("orderId") Integer orderId, @Param("weight") BigDecimal weight);
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "getMaxOrderGoodsId")
Long getMaxOrderGoodsId(String type);
String getMaxOrderGoodsId(String type);
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "pageOrderGoodsList")
IPage<OrderGoodsVO> pageOrderGoodsList(Page<OrderGoodsVO> page, PageOrderGoodsListParam param);
@Update(" update order_goods set " +
" residue_transport_weight = residue_transport_weight-#{weight}," +
" already_transport_weight = already_transport_weight+#{weight}," +
"order_goods_status = #{orderGoodsStatus}" +
" where id = #{id}")
void updateOrderGoodsWeightAndStatus(@Param("id") Integer id, @Param("weight") BigDecimal orderChildWeight, @Param("orderGoodsStatus") Integer orderGoodsStatus);
}
package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.OrderGoodsTruckBind;
import com.clx.performance.sqlProvider.OrderGoodsSqlProvider;
import com.clx.performance.sqlProvider.OrderGoodsTruckBindSqlProvider;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider;
import java.time.LocalDateTime;
import java.util.List;
/**
* @Author: huyufan
* @Description: 货单定向绑定车辆
* @Date: 2023/09/18 11:34:50
* @Version: 1.0
*/
@Mapper
public interface OrderGoodsTruckBindMapper extends BaseMapper<OrderGoodsTruckBind> {
@SelectProvider(type = OrderGoodsTruckBindSqlProvider.class, method = "saveBatchEntity")
void saveBatchEntity(String orderNo, String orderGoodsNo, List<String> trackList, String now);
@Select("select truck_no from order_goods_truck_bind where order_goods_no=#{orderGoodsNo}")
List<Integer> getTrucksByOrderGoodsNo(@Param("orderGoodsNo") String orderGoodsNo);
}
\ No newline at end of file
......@@ -47,6 +47,8 @@ public class OrderChild implements HasKey<Integer> {
private Integer truckId; //车辆ID
private String truckNo; //车牌号
private BigDecimal truckLoad; //载重(单位吨)
private String truckModel; //车型
private Long driverUserNo; //司机用户编号
private String driverName; //司机姓名
private String driverMobile; //司机手机号
......@@ -57,15 +59,21 @@ public class OrderChild implements HasKey<Integer> {
private BigDecimal unloadRough; //卸货毛重(单位吨)
private BigDecimal unloadTare; //卸货皮重(单位吨)
private BigDecimal unloadNet; //卸货净重(单位吨)
private String unloadPoundNo; //卸货磅单编号
private BigDecimal weight; //拉运重量(单位吨)
private BigDecimal freight; //运费(分)
private String cancelRemark; //取消原因
private Integer poundStatus; //磅单审核状态 0 待审核 1 审核通过 2 审核驳回
private Integer status; //状态
private LocalDateTime payTime; //支付时间
private LocalDateTime payTime; //支付时间(抢单时间)
private LocalDateTime loadTime; //装车时间
private LocalDateTime unloadTime; //卸车时间
private LocalDateTime settleTime; //结算时间
private LocalDateTime cancelTime; //取消时间
private LocalDateTime finishTime; //完成时间
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
......
......@@ -32,7 +32,7 @@ public class OrderChildPoundAudit implements HasKey<Integer> {
private String childNo; //运单编号
private BigDecimal loadNet; //装货净重(单位吨)
private BigDecimal unloadNet; //卸货净重(单位吨)
private Integer status; //审核状态 0-待审核,1-审核失败, 2-审核成功
private Integer status; //审核状态 0 待审核 1 审核通过 2 审核驳回
private Integer rejectType; //审核驳回类型:1装车 2卸车 3装车+卸车
private String remark; //备注
private String createTime; //创建时间
......@@ -45,23 +45,6 @@ public class OrderChildPoundAudit implements HasKey<Integer> {
}
@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
......
......@@ -8,9 +8,6 @@ import com.msl.common.model.HasKey;
import lombok.*;
import lombok.experimental.Accessors;
import java.util.Arrays;
import java.util.Optional;
/**
* @Author: aiqinguo
* @Description: 磅单日志表
......@@ -45,23 +42,4 @@ public class OrderChildPoundLog implements HasKey<Integer> {
}
@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
......@@ -31,10 +31,6 @@ public class OrderGoods implements HasKey<Integer> {
@ApiModelProperty("订单编号")
private String orderNo;
@TableField("order_goods_type")
@ApiModelProperty("货单编号类型")
private String orderGoodsType;
@TableField("order_goods_no")
@ApiModelProperty("货单编号")
private String orderGoodsNo;
......
......@@ -26,14 +26,6 @@ public class OrderGoodsDriverTruck implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("order_no")
@ApiModelProperty("订单编号")
private String orderNo;
@TableField("order_goods_no")
@ApiModelProperty("货单编号")
private String orderGoodsNo;
@TableField("truck_id")
@ApiModelProperty("车辆ID")
private Integer truckId;
......@@ -42,9 +34,17 @@ public class OrderGoodsDriverTruck implements HasKey<Integer> {
@ApiModelProperty("车牌号")
private String truckNo;
@TableField("order_user_no")
@ApiModelProperty("接单人用户编号")
private Long orderUserNo;
@TableField("driver_user_no")
@ApiModelProperty("司机用户编号")
private Long driverUserNo;
@TableField("driver_name")
@ApiModelProperty(value = "司机名称")
private String driverName;
@TableField("driver_mobile")
@ApiModelProperty("司机手机号")
private String driverMobile;
@TableField("create_time")
@ApiModelProperty("创建时间")
......@@ -54,6 +54,7 @@ public class OrderGoodsDriverTruck implements HasKey<Integer> {
@ApiModelProperty("修改时间")
private LocalDateTime modifiedTime;
@Override
@KeyColumn("id")
public Integer gainKey() {
......
package com.clx.performance.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
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 io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
/**
* 货单定向绑定车辆表
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("order_goods_truck_bind")
public class OrderGoodsTruckBind implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("truck_no")
@ApiModelProperty("车牌号")
private String truckNo;
@TableField("order_no")
@ApiModelProperty("订单编号")
private String orderNo;
@TableField("order_goods_no")
@ApiModelProperty("货单编号")
private String orderGoodsNo;
@TableField("create_time")
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@TableField("modified_time")
@ApiModelProperty("修改时间")
private LocalDateTime updateTime;
@Override
@KeyColumn("id")
public Integer gainKey() {
return this.id;
}
}
......@@ -2,11 +2,15 @@ package com.clx.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.app.*;
import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.app.SaveOrderChildVO;
import com.clx.performance.vo.app.*;
import com.clx.performance.vo.pc.OrderChildPCVO;
import com.clx.performance.vo.pc.PageCarrierOrderChildVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import java.util.List;
/**
* @Author: aiqinguo
......@@ -34,7 +38,15 @@ public interface OrderChildService {
OrderChildVO getOrderChildInfo(String childNo);
IPage<OrderChildVO> pageOrderChild(PageOrderChildOfDriverParam param);
IPage<OrderChildVO> pageSearchOrderChild(PageOrderChildOfDriverSearchParam param);
OrderChildEstimatedFreightVO getEstimatedFreight(OrderChildEstimatedFreightParam param);
OrderChildPoundInfoVO getOrderChildPoundInfo(String childNo);
OrderChildFreightInfoVO getOrderChildFreightInfo(String childNo);
IPage<PageOrderChildPoundAuditVO> pagePoundAuditList(PagePoundAuditParam param);
IPage<PageCarrierOrderChildVO> pageCarrierOrderChildList(PageCarrierOrderChildParam param);
List<OrderChildPCVO> getOrderChildInfoByOrderGoodsNo(String orderGoodsNo);
}
package com.clx.performance.service;
import java.util.List;
/**
* @author kavin
......@@ -10,9 +9,4 @@ import java.util.List;
*/
public interface OrderGoodsDriverTruckService {
/**
* 通过货单号获取定向车辆
*/
List<Integer> getTrucksByOrderGoodsNo(String orderGoodsNo);
}
......@@ -4,8 +4,8 @@ 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;
import java.math.BigDecimal;
/**
* @author kavin
......@@ -18,4 +18,7 @@ public interface OrderGoodsService {
OrderGoodsVO getOrderGoodsInfoByOrderGoodsNoForAPP(String orderGoodsNo);
IPage<OrderGoodsVO> pageOrderGoodsList(PageOrderGoodsListParam param);
void updateOrderGoodsReduceWeightAndStatus(Integer id, BigDecimal orderChildWeight);
}
package com.clx.performance.service;
import java.util.List;
public interface OrderGoodsTruckBindService {
List<Integer> getTrucksByOrderGoodsNo(String orderGoodsNo);
}
......@@ -5,12 +5,12 @@ 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.OrderChildLogEnum;
import com.clx.performance.enums.OrderChildPoundAuditEnum;
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.model.*;
import com.clx.performance.param.pc.PoundAuditParam;
import com.clx.performance.service.OrderChildLogService;
import com.clx.performance.service.OrderChildPoundAuditService;
import com.clx.performance.vo.pc.OrderChildPoundAuditDetailVO;
import com.msl.user.data.UserSessionData;
......@@ -42,6 +42,8 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
private final OrderChildDao orderChildDao;
private final OrderChildLogService orderChildLogService;
@Override
public OrderChildPoundAuditDetailVO getPoundAuditDetail(String childNo) {
......@@ -73,9 +75,11 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
poundAuditDetail.setRemark(param.getRemark());
poundAuditDetail.setId(null);
if(Objects.equals(param.getStatus(),OrderChildPoundAudit.AuditStatus.FAIL.getCode())){
Integer type = OrderChildLogEnum.Type.POUND_AUDIT.getCode();
if(Objects.equals(param.getStatus(), OrderChildPoundAuditEnum.Status.REJECT.getCode())){
poundAuditDetail.setLoadNet(orderChild.getLoadNet());
poundAuditDetail.setUnloadNet(orderChild.getUnloadNet());
type = OrderChildLogEnum.Type.POUND_AUDIT_REJECT.getCode();
}else{
if(Objects.nonNull(param.getLoadNet())){
poundAuditDetail.setLoadNet(param.getLoadNet());
......@@ -94,8 +98,8 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
orderChildPoundAuditDao.saveEntity(poundAuditDetail);
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
OrderChildPoundLog poundLog = OrderChildPoundLog.builder().childNo(param.getChildNo()).status(param.getStatus()).createType(OrderChildPoundLog.CreateType.CARRIER.getCode())
.remark(OrderChildPoundAudit.AuditStatus.getByCode(param.getStatus()).get().getMsg()).createBy(loginUserInfo.getUserNo()).createName(loginUserInfo.getUserName()).build();
OrderChildPoundLog poundLog = OrderChildPoundLog.builder().childNo(param.getChildNo()).status(param.getStatus()).createType(OrderChildLogEnum.CreateType.PLATFORM.getCode())
.remark(OrderChildPoundAuditEnum.Status.getByCode(param.getStatus()).get().getMsg()).createBy(loginUserInfo.getUserNo()).createName(loginUserInfo.getUserName()).build();
orderChildPoundLogDao.saveEntity(poundLog);
......@@ -108,5 +112,8 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
orderChild.setPoundStatus(param.getStatus());
orderChildDao.updatePoundAuditStatus(orderChild);
orderChildLogService.saveOrderChildLog(param.getChildNo(),type,OrderChildLogEnum.Type.getByCode(type).get().getMsg(),
OrderChildLogEnum.CreateType.PLATFORM.getCode(), loginUserInfo.getUserNo(),loginUserInfo.getUserName());
}
}
......@@ -18,10 +18,5 @@ import java.util.List;
@AllArgsConstructor
public class OrderGoodsDriverTruckServiceImpl implements OrderGoodsDriverTruckService {
private final OrderGoodsDriverTruckDao orderGoodsDriverTruckDao;
@Override
public List<Integer> getTrucksByOrderGoodsNo(String orderGoodsNo) {
return orderGoodsDriverTruckDao.getTrucksByOrderGoodsNo(orderGoodsNo);
}
}
......@@ -13,6 +13,8 @@ import com.msl.common.result.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
/**
* @author kavin
* Date 2023-09-17
......@@ -54,4 +56,10 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
public IPage<OrderGoodsVO> pageOrderGoodsList(PageOrderGoodsListParam param) {
return orderGoodsDao.pageOrderGoodsList(param);
}
@Override
public void updateOrderGoodsReduceWeightAndStatus(Integer id, BigDecimal orderChildWeight) {
orderGoodsDao.updateOrderGoodsReduceWeightAndStatus(id, orderChildWeight);
}
}
package com.clx.performance.service.impl;
import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.service.OrderGoodsTruckBindService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class OrderGoodsTruckBindServiceImpl implements OrderGoodsTruckBindService {
@Autowired
private OrderGoodsTruckBindDao orderGoodsTruckBindDao;
@Override
public List<Integer> getTrucksByOrderGoodsNo(String orderGoodsNo) {
return orderGoodsTruckBindDao.getTrucksByOrderGoodsNo(orderGoodsNo);
}
}
package com.clx.performance.service.impl;
import com.clx.performance.constant.RedisConstants;
import com.clx.performance.enums.PerformanceResultEnum;
import com.msl.common.exception.ServiceSystemException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.util.concurrent.ThreadLocalRandom;
@Slf4j
@Service
public class UniqueOrderNumService {
@Autowired
RedisTemplate<String, Object> jsonTemplate;
/**
* 获取指定日期唯一的订单号
* @param date 日期
* @return 所指定日期的唯一订单号
*/
public String getUniqueOrderNum(String date) {
if(StringUtils.isBlank(date)){
throw new ServiceSystemException(PerformanceResultEnum.DATA_NOT_FIND);
}
Integer orderNum = (Integer) jsonTemplate.opsForList().leftPop(RedisConstants.CARRIER_ORDER_NUM_POOL_KEY.replace("{date}", date));
if(null == orderNum){
throw new ServiceSystemException(PerformanceResultEnum.DATA_NOT_FIND);
}
return new StringBuilder().append(date).append(orderNum).append(String.format("%02d", ThreadLocalRandom.current().nextInt(99))).toString();
}
}
......@@ -3,8 +3,11 @@ package com.clx.performance.sqlProvider;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.param.app.PageOrderChildOfDriverParam;
import com.clx.performance.param.app.PageOrderChildOfDriverSearchParam;
import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.pc.PageCarrierOrderChildVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
......@@ -18,8 +21,29 @@ public class OrderChildSqlProvider {
return new SQL(){{
SELECT("child_no,goods_name,freight_price," +
"send_address,receive_address," +
"driver_name,driver_mobile," +
"weight," +
"driver_user_no, driver_name,driver_mobile," +
"truck_no," +
"unload_pound_no,weight," +
"cancel_remark," +
"pound_status,status," +
"date_format(load_deadline, '%Y-%m-%d %H:%i:%s') as loadDeadline," +
"date_format(unload_time, '%Y-%m-%d %H:%i:%s') as unloadTime "
);
FROM("order_child ");
WHERE("(user_no = #{param.userNo} or driver_user_no = #{param.userNo}) ");
// if (Objects.nonNull(param.getStatus())) {WHERE("status = #{param.status}");}
ORDER_BY("create_time desc");
}}.toString();
}
public String pageSearchOrderChildOfDriver(@Param("page") Page<OrderChildVO> page, @Param("param") PageOrderChildOfDriverSearchParam param) {
return new SQL(){{
SELECT("child_no,goods_name,freight_price," +
"send_address,receive_address," +
"driver_user_no, driver_name,driver_mobile," +
"truck_no," +
"unload_pound_no,weight," +
"cancel_remark," +
"pound_status,status," +
"date_format(load_deadline, '%Y-%m-%d %H:%i:%s') as loadDeadline," +
......@@ -35,7 +59,6 @@ public class OrderChildSqlProvider {
" or receive_address like CONCAT(#{param.content},'%') " +
")");}
if (Objects.nonNull(param.getStatus())) {WHERE("status = #{param.status}");}
ORDER_BY("create_time desc");
}}.toString();
......@@ -43,8 +66,8 @@ public class OrderChildSqlProvider {
public String pagePoundAuditList(@Param("page") Page<PageOrderChildPoundAuditVO> page, @Param("param") PagePoundAuditParam param) {
return new SQL(){{
SELECT("child_no,status,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," +
SELECT("child_no,pound_status as status,goods_name,send_address,receive_address,driver_name,driver_mobile,load_net,unload_net," +
"date_format(pay_time, '%Y-%m-%d %H:%i:%s') as payTime," +
"date_format(load_time, '%Y-%m-%d %H:%i:%s') as loadTime," +
"date_format(unload_time, '%Y-%m-%d %H:%i:%s') as unloadTime ");
FROM("order_child ");
......@@ -65,4 +88,26 @@ public class OrderChildSqlProvider {
}
public String pageCarrierOrderChildList(@Param("page") Page<PageCarrierOrderChildVO> page, @Param("param") PageCarrierOrderChildParam param) {
return new SQL(){{
SELECT("child_no,order_goods_no,status,goods_name,freight_price,send_address,receive_address,driver_name,driver_mobile,load_net,unload_net," +
"date_format(pay_time, '%Y-%m-%d %H:%i:%s') as payTime," +
"date_format(finish_time, '%Y-%m-%d %H:%i:%s') as finishTime");
FROM("order_child ");
if (StringUtils.isNotBlank(param.getBeginTime())) {WHERE("pay_time >= #{param.beginTime}");}
if (StringUtils.isNotBlank(param.getEndTime())) {WHERE("pay_time <= #{param.endTime}");}
if (StringUtils.isNotBlank(param.getChildNo())) {WHERE("child_no = #{param.childNo}");}
if (StringUtils.isNotBlank(param.getDriverName())) {WHERE("driver_name= #{param.driverName}");}
if (StringUtils.isNotBlank(param.getDriverMobile())) {WHERE("driver_mobile = #{param.driverMobile}");}
if (StringUtils.isNotBlank(param.getSendAddress())) {WHERE("send_address = #{param.sendAddress}");}
if (StringUtils.isNotBlank(param.getReceiveAddress())) {WHERE("receive_address= #{param.receiveAddress}");}
if (Objects.nonNull(param.getStatus())) {WHERE("status = #{param.status}");}
ORDER_BY("id desc");
}}.toString();
}
}
......@@ -13,14 +13,14 @@ import java.util.Objects;
public class OrderGoodsSqlProvider {
public String getMaxOrderGoodsId(String type) {
return "SELECT s.order_goods_no FROM `order_goods` s WHERE s. id = ( SELECT max(id) FROM order_goods where order_goods_type = '" + type + "')";
return "SELECT s.order_goods_no FROM `order_goods` s WHERE s. id = ( SELECT max(id) FROM order_goods )";
// return "SELECT s.order_goods_no FROM `order_goods` s WHERE s. id = ( SELECT max(id) FROM order_goods where order_goods_type = '" + type + "')";
}
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," +
" concat(a.order_goods_type,a.order_goods_no) as order_goods_no, a.order_goods_status, a.extract_weight, " +
SELECT("a.id, a.order_no," +
" a.order_goods_no, a.order_goods_status, a.extract_weight, " +
" a.residue_transport_weight,a.already_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," +
......
package com.clx.performance.sqlProvider;
import java.time.LocalDateTime;
import java.util.List;
public class OrderGoodsTruckBindSqlProvider {
public String saveBatchEntity(String orderNo, String orderGoodsNo, List<String> trackList, String now) {
StringBuffer sqlList = new StringBuffer();
sqlList.append(" INSERT INTO order_goods_truck_bind(order_no,order_goods_no,truck_no,create_time,update_time) VALUES ");
for (int i = 0; i < trackList.size(); i++) {
String truckNo = trackList.get(i);
sqlList.append(" ('").append(orderNo).append("','").append(orderGoodsNo).append("','").append(truckNo).append("','")
.append(now).append("','").append(now)
.append("')");
if (i < trackList.size() - 1) {
sqlList.append(",");
}
}
return sqlList.toString();
}
}
package com.clx.performance.struct;
import com.clx.order.vo.feign.FeignAddressVO;
import com.clx.performance.vo.app.Address;
import com.msl.common.utils.DateStructUtil;
import org.apache.commons.lang3.StringUtils;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import java.util.Objects;
@Mapper(componentModel = "spring", uses = DateStructUtil.class, imports = {Objects.class})
public interface AddressStruct {
@Mapping(target = "address", source = "item.addressShorter")
@Mapping(target = "addressDetail", expression = "java(Objects.isNull(item)? null : addressDetail(item))")
Address convert(FeignAddressVO.Address item);
default String addressDetail(FeignAddressVO.Address item){
return (StringUtils.isBlank(item.getProvince())? "":item.getProvince())
+ (StringUtils.isBlank(item.getCity())? "":item.getCity())
+ (StringUtils.isBlank(item.getCounty())? "":item.getCounty())
+ (StringUtils.isBlank(item.getTown())? "":item.getTown())
+ (StringUtils.isBlank(item.getStreet())? "":item.getStreet())
+ (StringUtils.isBlank(item.getAddress())? "":item.getAddress());
}
}
package com.clx.performance.struct;
import com.clx.performance.model.OrderChild;
import com.clx.performance.vo.app.OrderChildFreightInfoVO;
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 OrderChildFreightStruct {
OrderChildFreightInfoVO convert(OrderChild item);
}
package com.clx.performance.struct;
import com.clx.performance.model.OrderChild;
import com.clx.performance.vo.app.OrderChildPoundInfoVO;
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 OrderChildPoundStruct {
OrderChildPoundInfoVO convert(OrderChild item);
}
......@@ -2,13 +2,18 @@ package com.clx.performance.struct;
import com.clx.performance.model.OrderChild;
import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.pc.OrderChildPCVO;
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 OrderChildStruct {
OrderChildVO convert(OrderChild item);
List<OrderChildPCVO> convertList(List<OrderChild> item);
}
package com.clx.performance;
import com.clx.performance.mapper.OrderGoodsMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.math.BigDecimal;
@SpringBootTest
@RunWith(SpringRunner.class)
public class JobTest {
// @Autowired
// private QuotationJob quotationJob;
//
// @Test
// public void test1() {
// quotationJob.quotationExpired();
// }
@Autowired
private OrderGoodsMapper oderGoodsMapper;
@Test
public void test1() {
oderGoodsMapper.updateOrderGoodsWeightAndStatus(94,new BigDecimal("23.32"),11);
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论