donglang 3 дней назад
Родитель
Сommit
f80e32f64c

+ 1 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/ErrorCodeEnum.java

@@ -62,6 +62,7 @@ public enum ErrorCodeEnum {
     LOGISTICS_ORDER_AMOUNT_ERROR("70005", "物流订单的总运单量异常"),
     LOGISTICS_ORDER_NOT_DISPATCH_TRUCK("70006", "物流订单无当前派车数据"),
     LOGISTICS_CONTRACT_NOT_FOUND("70007", "物流订单无合同数据"),
+    LOGISTICS_ADDRESS_NOT_FOUND("70008", "物流订单无地址数据"),
 
     // ====================== 运单订单(80000~89999)======================
     WAYBILL_ORDER_NOT_FOUND("80000", "当前物流运单不存在"),

+ 13 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/enterpriseApp/AppWayBillController.java

@@ -429,5 +429,18 @@ public class AppWayBillController {
         return BaseResult.success();
     }
 
+    /**
+     * 运单每日报表
+     *
+     * @param param
+     * @return
+     */
+    @Operation(summary = "运单每日报表", description = "运单每日报表")
+    @PostMapping("/queryWaybillOrderReport")
+    public BaseResult<PageDataResult<WaybillOrderReportResp>> queryWaybillOrderReport(WaybillOrderReportQueryParam param){
+        waybillOrderService.queryWaybillOrderReport(param);
+        return BaseResult.success();
+    }
+
 
 }

+ 53 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/WaybillOrderReportQueryParam.java

@@ -0,0 +1,53 @@
+package com.sckw.transport.model.param;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.sckw.core.web.request.PageReq;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author :donglang
+ * @version :1.0
+ * @description :
+ * @create :2025-11-13 08:59:00
+ */
+@Data
+public class WaybillOrderReportQueryParam extends PageReq implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 7250765223450002065L;
+
+    /**
+     * 企业id
+     */
+    @Schema(description = "企业id")
+    @NotNull(message = "企业id不能为空")
+    private Long entId;
+
+    /**
+     * 客户id
+     */
+    @Schema(description = "客户id")
+    private List<Long> customerEntIds;
+
+    /**
+     * 商品名称
+     */
+    @Schema(description = "商品名称")
+    private String goodsName;
+
+    /**
+     * 时间
+     */
+    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
+    @Schema(description = "时间")
+    private Date endTime;
+
+
+}

+ 120 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/WaybillOrderReportResp.java

@@ -0,0 +1,120 @@
+package com.sckw.transport.model.param;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author :chenXiaoFei
+ * @version :1.0
+ * @description : 分页查询运单每日报表
+ * @create :2025-11-11 20:16:00
+ */
+@Data
+public class WaybillOrderReportResp implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 7250765223450002066L;
+
+    /**
+     * 运单id
+     */
+    @Schema(description = "运单id")
+    private Long id;
+
+    /**
+     * 贸易订单编号
+     */
+    @Schema(description = "贸易订单编号")
+    private String tradeOrderNo;
+    /**
+     * 运单编号
+     */
+    @Schema(description = "运单编号")
+    private String waybillNo;
+
+    /**
+     * 采购单位id
+     */
+    @Schema(description = "采购单位id")
+    private String ProcurementEntId;
+
+    /**
+     * 采购单位名称
+     */
+    @Schema(description = "采购单位名称")
+    private String ProcurementEntName;
+
+    /**
+     * 商品id
+     */
+    @Schema(description = "商品id")
+    private String goodsId;
+
+    /**
+     * 商品名称
+     */
+    @Schema(description = "商品名称")
+    private String goodsName;
+
+    /**
+     * 车牌号
+     */
+    @Schema(description = "车牌号")
+    private String truckNo;
+
+    /**
+     * 皮重
+     */
+    @Schema(description = "皮重")
+    private BigDecimal tareAmount;
+
+    /**
+     * 毛重
+     */
+    @Schema(description = "毛重")
+    private BigDecimal grossAmount;
+
+    /**
+     * 净重
+     */
+    @Schema(description = "净重")
+    private BigDecimal amount;
+
+    /**
+     * 离场时间
+     */
+    @Schema(description = "离场时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date leaveTime;
+
+    /**
+     * 卸货联系人
+     */
+    @Schema(description = "卸货联系人")
+    private String unloadingPerson;
+
+    /**
+     * 单价
+     */
+    @Schema(description = "单价")
+    private BigDecimal unitPrice;
+
+    /**
+     * 金额:单价*净重
+     */
+    @Schema(description = "金额")
+    private BigDecimal totalPrice;
+
+    /**
+     * 剩余预付款
+     */
+    @Schema(description = "剩余预付款")
+    private BigDecimal advancePayment;
+
+}

+ 8 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtLogisticsOrderAddressRepository.java

@@ -7,6 +7,7 @@ import com.sckw.transport.model.KwtLogisticsOrderAddress;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * @author :chenXiaoFei
@@ -28,4 +29,11 @@ public class KwtLogisticsOrderAddressRepository extends ServiceImpl<KwtLogistics
                 .eq(KwtLogisticsOrderAddress::getDelFlag,0)
                 .eq(KwtLogisticsOrderAddress::getLOrderId,logOrderId));
     }
+
+    public List<KwtLogisticsOrderAddress> queryByLogOrderIds(Set<Long> logOrderIdList) {
+        return list(Wrappers.<KwtLogisticsOrderAddress>lambdaQuery()
+                .eq(KwtLogisticsOrderAddress::getDelFlag,0)
+                .eq(KwtLogisticsOrderAddress::getAddressType,2)
+                .in(KwtLogisticsOrderAddress::getLOrderId,logOrderIdList));
+    }
 }

+ 1 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/GatekeeperOrderService.java

@@ -1025,6 +1025,7 @@ public class GatekeeperOrderService {
 
         if (isEmptyLoadLeave) {
             log.info("[门卫放行]空载离场的原矿订单不需要创建卸货门卫订单:{}", JSON.toJSONString(waybillOrder));
+            return;
         }
 
         // 只有原矿运输的才会新增卸货门卫订单

+ 70 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/WaybillOrderService.java

@@ -1971,6 +1971,76 @@ public class WaybillOrderService {
     }
 
 
+    /**
+     * 查询运单每日报表
+     * @param param
+     * @return
+     */
+    public PageDataResult<WaybillOrderReportResp> queryWaybillOrderReport(WaybillOrderReportQueryParam param) {
+        log.info("[报表]开始查询运单每日报表:{}", JSON.toJSONString(param));
+
+        // 1. 贸易订单id
+        Set<Long> tOrderId = tradeOrderInfoService.queryOrderIdByEntId(param.getEntId(), "2");
+        if (CollectionUtils.isEmpty(tOrderId)) {
+            log.info("当前企业无贸易订单!,entId:{}", param.getEntId());
+            return PageDataResult.empty(param.getPageNum(), param.getPageSize());
+        }
+        // 2. 贸易订单
+        List<OrderDetailVo> tOrderList = tradeOrderInfoService.queryByTradeOrderIds(tOrderId);
+        if (CollectionUtils.isEmpty(tOrderList)) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.TRADE_ORDER_NOT_FOUND, "贸易订单不存在,tOrderIds:" + JSON.toJSONString(tOrderId));
+        }
+        Map<Long, OrderDetailVo> tOrderMap = tOrderList.stream()
+                .collect(Collectors.toMap(OrderDetailVo::getId, Function.identity(), (x, y) -> x));
+
+        // 2. 物流订单
+        List<KwtLogisticsOrder> logisticsOrders = logisticsOrderRepository.queryByTradeOrderIds(tOrderId);
+        if (CollectionUtils.isEmpty(logisticsOrders)) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.LOGISTICS_ORDER_NOT_FOUND, "物流订单不存在,tOrderIds:" + JSON.toJSONString(tOrderId));
+        }
+        Set<Long> lOrderIds= logisticsOrders.stream().map(KwtLogisticsOrder::getId).collect(Collectors.toSet());
+
+        // 3.物流卸货订单
+        List<KwtLogisticsOrderAddress> lOrderAddresseList = logisticsOrderAddressRepository.queryByLogOrderIds(lOrderIds);
+        if (CollectionUtils.isEmpty(lOrderAddresseList)) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.LOGISTICS_ADDRESS_NOT_FOUND, "物流订单卸货信息不存在,lOrderIds:" + JSON.toJSONString(lOrderIds));
+        }
+        Map<Long, KwtLogisticsOrderAddress> addressMap = lOrderAddresseList
+                .stream().collect(Collectors.toMap(KwtLogisticsOrderAddress::getLOrderId, Function.identity(), (x, y) -> x));
+
+        // 4.运单
+        LambdaQueryWrapper<KwtWaybillOrder> queryWrapper = Wrappers.<KwtWaybillOrder>lambdaQuery()
+                .eq(KwtWaybillOrder::getEntId, param.getEntId())
+                .eq(KwtWaybillOrder::getDelFlag, 0)
+                .in(KwtWaybillOrder::getLOrderId, lOrderIds)
+                .ge(KwtWaybillOrder::getStatus,18)
+                .orderByDesc(KwtWaybillOrder::getCreateTime)
+                .orderByDesc(KwtWaybillOrder::getId);
+        List<KwtWaybillOrder> waybillOrderList = waybillOrderRepository.list(queryWrapper);
+        if (CollectionUtils.isEmpty(waybillOrderList)) {
+            throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "物流运单不存在,lOrderIds:" + JSON.toJSONString(lOrderIds));
+        }
+        Map<Long, KwtWaybillOrder> waybillOrderMap = waybillOrderList.stream().collect(Collectors.toMap(KwtWaybillOrder::getLOrderId, Function.identity(), (x, y) -> x));
+
+        // 5.
+
+
+
+
+        Page<KwtWaybillOrder> page = waybillOrderRepository.page(new Page<>(param.getPageNum(), param.getPageSize()), queryWrapper);
+        List<KwtWaybillOrder> records = page.getRecords();
+        if (CollectionUtils.isEmpty(records)) {
+            log.info("当前企业无已离场数据,entId:{}", param.getEntId());
+            return PageDataResult.empty(param.getPageNum(), param.getPageSize());
+        }
+
+
+        log.info("[报表]查询运单每日报表结束:{}", JSON.toJSONString(param));
+
+        return PageDataResult.success(param.getPageNum(), param.getPageSize(), null , null);
+
+    }
+
 
 //    /**
 //     * 物流订单接单