diff --git a/src/main/java/com/delivery/project/document/controller/DeliveryOrderController.java b/src/main/java/com/delivery/project/document/controller/DeliveryOrderController.java index ae967e0..330273a 100644 --- a/src/main/java/com/delivery/project/document/controller/DeliveryOrderController.java +++ b/src/main/java/com/delivery/project/document/controller/DeliveryOrderController.java @@ -113,8 +113,8 @@ public class DeliveryOrderController extends BaseController { @PreAuthorize("@ss.hasPermi('document:order:add')") @Log(title = "配送单据主-保存(含附件)", businessType = BusinessType.INSERT) @PostMapping("/save") - public AjaxResult save(@RequestBody DeliveryOrderSaveDTO dto) { - String username = "大爷的!"; + public AjaxResult save(@RequestBody DeliveryOrderSaveDTO dto) {; + String username = getUsername(); int rows = deliveryOrderService.saveOrderWithAttachments(dto, username); return toAjax(rows); } @@ -148,8 +148,8 @@ public class DeliveryOrderController extends BaseController { * 从智慧实物系统拉取待配送出库单据列表 */ @GetMapping("/wisdom/rk/list") - public AjaxResult listRkFromWisdom(String billNoCk) { - List list = deliveryOrderService.listWisdomRkForDelivery(billNoCk); + public AjaxResult listRkFromWisdom(String billNo) { + List list = deliveryOrderService.listWisdomRkForDelivery(billNo); return AjaxResult.success(list); } diff --git a/src/main/java/com/delivery/project/document/domain/DeliveryOrder.java b/src/main/java/com/delivery/project/document/domain/DeliveryOrder.java index 3d5e158..99b55b8 100644 --- a/src/main/java/com/delivery/project/document/domain/DeliveryOrder.java +++ b/src/main/java/com/delivery/project/document/domain/DeliveryOrder.java @@ -185,9 +185,7 @@ public class DeliveryOrder extends BaseEntity { /** 总公里数(行驶里程) */ @Excel(name = "总公里数") private BigDecimal totalKm; - /** 总公里数(行驶里程) */ - @Excel(name = "出库单据号") - private String billNoCk; + @Excel(name = "主键ID") private Long rkInfoId; @@ -340,8 +338,6 @@ public class DeliveryOrder extends BaseEntity { public BigDecimal getTotalKm() { return totalKm; } public void setTotalKm(BigDecimal totalKm) { this.totalKm = totalKm; } - public String getBillNoCk() { return billNoCk; } - public void setBillNoCk(String billNoCk) { this.billNoCk = billNoCk; } // ===================== toString ===================== @Override @@ -392,7 +388,6 @@ public class DeliveryOrder extends BaseEntity { .append("updateBy", getUpdateBy()) .append("updateTime", getUpdateTime()) .append("isDelete", getIsDelete()) - .append("billNoCk", getBillNoCk()) .toString(); } } diff --git a/src/main/java/com/delivery/project/document/domain/vo/DeliveryOrderGroupVO.java b/src/main/java/com/delivery/project/document/domain/vo/DeliveryOrderGroupVO.java index 1782a98..0eed9f5 100644 --- a/src/main/java/com/delivery/project/document/domain/vo/DeliveryOrderGroupVO.java +++ b/src/main/java/com/delivery/project/document/domain/vo/DeliveryOrderGroupVO.java @@ -27,7 +27,7 @@ public class DeliveryOrderGroupVO { /** 配送单号 */ private String orderNo; /** 出库单据号 */ - private String billNoCk; + private String billNo; /** 配送日期(格式:yyyy-MM-dd) */ @JsonFormat(pattern = "yyyy-MM-dd") private Date deliveryDate; diff --git a/src/main/java/com/delivery/project/document/domain/vo/DeliveryOrderVo.java b/src/main/java/com/delivery/project/document/domain/vo/DeliveryOrderVo.java index 59914a2..6e2d934 100644 --- a/src/main/java/com/delivery/project/document/domain/vo/DeliveryOrderVo.java +++ b/src/main/java/com/delivery/project/document/domain/vo/DeliveryOrderVo.java @@ -19,7 +19,7 @@ public class DeliveryOrderVo { private String orderNo; /** 出库单据号 */ - private String billNoCk; + private String billNo; /** 起始地点名称 */ private String originName; diff --git a/src/main/java/com/delivery/project/document/service/IDeliveryOrderService.java b/src/main/java/com/delivery/project/document/service/IDeliveryOrderService.java index 7701f9e..73ca962 100644 --- a/src/main/java/com/delivery/project/document/service/IDeliveryOrderService.java +++ b/src/main/java/com/delivery/project/document/service/IDeliveryOrderService.java @@ -37,8 +37,8 @@ public interface IDeliveryOrderService { /** 详情:按单号查行 */ List listByOrderNo(String orderNo); - /** 从智慧实物系统查询待配送出库单据(可按出库单号 billNoCk 过滤) */ - List listWisdomRkForDelivery(String billNoCk); + /** 从智慧实物系统查询待配送出库单据(可按出库单号 billNo 过滤) */ + List listWisdomRkForDelivery(String billNo); // ======================== 统计 ======================== diff --git a/src/main/java/com/delivery/project/document/service/impl/DeliveryAttachmentServiceImpl.java b/src/main/java/com/delivery/project/document/service/impl/DeliveryAttachmentServiceImpl.java index 3a87fc2..bc13ff3 100644 --- a/src/main/java/com/delivery/project/document/service/impl/DeliveryAttachmentServiceImpl.java +++ b/src/main/java/com/delivery/project/document/service/impl/DeliveryAttachmentServiceImpl.java @@ -141,43 +141,47 @@ public class DeliveryAttachmentServiceImpl implements IDeliveryAttachmentService @Transactional(rollbackFor = Exception.class) public int executeBind(DeliveryExecuteBindDTO dto) { - // 0) 基础校验 + // ====================== 0. 基础校验 ====================== if (dto == null || StringUtils.isBlank(dto.getOrderNo())) { throw new ServiceException("订单号不能为空"); } - // 1) 校验订单存在(一个单号多行) - List existList = deliveryOrderMapper.selectDeliveryOrderByOrderNo(dto.getOrderNo()); + // ====================== 1. 校验配送单是否存在 ====================== + List existList = + deliveryOrderMapper.selectDeliveryOrderByOrderNo(dto.getOrderNo()); + if (existList == null || existList.isEmpty()) { throw new ServiceException("配送单不存在:" + dto.getOrderNo()); } - // ====== 从配送单中拿到所有 rk_info_id 列表(允许为空:手工配送单场景) ====== - List rkInfoIdList = existList.stream() + // ====================== 2. 收集 rk_record_id ====================== + List rkRecordIdList = existList.stream() .map(DeliveryOrder::getRkRecordId) .filter(Objects::nonNull) .distinct() .collect(Collectors.toList()); - if (rkInfoIdList.isEmpty()) { - // 手工创建的配送单可能没有绑定 rk_info_id:允许为空,后续只跳过 WMS 回写 - log.warn("配送单未绑定 rk_info_id,将跳过 WMS 库存状态回写。orderNo={}", dto.getOrderNo()); + if (rkRecordIdList.isEmpty()) { + log.warn("配送单未绑定 rk_record_id,将跳过 WMS 回写。orderNo={}", + dto.getOrderNo()); } - // ====================================================================== + // ====================== 3. 附件校验 ====================== if (dto.getAttachments() == null || dto.getAttachments().isEmpty()) { throw new ServiceException("附件列表不能为空"); } - // 2) 批量插入附件(只传 URL) + // ====================== 4. 批量插入附件 ====================== List list = new ArrayList<>(); String username = getUsername(); for (DeliveryAttachItemDTO it : dto.getAttachments()) { - if (it == null) { - continue; - } - if (it.getScene() == null || it.getBizType() == null || it.getUrl() == null) { + + if (it == null) continue; + + if (it.getScene() == null || + it.getBizType() == null || + it.getUrl() == null) { continue; } @@ -188,38 +192,72 @@ public class DeliveryAttachmentServiceImpl implements IDeliveryAttachmentService a.setUrl(it.getUrl()); a.setSortNo(it.getSortNo()); a.setRemark(it.getRemark()); - a.setStatus("1"); // 已绑定 + + a.setStatus("1"); // 已绑定 a.setIsDelete("0"); a.setCreateBy(username); a.setCreateTime(DateUtils.getNowDate()); + list.add(a); } if (list.isEmpty()) { throw new ServiceException("有效附件条目为空"); } + deliveryAttachmentMapper.batchInsert(list); - // 3) 回写配送单(仅填需要更新的字段),交给已有 updateDeliveryOrder(按 order_no 更新) + // ====================== 5. 回写配送单 ====================== DeliveryOrder patch = new DeliveryOrder(); patch.setOrderNo(dto.getOrderNo()); - String scene = dto.getScene() == null ? "" : dto.getScene().toUpperCase(Locale.ROOT); + String scene = dto.getScene() == null + ? "" + : dto.getScene().toUpperCase(Locale.ROOT); + // ====================== ORIGIN:开始配送 ====================== if ("ORIGIN".equals(scene)) { - // 起点:司机信息 + 起点经纬度 + 状态=2(起运/配送中) - if (dto.getDriverName() != null) patch.setDriverName(dto.getDriverName()); - if (dto.getDriverPhone() != null) patch.setDriverPhone(dto.getDriverPhone()); - if (dto.getPlateNo() != null) patch.setPlateNo(dto.getPlateNo()); - if (dto.getLng() != null) patch.setOriginLng(BigDecimal.valueOf(dto.getLng())); - if (dto.getLat() != null) patch.setOriginLat(BigDecimal.valueOf(dto.getLat())); + + if (dto.getDriverName() != null) + patch.setDriverName(dto.getDriverName()); + + if (dto.getDriverPhone() != null) + patch.setDriverPhone(dto.getDriverPhone()); + + if (dto.getPlateNo() != null) + patch.setPlateNo(dto.getPlateNo()); + + if (dto.getLng() != null) + patch.setOriginLng(BigDecimal.valueOf(dto.getLng())); + + if (dto.getLat() != null) + patch.setOriginLat(BigDecimal.valueOf(dto.getLat())); + + // 本系统状态:配送中 patch.setOrderStatus("2"); - } else if ("DEST".equals(scene)) { - // 终点:终点经纬度 + 费用 + 状态=3(已完成) - if (dto.getLng() != null) patch.setDestLng(BigDecimal.valueOf(dto.getLng())); - if (dto.getLat() != null) patch.setDestLat(BigDecimal.valueOf(dto.getLat())); + // 🔥 回写 WMS:3 = 配送中 + if (rkRecordIdList != null && !rkRecordIdList.isEmpty()) { + boolean ok = updateWmsRecordIsDeliveryByIds(rkRecordIdList, 3); + + if (!ok) { + throw new ServiceException( + "回写 WMS 为【配送中】失败,rk_record_id=" + rkRecordIdList); + } + } + + } + // ====================== DEST:完成配送 ====================== + else if ("DEST".equals(scene)) { + + if (dto.getLng() != null) + patch.setDestLng(BigDecimal.valueOf(dto.getLng())); + + if (dto.getLat() != null) + patch.setDestLat(BigDecimal.valueOf(dto.getLat())); + + // 费用校验 if (dto.getActualFee() != null) { if (dto.getActualFee().compareTo(BigDecimal.ZERO) < 0) { throw new ServiceException("实际费用不能为负数"); @@ -234,73 +272,72 @@ public class DeliveryAttachmentServiceImpl implements IDeliveryAttachmentService patch.setTollFee(dto.getTollFee()); } + // 接收状态校验 Integer receiveStatus = dto.getReceiveStatus(); if (receiveStatus == null) { throw new ServiceException("完成配送时必须选择接收物资状态"); } - if (receiveStatus != 0 && receiveStatus != 1 && receiveStatus != 2) { + + if (receiveStatus != 0 && + receiveStatus != 1 && + receiveStatus != 2) { throw new ServiceException("接收物资状态不合法"); } + patch.setReceiveStatus(receiveStatus); - if (receiveStatus == 2) { - // 有问题必须写说明 - if (StringUtils.isBlank(dto.getReceiveProblem())) { - throw new ServiceException("存在问题时必须填写问题描述"); - } - patch.setReceiveProblem(dto.getReceiveProblem()); + if (receiveStatus == 2 && + StringUtils.isBlank(dto.getReceiveProblem())) { + + throw new ServiceException("存在问题时必须填写问题描述"); + } + + patch.setReceiveProblem(dto.getReceiveProblem()); + + // 本系统状态:已完成 + patch.setOrderStatus("3"); + + // 🔥 回写 WMS:4 = 配送完成 + if (rkRecordIdList != null && !rkRecordIdList.isEmpty()) { + + boolean ok = updateWmsRecordIsDeliveryByIds(rkRecordIdList, 4); + + if (!ok) { + throw new ServiceException( + "回写 WMS 为【配送完成】失败,rk_record_id=" + rkRecordIdList); + } } - patch.setOrderStatus("3"); // 已完成 } else { - // scene 既不是 ORIGIN 也不是 DEST:不强制报错,避免影响“仅绑定附件”的场景 - // 如果你希望严格校验,可以改为 throw new ServiceException("scene 不合法"); - log.warn("executeBind 未识别的 scene={},将仅绑定附件并更新已有字段(如有)。orderNo={}", scene, dto.getOrderNo()); + log.warn("未识别 scene={},仅绑定附件", scene); } deliveryOrderMapper.updateDeliveryOrder(patch); - // 4) ⭐ 仅当 DEST 场景且存在 rk_info_id 绑定时,才远程调用 WMS 回写 is_delivery=3 - if ("DEST".equals(scene)) { - - if (rkInfoIdList != null && !rkInfoIdList.isEmpty()) { - boolean ok = updateWmsIsDeliveryByIds(rkInfoIdList, 3); - if (!ok) { - // 让整个事务回滚,附件 + 配送单状态都撤回 - throw new ServiceException("回写 WMS 配送状态失败,rk_info_id 列表:" + rkInfoIdList); - } - } else { - // 手工配送单:不回写 WMS - log.info("DEST 场景下配送单无 rk_info_id 绑定,跳过 WMS 回写。orderNo={}", dto.getOrderNo()); - } - } - return list.size(); } /** - * 远程调用智慧实物管理系统,按 rk_info 主键ID列表更新 is_delivery 状态 - * 约定请求体结构: - * { - * "ids": [1, 2, 3], - * "isDelivery": 3 - * } + * 远程调用智慧实物管理系统 + * 更新 rk_record.is_delivery + * + * 0=不需要,1=需要,2=已接单,3=配送中,4=配送完成 */ - private boolean updateWmsIsDeliveryByIds(List rkInfoIdList, int isDelivery) { + private boolean updateWmsRecordIsDeliveryByIds(List rkRecordIds, int isDelivery) { - String url = wisdomBaseUrl + "/wisdom/stock/updateDeliveryStatus"; + String url = wisdomBaseUrl + "/wisdom/record/updateDeliveryStatus"; Map body = new HashMap<>(); - body.put("ids", rkInfoIdList); + body.put("ids", rkRecordIds); body.put("isDelivery", isDelivery); String json = JSON.toJSONString(body); try { - String resp = HttpUtils.sendPost(url, json, MediaType.APPLICATION_JSON_VALUE); + String resp = HttpUtils.sendJsonPost(url, json); if (StringUtils.isBlank(resp)) { - log.error("WMS 更新失败,响应为空,url={} rkInfoIdList={}", url, rkInfoIdList); + log.error("WMS 更新失败,响应为空,ids={}", rkRecordIds); return false; } @@ -309,20 +346,23 @@ public class DeliveryAttachmentServiceImpl implements IDeliveryAttachmentService if (result != null && result.isSuccess()) { return true; } else { - String msg = (result == null) + String msg = result == null ? "响应为空" : String.valueOf(result.get(AjaxResult.MSG_TAG)); - log.error("WMS 更新失败,rkInfoIdList={},原因={}", rkInfoIdList, msg); + + log.error("WMS 更新失败,ids={},原因={}", rkRecordIds, msg); return false; } } catch (Exception e) { - log.error("调用 WMS 接口异常,rkInfoIdList={},error={}", rkInfoIdList, e.getMessage(), e); + log.error("调用 WMS 接口异常,ids={},error={}", + rkRecordIds, e.getMessage(), e); return false; } } + // 保存目录 D:\delivery private static final String BASE_PATH = "D:/delivery"; diff --git a/src/main/java/com/delivery/project/document/service/impl/DeliveryOrderServiceImpl.java b/src/main/java/com/delivery/project/document/service/impl/DeliveryOrderServiceImpl.java index 42a47c9..700d4b6 100644 --- a/src/main/java/com/delivery/project/document/service/impl/DeliveryOrderServiceImpl.java +++ b/src/main/java/com/delivery/project/document/service/impl/DeliveryOrderServiceImpl.java @@ -182,62 +182,47 @@ public class DeliveryOrderServiceImpl implements IDeliveryOrderService @Transactional(rollbackFor = Exception.class) public String createOrder(DeliveryOrderCreateDTO dto) { - // ========== 0. 参数校验 ========== if (dto == null || dto.getItems() == null || dto.getItems().isEmpty()) { throw new ServiceException("物料明细不能为空"); } - // 取第一条 billNo,判断是否来自 WMS(有 billNo = 出库单生成) String billNo = dto.getItems().get(0).getBillNo(); boolean fromWms = StringUtils.isNotBlank(billNo); - // 收集 rk_record 主键 id(用于回写 WMS) List rkRecordIds = dto.getItems().stream() .map(DeliveryOrderLineDTO::getRkRecordId) .filter(Objects::nonNull) .distinct() .collect(Collectors.toList()); - // 出库单生成场景必须有 rkRecordId if (fromWms && rkRecordIds.isEmpty()) { - throw new ServiceException("明细行缺少 rk_record 主键 id,无法回写配送状态"); + throw new ServiceException("明细行缺少 rk_record 主键 id"); } - // ========== 1. 生成配送单号 ========== String orderNo = StringUtils.isBlank(dto.getOrderNo()) ? "DO" + DateUtils.dateTimeNow("yyyyMMddHHmmssSSS") : dto.getOrderNo().trim(); Date now = DateUtils.getNowDate(); String username = SecurityUtils.getUsername(); - - Long currentUserId; - try { - currentUserId = SecurityUtils.getUserId(); - } catch (Exception e) { - throw new ServiceException("无法获取当前登录用户ID,请重新登录后重试"); - } - + Long currentUserId = SecurityUtils.getUserId(); Long makerId = dto.getMakerId() != null ? dto.getMakerId() : currentUserId; List rows = new ArrayList<>(); - // ========== 2. 组装行记录 ========== for (DeliveryOrderLineDTO it : dto.getItems()) { - // ===== WMS 生成场景校验 ===== if (fromWms) { if (!billNo.equals(it.getBillNo())) { - throw new ServiceException("当前接口暂不支持多张单据合并配送,请确保所有明细 billNo 相同"); + throw new ServiceException("暂不支持多单合并配送"); } if (it.getRkRecordId() == null) { - throw new ServiceException("明细行缺少 rk_record 主键 id"); + throw new ServiceException("明细缺少 rk_record_id"); } } DeliveryOrder row = new DeliveryOrder(); - // 2.1 头部字段(整单一致) row.setOrderNo(orderNo); row.setOriginName(dto.getOriginName()); row.setOriginLng(dto.getOriginLng()); @@ -257,12 +242,10 @@ public class DeliveryOrderServiceImpl implements IDeliveryOrderService row.setGoodsSize(dto.getGoodsSize()); row.setMakerId(makerId); + row.setReceiveStatus(dto.getReceiveStatus()); + row.setReceiveProblem(dto.getReceiveProblem()); - // 配送单状态:不传则默认“2=已接单”(保持你原来创建即回写2的行为) - String orderStatus = StringUtils.isBlank(dto.getOrderStatus()) - ? "1" - : dto.getOrderStatus().trim(); - row.setOrderStatus(orderStatus); + row.setOrderStatus(StringUtils.defaultIfBlank(dto.getOrderStatus(), "1")); row.setVehicleTypeId(dto.getVehicleTypeId()); row.setVehicleTypeName(dto.getVehicleTypeName()); @@ -272,9 +255,9 @@ public class DeliveryOrderServiceImpl implements IDeliveryOrderService row.setTotalKm(dto.getTotalKm()); row.setRemark(dto.getRemark()); - // 2.2 明细字段(关键改造点) - row.setRkRecordId(it.getRkRecordId()); // ✅ 改:关联 rk_record.id - row.setBillNo(it.getBillNo()); // ✅ 改:单据号 billNo(不再 billNoCk) + // 🔥 关键改造点 + row.setRkRecordId(it.getRkRecordId()); + row.setBillNo(it.getBillNo()); row.setXmMs(it.getXmMs()); row.setXmNo(it.getXmNo()); @@ -285,7 +268,6 @@ public class DeliveryOrderServiceImpl implements IDeliveryOrderService row.setSapNo(it.getSapNo()); row.setGysMc(it.getGysMc()); - // 2.3 通用字段 row.setIsDelete("0"); row.setCreateTime(now); row.setCreateBy(username); @@ -293,17 +275,14 @@ public class DeliveryOrderServiceImpl implements IDeliveryOrderService rows.add(row); } - // ========== 3. 落库 ========== if (!rows.isEmpty()) { deliveryOrderMapper.batchInsert(rows); } - // ========== 4. 回写 WMS(仅 WMS 生成场景) ========== if (fromWms) { - // 你最新语义:0不需要,1需要,2已接单,3配送中,4完成 boolean ok = updateWmsIsDeliveryByIds(rkRecordIds, 2); if (!ok) { - throw new ServiceException("已生成配送单,但回写 WMS 配送状态失败"); + throw new ServiceException("回写WMS失败"); } } @@ -317,12 +296,12 @@ public class DeliveryOrderServiceImpl implements IDeliveryOrderService * POST ${delivery.wisdom-base-url}/wisdom/stock/updateDeliveryStatus * Body: { "ids": [1, 2, 3], "isDelivery": 2 } */ - private boolean updateWmsIsDeliveryByIds(List rkInfoIds, int isDelivery) { + private boolean updateWmsIsDeliveryByIds(List rkRecordIds, int isDelivery) { String url = wisdomBaseUrl + "/wisdom/record/updateDeliveryStatus"; Map map = new HashMap<>(); - map.put("ids", rkInfoIds); + map.put("ids", rkRecordIds); map.put("isDelivery", isDelivery); String json = JSON.toJSONString(map); @@ -342,7 +321,7 @@ public class DeliveryOrderServiceImpl implements IDeliveryOrderService } } catch (Exception e) { - log.error("WMS 调用异常 rkInfoIds={} error={}", rkInfoIds, e.getMessage(), e); + log.error("WMS 调用异常 rkInfoIds={} error={}", rkRecordIds, e.getMessage(), e); return false; } } diff --git a/src/main/resources/mybatis/document/DeliveryOrderMapper.xml b/src/main/resources/mybatis/document/DeliveryOrderMapper.xml index 6223ea9..d8a95f8 100644 --- a/src/main/resources/mybatis/document/DeliveryOrderMapper.xml +++ b/src/main/resources/mybatis/document/DeliveryOrderMapper.xml @@ -10,10 +10,10 @@ - + - + @@ -113,7 +113,7 @@ - + @@ -162,53 +162,52 @@ select - dor.id, - dor.order_no, - dor.bill_no_ck, - dor.rk_info_id, - dor.maker_id, - -- 制单人用户名(连表 sys_user) - su.user_name AS maker_user_name, - dor.receive_status, - dor.receive_problem, - dor.xm_ms, dor.xm_no, dor.wl_no, dor.wl_ms, dor.real_qty, dor.dw, dor.sap_no, dor.gys_mc, - dor.remark, - dor.origin_name, dor.origin_lng, dor.origin_lat, - dor.dest_name, dor.dest_lng, dor.dest_lat, - dor.delivery_date, dor.plate_no, dor.order_status, - dor.driver_name, dor.driver_phone, - dor.shipper_name, dor.shipper_phone, - dor.receiver_name, dor.receiver_phone, dor.receiver_org_name, - dor.delivery_ton, - dor.goods_size, - -- 车型外键与名称 - dor.vehicle_type_id, dor.vehicle_type_name, - -- 费用/里程 - dor.suggest_fee, dor.actual_fee, dor.toll_fee, dor.total_km, - dor.create_by, dor.create_time, dor.update_by, dor.update_time, dor.is_delete, + dor.id, + dor.order_no, + dor.bill_no, + dor.rk_record_id, + dor.maker_id, + -- 制单人用户名(连表 sys_user) + su.user_name AS maker_user_name, + dor.receive_status, + dor.receive_problem, + dor.xm_ms, dor.xm_no, dor.wl_no, dor.wl_ms, dor.real_qty, dor.dw, dor.sap_no, dor.gys_mc, + dor.remark, + dor.origin_name, dor.origin_lng, dor.origin_lat, + dor.dest_name, dor.dest_lng, dor.dest_lat, + dor.delivery_date, dor.plate_no, dor.order_status, + dor.driver_name, dor.driver_phone, + dor.shipper_name, dor.shipper_phone, + dor.receiver_name, dor.receiver_phone, dor.receiver_org_name, + dor.delivery_ton, + dor.goods_size, + -- 车型外键与名称 + dor.vehicle_type_id, dor.vehicle_type_name, + -- 费用/里程 + dor.suggest_fee, dor.actual_fee, dor.toll_fee, dor.total_km, + dor.create_by, dor.create_time, dor.update_by, dor.update_time, dor.is_delete, - -- 附件列(att_ 前缀) - da.id AS att_id, - da.order_no AS att_order_no, - da.scene AS att_scene, - da.biz_type AS att_biz_type, - da.url AS att_url, - da.status AS att_status, - da.sort_no AS att_sort_no, - da.remark AS att_remark, - da.create_by AS att_create_by, - da.create_time AS att_create_time, - da.update_by AS att_update_by, - da.update_time AS att_update_time, - da.is_delete AS att_is_delete + -- 附件列(att_ 前缀) + da.id AS att_id, + da.order_no AS att_order_no, + da.scene AS att_scene, + da.biz_type AS att_biz_type, + da.url AS att_url, + da.status AS att_status, + da.sort_no AS att_sort_no, + da.remark AS att_remark, + da.create_by AS att_create_by, + da.create_time AS att_create_time, + da.update_by AS att_update_by, + da.update_time AS att_update_time, + da.is_delete AS att_is_delete from delivery_order dor - left join delivery_attachment da - on da.order_no = dor.order_no - and da.is_delete = '0' - - left join sys_user su - on su.user_id = dor.maker_id + left join delivery_attachment da + on da.order_no = dor.order_no + and da.is_delete = '0' + left join sys_user su + on su.user_id = dor.maker_id @@ -216,8 +215,8 @@ select id, order_no, - bill_no_ck, - rk_info_id, + bill_no, + rk_record_id, maker_id, receive_status, receive_problem, @@ -237,6 +236,7 @@ from delivery_order + SELECT @@ -296,8 +296,8 @@ SELECT dor.order_no AS order_no, - MAX(dor.bill_no_ck) AS bill_no_ck, - MAX(dor.rk_info_id) AS rk_info_id, + MAX(dor.bill_no) AS bill_no, + MAX(dor.rk_record_id) AS rk_record_id, MAX(dor.maker_id) AS maker_id, MAX(dor.receive_status) AS receive_status, MAX(dor.receive_problem) AS receive_problem, @@ -324,84 +324,72 @@ MAX(dor.toll_fee) AS toll_fee, MAX(dor.total_km) AS total_km, MAX(dor.remark) AS remark + FROM delivery_order dor + (dor.is_delete = '0' OR dor.is_delete = 0 OR dor.is_delete IS NULL) - AND dor.order_no = #{orderNo} - - - AND dor.bill_no_ck = #{billNoCk} + + AND dor.bill_no = #{billNo} - AND dor.maker_id = #{makerId} - AND dor.receive_status = #{receiveStatus} - AND dor.xm_ms LIKE CONCAT('%', #{xmMs}, '%') - AND dor.xm_no LIKE CONCAT('%', #{xmNo}, '%') - AND dor.wl_no LIKE CONCAT('%', #{wlNo}, '%') - AND dor.wl_ms LIKE CONCAT('%', #{wlMs}, '%') - AND dor.sap_no LIKE CONCAT('%', #{sapNo}, '%') - AND dor.gys_mc LIKE CONCAT('%', #{gysMc}, '%') - AND dor.origin_name LIKE CONCAT('%', #{originName}, '%') + AND dor.dest_name LIKE CONCAT('%', #{destName}, '%') - AND dor.delivery_date = #{deliveryDate} - AND dor.plate_no = #{plateNo} - AND dor.receiver_org_name LIKE CONCAT('%', #{receiverOrgName}, '%') - AND dor.order_status IN @@ -409,38 +397,41 @@ - + and orderStatus != null and orderStatus != ''"> AND dor.order_status = #{orderStatus} + GROUP BY dor.order_no ORDER BY MAX(dor.create_time) DESC + @@ -584,9 +575,10 @@ +