diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/PrcOrderMonitorController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/PrcOrderMonitorController.java deleted file mode 100644 index 8efd8a23..00000000 --- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/monitor/PrcOrderMonitorController.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.bms.web.controller.monitor; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -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 com.bms.common.annotation.Log; -import com.bms.common.core.controller.BaseController; -import com.bms.common.core.domain.AjaxResult; -import com.bms.common.core.page.TableDataInfo; -import com.bms.common.enums.BusinessType; -import com.bms.price.domain.PrcOrder; -import com.bms.price.enums.BillTaskSuccessStatus; -import com.bms.price.service.IPrcBillingTaskService; -import com.bms.price.service.IPrcOrderService; - -/** - * Monitor: prc_order billing status list and manual resync (replaces task-queue view after upsert). - * Reuses monitor:billingTask:* perms so menu/roles stay stable. - */ -@RestController -@RequestMapping("/monitor/prcOrder") -public class PrcOrderMonitorController extends BaseController -{ - @Autowired - private IPrcOrderService prcOrderService; - - @Autowired - private IPrcBillingTaskService billingTaskService; - - /** Default list = FAILED. */ - @PreAuthorize("@ss.hasPermi('monitor:billingTask:list')") - @GetMapping("/list") - public TableDataInfo list(PrcOrder query) - { - if (query.getSuccessStatus() == null || query.getSuccessStatus().isEmpty()) - { - query.setSuccessStatus(BillTaskSuccessStatus.FAILED.getCode()); - } - else if ("ALL".equalsIgnoreCase(query.getSuccessStatus())) - { - query.setSuccessStatus(null); - } - startPage(); - List list = prcOrderService.selectPrcOrderList(query); - return getDataTable(list); - } - - @PreAuthorize("@ss.hasPermi('monitor:billingTask:list')") - @GetMapping("/{orderId}") - public AjaxResult getInfo(@PathVariable("orderId") String orderId) - { - return success(prcOrderService.selectPrcOrderById(orderId)); - } - - @PreAuthorize("@ss.hasPermi('monitor:billingTask:retry')") - @Log(title = "prc_order retry", businessType = BusinessType.UPDATE) - @PostMapping("/retry/{orderId}") - public AjaxResult retry(@PathVariable("orderId") String orderId) - { - return success(billingTaskService.retryByOrderId(orderId)); - } - - @PreAuthorize("@ss.hasPermi('monitor:billingTask:retry')") - @Log(title = "prc_order batch retry", businessType = BusinessType.UPDATE) - @PostMapping("/retry") - public AjaxResult retryBatch(@RequestBody String[] orderIds) - { - if (orderIds == null || orderIds.length == 0) - { - return error("orderIds required"); - } - int ok = 0; - int fail = 0; - List> details = new ArrayList>(); - for (String orderId : orderIds) - { - Map row = new HashMap(); - row.put("orderId", orderId); - try - { - PrcOrder order = billingTaskService.retryByOrderId(orderId); - row.put("successStatus", order == null ? null : order.getSuccessStatus()); - row.put("failCode", order == null ? null : order.getFailCode()); - if (order != null && BillTaskSuccessStatus.SUCCESS.getCode().equals(order.getSuccessStatus())) - { - ok++; - } - else - { - fail++; - } - } - catch (RuntimeException e) - { - fail++; - row.put("successStatus", BillTaskSuccessStatus.FAILED.getCode()); - row.put("failCode", e.getMessage()); - } - details.add(row); - } - Map data = new HashMap(); - data.put("ok", Integer.valueOf(ok)); - data.put("fail", Integer.valueOf(fail)); - data.put("details", details); - return success(data); - } -} diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrder.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrder.java deleted file mode 100644 index 69769e78..00000000 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrder.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.bms.price.domain; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.bms.common.core.domain.BaseEntity; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** Order master prc_order (upstream TAB_ORDER core + billing status) */ -@Data -@EqualsAndHashCode(callSuper = true) -public class PrcOrder extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - private String orderId; - private String orderNo; - private List orderNos; - private String trackingNo; - private List trackingNos; - private String transferNo; - private List transferNos; - private String trackId; - private String belongSaler; - private String belongSalerCode; - private String settlementMan; - private String settlementManCode; - private String serviceMan; - private String serviceManCode; - private String customerCode; - private String customerName; - private List customerCodes; - private Integer pieces; - private BigDecimal actualWeight; - private BigDecimal weight; - private BigDecimal dimensionalWeightFactor; - private BigDecimal volume; - private BigDecimal volumeWeight; - private BigDecimal pkgLength; - private BigDecimal pkgWidth; - private BigDecimal pkgHeight; - private String shipperName; - private String consigneeName; - private String consigneePostcode; - private String warehouseCode; - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date orderTime; - private String orderRemark; - private String productCode; - private String productName; - private List productCodes; - private String productFloorCode; - private String countryCode; - private String countryName; - private Integer orderStatus; - /** 0 not received / 1 received (TAB_ORDER.BL_PICKUP) */ - private Integer blPickup; - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date pickupDate; - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date bizDate; - /** WAITING / SUCCESS / FAILED */ - private String successStatus; - private String failCode; - private List failCodes; -} diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBill.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBill.java index c0882f82..7fb0fc44 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBill.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBill.java @@ -4,6 +4,7 @@ import java.math.BigDecimal; import java.util.Date; import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.bms.common.core.domain.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; @@ -16,8 +17,6 @@ public class PrcOrderBill extends BaseEntity private static final long serialVersionUID = 1L; private String billId; - /** FK to prc_order.order_id (wired by parent). */ - private String orderId; /** 批量查询:多个账单ID精确匹配(仅查询用,非表字段) */ private List billIds; private String billKey; @@ -63,8 +62,8 @@ public class PrcOrderBill extends BaseEntity private String warehouseCode; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date orderTime; - /** 收货时间(TAB_ORDER.PICKUP_DATE) */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + /** 应收来源查询专用:从 prc_order_bill_ext.pickup_date 读取的收件时间。 */ + @JsonIgnore private Date pickupDate; private String orderRemark; private String productCode; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderExt.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBillExt.java similarity index 95% rename from bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderExt.java rename to bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBillExt.java index d4da9e88..a78c61ae 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderExt.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBillExt.java @@ -6,13 +6,13 @@ import java.math.BigDecimal; import java.util.Date; import lombok.Data; -/** Order ext leftover TAB_ORDER fields on prc_order_ext */ +/** 计费订单扩展表:TAB_ORDER 剩余字段 + 同步请求快照 */ @Data -public class PrcOrderExt implements Serializable +public class PrcOrderBillExt implements Serializable { private static final long serialVersionUID = 1L; - private String orderId; + private String billId; private String orderNo; private String upstreamId; private String lineNo; @@ -70,6 +70,7 @@ public class PrcOrderExt implements Serializable private String importState; private String importCountry; private String buyerid; + private Integer orderStatus; private String createAt; private Integer payType; private String lineCode; @@ -77,6 +78,7 @@ public class PrcOrderExt implements Serializable private String productType; private String lineType; private String cargoName; + private String productFloorCode; private BigDecimal orderInsurance; private BigDecimal productSumPrice; private BigDecimal productSum; @@ -86,7 +88,10 @@ public class PrcOrderExt implements Serializable private String productFloor; private String latestTrajectory; private String wayBill; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date pickupDate; private Integer blBaging; + private Integer blPickup; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date bagDate; private Integer orgOrderStatus; @@ -169,6 +174,7 @@ public class PrcOrderExt implements Serializable @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date airConfirmTime; private Integer packageType; + private BigDecimal dimensionalWeightFactor; private String updateBy; private String customerPickupSite; private String barcodeNumber; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceBillRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceBillRequest.java index 57c1509b..1bd054ea 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceBillRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceBillRequest.java @@ -20,9 +20,6 @@ public class TmsPriceBillRequest extends TmsPriceQuoteRequest @NotBlank(message = "orderNo is required") private String orderNo; - /** FK to prc_order.order_id when order master already upserted */ - private String orderId; - private String trackingNo; /** transfer order no */ private String transferNo; @@ -53,11 +50,8 @@ public class TmsPriceBillRequest extends TmsPriceQuoteRequest private String warehouseCode; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date orderTime; - /** TAB_ORDER.PICKUP_DATE */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date pickupDate; private String orderRemark; - /** 上游 TAB_ORDER 整行,用于写入 prc_order_ext 扩展字段 */ + /** 上游 TAB_ORDER 整行,用于写入 prc_order_bill_ext 扩展字段 */ private Map upstreamRow; @JsonIgnore diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcBillingTaskMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcBillingTaskMapper.java index a6a59778..7fbb8714 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcBillingTaskMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcBillingTaskMapper.java @@ -12,9 +12,6 @@ public interface PrcBillingTaskMapper int insertPrcBillingTask(PrcBillingTask task); - /** Delete queue rows by unique transfer_no after prc_order upsert. */ - int deleteByTransferNo(@Param("transferNo") String transferNo); - int updatePrcBillingTask(PrcBillingTask task); /** CAS: WAITING -> processing claim not needed; writeback SUCCESS/FAILED */ diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillExtMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillExtMapper.java new file mode 100644 index 00000000..8e4a195d --- /dev/null +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillExtMapper.java @@ -0,0 +1,15 @@ +package com.bms.price.mapper; + +import com.bms.price.domain.PrcOrderBillExt; + +/** prc_order_bill_ext mapper */ +public interface PrcOrderBillExtMapper +{ + public PrcOrderBillExt selectByBillId(String billId); + + public PrcOrderBillExt selectByOrderNo(String orderNo); + + public int insertPrcOrderBillExt(PrcOrderBillExt ext); + + public int upsertPrcOrderBillExt(PrcOrderBillExt ext); +} diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderExtMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderExtMapper.java deleted file mode 100644 index 210cfe2c..00000000 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderExtMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.bms.price.mapper; - -import com.bms.price.domain.PrcOrderExt; - -/** prc_order_ext mapper */ -public interface PrcOrderExtMapper -{ - public PrcOrderExt selectByOrderId(String orderId); - - public PrcOrderExt selectByOrderNo(String orderNo); - - public int insertPrcOrderExt(PrcOrderExt ext); - - public int upsertPrcOrderExt(PrcOrderExt ext); -} diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderMapper.java deleted file mode 100644 index 6b1d5379..00000000 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderMapper.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.bms.price.mapper; - -import java.util.List; -import com.bms.price.domain.PrcOrder; -import org.apache.ibatis.annotations.Param; - -/** prc_order mapper */ -public interface PrcOrderMapper -{ - PrcOrder selectPrcOrderById(String orderId); - - PrcOrder selectPrcOrderByTransferNo(String transferNo); - - PrcOrder selectPrcOrderByOrderNo(String orderNo); - - List selectPrcOrderList(PrcOrder query); - - int insertPrcOrder(PrcOrder order); - - int updatePrcOrder(PrcOrder order); - - int upsertPrcOrderByTransferNo(PrcOrder order); - - int updateBillingStatus(@Param("orderId") String orderId, - @Param("successStatus") String successStatus, - @Param("failCode") String failCode, - @Param("updateBy") String updateBy); -} diff --git a/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderExtFiller.java b/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderBillExtFiller.java similarity index 95% rename from bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderExtFiller.java rename to bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderBillExtFiller.java index f35a7fd4..6a098021 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderExtFiller.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderBillExtFiller.java @@ -5,16 +5,16 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import java.util.Map; -import com.bms.price.domain.PrcOrderExt; +import com.bms.price.domain.PrcOrderBillExt; /** - * 从 Oracle TAB_ORDER 行填充 prc_order_ext(仅包含未落在 prc_order_bill 的字段)。 + * 从 Oracle TAB_ORDER 行填充 prc_order_bill_ext(仅包含未落在 prc_order_bill 的字段)。 */ -public final class OracleOrderExtFiller +public final class OracleOrderBillExtFiller { - private OracleOrderExtFiller() {} + private OracleOrderBillExtFiller() {} - public static void fillFromRow(PrcOrderExt ext, Map row) + public static void fillFromRow(PrcOrderBillExt ext, Map row) { if (ext == null || row == null || row.isEmpty()) { @@ -76,6 +76,7 @@ public final class OracleOrderExtFiller ext.setImportState(str(row, "IMPORT_STATE")); ext.setImportCountry(str(row, "IMPORT_COUNTRY")); ext.setBuyerid(str(row, "BUYERID")); + ext.setOrderStatus(integer(row, "ORDER_STATUS")); ext.setCreateAt(str(row, "CREATE_AT")); ext.setPayType(integer(row, "PAY_TYPE")); ext.setLineCode(str(row, "LINE_CODE")); @@ -83,6 +84,7 @@ public final class OracleOrderExtFiller ext.setProductType(str(row, "PRODUCT_TYPE")); ext.setLineType(str(row, "LINE_TYPE")); ext.setCargoName(str(row, "CARGO_NAME")); + ext.setProductFloorCode(str(row, "PRODUCT_FLOOR_CODE")); ext.setOrderInsurance(decimal(row, "ORDER_INSURANCE")); ext.setProductSumPrice(decimal(row, "PRODUCT_SUM_PRICE")); ext.setProductSum(decimal(row, "PRODUCT_SUM")); @@ -92,7 +94,9 @@ public final class OracleOrderExtFiller ext.setProductFloor(str(row, "PRODUCT_FLOOR")); ext.setLatestTrajectory(str(row, "LATEST_TRAJECTORY")); ext.setWayBill(str(row, "WAY_BILL")); + ext.setPickupDate(date(row, "PICKUP_DATE")); ext.setBlBaging(integer(row, "BL_BAGING")); + ext.setBlPickup(integer(row, "BL_PICKUP")); ext.setBagDate(date(row, "BAG_DATE")); ext.setOrgOrderStatus(integer(row, "ORG_ORDER_STATUS")); ext.setStatusDescription(str(row, "STATUS_DESCRIPTION")); @@ -158,6 +162,7 @@ public final class OracleOrderExtFiller ext.setTrackQueryTime(date(row, "TRACK_QUERY_TIME")); ext.setAirConfirmTime(date(row, "AIR_CONFIRM_TIME")); ext.setPackageType(integer(row, "PACKAGE_TYPE")); + ext.setDimensionalWeightFactor(decimal(row, "DIMENSIONAL_WEIGHT_FACTOR")); ext.setUpdateBy(str(row, "UPDATE_BY")); ext.setCustomerPickupSite(str(row, "CUSTOMER_PICKUP_SITE")); ext.setBarcodeNumber(str(row, "BARCODE_NUMBER")); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderBillMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderBillMapper.java index 240fb0b4..904cd4ff 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderBillMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderBillMapper.java @@ -68,7 +68,6 @@ public class OracleOrderBillMapper { req.setOrderTime(createDate); } - req.setPickupDate(firstDate(row, "PICKUP_DATE")); return req; } diff --git a/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderFiller.java b/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderFiller.java deleted file mode 100644 index c5865790..00000000 --- a/bms-back/bms-system/src/main/java/com/bms/price/oracle/OracleOrderFiller.java +++ /dev/null @@ -1,202 +0,0 @@ -package com.bms.price.oracle; - -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; -import java.util.Map; -import com.bms.common.utils.StringUtils; -import com.bms.price.domain.PrcOrder; -import com.bms.price.domain.vo.TmsPriceBillRequest; -import com.bms.price.enums.BillTaskSuccessStatus; - -/** - * Fill prc_order core fields from upstream TAB_ORDER row (+ bill request overlay). - */ -public final class OracleOrderFiller -{ - private OracleOrderFiller() {} - - public static void fillFromRow(PrcOrder order, Map row, TmsPriceBillRequest req, Date bizDate) - { - if (order == null || row == null || row.isEmpty()) - { - return; - } - if (req != null) - { - if (StringUtils.isNotEmpty(req.getOrderNo())) - { - order.setOrderNo(req.getOrderNo()); - } - if (StringUtils.isNotEmpty(req.getTrackingNo())) - { - order.setTrackingNo(req.getTrackingNo()); - } - if (StringUtils.isNotEmpty(req.getTransferNo())) - { - order.setTransferNo(req.getTransferNo()); - } - order.setBelongSaler(req.getBelongSaler()); - order.setBelongSalerCode(req.getBelongSalerCode()); - order.setSettlementMan(req.getSettlementMan()); - order.setSettlementManCode(req.getSettlementManCode()); - order.setServiceMan(req.getServiceMan()); - order.setServiceManCode(req.getServiceManCode()); - order.setCustomerCode(req.getCustomerCode()); - order.setCustomerName(req.getCustomerName()); - order.setPieces(req.getPieces()); - order.setActualWeight(req.getActualWeight()); - order.setWeight(req.getReceiveWeight()); - order.setDimensionalWeightFactor(req.getWeight()); - order.setVolume(req.getVolume()); - order.setVolumeWeight(req.getVolumeWeight()); - order.setPkgLength(req.getPkgLength()); - order.setPkgWidth(req.getPkgWidth()); - order.setPkgHeight(req.getPkgHeight()); - order.setShipperName(req.getShipperName()); - order.setConsigneeName(req.getConsigneeName()); - order.setConsigneePostcode(req.getDestPostcode()); - order.setWarehouseCode(req.getWarehouseCode()); - order.setOrderTime(req.getOrderTime()); - order.setOrderRemark(req.getOrderRemark()); - order.setProductCode(req.getProductCode()); - order.setCountryCode(req.getCountryCode()); - order.setCountryName(req.getCountryName()); - } - if (StringUtils.isEmpty(order.getOrderNo())) - { - order.setOrderNo(str(row, "ORDER_ID")); - } - if (StringUtils.isEmpty(order.getTrackingNo())) - { - order.setTrackingNo(str(row, "ORG_ORDER_ID")); - } - if (StringUtils.isEmpty(order.getTransferNo())) - { - order.setTransferNo(str(row, "TRANSFER_ORDER_ID")); - } - order.setTrackId(str(row, "TRACK_ID")); - order.setProductFloorCode(str(row, "PRODUCT_FLOOR_CODE")); - if (StringUtils.isEmpty(order.getProductName())) - { - order.setProductName(str(row, "PRODUCT_NAME")); - } - order.setOrderStatus(integer(row, "ORDER_STATUS")); - order.setBlPickup(integer(row, "BL_PICKUP")); - order.setPickupDate(date(row, "PICKUP_DATE")); - if (order.getDimensionalWeightFactor() == null) - { - order.setDimensionalWeightFactor(decimal(row, "DIMENSIONAL_WEIGHT_FACTOR")); - } - if (order.getWeight() == null) - { - order.setWeight(decimal(row, "WEIGHT")); - } - if (order.getVolumeWeight() == null) - { - order.setVolumeWeight(decimal(row, "VOLUME_WEIGHT")); - } - if (order.getConsigneePostcode() == null) - { - order.setConsigneePostcode(str(row, "CONSIGNEE_POSTCODE")); - } - order.setBizDate(bizDate); - if (StringUtils.isEmpty(order.getSuccessStatus())) - { - order.setSuccessStatus(BillTaskSuccessStatus.WAITING.getCode()); - } - } - - private static String str(Map row, String key) - { - Object v = get(row, key); - if (v == null) - { - return null; - } - String s = String.valueOf(v).trim(); - return s.isEmpty() ? null : s; - } - - private static Integer integer(Map row, String key) - { - BigDecimal d = decimal(row, key); - return d == null ? null : Integer.valueOf(d.intValue()); - } - - private static BigDecimal decimal(Map row, String key) - { - Object v = get(row, key); - if (v == null || "".equals(String.valueOf(v).trim())) - { - return null; - } - if (v instanceof BigDecimal) - { - return (BigDecimal) v; - } - if (v instanceof Number) - { - return BigDecimal.valueOf(((Number) v).doubleValue()); - } - try - { - return new BigDecimal(String.valueOf(v).trim()); - } - catch (Exception e) - { - return null; - } - } - - private static Date date(Map row, String key) - { - Object v = get(row, key); - if (v == null) - { - return null; - } - if (v instanceof Date) - { - return (Date) v; - } - String s = String.valueOf(v).trim(); - String[] formats = { - "dd/MM/yyyy HH:mm:ss", "dd/MM/yyyy HH:mm", "yyyy-MM-dd HH:mm:ss", - "yyyy-MM-dd'T'HH:mm:ss", "yyyy-MM-dd" - }; - for (String fmt : formats) - { - try - { - return new SimpleDateFormat(fmt, Locale.ENGLISH).parse(s); - } - catch (Exception ignored) - { - } - } - return null; - } - - private static Object get(Map row, String key) - { - if (row.containsKey(key)) - { - return row.get(key); - } - String upper = key.toUpperCase(Locale.ROOT); - if (row.containsKey(upper)) - { - return row.get(upper); - } - for (Map.Entry e : row.entrySet()) - { - if (e.getKey() != null && e.getKey().equalsIgnoreCase(key)) - { - return e.getValue(); - } - } - return null; - } -} diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcBillingTaskService.java b/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcBillingTaskService.java index ac67dfed..8f21d116 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcBillingTaskService.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcBillingTaskService.java @@ -35,12 +35,6 @@ public interface IPrcBillingTaskService */ PrcBillingTask retryTask(Long taskId); - /** - * Manual resync by prc_order.order_id (task queue row may already be deleted). - * @return order after retry - */ - com.bms.price.domain.PrcOrder retryByOrderId(String orderId); - /** * Start async filter retry (customer + bill_time). Returns async task id for progress poll. */ diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcOrderService.java b/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcOrderService.java deleted file mode 100644 index 7d64b773..00000000 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcOrderService.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.bms.price.service; - -import java.util.Date; -import java.util.List; -import java.util.Map; -import com.bms.price.domain.PrcOrder; -import com.bms.price.domain.vo.TmsPriceBillRequest; - -/** prc_order service */ -public interface IPrcOrderService -{ - PrcOrder selectPrcOrderById(String orderId); - - PrcOrder selectPrcOrderByTransferNo(String transferNo); - - List selectPrcOrderList(PrcOrder query); - - /** - * Upsert prc_order + prc_order_ext by transfer_no (overwrite upstream fields when exists). - * @return persisted order (stable orderId) - */ - PrcOrder upsertFromUpstream(Map upstreamRow, TmsPriceBillRequest billReq, Date bizDate); - - void updateBillingStatus(String orderId, String successStatus, String failCode); -} diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcBillingTaskServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcBillingTaskServiceImpl.java index d14d4d60..b8488537 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcBillingTaskServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcBillingTaskServiceImpl.java @@ -15,7 +15,6 @@ import com.bms.common.utils.StringUtils; import com.bms.price.config.BillingProperties; import com.bms.price.domain.PrcBillingTask; import com.bms.price.domain.PrcBillingTaskRetryTask; -import com.bms.price.domain.PrcOrder; import com.bms.price.domain.PrcOrderBill; import com.bms.price.domain.vo.BillingTaskRetryByFilterRequest; import com.bms.price.domain.vo.BillingTaskSubmitRequest; @@ -33,7 +32,6 @@ import com.bms.price.oracle.OracleOrderBillMapper; import com.bms.price.oracle.OracleUpstreamOrderService; import com.bms.price.service.IPrcBillingTaskService; import com.bms.price.service.IPrcOrderBillService; -import com.bms.price.service.IPrcOrderService; import com.bms.price.task.PrcBillingTaskRetryAsyncRunner; @Service @@ -59,9 +57,6 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService @Autowired private IPrcOrderBillService prcOrderBillService; - @Autowired - private IPrcOrderService prcOrderService; - @Autowired private BillingProperties billingProperties; @@ -254,17 +249,29 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService } /** - * Map upstream row -> upsert prc_order(+ext) -> delete billing task by transfer_no -> bill - * -> write success_status/fail_code onto prc_order (task is already gone). + * 用上游 Oracle 全行数据映射并计费(公共逻辑:MQ 处理与订单列表同步复用)。 + * 订单列表同步时行数据已由分页查询拉回,避免每单再走 findMainOrder 的公网往返。 */ private void billFromUpstreamRow(PrcBillingTask task, Map row) { Long taskId = task.getTaskId(); TmsPriceBillRequest billReq = oracleOrderBillMapper.toBillRequest(row, billingProperties.getOracle().getDefaultProductCode()); - if (billReq == null) + if (billReq == null || StringUtils.isEmpty(billReq.getOrderNo())) { - throw new ServiceException("Oracle order mapped empty"); + throw new ServiceException("Oracle order mapped orderNo empty"); + } + if (StringUtils.isEmpty(billReq.getCustomerCode())) + { + throw new ServiceException("Oracle order mapped customerCode empty"); + } + if (StringUtils.isEmpty(billReq.getProductCode())) + { + throw new ServiceException("Oracle order mapped productCode empty"); + } + if (billReq.getWeight() == null || billReq.getWeight().signum() <= 0) + { + throw new ServiceException("Oracle order mapped weight invalid"); } // Identity keys from mobile inbound are source of truth; do not replace with Oracle remap. if (StringUtils.isNotEmpty(task.getTransferNo())) @@ -283,55 +290,21 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService billReq.setBizDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(task.getBillTime())); task.setCustomerCode(billReq.getCustomerCode()); - // Always persist upstream onto prc_order first (even if later billing validation fails). - PrcOrder order = prcOrderService.upsertFromUpstream(row, billReq, task.getBillTime()); - billReq.setOrderId(order.getOrderId()); - String transferNo = order.getTransferNo(); - if (StringUtils.isNotEmpty(transferNo)) + TmsPriceQuoteResult result = billWithDbRetry(taskId, billReq); + // Soft-fail (product/country/weight miss): order bill already persisted with zero amounts; + // still mark task FAILED so it appears in abnormal-task list for retry/ops. + if (result != null && BillBillingFailStatus.isFail(result.getBillingFailStatus())) { - billingTaskMapper.deleteByTransferNo(transferNo); + String err = StringUtils.isNotEmpty(result.getMatchMessage()) + ? result.getMatchMessage() + : ("billingFailStatus=" + result.getBillingFailStatus()); + writeback(task, BillTaskSuccessStatus.FAILED, result.getBillId(), cut(err, 900), + BillBillingFailStatus.toTaskFailCode(result.getBillingFailStatus())); } - - try + else { - if (StringUtils.isEmpty(billReq.getOrderNo())) - { - throw new ServiceException("Oracle order mapped orderNo empty"); - } - if (StringUtils.isEmpty(billReq.getCustomerCode())) - { - throw new ServiceException("Oracle order mapped customerCode empty"); - } - if (StringUtils.isEmpty(billReq.getProductCode())) - { - throw new ServiceException("Oracle order mapped productCode empty"); - } - if (billReq.getWeight() == null || billReq.getWeight().signum() <= 0) - { - throw new ServiceException("Oracle order mapped weight invalid"); - } - - TmsPriceQuoteResult result = billWithDbRetry(taskId, billReq); - if (result != null && BillBillingFailStatus.isFail(result.getBillingFailStatus())) - { - String failCode = BillBillingFailStatus.toTaskFailCode(result.getBillingFailStatus()); - prcOrderService.updateBillingStatus(order.getOrderId(), - BillTaskSuccessStatus.FAILED.getCode(), failCode); - } - else - { - prcOrderService.updateBillingStatus(order.getOrderId(), - BillTaskSuccessStatus.SUCCESS.getCode(), null); - } - } - catch (RuntimeException e) - { - // Task row already deleted; persist fail on prc_order only (do not rethrow for writeback). - String failCode = BillTaskFailCode.resolveCode(e.getMessage()); - prcOrderService.updateBillingStatus(order.getOrderId(), - BillTaskSuccessStatus.FAILED.getCode(), failCode); - log.error("billing failed after prc_order upsert orderId={} transferNo={}", - order.getOrderId(), transferNo, e); + writeback(task, BillTaskSuccessStatus.SUCCESS, result == null ? null : result.getBillId(), + null, null); } } @@ -478,41 +451,6 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService return billingTaskMapper.selectPrcBillingTaskList(query); } - @Override - public PrcOrder retryByOrderId(String orderId) - { - if (StringUtils.isEmpty(orderId)) - { - throw new ServiceException("orderId required"); - } - PrcOrder order = prcOrderService.selectPrcOrderById(orderId.trim()); - if (order == null) - { - throw new ServiceException("prc_order not found"); - } - if (order.getBizDate() == null) - { - throw new ServiceException("prc_order bizDate empty (billing time required)"); - } - Map row = oracleUpstreamOrderService.findMainOrder( - order.getTransferNo(), order.getOrderNo(), order.getTrackingNo()); - if (row == null || row.isEmpty()) - { - prcOrderService.updateBillingStatus(order.getOrderId(), - BillTaskSuccessStatus.FAILED.getCode(), BillTaskFailCode.ORACLE_ORDER_NOT_FOUND.getCode()); - return prcOrderService.selectPrcOrderById(order.getOrderId()); - } - PrcBillingTask transientTask = new PrcBillingTask(); - transientTask.setTransferNo(order.getTransferNo()); - transientTask.setTrackingNo(order.getTrackingNo()); - transientTask.setOrderNo(order.getOrderNo()); - transientTask.setCustomerCode(order.getCustomerCode()); - transientTask.setBillTime(order.getBizDate()); - transientTask.setBillType(BillTaskType.REBILL.getCode()); - billFromUpstreamRow(transientTask, row); - return prcOrderService.selectPrcOrderById(order.getOrderId()); - } - @Override public PrcBillingTask retryTask(Long taskId) { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderBillServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderBillServiceImpl.java index d26cb9e7..b83ee9bf 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderBillServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderBillServiceImpl.java @@ -39,7 +39,7 @@ import com.bms.system.service.IBmsBizRuleService; import com.bms.price.domain.PrcIncomeBill; import com.bms.price.domain.PrcIncomeBillFee; import com.bms.price.domain.PrcOrderBill; -import com.bms.price.domain.PrcOrderExt; +import com.bms.price.domain.PrcOrderBillExt; import com.bms.price.domain.PrcPayBill; import com.bms.price.domain.PrcPayBillFee; import com.bms.price.domain.PrcSurcharge; @@ -67,11 +67,11 @@ import com.bms.price.enums.BillBillingFailStatus; import com.bms.price.enums.TmsOrderBillMatchType; import com.bms.price.mapper.PrcIncomeBillFeeMapper; import com.bms.price.mapper.PrcIncomeBillMapper; -import com.bms.price.mapper.PrcOrderExtMapper; +import com.bms.price.mapper.PrcOrderBillExtMapper; import com.bms.price.mapper.PrcOrderBillMapper; import com.bms.price.mapper.PrcPayBillFeeMapper; import com.bms.price.mapper.PrcPayBillMapper; -import com.bms.price.oracle.OracleOrderExtFiller; +import com.bms.price.oracle.OracleOrderBillExtFiller; import com.bms.price.search.EsBizLogSupport; import com.bms.price.search.EsLogType; import com.bms.price.search.IBillSearchStore; @@ -108,7 +108,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService private SysUserMapper sysUserMapper; @Autowired - private PrcOrderExtMapper orderExtMapper; + private PrcOrderBillExtMapper orderBillExtMapper; @Autowired private PrcIncomeBillFeeMapper incomeBillFeeMapper; @@ -1255,10 +1255,6 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService } bill.setBillKey(billKey); bill.setOrderNo(orderNo); - if (StringUtils.isNotEmpty(request.getOrderId())) - { - bill.setOrderId(request.getOrderId()); - } Long customerId = request.getCustomerId(); if (customerId == null && result != null) { @@ -1301,7 +1297,6 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService bill.setDestPostcode(request.getDestPostcode()); bill.setWarehouseCode(request.getWarehouseCode()); bill.setOrderTime(request.getOrderTime()); - bill.setPickupDate(request.getPickupDate()); bill.setOrderRemark(request.getOrderRemark()); bill.setProductCode(result.getProductCode()); bill.setProductName(result.getProductName()); @@ -1878,23 +1873,22 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService return r; } - /** Persist prc_order_ext when upstream TAB_ORDER row exists. Requires bill.orderId (parent wires prc_order first). */ + /** 仅在存在上游 TAB_ORDER 行时写入 prc_order_bill_ext。 */ private void persistBillExt(PrcOrderBill bill, java.util.Map upstreamRow) { - if (bill == null || StringUtils.isEmpty(bill.getOrderId())) + if (bill == null || StringUtils.isEmpty(bill.getBillId())) { - // skip ext persist until orderId is set (parent will wire order first) return; } if (upstreamRow == null || upstreamRow.isEmpty()) { return; } - PrcOrderExt ext = new PrcOrderExt(); - ext.setOrderId(bill.getOrderId()); + PrcOrderBillExt ext = new PrcOrderBillExt(); + ext.setBillId(bill.getBillId()); ext.setOrderNo(bill.getOrderNo()); - OracleOrderExtFiller.fillFromRow(ext, upstreamRow); - orderExtMapper.upsertPrcOrderExt(ext); + OracleOrderBillExtFiller.fillFromRow(ext, upstreamRow); + orderBillExtMapper.upsertPrcOrderBillExt(ext); } private List toIncomeFeeLines(List fees) diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderServiceImpl.java deleted file mode 100644 index fd54f6e3..00000000 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderServiceImpl.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.bms.price.service.impl; - -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.UUID; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import com.bms.common.exception.ServiceException; -import com.bms.common.utils.DateUtils; -import com.bms.common.utils.StringUtils; -import com.bms.price.domain.PrcOrder; -import com.bms.price.domain.PrcOrderExt; -import com.bms.price.domain.vo.TmsPriceBillRequest; -import com.bms.price.enums.BillTaskSuccessStatus; -import com.bms.price.mapper.PrcOrderExtMapper; -import com.bms.price.mapper.PrcOrderMapper; -import com.bms.price.oracle.OracleOrderExtFiller; -import com.bms.price.oracle.OracleOrderFiller; -import com.bms.price.service.IPrcOrderService; - -@Service -public class PrcOrderServiceImpl implements IPrcOrderService -{ - @Autowired - private PrcOrderMapper prcOrderMapper; - - @Autowired - private PrcOrderExtMapper prcOrderExtMapper; - - @Override - public PrcOrder selectPrcOrderById(String orderId) - { - return prcOrderMapper.selectPrcOrderById(orderId); - } - - @Override - public PrcOrder selectPrcOrderByTransferNo(String transferNo) - { - return prcOrderMapper.selectPrcOrderByTransferNo(transferNo); - } - - @Override - public List selectPrcOrderList(PrcOrder query) - { - return prcOrderMapper.selectPrcOrderList(query); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public PrcOrder upsertFromUpstream(Map upstreamRow, TmsPriceBillRequest billReq, Date bizDate) - { - if (upstreamRow == null || upstreamRow.isEmpty()) - { - throw new ServiceException("upstream order row required"); - } - PrcOrder order = new PrcOrder(); - OracleOrderFiller.fillFromRow(order, upstreamRow, billReq, bizDate); - if (StringUtils.isEmpty(order.getTransferNo())) - { - throw new ServiceException("transferNo required for prc_order upsert"); - } - if (StringUtils.isEmpty(order.getOrderNo())) - { - throw new ServiceException("orderNo required for prc_order upsert"); - } - Date now = DateUtils.getNowDate(); - PrcOrder existing = prcOrderMapper.selectPrcOrderByTransferNo(order.getTransferNo()); - if (existing != null && StringUtils.isNotEmpty(existing.getOrderId())) - { - order.setOrderId(existing.getOrderId()); - order.setUpdateTime(now); - // keep prior status unless caller resets; default WAITING on re-sync before bill - order.setSuccessStatus(BillTaskSuccessStatus.WAITING.getCode()); - order.setFailCode(null); - prcOrderMapper.updatePrcOrder(order); - } - else - { - order.setOrderId(UUID.randomUUID().toString()); - order.setSuccessStatus(BillTaskSuccessStatus.WAITING.getCode()); - order.setFailCode(null); - order.setCreateTime(now); - order.setUpdateTime(now); - prcOrderMapper.insertPrcOrder(order); - } - - PrcOrderExt ext = new PrcOrderExt(); - ext.setOrderId(order.getOrderId()); - ext.setOrderNo(order.getOrderNo()); - OracleOrderExtFiller.fillFromRow(ext, upstreamRow); - ext.setCreateTime(now); - ext.setUpdateTime(now); - prcOrderExtMapper.upsertPrcOrderExt(ext); - return order; - } - - @Override - public void updateBillingStatus(String orderId, String successStatus, String failCode) - { - if (StringUtils.isEmpty(orderId)) - { - return; - } - prcOrderMapper.updateBillingStatus(orderId, successStatus, failCode, null); - } -} diff --git a/bms-back/bms-system/src/main/resources/mapper/price/PrcBillingTaskMapper.xml b/bms-back/bms-system/src/main/resources/mapper/price/PrcBillingTaskMapper.xml index dc1a53b2..4b673985 100644 --- a/bms-back/bms-system/src/main/resources/mapper/price/PrcBillingTaskMapper.xml +++ b/bms-back/bms-system/src/main/resources/mapper/price/PrcBillingTaskMapper.xml @@ -108,10 +108,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" limit #{limit} - - delete from prc_billing_task where transfer_no = #{transferNo} - - insert into prc_billing_task ( transfer_no, tracking_no, order_no, customer_code, bill_type, success_status, diff --git a/bms-back/bms-system/src/main/resources/mapper/price/PrcOrderExtMapper.xml b/bms-back/bms-system/src/main/resources/mapper/price/PrcOrderBillExtMapper.xml similarity index 75% rename from bms-back/bms-system/src/main/resources/mapper/price/PrcOrderExtMapper.xml rename to bms-back/bms-system/src/main/resources/mapper/price/PrcOrderBillExtMapper.xml index d759fef5..4bd43c8c 100644 --- a/bms-back/bms-system/src/main/resources/mapper/price/PrcOrderExtMapper.xml +++ b/bms-back/bms-system/src/main/resources/mapper/price/PrcOrderBillExtMapper.xml @@ -2,10 +2,10 @@ - + - - + + @@ -63,6 +63,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -70,6 +71,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -79,7 +81,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -145,6 +149,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -176,26 +181,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - select order_id, order_no, upstream_id, line_no, package_num, actual_volume, cp_type, consignee_mobile, order_returnsign, trade_type, duty_type, battery_type, consignee_companyname, consignee_address, consignee_telephone, consignee_state, consignee_city, consignee_suburb, consignee_passportno, consignee_email, consignee_taxno, consignee_taxnotype, consignee_taxnocountry, consignee_streetno, consignee_doorno, shipper_taxnotype, shipper_taxno, shipper_taxnocountry, customer_id, product_imagepath, order_transactionurl, order_cargoamount, cargo_type, shipper_companyname, shipper_address1, shipper_address2, shipper_address3, shipper_city, shipper_state, shipper_postcode, shipper_country, shipper_telephone, shipper_suburb, shipper_email, shipper_passportno, import_code, import_name, import_companyname, import_address, import_address2, import_address3, import_telephone, import_email, import_postcode, import_city, import_state, import_country, buyerid, create_at, pay_type, line_code, line_name, product_type, line_type, cargo_name, order_insurance, product_sum_price, product_sum, shipper_doorno, tariff_payment_account, topayment, product_floor, latest_trajectory, way_bill, bl_baging, bag_date, org_order_status, status_description, zz_date, shipping_date, order_type, receiving_photo, freight, is_receivable, is_meet, bill_no_receivable, bill_no_meet, country_eingth_name, is_receivable_fee, settlement_fee, product_id, service_freight, is_pay_fee, has_added_surcharge, yf_fee, yf_totail_fee, trajectory_status, cargo_type_name, service_code, three_code, volume_height_old, volume_length_old, volume_width_old, register_man_old, bag_no_old, air_no_old, box_sizi_old, baging_man_old, retrieval_man_old, invoice_amount_old, invoice_title_old, invoice_weight_old, sku_old, hs_code_old, register_date_old, invoice_currency_old, trajectory_sub_state, sign_in_time, warehouse_time, declaration_time, release_time, station_time, takeoff_time, landing_time, clearance_and_delivery_time, supplier_name, credit_code, other_id, platform_code, sync_shipment_status, update_weight, other_bag_no, bag_flag, online_time, outbound_time, air_confirm_date, shipment_type, track_query_time, air_confirm_time, package_type, update_by, customer_pickup_site, barcode_number, tracking_reflect_status, remote_postcode, clearance_time, arrive_stock_time, departure_time, first_deliver_time, hs_code_tax_count, hs_code_tax_amount, hs_code_tax_currency, invoice_url, clearance_no, push_weight, internal_check_time, air_delay_time, first_landing_time, second_takeoff_time, des_port_check_time, stay_remark, miss_box_remark, product_channel_id, customer_track_id, register_site, package_type_financial, mrn, create_time, update_time - from prc_order_ext + + select bill_id, order_no, upstream_id, line_no, package_num, actual_volume, cp_type, consignee_mobile, order_returnsign, trade_type, duty_type, battery_type, consignee_companyname, consignee_address, consignee_telephone, consignee_state, consignee_city, consignee_suburb, consignee_passportno, consignee_email, consignee_taxno, consignee_taxnotype, consignee_taxnocountry, consignee_streetno, consignee_doorno, shipper_taxnotype, shipper_taxno, shipper_taxnocountry, customer_id, product_imagepath, order_transactionurl, order_cargoamount, cargo_type, shipper_companyname, shipper_address1, shipper_address2, shipper_address3, shipper_city, shipper_state, shipper_postcode, shipper_country, shipper_telephone, shipper_suburb, shipper_email, shipper_passportno, import_code, import_name, import_companyname, import_address, import_address2, import_address3, import_telephone, import_email, import_postcode, import_city, import_state, import_country, buyerid, order_status, create_at, pay_type, line_code, line_name, product_type, line_type, cargo_name, product_floor_code, order_insurance, product_sum_price, product_sum, shipper_doorno, tariff_payment_account, topayment, product_floor, latest_trajectory, way_bill, pickup_date, bl_baging, bl_pickup, bag_date, org_order_status, status_description, zz_date, shipping_date, order_type, receiving_photo, freight, is_receivable, is_meet, bill_no_receivable, bill_no_meet, country_eingth_name, is_receivable_fee, settlement_fee, product_id, service_freight, is_pay_fee, has_added_surcharge, yf_fee, yf_totail_fee, trajectory_status, cargo_type_name, service_code, three_code, volume_height_old, volume_length_old, volume_width_old, register_man_old, bag_no_old, air_no_old, box_sizi_old, baging_man_old, retrieval_man_old, invoice_amount_old, invoice_title_old, invoice_weight_old, sku_old, hs_code_old, register_date_old, invoice_currency_old, trajectory_sub_state, sign_in_time, warehouse_time, declaration_time, release_time, station_time, takeoff_time, landing_time, clearance_and_delivery_time, supplier_name, credit_code, other_id, platform_code, sync_shipment_status, update_weight, other_bag_no, bag_flag, online_time, outbound_time, air_confirm_date, shipment_type, track_query_time, air_confirm_time, package_type, dimensional_weight_factor, update_by, customer_pickup_site, barcode_number, tracking_reflect_status, remote_postcode, clearance_time, arrive_stock_time, departure_time, first_deliver_time, hs_code_tax_count, hs_code_tax_amount, hs_code_tax_currency, invoice_url, clearance_no, push_weight, internal_check_time, air_delay_time, first_landing_time, second_takeoff_time, des_port_check_time, stay_remark, miss_box_remark, product_channel_id, customer_track_id, register_site, package_type_financial, mrn, create_time, update_time + from prc_order_bill_ext - + + where bill_id = #{billId} - + where order_no = #{orderNo} - - insert into prc_order_ext ( - order_id, order_no, upstream_id, line_no, package_num, actual_volume, cp_type, consignee_mobile, order_returnsign, trade_type, duty_type, battery_type, consignee_companyname, consignee_address, consignee_telephone, consignee_state, consignee_city, consignee_suburb, consignee_passportno, consignee_email, consignee_taxno, consignee_taxnotype, consignee_taxnocountry, consignee_streetno, consignee_doorno, shipper_taxnotype, shipper_taxno, shipper_taxnocountry, customer_id, product_imagepath, order_transactionurl, order_cargoamount, cargo_type, shipper_companyname, shipper_address1, shipper_address2, shipper_address3, shipper_city, shipper_state, shipper_postcode, shipper_country, shipper_telephone, shipper_suburb, shipper_email, shipper_passportno, import_code, import_name, import_companyname, import_address, import_address2, import_address3, import_telephone, import_email, import_postcode, import_city, import_state, import_country, buyerid, create_at, pay_type, line_code, line_name, product_type, line_type, cargo_name, order_insurance, product_sum_price, product_sum, shipper_doorno, tariff_payment_account, topayment, product_floor, latest_trajectory, way_bill, bl_baging, bag_date, org_order_status, status_description, zz_date, shipping_date, order_type, receiving_photo, freight, is_receivable, is_meet, bill_no_receivable, bill_no_meet, country_eingth_name, is_receivable_fee, settlement_fee, product_id, service_freight, is_pay_fee, has_added_surcharge, yf_fee, yf_totail_fee, trajectory_status, cargo_type_name, service_code, three_code, volume_height_old, volume_length_old, volume_width_old, register_man_old, bag_no_old, air_no_old, box_sizi_old, baging_man_old, retrieval_man_old, invoice_amount_old, invoice_title_old, invoice_weight_old, sku_old, hs_code_old, register_date_old, invoice_currency_old, trajectory_sub_state, sign_in_time, warehouse_time, declaration_time, release_time, station_time, takeoff_time, landing_time, clearance_and_delivery_time, supplier_name, credit_code, other_id, platform_code, sync_shipment_status, update_weight, other_bag_no, bag_flag, online_time, outbound_time, air_confirm_date, shipment_type, track_query_time, air_confirm_time, package_type, update_by, customer_pickup_site, barcode_number, tracking_reflect_status, remote_postcode, clearance_time, arrive_stock_time, departure_time, first_deliver_time, hs_code_tax_count, hs_code_tax_amount, hs_code_tax_currency, invoice_url, clearance_no, push_weight, internal_check_time, air_delay_time, first_landing_time, second_takeoff_time, des_port_check_time, stay_remark, miss_box_remark, product_channel_id, customer_track_id, register_site, package_type_financial, mrn, create_time + + insert into prc_order_bill_ext ( + bill_id, order_no, upstream_id, line_no, package_num, actual_volume, cp_type, consignee_mobile, order_returnsign, trade_type, duty_type, battery_type, consignee_companyname, consignee_address, consignee_telephone, consignee_state, consignee_city, consignee_suburb, consignee_passportno, consignee_email, consignee_taxno, consignee_taxnotype, consignee_taxnocountry, consignee_streetno, consignee_doorno, shipper_taxnotype, shipper_taxno, shipper_taxnocountry, customer_id, product_imagepath, order_transactionurl, order_cargoamount, cargo_type, shipper_companyname, shipper_address1, shipper_address2, shipper_address3, shipper_city, shipper_state, shipper_postcode, shipper_country, shipper_telephone, shipper_suburb, shipper_email, shipper_passportno, import_code, import_name, import_companyname, import_address, import_address2, import_address3, import_telephone, import_email, import_postcode, import_city, import_state, import_country, buyerid, order_status, create_at, pay_type, line_code, line_name, product_type, line_type, cargo_name, product_floor_code, order_insurance, product_sum_price, product_sum, shipper_doorno, tariff_payment_account, topayment, product_floor, latest_trajectory, way_bill, pickup_date, bl_baging, bl_pickup, bag_date, org_order_status, status_description, zz_date, shipping_date, order_type, receiving_photo, freight, is_receivable, is_meet, bill_no_receivable, bill_no_meet, country_eingth_name, is_receivable_fee, settlement_fee, product_id, service_freight, is_pay_fee, has_added_surcharge, yf_fee, yf_totail_fee, trajectory_status, cargo_type_name, service_code, three_code, volume_height_old, volume_length_old, volume_width_old, register_man_old, bag_no_old, air_no_old, box_sizi_old, baging_man_old, retrieval_man_old, invoice_amount_old, invoice_title_old, invoice_weight_old, sku_old, hs_code_old, register_date_old, invoice_currency_old, trajectory_sub_state, sign_in_time, warehouse_time, declaration_time, release_time, station_time, takeoff_time, landing_time, clearance_and_delivery_time, supplier_name, credit_code, other_id, platform_code, sync_shipment_status, update_weight, other_bag_no, bag_flag, online_time, outbound_time, air_confirm_date, shipment_type, track_query_time, air_confirm_time, package_type, dimensional_weight_factor, update_by, customer_pickup_site, barcode_number, tracking_reflect_status, remote_postcode, clearance_time, arrive_stock_time, departure_time, first_deliver_time, hs_code_tax_count, hs_code_tax_amount, hs_code_tax_currency, invoice_url, clearance_no, push_weight, internal_check_time, air_delay_time, first_landing_time, second_takeoff_time, des_port_check_time, stay_remark, miss_box_remark, product_channel_id, customer_track_id, register_site, package_type_financial, mrn, create_time ) values ( - #{orderId}, + #{billId}, #{orderNo}, #{upstreamId}, #{lineNo}, @@ -253,6 +258,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{importState}, #{importCountry}, #{buyerid}, + #{orderStatus}, #{createAt}, #{payType}, #{lineCode}, @@ -260,6 +266,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{productType}, #{lineType}, #{cargoName}, + #{productFloorCode}, #{orderInsurance}, #{productSumPrice}, #{productSum}, @@ -269,7 +276,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{productFloor}, #{latestTrajectory}, #{wayBill}, + #{pickupDate}, #{blBaging}, + #{blPickup}, #{bagDate}, #{orgOrderStatus}, #{statusDescription}, @@ -335,6 +344,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{trackQueryTime}, #{airConfirmTime}, #{packageType}, + #{dimensionalWeightFactor}, #{updateBy}, #{customerPickupSite}, #{barcodeNumber}, @@ -366,11 +376,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) - - insert into prc_order_ext ( - order_id, order_no, upstream_id, line_no, package_num, actual_volume, cp_type, consignee_mobile, order_returnsign, trade_type, duty_type, battery_type, consignee_companyname, consignee_address, consignee_telephone, consignee_state, consignee_city, consignee_suburb, consignee_passportno, consignee_email, consignee_taxno, consignee_taxnotype, consignee_taxnocountry, consignee_streetno, consignee_doorno, shipper_taxnotype, shipper_taxno, shipper_taxnocountry, customer_id, product_imagepath, order_transactionurl, order_cargoamount, cargo_type, shipper_companyname, shipper_address1, shipper_address2, shipper_address3, shipper_city, shipper_state, shipper_postcode, shipper_country, shipper_telephone, shipper_suburb, shipper_email, shipper_passportno, import_code, import_name, import_companyname, import_address, import_address2, import_address3, import_telephone, import_email, import_postcode, import_city, import_state, import_country, buyerid, create_at, pay_type, line_code, line_name, product_type, line_type, cargo_name, order_insurance, product_sum_price, product_sum, shipper_doorno, tariff_payment_account, topayment, product_floor, latest_trajectory, way_bill, bl_baging, bag_date, org_order_status, status_description, zz_date, shipping_date, order_type, receiving_photo, freight, is_receivable, is_meet, bill_no_receivable, bill_no_meet, country_eingth_name, is_receivable_fee, settlement_fee, product_id, service_freight, is_pay_fee, has_added_surcharge, yf_fee, yf_totail_fee, trajectory_status, cargo_type_name, service_code, three_code, volume_height_old, volume_length_old, volume_width_old, register_man_old, bag_no_old, air_no_old, box_sizi_old, baging_man_old, retrieval_man_old, invoice_amount_old, invoice_title_old, invoice_weight_old, sku_old, hs_code_old, register_date_old, invoice_currency_old, trajectory_sub_state, sign_in_time, warehouse_time, declaration_time, release_time, station_time, takeoff_time, landing_time, clearance_and_delivery_time, supplier_name, credit_code, other_id, platform_code, sync_shipment_status, update_weight, other_bag_no, bag_flag, online_time, outbound_time, air_confirm_date, shipment_type, track_query_time, air_confirm_time, package_type, update_by, customer_pickup_site, barcode_number, tracking_reflect_status, remote_postcode, clearance_time, arrive_stock_time, departure_time, first_deliver_time, hs_code_tax_count, hs_code_tax_amount, hs_code_tax_currency, invoice_url, clearance_no, push_weight, internal_check_time, air_delay_time, first_landing_time, second_takeoff_time, des_port_check_time, stay_remark, miss_box_remark, product_channel_id, customer_track_id, register_site, package_type_financial, mrn, create_time + + insert into prc_order_bill_ext ( + bill_id, order_no, upstream_id, line_no, package_num, actual_volume, cp_type, consignee_mobile, order_returnsign, trade_type, duty_type, battery_type, consignee_companyname, consignee_address, consignee_telephone, consignee_state, consignee_city, consignee_suburb, consignee_passportno, consignee_email, consignee_taxno, consignee_taxnotype, consignee_taxnocountry, consignee_streetno, consignee_doorno, shipper_taxnotype, shipper_taxno, shipper_taxnocountry, customer_id, product_imagepath, order_transactionurl, order_cargoamount, cargo_type, shipper_companyname, shipper_address1, shipper_address2, shipper_address3, shipper_city, shipper_state, shipper_postcode, shipper_country, shipper_telephone, shipper_suburb, shipper_email, shipper_passportno, import_code, import_name, import_companyname, import_address, import_address2, import_address3, import_telephone, import_email, import_postcode, import_city, import_state, import_country, buyerid, order_status, create_at, pay_type, line_code, line_name, product_type, line_type, cargo_name, product_floor_code, order_insurance, product_sum_price, product_sum, shipper_doorno, tariff_payment_account, topayment, product_floor, latest_trajectory, way_bill, pickup_date, bl_baging, bl_pickup, bag_date, org_order_status, status_description, zz_date, shipping_date, order_type, receiving_photo, freight, is_receivable, is_meet, bill_no_receivable, bill_no_meet, country_eingth_name, is_receivable_fee, settlement_fee, product_id, service_freight, is_pay_fee, has_added_surcharge, yf_fee, yf_totail_fee, trajectory_status, cargo_type_name, service_code, three_code, volume_height_old, volume_length_old, volume_width_old, register_man_old, bag_no_old, air_no_old, box_sizi_old, baging_man_old, retrieval_man_old, invoice_amount_old, invoice_title_old, invoice_weight_old, sku_old, hs_code_old, register_date_old, invoice_currency_old, trajectory_sub_state, sign_in_time, warehouse_time, declaration_time, release_time, station_time, takeoff_time, landing_time, clearance_and_delivery_time, supplier_name, credit_code, other_id, platform_code, sync_shipment_status, update_weight, other_bag_no, bag_flag, online_time, outbound_time, air_confirm_date, shipment_type, track_query_time, air_confirm_time, package_type, dimensional_weight_factor, update_by, customer_pickup_site, barcode_number, tracking_reflect_status, remote_postcode, clearance_time, arrive_stock_time, departure_time, first_deliver_time, hs_code_tax_count, hs_code_tax_amount, hs_code_tax_currency, invoice_url, clearance_no, push_weight, internal_check_time, air_delay_time, first_landing_time, second_takeoff_time, des_port_check_time, stay_remark, miss_box_remark, product_channel_id, customer_track_id, register_site, package_type_financial, mrn, create_time ) values ( - #{orderId}, + #{billId}, #{orderNo}, #{upstreamId}, #{lineNo}, @@ -428,6 +438,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{importState}, #{importCountry}, #{buyerid}, + #{orderStatus}, #{createAt}, #{payType}, #{lineCode}, @@ -435,6 +446,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{productType}, #{lineType}, #{cargoName}, + #{productFloorCode}, #{orderInsurance}, #{productSumPrice}, #{productSum}, @@ -444,7 +456,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{productFloor}, #{latestTrajectory}, #{wayBill}, + #{pickupDate}, #{blBaging}, + #{blPickup}, #{bagDate}, #{orgOrderStatus}, #{statusDescription}, @@ -510,6 +524,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{trackQueryTime}, #{airConfirmTime}, #{packageType}, + #{dimensionalWeightFactor}, #{updateBy}, #{customerPickupSite}, #{barcodeNumber}, @@ -597,6 +612,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" import_state = values(import_state), import_country = values(import_country), buyerid = values(buyerid), + order_status = values(order_status), create_at = values(create_at), pay_type = values(pay_type), line_code = values(line_code), @@ -604,6 +620,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" product_type = values(product_type), line_type = values(line_type), cargo_name = values(cargo_name), + product_floor_code = values(product_floor_code), order_insurance = values(order_insurance), product_sum_price = values(product_sum_price), product_sum = values(product_sum), @@ -613,7 +630,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" product_floor = values(product_floor), latest_trajectory = values(latest_trajectory), way_bill = values(way_bill), + pickup_date = values(pickup_date), bl_baging = values(bl_baging), + bl_pickup = values(bl_pickup), bag_date = values(bag_date), org_order_status = values(org_order_status), status_description = values(status_description), @@ -679,6 +698,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" track_query_time = values(track_query_time), air_confirm_time = values(air_confirm_time), package_type = values(package_type), + dimensional_weight_factor = values(dimensional_weight_factor), update_by = values(update_by), customer_pickup_site = values(customer_pickup_site), barcode_number = values(barcode_number), diff --git a/bms-back/bms-system/src/main/resources/mapper/price/PrcOrderBillMapper.xml b/bms-back/bms-system/src/main/resources/mapper/price/PrcOrderBillMapper.xml index b475a42a..05bc058c 100644 --- a/bms-back/bms-system/src/main/resources/mapper/price/PrcOrderBillMapper.xml +++ b/bms-back/bms-system/src/main/resources/mapper/price/PrcOrderBillMapper.xml @@ -8,7 +8,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - @@ -35,7 +34,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - @@ -82,14 +80,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - select bill_id, order_id, bill_key, order_no, tracking_no, transfer_no, + select bill_id, bill_key, order_no, tracking_no, transfer_no, belong_saler, belong_saler_code, settlement_man, settlement_man_code, service_man, service_man_code, customer_id, customer_code, customer_name, pieces, actual_weight, receive_weight, volume, volume_weight, pkg_length, pkg_width, pkg_height, - shipper_name, consignee_name, dest_postcode, warehouse_code, order_time, pickup_date, order_remark, + shipper_name, consignee_name, dest_postcode, warehouse_code, order_time, order_remark, product_code, product_name, country_code, country_name, weight, biz_date, tms_id, match_source, match_message, price_set_id, price_set_code, price_set_name, set_type, bind_priority, customer_priceset_id, psv_id, psd_id, product_country_id, @@ -103,11 +102,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select p.bill_id, p.order_id, p.bill_key, p.order_no, p.tracking_no, p.transfer_no, + select p.bill_id, p.bill_key, p.order_no, p.tracking_no, p.transfer_no, p.belong_saler, p.belong_saler_code, p.settlement_man, p.settlement_man_code, p.service_man, p.service_man_code, p.customer_id, p.customer_code, p.customer_name, p.pieces, p.actual_weight, p.receive_weight, p.volume, p.volume_weight, p.pkg_length, p.pkg_width, p.pkg_height, - p.shipper_name, p.consignee_name, p.dest_postcode, p.warehouse_code, p.order_time, p.pickup_date, p.order_remark, + p.shipper_name, p.consignee_name, p.dest_postcode, p.warehouse_code, p.order_time, e.pickup_date, p.order_remark, p.product_code, p.product_name, p.country_code, p.country_name, p.weight, p.biz_date, p.tms_id, p.match_source, p.match_message, p.price_set_id, p.price_set_code, p.price_set_name, p.set_type, p.bind_priority, p.customer_priceset_id, p.psv_id, p.psd_id, p.product_country_id, @@ -122,6 +121,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" p.customer_active_status, p.credit_arrears_status, p.refund_status, p.billing_fail_status, p.round_mode, p.created_by, p.create_time, p.updated_by, p.update_time from prc_order_bill p + left join prc_order_bill_ext e on e.bill_id = p.bill_id - - where order_id = #{orderId} - - - - - - - - - - insert into prc_order ( - order_id, order_no, tracking_no, transfer_no, track_id, - belong_saler, belong_saler_code, settlement_man, settlement_man_code, service_man, service_man_code, - customer_code, customer_name, pieces, actual_weight, weight, dimensional_weight_factor, - volume, volume_weight, pkg_length, pkg_width, pkg_height, - shipper_name, consignee_name, consignee_postcode, warehouse_code, - order_time, order_remark, product_code, product_name, product_floor_code, - country_code, country_name, order_status, bl_pickup, pickup_date, biz_date, - success_status, fail_code, created_by, create_time, updated_by, update_time - ) values ( - #{orderId}, #{orderNo}, #{trackingNo}, #{transferNo}, #{trackId}, - #{belongSaler}, #{belongSalerCode}, #{settlementMan}, #{settlementManCode}, #{serviceMan}, #{serviceManCode}, - #{customerCode}, #{customerName}, #{pieces}, #{actualWeight}, #{weight}, #{dimensionalWeightFactor}, - #{volume}, #{volumeWeight}, #{pkgLength}, #{pkgWidth}, #{pkgHeight}, - #{shipperName}, #{consigneeName}, #{consigneePostcode}, #{warehouseCode}, - #{orderTime}, #{orderRemark}, #{productCode}, #{productName}, #{productFloorCode}, - #{countryCode}, #{countryName}, #{orderStatus}, #{blPickup}, #{pickupDate}, #{bizDate}, - #{successStatus}, #{failCode}, #{createBy}, #{createTime}, #{updateBy}, #{updateTime} - ) - - - - update prc_order - - order_no = #{orderNo}, - tracking_no = #{trackingNo}, - track_id = #{trackId}, - belong_saler = #{belongSaler}, - belong_saler_code = #{belongSalerCode}, - settlement_man = #{settlementMan}, - settlement_man_code = #{settlementManCode}, - service_man = #{serviceMan}, - service_man_code = #{serviceManCode}, - customer_code = #{customerCode}, - customer_name = #{customerName}, - pieces = #{pieces}, - actual_weight = #{actualWeight}, - weight = #{weight}, - dimensional_weight_factor = #{dimensionalWeightFactor}, - volume = #{volume}, - volume_weight = #{volumeWeight}, - pkg_length = #{pkgLength}, - pkg_width = #{pkgWidth}, - pkg_height = #{pkgHeight}, - shipper_name = #{shipperName}, - consignee_name = #{consigneeName}, - consignee_postcode = #{consigneePostcode}, - warehouse_code = #{warehouseCode}, - order_time = #{orderTime}, - order_remark = #{orderRemark}, - product_code = #{productCode}, - product_name = #{productName}, - product_floor_code = #{productFloorCode}, - country_code = #{countryCode}, - country_name = #{countryName}, - order_status = #{orderStatus}, - bl_pickup = #{blPickup}, - pickup_date = #{pickupDate}, - biz_date = #{bizDate}, - success_status = #{successStatus}, - fail_code = #{failCode}, - updated_by = #{updateBy}, - update_time = #{updateTime} - - where order_id = #{orderId} - - - - - insert into prc_order ( - order_id, order_no, tracking_no, transfer_no, track_id, - belong_saler, belong_saler_code, settlement_man, settlement_man_code, service_man, service_man_code, - customer_code, customer_name, pieces, actual_weight, weight, dimensional_weight_factor, - volume, volume_weight, pkg_length, pkg_width, pkg_height, - shipper_name, consignee_name, consignee_postcode, warehouse_code, - order_time, order_remark, product_code, product_name, product_floor_code, - country_code, country_name, order_status, bl_pickup, pickup_date, biz_date, - success_status, fail_code, created_by, create_time, updated_by, update_time - ) values ( - #{orderId}, #{orderNo}, #{trackingNo}, #{transferNo}, #{trackId}, - #{belongSaler}, #{belongSalerCode}, #{settlementMan}, #{settlementManCode}, #{serviceMan}, #{serviceManCode}, - #{customerCode}, #{customerName}, #{pieces}, #{actualWeight}, #{weight}, #{dimensionalWeightFactor}, - #{volume}, #{volumeWeight}, #{pkgLength}, #{pkgWidth}, #{pkgHeight}, - #{shipperName}, #{consigneeName}, #{consigneePostcode}, #{warehouseCode}, - #{orderTime}, #{orderRemark}, #{productCode}, #{productName}, #{productFloorCode}, - #{countryCode}, #{countryName}, #{orderStatus}, #{blPickup}, #{pickupDate}, #{bizDate}, - #{successStatus}, #{failCode}, #{createBy}, #{createTime}, #{updateBy}, #{updateTime} - ) - on duplicate key update - order_id = values(order_id), - order_no = values(order_no), - tracking_no = values(tracking_no), - track_id = values(track_id), - belong_saler = values(belong_saler), - belong_saler_code = values(belong_saler_code), - settlement_man = values(settlement_man), - settlement_man_code = values(settlement_man_code), - service_man = values(service_man), - service_man_code = values(service_man_code), - customer_code = values(customer_code), - customer_name = values(customer_name), - pieces = values(pieces), - actual_weight = values(actual_weight), - weight = values(weight), - dimensional_weight_factor = values(dimensional_weight_factor), - volume = values(volume), - volume_weight = values(volume_weight), - pkg_length = values(pkg_length), - pkg_width = values(pkg_width), - pkg_height = values(pkg_height), - shipper_name = values(shipper_name), - consignee_name = values(consignee_name), - consignee_postcode = values(consignee_postcode), - warehouse_code = values(warehouse_code), - order_time = values(order_time), - order_remark = values(order_remark), - product_code = values(product_code), - product_name = values(product_name), - product_floor_code = values(product_floor_code), - country_code = values(country_code), - country_name = values(country_name), - order_status = values(order_status), - bl_pickup = values(bl_pickup), - pickup_date = values(pickup_date), - biz_date = values(biz_date), - success_status = values(success_status), - fail_code = values(fail_code), - updated_by = values(updated_by), - update_time = values(update_time) - - - - update prc_order - set success_status = #{successStatus}, - fail_code = #{failCode}, - updated_by = #{updateBy}, - update_time = now() - where order_id = #{orderId} - - diff --git a/bms-back/sql/price/order_bill_pickup_date_alter.sql b/bms-back/sql/price/order_bill_pickup_date_alter.sql deleted file mode 100644 index 230bdd56..00000000 --- a/bms-back/sql/price/order_bill_pickup_date_alter.sql +++ /dev/null @@ -1,23 +0,0 @@ --- prc_order_bill.pickup_date from TAB_ORDER.PICKUP_DATE -SET NAMES utf8mb4; - -SET @col := ( - SELECT COLUMN_NAME FROM information_schema.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'prc_order_bill' - AND COLUMN_NAME = 'pickup_date' - LIMIT 1 -); -SET @sql := IF( - @col IS NULL, - 'ALTER TABLE prc_order_bill ADD COLUMN pickup_date datetime DEFAULT NULL COMMENT \'收货时间(TAB_ORDER.PICKUP_DATE)\' AFTER order_time, ADD KEY idx_order_bill_pickup_date (pickup_date)', - 'SELECT 1' -); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - --- backfill from prc_order when order_id linked -UPDATE prc_order_bill b -INNER JOIN prc_order o ON o.order_id = b.order_id -SET b.pickup_date = o.pickup_date -WHERE b.pickup_date IS NULL - AND o.pickup_date IS NOT NULL; diff --git a/bms-back/sql/price/prc_order.sql b/bms-back/sql/price/prc_order.sql deleted file mode 100644 index 4f3d349f..00000000 --- a/bms-back/sql/price/prc_order.sql +++ /dev/null @@ -1,284 +0,0 @@ --- ------------------------------------------------------------ --- REVIEW DRAFT: prc_order + rename ext -> prc_order_ext --- Confirm schema before app code changes. --- --- Target model: --- prc_billing_task --transfer_no--> TAB_ORDER --- -> upsert prc_order (UK transfer_no), delete task by transfer_no --- -> prc_order 1:1 prc_order_ext (PK/FK = order_id) --- -> prc_order_bill keeps bill_id; adds order_id + transfer_no --- --- Naming: --- order_id = BMS UUID PK (same rule as bill_id) --- old prc_order_bill_ext renamed to prc_order_ext --- columns moved to prc_order are DROPped from prc_order_ext --- ------------------------------------------------------------ - -SET NAMES utf8mb4; - --- ============================================================ --- 1) New table: prc_order --- ============================================================ --- TAB_ORDER mapping (core): --- ORDER_ID -> order_no --- ORG_ORDER_ID -> tracking_no --- TRANSFER_ORDER_ID -> transfer_no --- TRACK_ID -> track_id --- CUSTOMER_CODE/NAME -> customer_code/name --- PRODUCT_CODE/NAME -> product_code/name --- PRODUCT_FLOOR_CODE -> product_floor_code --- COUNTRY / COUNTRY_NAME -> country_code / country_name --- CONSIGNEE_POSTCODE -> consignee_postcode --- CONSIGNEE_NAME -> consignee_name --- SHIPPER_NAME -> shipper_name --- REGISTER_SITE_CODE -> warehouse_code --- ORDER_PIECE/PACKAGE_NUM -> pieces --- ACTUAL_WEIGHT -> actual_weight --- VOLUME -> volume --- VOLUME_WEIGHT -> volume_weight --- LENGTH/WIDTH/HEIGHT -> pkg_length/width/height --- DIMENSIONAL_WEIGHT_FACTOR -> dimensional_weight_factor --- WEIGHT -> weight --- BELONG_SALER* -> belong_saler / belong_saler_code --- SETTLEMENT_MAN* -> settlement_man / settlement_man_code --- SERVICE_MAN* -> service_man / service_man_code --- TRACK_REMARK/... -> order_remark --- ORDER_STATUS -> order_status --- BL_PICKUP -> bl_pickup --- PICKUP_DATE -> pickup_date --- CREATE_DATE -> order_time --- (task.bill_time) -> biz_date --- ============================================================ -CREATE TABLE IF NOT EXISTS `prc_order` ( - `order_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '订单ID(BMS主键,规则同 bill_id:UUID)', - `order_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户订单号(TAB_ORDER.ORDER_ID)', - `tracking_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '运单号(TAB_ORDER.ORG_ORDER_ID)', - `transfer_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '转单号(TAB_ORDER.TRANSFER_ORDER_ID,唯一)', - `track_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '轨迹ID(TAB_ORDER.TRACK_ID)', - `belong_saler` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '所属销售员(TAB_ORDER.BELONG_SALER*)', - `belong_saler_code` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '销售员编码(TAB_ORDER.BELONG_SALER_CODE)', - `settlement_man` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '结算员(TAB_ORDER.SETTLEMENT_MAN*)', - `settlement_man_code` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '结算员编码(TAB_ORDER.SETTLEMENT_MAN_CODE)', - `service_man` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客服员(TAB_ORDER.SERVICE_MAN*)', - `service_man_code` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客服员编码', - `customer_code` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户代码(TAB_ORDER.CUSTOMER_CODE)', - `customer_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '客户名称(TAB_ORDER.CUSTOMER_NAME)', - `pieces` int(11) DEFAULT NULL COMMENT '件数(TAB_ORDER.ORDER_PIECE/PACKAGE_NUM)', - `actual_weight` decimal(10,3) DEFAULT NULL COMMENT '实际重量KG(TAB_ORDER.ACTUAL_WEIGHT)', - `weight` decimal(10,3) DEFAULT NULL COMMENT '实重/收货重KG(TAB_ORDER.WEIGHT)', - `dimensional_weight_factor` decimal(10,3) DEFAULT NULL COMMENT '计费重KG(TAB_ORDER.DIMENSIONAL_WEIGHT_FACTOR)', - `volume` decimal(12,4) DEFAULT NULL COMMENT '体积m3(TAB_ORDER.VOLUME)', - `volume_weight` decimal(10,3) DEFAULT NULL COMMENT '体积重KG(TAB_ORDER.VOLUME_WEIGHT)', - `pkg_length` decimal(10,2) DEFAULT NULL COMMENT '长CM(TAB_ORDER.LENGTH)', - `pkg_width` decimal(10,2) DEFAULT NULL COMMENT '宽CM(TAB_ORDER.WIDTH)', - `pkg_height` decimal(10,2) DEFAULT NULL COMMENT '高CM(TAB_ORDER.HEIGHT)', - `shipper_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发件人(TAB_ORDER.SHIPPER_NAME)', - `consignee_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '收件人(TAB_ORDER.CONSIGNEE_NAME)', - `consignee_postcode` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '收件人邮编(TAB_ORDER.CONSIGNEE_POSTCODE)', - `warehouse_code` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '仓库(TAB_ORDER.REGISTER_SITE_CODE)', - `order_time` datetime DEFAULT NULL COMMENT '下单时间(TAB_ORDER.CREATE_DATE)', - `order_remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '订单备注(TAB_ORDER.TRACK_REMARK/等)', - `product_code` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '产品代码(TAB_ORDER.PRODUCT_CODE)', - `product_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '产品名称(TAB_ORDER.PRODUCT_NAME)', - `product_floor_code` text COLLATE utf8mb4_unicode_ci COMMENT '产品底级/渠道编码(TAB_ORDER.PRODUCT_FLOOR_CODE)', - `country_code` char(2) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '国家二字码(TAB_ORDER.COUNTRY)', - `country_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '国家名称(TAB_ORDER.COUNTRY_NAME)', - `order_status` tinyint(4) DEFAULT NULL COMMENT '订单状态(TAB_ORDER.ORDER_STATUS)', - `bl_pickup` tinyint(4) DEFAULT NULL COMMENT '是否收货(0未收货 1已收货,TAB_ORDER.BL_PICKUP)', - `pickup_date` datetime DEFAULT NULL COMMENT '提货/收件时间(TAB_ORDER.PICKUP_DATE)', - `biz_date` datetime DEFAULT NULL COMMENT '计费时间(任务bill_time,非上游字段)', - `success_status` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'WAITING' COMMENT '计费成功状态:WAITING待处理 SUCCESS成功 FAILED失败', - `fail_code` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '计费失败码(同 prc_billing_task.fail_code / BillTaskFailCode)', - `created_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建人', - `create_time` datetime DEFAULT NULL COMMENT '创建时间', - `updated_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新人', - `update_time` datetime DEFAULT NULL COMMENT '更新时间', - PRIMARY KEY (`order_id`), - UNIQUE KEY `uk_prc_order_transfer_no` (`transfer_no`), - KEY `idx_prc_order_order_no` (`order_no`), - KEY `idx_prc_order_tracking_no` (`tracking_no`), - KEY `idx_prc_order_track_id` (`track_id`), - KEY `idx_prc_order_customer` (`customer_code`,`biz_date`), - KEY `idx_prc_order_pickup_date` (`pickup_date`), - KEY `idx_prc_order_success_status` (`success_status`,`create_time`), - KEY `idx_prc_order_fail_code` (`fail_code`), - KEY `idx_prc_order_product` (`product_code`,`country_code`), - KEY `idx_prc_order_bl_pickup` (`bl_pickup`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单主表(上游TAB_ORDER核心字段+计费状态)'; - --- ============================================================ --- 2) prc_order_bill: add order_id (keep bill_id; keep transfer_no) --- ============================================================ -SET @col := ( - SELECT COLUMN_NAME FROM information_schema.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'prc_order_bill' - AND COLUMN_NAME = 'order_id' - LIMIT 1 -); -SET @sql := IF( - @col IS NULL, - 'ALTER TABLE prc_order_bill ADD COLUMN order_id varchar(36) DEFAULT NULL COMMENT \'订单ID,对应 prc_order.order_id\' AFTER bill_id, ADD KEY idx_order_bill_order_id (order_id)', - 'SELECT 1' -); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - --- Optional FK (enable after data backfill): --- ALTER TABLE prc_order_bill --- ADD CONSTRAINT fk_order_bill_order --- FOREIGN KEY (order_id) REFERENCES prc_order(order_id); - --- ============================================================ --- 3) prc_order_bill_ext -> prc_order_ext, rebind to prc_order --- WARNING: prefer empty/dev env; production needs data migration. --- ============================================================ - --- 3.1 Drop old FK to prc_order_bill (table may still be old name) -SET @fk := ( - SELECT CONSTRAINT_NAME FROM information_schema.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'prc_order_bill_ext' - AND CONSTRAINT_TYPE = 'FOREIGN KEY' - AND CONSTRAINT_NAME = 'fk_order_bill_ext_bill' - LIMIT 1 -); -SET @sql := IF( - @fk IS NOT NULL, - 'ALTER TABLE prc_order_bill_ext DROP FOREIGN KEY fk_order_bill_ext_bill', - 'SELECT 1' -); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - --- 3.2 Rename table bill_ext -> order_ext -SET @tbl := ( - SELECT TABLE_NAME FROM information_schema.TABLES - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'prc_order_bill_ext' - LIMIT 1 -); -SET @sql := IF( - @tbl IS NOT NULL, - 'RENAME TABLE prc_order_bill_ext TO prc_order_ext', - 'SELECT 1' -); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - --- 3.3 Rename PK column bill_id -> order_id -SET @col := ( - SELECT COLUMN_NAME FROM information_schema.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'prc_order_ext' - AND COLUMN_NAME = 'bill_id' - LIMIT 1 -); -SET @sql := IF( - @col IS NOT NULL, - 'ALTER TABLE prc_order_ext CHANGE COLUMN bill_id order_id varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT \'订单ID,对应 prc_order.order_id\'', - 'SELECT 1' -); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - --- 3.4 Drop columns moved onto prc_order -SET @col := ( - SELECT COLUMN_NAME FROM information_schema.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'prc_order_ext' - AND COLUMN_NAME = 'product_floor_code' - LIMIT 1 -); -SET @sql := IF( - @col IS NOT NULL, - 'ALTER TABLE prc_order_ext DROP COLUMN `product_floor_code`', - 'SELECT 1' -); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - -SET @col := ( - SELECT COLUMN_NAME FROM information_schema.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'prc_order_ext' - AND COLUMN_NAME = 'order_status' - LIMIT 1 -); -SET @sql := IF( - @col IS NOT NULL, - 'ALTER TABLE prc_order_ext DROP COLUMN `order_status`', - 'SELECT 1' -); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - -SET @col := ( - SELECT COLUMN_NAME FROM information_schema.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'prc_order_ext' - AND COLUMN_NAME = 'pickup_date' - LIMIT 1 -); -SET @sql := IF( - @col IS NOT NULL, - 'ALTER TABLE prc_order_ext DROP COLUMN `pickup_date`', - 'SELECT 1' -); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - -SET @col := ( - SELECT COLUMN_NAME FROM information_schema.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'prc_order_ext' - AND COLUMN_NAME = 'dimensional_weight_factor' - LIMIT 1 -); -SET @sql := IF( - @col IS NOT NULL, - 'ALTER TABLE prc_order_ext DROP COLUMN `dimensional_weight_factor`', - 'SELECT 1' -); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - -SET @col := ( - SELECT COLUMN_NAME FROM information_schema.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'prc_order_ext' - AND COLUMN_NAME = 'bl_pickup' - LIMIT 1 -); -SET @sql := IF( - @col IS NOT NULL, - 'ALTER TABLE prc_order_ext DROP COLUMN bl_pickup', - 'SELECT 1' -); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - --- 3.5 MUST empty ext before FK (old order_id values are former bill_id) --- Run these 3 statements even if the rest of the script already succeeded. -TRUNCATE TABLE prc_order_ext; - --- 3.6 Add FK to prc_order (skip if already exists) -SET @fk := ( - SELECT CONSTRAINT_NAME FROM information_schema.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'prc_order_ext' - AND CONSTRAINT_TYPE = 'FOREIGN KEY' - AND CONSTRAINT_NAME = 'fk_order_ext_order' - LIMIT 1 -); -SET @sql := IF( - @fk IS NULL, - 'ALTER TABLE prc_order_ext ADD CONSTRAINT fk_order_ext_order FOREIGN KEY (order_id) REFERENCES prc_order (order_id) ON DELETE CASCADE', - 'SELECT 1' -); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - --- 3.7 Refresh table comment -ALTER TABLE prc_order_ext COMMENT = '订单扩展表(上游TAB_ORDER非主表字段,挂 prc_order)'; - --- ============================================================ --- Review checklist --- ------------------------------------------------------------ --- prc_order: identity + L/W/H + weights + staff + billing status --- prc_order_ext: leftover TAB_ORDER only (no dup of moved cols) --- prc_order_bill: pricing result; +order_id; still has bill_id --- Dropped from ext (now on prc_order): --- product_floor_code, order_status, pickup_date, dimensional_weight_factor --- ============================================================ - diff --git a/bms-back/sql/price/prc_order_bl_pickup_alter.sql b/bms-back/sql/price/prc_order_bl_pickup_alter.sql deleted file mode 100644 index 47d9c3a5..00000000 --- a/bms-back/sql/price/prc_order_bl_pickup_alter.sql +++ /dev/null @@ -1,31 +0,0 @@ --- prc_order.bl_pickup from TAB_ORDER.BL_PICKUP (0/1) -SET NAMES utf8mb4; - -SET @col := ( - SELECT COLUMN_NAME FROM information_schema.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'prc_order' - AND COLUMN_NAME = 'bl_pickup' - LIMIT 1 -); -SET @sql := IF( - @col IS NULL, - 'ALTER TABLE prc_order ADD COLUMN bl_pickup tinyint(4) DEFAULT NULL COMMENT \'是否收货(0未收货 1已收货,TAB_ORDER.BL_PICKUP)\' AFTER order_status, ADD KEY idx_prc_order_bl_pickup (bl_pickup)', - 'SELECT 1' -); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - --- drop from ext if still present (moved to prc_order) -SET @col := ( - SELECT COLUMN_NAME FROM information_schema.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'prc_order_ext' - AND COLUMN_NAME = 'bl_pickup' - LIMIT 1 -); -SET @sql := IF( - @col IS NOT NULL, - 'ALTER TABLE prc_order_ext DROP COLUMN bl_pickup', - 'SELECT 1' -); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; diff --git a/bms-back/sql/price/prc_order_ext_fk_fix.sql b/bms-back/sql/price/prc_order_ext_fk_fix.sql deleted file mode 100644 index 9fe8be55..00000000 --- a/bms-back/sql/price/prc_order_ext_fk_fix.sql +++ /dev/null @@ -1,30 +0,0 @@ --- Fix 1452: empty orphan prc_order_ext then add FK to prc_order --- Confirm DB = bms, then run in order. - -SELECT DATABASE() AS current_db; -SELECT COUNT(*) AS ext_rows_before FROM prc_order_ext; -SELECT COUNT(*) AS order_rows FROM prc_order; - -TRUNCATE TABLE prc_order_ext; - -SELECT COUNT(*) AS ext_rows_after FROM prc_order_ext; - --- Drop failed/partial FK name if present (ignore error if missing) -SET @fk := ( - SELECT CONSTRAINT_NAME FROM information_schema.TABLE_CONSTRAINTS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'prc_order_ext' - AND CONSTRAINT_TYPE = 'FOREIGN KEY' - AND CONSTRAINT_NAME = 'fk_order_ext_order' - LIMIT 1 -); -SET @sql := IF( - @fk IS NOT NULL, - 'ALTER TABLE prc_order_ext DROP FOREIGN KEY fk_order_ext_order', - 'SELECT 1' -); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - -ALTER TABLE prc_order_ext - ADD CONSTRAINT fk_order_ext_order - FOREIGN KEY (order_id) REFERENCES prc_order (order_id) ON DELETE CASCADE; diff --git a/bms-back/sql/price/rollback_prc_order_schema.sql b/bms-back/sql/price/rollback_prc_order_schema.sql new file mode 100644 index 00000000..af387ce2 --- /dev/null +++ b/bms-back/sql/price/rollback_prc_order_schema.sql @@ -0,0 +1,191 @@ +-- Restore schema to pre-prc_order (code rollback). +-- Run on database bms. Safe to re-run. +-- +-- DATA: prc_order_ext was TRUNCATE before the FK. +-- Those ext rows are gone. This script only restores table shape. +-- Row data needs a backup / binlog from before that TRUNCATE. + +SET NAMES utf8mb4; +SELECT DATABASE() AS current_db; + +-- 1) Drop FK from ext -> prc_order (table may still be prc_order_ext) +SET @fk := ( + SELECT CONSTRAINT_NAME FROM information_schema.TABLE_CONSTRAINTS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'prc_order_ext' + AND CONSTRAINT_TYPE = 'FOREIGN KEY' + AND CONSTRAINT_NAME = 'fk_order_ext_order' + LIMIT 1 +); +SET @sql := IF(@fk IS NOT NULL, + 'ALTER TABLE prc_order_ext DROP FOREIGN KEY fk_order_ext_order', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- 2) Rename prc_order_ext -> prc_order_bill_ext +SET @new_tbl := ( + SELECT TABLE_NAME FROM information_schema.TABLES + WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'prc_order_ext' LIMIT 1 +); +SET @old_tbl := ( + SELECT TABLE_NAME FROM information_schema.TABLES + WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'prc_order_bill_ext' LIMIT 1 +); +SET @sql := IF(@new_tbl IS NOT NULL AND @old_tbl IS NULL, + 'RENAME TABLE prc_order_ext TO prc_order_bill_ext', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- 3) PK column order_id -> bill_id +SET @col := ( + SELECT COLUMN_NAME FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'prc_order_bill_ext' + AND COLUMN_NAME = 'order_id' + LIMIT 1 +); +SET @sql := IF(@col IS NOT NULL, + 'ALTER TABLE prc_order_bill_ext CHANGE COLUMN order_id bill_id varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT \'计费订单ID,对应 prc_order_bill.bill_id\'', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- 4) Put back columns that were moved off the ext table +SET @col := ( + SELECT COLUMN_NAME FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'prc_order_bill_ext' + AND COLUMN_NAME = 'product_floor_code' + LIMIT 1 +); +SET @sql := IF(@col IS NULL, + 'ALTER TABLE prc_order_bill_ext ADD COLUMN product_floor_code text NULL COMMENT \'渠道编码\'', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @col := ( + SELECT COLUMN_NAME FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'prc_order_bill_ext' + AND COLUMN_NAME = 'order_status' + LIMIT 1 +); +SET @sql := IF(@col IS NULL, + 'ALTER TABLE prc_order_bill_ext ADD COLUMN order_status tinyint(4) DEFAULT NULL COMMENT \'订单状态\'', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @col := ( + SELECT COLUMN_NAME FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'prc_order_bill_ext' + AND COLUMN_NAME = 'pickup_date' + LIMIT 1 +); +SET @sql := IF(@col IS NULL, + 'ALTER TABLE prc_order_bill_ext ADD COLUMN pickup_date datetime DEFAULT NULL COMMENT \'收件时间\'', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @col := ( + SELECT COLUMN_NAME FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'prc_order_bill_ext' + AND COLUMN_NAME = 'bl_pickup' + LIMIT 1 +); +SET @sql := IF(@col IS NULL, + 'ALTER TABLE prc_order_bill_ext ADD COLUMN bl_pickup tinyint(4) DEFAULT NULL COMMENT \'是否收件 0未收件 1已收件\'', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @col := ( + SELECT COLUMN_NAME FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'prc_order_bill_ext' + AND COLUMN_NAME = 'dimensional_weight_factor' + LIMIT 1 +); +SET @sql := IF(@col IS NULL, + 'ALTER TABLE prc_order_bill_ext ADD COLUMN dimensional_weight_factor decimal(10,3) DEFAULT NULL COMMENT \'计费重\'', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + + +-- 5) Drop orphan ext rows, then restore FK to prc_order_bill +DELETE e FROM prc_order_bill_ext e +LEFT JOIN prc_order_bill b ON b.bill_id = e.bill_id +WHERE b.bill_id IS NULL; + +SET @fk := ( + SELECT CONSTRAINT_NAME FROM information_schema.TABLE_CONSTRAINTS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'prc_order_bill_ext' + AND CONSTRAINT_TYPE = 'FOREIGN KEY' + AND CONSTRAINT_NAME = 'fk_order_bill_ext_bill' + LIMIT 1 +); +SET @sql := IF(@fk IS NULL, + 'ALTER TABLE prc_order_bill_ext ADD CONSTRAINT fk_order_bill_ext_bill FOREIGN KEY (bill_id) REFERENCES prc_order_bill (bill_id) ON DELETE CASCADE', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +ALTER TABLE prc_order_bill_ext COMMENT = '订单计费扩展表'; + +-- 6) Drop prc_order_bill.order_id (and its index) +SET @idx := ( + SELECT INDEX_NAME FROM information_schema.STATISTICS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'prc_order_bill' + AND INDEX_NAME = 'idx_order_bill_order_id' + LIMIT 1 +); +SET @sql := IF(@idx IS NOT NULL, + 'ALTER TABLE prc_order_bill DROP INDEX idx_order_bill_order_id', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @col := ( + SELECT COLUMN_NAME FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'prc_order_bill' + AND COLUMN_NAME = 'order_id' + LIMIT 1 +); +SET @sql := IF(@col IS NOT NULL, + 'ALTER TABLE prc_order_bill DROP COLUMN order_id', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- 7) Drop prc_order_bill.pickup_date added in the rolled-back change +-- Receive time stays on prc_order_bill_ext.pickup_date +SET @idx := ( + SELECT INDEX_NAME FROM information_schema.STATISTICS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'prc_order_bill' + AND INDEX_NAME = 'idx_order_bill_pickup_date' + LIMIT 1 +); +SET @sql := IF(@idx IS NOT NULL, + 'ALTER TABLE prc_order_bill DROP INDEX idx_order_bill_pickup_date', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @col := ( + SELECT COLUMN_NAME FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'prc_order_bill' + AND COLUMN_NAME = 'pickup_date' + LIMIT 1 +); +SET @sql := IF(@col IS NOT NULL, + 'ALTER TABLE prc_order_bill DROP COLUMN pickup_date', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- 8) Drop new master table +SET @tbl := ( + SELECT TABLE_NAME FROM information_schema.TABLES + WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'prc_order' LIMIT 1 +); +SET @sql := IF(@tbl IS NOT NULL, 'DROP TABLE prc_order', 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; diff --git a/bms-front/src/api/monitor/prcOrder.js b/bms-front/src/api/monitor/prcOrder.js deleted file mode 100644 index 0b607d1f..00000000 --- a/bms-front/src/api/monitor/prcOrder.js +++ /dev/null @@ -1,31 +0,0 @@ -import request from '@/utils/request' - -export function listPrcOrder(query) { - return request({ - url: '/monitor/prcOrder/list', - method: 'get', - params: query - }) -} - -export function getPrcOrder(orderId) { - return request({ - url: '/monitor/prcOrder/' + orderId, - method: 'get' - }) -} - -export function retryPrcOrder(orderId) { - return request({ - url: '/monitor/prcOrder/retry/' + orderId, - method: 'post' - }) -} - -export function retryPrcOrderBatch(orderIds) { - return request({ - url: '/monitor/prcOrder/retry', - method: 'post', - data: orderIds - }) -} diff --git a/bms-front/src/views/monitor/billingTask/components/BillingTaskDetailDrawer.vue b/bms-front/src/views/monitor/billingTask/components/BillingTaskDetailDrawer.vue index 9966486d..0b5a6495 100644 --- a/bms-front/src/views/monitor/billingTask/components/BillingTaskDetailDrawer.vue +++ b/bms-front/src/views/monitor/billingTask/components/BillingTaskDetailDrawer.vue @@ -5,47 +5,65 @@ diff --git a/bms-front/src/views/monitor/billingTask/index.vue b/bms-front/src/views/monitor/billingTask/index.vue index a3cf9b54..524080b6 100644 --- a/bms-front/src/views/monitor/billingTask/index.vue +++ b/bms-front/src/views/monitor/billingTask/index.vue @@ -1,15 +1,38 @@