diff --git a/bms-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TmsPriceController.java b/bms-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TmsPriceController.java index 84c33a67..b1d0c606 100644 --- a/bms-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TmsPriceController.java +++ b/bms-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TmsPriceController.java @@ -22,7 +22,7 @@ import com.ruoyi.price.domain.vo.TmsPriceQuoteResult; import com.ruoyi.price.search.EsBizLogSupport; import com.ruoyi.price.search.EsLogType; import com.ruoyi.price.search.IBillSearchStore; -import com.ruoyi.price.service.IPrcBillService; +import com.ruoyi.price.service.IPrcOrderBillService; import com.ruoyi.price.service.ITmsPriceQuoteService; /** @@ -44,7 +44,7 @@ public class TmsPriceController extends BaseController private ITmsPriceQuoteService tmsPriceQuoteService; @Autowired - private IPrcBillService prcBillService; + private IPrcOrderBillService prcOrderBillService; @Autowired private TmsApiProperties tmsApiProperties; @@ -76,7 +76,7 @@ public class TmsPriceController extends BaseController } /** - * Sync order and persist receivable bill (prc_bill / prc_bill_fee). + * Sync order and persist prc_order_bill / prc_income_bill_fee. * Same price match as quote. Same orderNo upserts. */ @PostMapping("/bill") @@ -93,12 +93,12 @@ public class TmsPriceController extends BaseController EsBizLogSupport.saveFail(billSearchStore, EsLogType.BILL, EsBizLogSupport.billFailBizId(request), request, e); throw e; } - TmsPriceQuoteResult result = prcBillService.bill(request); + TmsPriceQuoteResult result = prcOrderBillService.bill(request); return success(result); } /** - * Query receivable bill by orderNo after sync. + * Query order bill by orderNo after sync. */ @GetMapping("/bill/by-order/{orderNo}") public AjaxResult getBillByOrder( @@ -107,7 +107,7 @@ public class TmsPriceController extends BaseController @RequestParam(value = "apiCode", required = false) String apiCode) { assertApiCode(headerApiCode, apiCode); - return success(prcBillService.getBillByOrderNo(orderNo)); + return success(prcOrderBillService.getBillByOrderNo(orderNo)); } private void assertApiCode(String headerApiCode, String bodyApiCode) diff --git a/bms-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/price/BillingController.java b/bms-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/price/BillingController.java index cc833a23..c5cb7aa8 100644 --- a/bms-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/price/BillingController.java +++ b/bms-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/price/BillingController.java @@ -13,12 +13,12 @@ import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.price.domain.PrcBill; +import com.ruoyi.price.domain.PrcOrderBill; import com.ruoyi.price.domain.PrcQuote; import com.ruoyi.price.domain.vo.TmsPriceBillRequest; import com.ruoyi.price.domain.vo.TmsPriceQuoteRequest; import com.ruoyi.price.domain.vo.TmsPriceQuoteResult; -import com.ruoyi.price.service.IPrcBillService; +import com.ruoyi.price.service.IPrcOrderBillService; import com.ruoyi.price.service.ITmsPriceQuoteService; /** @@ -34,7 +34,7 @@ public class BillingController extends BaseController private ITmsPriceQuoteService tmsPriceQuoteService; @Autowired - private IPrcBillService prcBillService; + private IPrcOrderBillService prcOrderBillService; /** * Historical quote list. @@ -71,10 +71,10 @@ public class BillingController extends BaseController @PreAuthorize("@ss.hasPermi('price:billing:bill')") @GetMapping("/bill/list") - public TableDataInfo billList(PrcBill query) + public TableDataInfo billList(PrcOrderBill query) { startPage(); - List list = prcBillService.selectBillList(query); + List list = prcOrderBillService.selectBillList(query); return getDataTable(list); } @@ -82,14 +82,14 @@ public class BillingController extends BaseController @GetMapping("/bill/{billId}") public AjaxResult getBill(@PathVariable String billId) { - return success(prcBillService.getBill(billId)); + return success(prcOrderBillService.getBill(billId)); } @PreAuthorize("@ss.hasPermi('price:billing:bill')") @PostMapping("/bill") public AjaxResult bill(@Validated @RequestBody TmsPriceBillRequest request) { - TmsPriceQuoteResult result = prcBillService.bill(request); + TmsPriceQuoteResult result = prcOrderBillService.bill(request); return success(result); } } diff --git a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcIncomeBillFee.java b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcIncomeBillFee.java new file mode 100644 index 00000000..413d43eb --- /dev/null +++ b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcIncomeBillFee.java @@ -0,0 +1,26 @@ +package com.ruoyi.price.domain; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +/** receivable fee detail prc_income_bill_fee */ +@Data +public class PrcIncomeBillFee implements Serializable +{ + private static final long serialVersionUID = 1L; + + private String feeId; + private String billId; + private String feeType; + private String feeName; + private Long scId; + private BigDecimal amount; + private String currency; + private String roundMode; + private String remark; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; +} diff --git a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcBill.java b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcOrderBill.java similarity index 87% rename from bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcBill.java rename to bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcOrderBill.java index cde433cc..9d1655ed 100644 --- a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcBill.java +++ b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcOrderBill.java @@ -8,10 +8,10 @@ import com.ruoyi.common.core.domain.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; -/** receivable bill header prc_bill */ +/** order info header prc_order_bill */ @Data @EqualsAndHashCode(callSuper = true) -public class PrcBill extends BaseEntity +public class PrcOrderBill extends BaseEntity { private static final long serialVersionUID = 1L; @@ -66,9 +66,13 @@ public class PrcBill extends BaseEntity private BigDecimal registrationFee; private BigDecimal freightAmount; private BigDecimal surchargeAmount; - private BigDecimal payableTotal; + /** receivable total */ + private BigDecimal incomeTotal; + /** payable total */ + private BigDecimal payTotal; private String currency; private String roundMode; - private List fees; + private List incomeFees; + private List payFees; } diff --git a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcBillFee.java b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcPayBillFee.java similarity index 85% rename from bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcBillFee.java rename to bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcPayBillFee.java index 13313560..8ff4a04c 100644 --- a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcBillFee.java +++ b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/PrcPayBillFee.java @@ -6,9 +6,9 @@ import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; -/** receivable bill fee detail prc_bill_fee */ +/** payable fee detail prc_pay_bill_fee */ @Data -public class PrcBillFee implements Serializable +public class PrcPayBillFee implements Serializable { private static final long serialVersionUID = 1L; diff --git a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/vo/TmsPriceQuoteResult.java b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/vo/TmsPriceQuoteResult.java index 27ada5f6..ba570e74 100644 --- a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/vo/TmsPriceQuoteResult.java +++ b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/domain/vo/TmsPriceQuoteResult.java @@ -47,6 +47,11 @@ public class TmsPriceQuoteResult implements Serializable private BigDecimal freightAmount; /** 附加费合计(按产品关联命中后汇总) */ private BigDecimal surchargeAmount; + /** receivable total (order bill) */ + private BigDecimal incomeTotal; + /** payable total (order bill); also quote payable */ + private BigDecimal payTotal; + /** quote / legacy field; same as incomeTotal for bill sync */ private BigDecimal payableTotal; private String currency = "CNY"; /** UP / DOWN / HALF_UP */ diff --git a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcBillFeeMapper.java b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcBillFeeMapper.java deleted file mode 100644 index dfb6ac1c..00000000 --- a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcBillFeeMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.ruoyi.price.mapper; - -import java.util.List; -import org.apache.ibatis.annotations.Param; -import com.ruoyi.price.domain.PrcBillFee; - -/** receivable bill fee detail mapper */ -public interface PrcBillFeeMapper -{ - public List selectByBillId(String billId); - - public int insertPrcBillFee(PrcBillFee fee); - - public int insertBatch(@Param("list") List fees); - - public int deleteByBillId(String billId); -} diff --git a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcBillMapper.java b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcBillMapper.java deleted file mode 100644 index 3f266e23..00000000 --- a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcBillMapper.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.ruoyi.price.mapper; - -import java.math.BigDecimal; -import java.util.List; -import org.apache.ibatis.annotations.Param; -import com.ruoyi.price.domain.PrcBill; - -/** receivable bill header mapper */ -public interface PrcBillMapper -{ - public PrcBill selectPrcBillByOrderNo(String orderNo); - - public PrcBill selectPrcBillById(String billId); - - public List selectPrcBillList(PrcBill bill); - - public int insertPrcBill(PrcBill bill); - - public int updatePrcBill(PrcBill bill); - - public int updateBillAmounts(@Param("billId") String billId, - @Param("surchargeAmount") BigDecimal surchargeAmount, - @Param("payableTotal") BigDecimal payableTotal); -} diff --git a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcIncomeBillFeeMapper.java b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcIncomeBillFeeMapper.java new file mode 100644 index 00000000..707b1cc5 --- /dev/null +++ b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcIncomeBillFeeMapper.java @@ -0,0 +1,17 @@ +package com.ruoyi.price.mapper; + +import java.util.List; +import org.apache.ibatis.annotations.Param; +import com.ruoyi.price.domain.PrcIncomeBillFee; + +/** receivable bill fee mapper */ +public interface PrcIncomeBillFeeMapper +{ + public List selectByBillId(String billId); + + public int insertPrcIncomeBillFee(PrcIncomeBillFee fee); + + public int insertBatch(@Param("list") List fees); + + public int deleteByBillId(String billId); +} diff --git a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcOrderBillMapper.java b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcOrderBillMapper.java new file mode 100644 index 00000000..ec4c1ea6 --- /dev/null +++ b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcOrderBillMapper.java @@ -0,0 +1,25 @@ +package com.ruoyi.price.mapper; + +import java.math.BigDecimal; +import java.util.List; +import org.apache.ibatis.annotations.Param; +import com.ruoyi.price.domain.PrcOrderBill; + +/** order bill header mapper */ +public interface PrcOrderBillMapper +{ + public PrcOrderBill selectPrcOrderBillByOrderNo(String orderNo); + + public PrcOrderBill selectPrcOrderBillById(String billId); + + public List selectPrcOrderBillList(PrcOrderBill bill); + + public int insertPrcOrderBill(PrcOrderBill bill); + + public int updatePrcOrderBill(PrcOrderBill bill); + + public int updateOrderBillAmounts(@Param("billId") String billId, + @Param("surchargeAmount") BigDecimal surchargeAmount, + @Param("incomeTotal") BigDecimal incomeTotal, + @Param("payTotal") BigDecimal payTotal); +} diff --git a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcPayBillFeeMapper.java b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcPayBillFeeMapper.java new file mode 100644 index 00000000..fc283fdf --- /dev/null +++ b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/mapper/PrcPayBillFeeMapper.java @@ -0,0 +1,17 @@ +package com.ruoyi.price.mapper; + +import java.util.List; +import org.apache.ibatis.annotations.Param; +import com.ruoyi.price.domain.PrcPayBillFee; + +/** payable bill fee mapper */ +public interface PrcPayBillFeeMapper +{ + public List selectByBillId(String billId); + + public int insertPrcPayBillFee(PrcPayBillFee fee); + + public int insertBatch(@Param("list") List fees); + + public int deleteByBillId(String billId); +} diff --git a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/IPrcBillService.java b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/IPrcOrderBillService.java similarity index 58% rename from bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/IPrcBillService.java rename to bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/IPrcOrderBillService.java index ad4e43d9..f9b0162d 100644 --- a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/IPrcBillService.java +++ b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/IPrcOrderBillService.java @@ -1,16 +1,16 @@ package com.ruoyi.price.service; import java.util.List; -import com.ruoyi.price.domain.PrcBill; +import com.ruoyi.price.domain.PrcOrderBill; import com.ruoyi.price.domain.vo.TmsPriceBillRequest; import com.ruoyi.price.domain.vo.TmsPriceQuoteResult; -/** Receivable billing from synced orders. Same price match as quote, persist prc_bill. */ -public interface IPrcBillService +/** Order billing: persist prc_order_bill + prc_income_bill_fee. Same price match as quote. */ +public interface IPrcOrderBillService { TmsPriceQuoteResult bill(TmsPriceBillRequest request); - List selectBillList(PrcBill query); + List selectBillList(PrcOrderBill query); TmsPriceQuoteResult getBill(String billId); diff --git a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/impl/PrcBillServiceImpl.java b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/impl/PrcOrderBillServiceImpl.java similarity index 84% rename from bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/impl/PrcBillServiceImpl.java rename to bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/impl/PrcOrderBillServiceImpl.java index b40b32c0..fc426302 100644 --- a/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/impl/PrcBillServiceImpl.java +++ b/bms-back/ruoyi-system/src/main/java/com/ruoyi/price/service/impl/PrcOrderBillServiceImpl.java @@ -16,30 +16,30 @@ import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.sign.Md5Utils; -import com.ruoyi.price.domain.PrcBill; -import com.ruoyi.price.domain.PrcBillFee; +import com.ruoyi.price.domain.PrcIncomeBillFee; +import com.ruoyi.price.domain.PrcOrderBill; import com.ruoyi.price.domain.vo.TmsPriceBillRequest; import com.ruoyi.price.domain.vo.TmsPriceQuoteFeeLine; import com.ruoyi.price.domain.vo.TmsPriceQuoteResult; -import com.ruoyi.price.mapper.PrcBillFeeMapper; -import com.ruoyi.price.mapper.PrcBillMapper; +import com.ruoyi.price.mapper.PrcIncomeBillFeeMapper; +import com.ruoyi.price.mapper.PrcOrderBillMapper; import com.ruoyi.price.search.EsBizLogSupport; import com.ruoyi.price.search.EsLogType; import com.ruoyi.price.search.IBillSearchStore; -import com.ruoyi.price.service.IPrcBillService; +import com.ruoyi.price.service.IPrcOrderBillService; import com.ruoyi.price.service.ITmsPriceQuoteService; @Service -public class PrcBillServiceImpl implements IPrcBillService +public class PrcOrderBillServiceImpl implements IPrcOrderBillService { @Autowired private ITmsPriceQuoteService tmsPriceQuoteService; @Autowired - private PrcBillMapper billMapper; + private PrcOrderBillMapper orderBillMapper; @Autowired - private PrcBillFeeMapper billFeeMapper; + private PrcIncomeBillFeeMapper incomeBillFeeMapper; @Autowired private IBillSearchStore billSearchStore; @@ -73,9 +73,9 @@ public class PrcBillServiceImpl implements IPrcBillService } @Override - public List selectBillList(PrcBill query) + public List selectBillList(PrcOrderBill query) { - return billMapper.selectPrcBillList(query); + return orderBillMapper.selectPrcOrderBillList(query); } @Override @@ -85,12 +85,12 @@ public class PrcBillServiceImpl implements IPrcBillService { throw new ServiceException(MessageUtils.message("price.bill.billIdRequired")); } - PrcBill bill = billMapper.selectPrcBillById(billId); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId); if (bill == null) { throw new ServiceException(MessageUtils.message("price.bill.notFound")); } - return toResult(bill, billFeeMapper.selectByBillId(billId)); + return toResult(bill, incomeBillFeeMapper.selectByBillId(billId)); } @Override @@ -100,12 +100,12 @@ public class PrcBillServiceImpl implements IPrcBillService { throw new ServiceException(MessageUtils.message("price.bill.orderNoRequired")); } - PrcBill bill = billMapper.selectPrcBillByOrderNo(orderNo.trim()); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillByOrderNo(orderNo.trim()); if (bill == null) { throw new ServiceException(MessageUtils.message("price.bill.notFound")); } - return toResult(bill, billFeeMapper.selectByBillId(bill.getBillId())); + return toResult(bill, incomeBillFeeMapper.selectByBillId(bill.getBillId())); } private void persistBill(TmsPriceBillRequest request, BigDecimal weight, Date bizDate, @@ -113,8 +113,8 @@ public class PrcBillServiceImpl implements IPrcBillService { String orderNo = request.getOrderNo(); String billKey = Md5Utils.hash(orderNo); - PrcBill existed = billMapper.selectPrcBillByOrderNo(orderNo); - PrcBill bill = existed == null ? new PrcBill() : existed; + PrcOrderBill existed = orderBillMapper.selectPrcOrderBillByOrderNo(orderNo); + PrcOrderBill bill = existed == null ? new PrcOrderBill() : existed; if (existed == null) { bill.setBillId(UUID.randomUUID().toString()); @@ -165,41 +165,45 @@ public class PrcBillServiceImpl implements IPrcBillService bill.setRegistrationFee(result.getRegistrationFee()); bill.setFreightAmount(result.getFreightAmount()); bill.setSurchargeAmount(result.getSurchargeAmount()); - bill.setPayableTotal(result.getPayableTotal()); + bill.setIncomeTotal(result.getPayableTotal()); + bill.setPayTotal(result.getPayTotal() == null ? BigDecimal.ZERO : result.getPayTotal()); bill.setCurrency(result.getCurrency()); bill.setRoundMode(result.getRoundMode()); result.setBillId(bill.getBillId()); result.setOrderNo(orderNo); result.setCustomerCode(request.getCustomerCode()); + result.setIncomeTotal(bill.getIncomeTotal()); + result.setPayTotal(bill.getPayTotal()); + result.setPayableTotal(bill.getIncomeTotal()); fillResultOrder(result, bill); result.setFromCache(Boolean.valueOf(existed != null)); if (existed == null) { - billMapper.insertPrcBill(bill); + orderBillMapper.insertPrcOrderBill(bill); } else { - billMapper.updatePrcBill(bill); - billFeeMapper.deleteByBillId(bill.getBillId()); + orderBillMapper.updatePrcOrderBill(bill); + incomeBillFeeMapper.deleteByBillId(bill.getBillId()); } - List fees = toFeeRows(bill.getBillId(), result); + List fees = toFeeRows(bill.getBillId(), result); if (!fees.isEmpty()) { - billFeeMapper.insertBatch(fees); + incomeBillFeeMapper.insertBatch(fees); } billSearchStore.save(EsLogType.BILL, orderNo, toRequestJson(request), toResponseJson(result)); } - private List toFeeRows(String billId, TmsPriceQuoteResult result) + private List toFeeRows(String billId, TmsPriceQuoteResult result) { - List fees = new ArrayList(); + List fees = new ArrayList(); if (result.getFeeDetails() == null) { return fees; } for (TmsPriceQuoteFeeLine line : result.getFeeDetails()) { - PrcBillFee fee = new PrcBillFee(); + PrcIncomeBillFee fee = new PrcIncomeBillFee(); fee.setFeeId(UUID.randomUUID().toString()); fee.setBillId(billId); fee.setFeeType(line.getFeeType()); @@ -214,7 +218,7 @@ public class PrcBillServiceImpl implements IPrcBillService return fees; } - private TmsPriceQuoteResult toResult(PrcBill bill, List fees) + private TmsPriceQuoteResult toResult(PrcOrderBill bill, List fees) { TmsPriceQuoteResult r = new TmsPriceQuoteResult(); r.setBillId(bill.getBillId()); @@ -248,14 +252,16 @@ public class PrcBillServiceImpl implements IPrcBillService r.setRegistrationFee(bill.getRegistrationFee()); r.setFreightAmount(bill.getFreightAmount()); r.setSurchargeAmount(bill.getSurchargeAmount()); - r.setPayableTotal(bill.getPayableTotal()); + r.setIncomeTotal(bill.getIncomeTotal()); + r.setPayTotal(bill.getPayTotal()); + r.setPayableTotal(bill.getIncomeTotal()); r.setCurrency(bill.getCurrency()); r.setRoundMode(bill.getRoundMode()); r.setBizDate(bill.getBizDate()); List lines = new ArrayList(); if (fees != null) { - for (PrcBillFee fee : fees) + for (PrcIncomeBillFee fee : fees) { TmsPriceQuoteFeeLine line = new TmsPriceQuoteFeeLine(); line.setFeeType(fee.getFeeType()); @@ -272,7 +278,7 @@ public class PrcBillServiceImpl implements IPrcBillService return r; } - private void fillResultOrder(TmsPriceQuoteResult r, PrcBill bill) + private void fillResultOrder(TmsPriceQuoteResult r, PrcOrderBill bill) { r.setTrackingNo(bill.getTrackingNo()); r.setCustomerName(bill.getCustomerName()); diff --git a/bms-back/ruoyi-system/src/main/resources/mapper/price/PrcIncomeBillFeeMapper.xml b/bms-back/ruoyi-system/src/main/resources/mapper/price/PrcIncomeBillFeeMapper.xml new file mode 100644 index 00000000..7e5c196c --- /dev/null +++ b/bms-back/ruoyi-system/src/main/resources/mapper/price/PrcIncomeBillFeeMapper.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + insert into prc_income_bill_fee ( + fee_id, bill_id, fee_type, fee_name, sc_id, amount, currency, round_mode, remark, create_time + ) values ( + #{feeId}, #{billId}, #{feeType}, #{feeName}, #{scId}, #{amount}, #{currency}, #{roundMode}, #{remark}, sysdate() + ) + + + + insert into prc_income_bill_fee ( + fee_id, bill_id, fee_type, fee_name, sc_id, amount, currency, round_mode, remark, create_time + ) values + + (#{item.feeId}, #{item.billId}, #{item.feeType}, #{item.feeName}, #{item.scId}, #{item.amount}, + #{item.currency}, #{item.roundMode}, #{item.remark}, sysdate()) + + + + + delete from prc_income_bill_fee where bill_id = #{billId} + + diff --git a/bms-back/ruoyi-system/src/main/resources/mapper/price/PrcBillMapper.xml b/bms-back/ruoyi-system/src/main/resources/mapper/price/PrcOrderBillMapper.xml similarity index 87% rename from bms-back/ruoyi-system/src/main/resources/mapper/price/PrcBillMapper.xml rename to bms-back/ruoyi-system/src/main/resources/mapper/price/PrcOrderBillMapper.xml index d54b4a82..fc0276af 100644 --- a/bms-back/ruoyi-system/src/main/resources/mapper/price/PrcBillMapper.xml +++ b/bms-back/ruoyi-system/src/main/resources/mapper/price/PrcOrderBillMapper.xml @@ -2,9 +2,9 @@ - + - + @@ -52,7 +52,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + + @@ -61,7 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + select bill_id, bill_key, order_no, tracking_no, customer_id, customer_code, customer_name, pieces, actual_weight, volume, volume_weight, pkg_length, pkg_width, pkg_height, shipper_name, consignee_name, dest_postcode, warehouse_code, order_time, order_remark, @@ -70,23 +71,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" set_type, bind_priority, customer_priceset_id, product_country_id, weight_min, weight_max, weight_label, effective_date, charge_weight, freight_rate, base_freight_rate, discount_percent, registration_fee, - freight_amount, surcharge_amount, payable_total, currency, round_mode, + freight_amount, surcharge_amount, income_total, pay_total, currency, round_mode, created_by, create_time, updated_by, update_time - from prc_bill + from prc_order_bill - + where order_no = #{orderNo} - + where bill_id = #{billId} - + AND order_no like concat('%', #{orderNo}, '%') @@ -122,8 +123,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by create_time desc, bill_id desc - - insert into prc_bill ( + + insert into prc_order_bill ( bill_id, bill_key, order_no, tracking_no, customer_id, customer_code, customer_name, pieces, actual_weight, volume, volume_weight, pkg_length, pkg_width, pkg_height, shipper_name, consignee_name, dest_postcode, warehouse_code, order_time, order_remark, @@ -132,7 +133,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" set_type, bind_priority, customer_priceset_id, product_country_id, weight_min, weight_max, weight_label, effective_date, charge_weight, freight_rate, base_freight_rate, discount_percent, registration_fee, - freight_amount, surcharge_amount, payable_total, currency, round_mode, + freight_amount, surcharge_amount, income_total, pay_total, currency, round_mode, create_time ) values ( #{billId}, #{billKey}, #{orderNo}, #{trackingNo}, #{customerId}, #{customerCode}, #{customerName}, @@ -143,13 +144,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{setType}, #{bindPriority}, #{customerPricesetId}, #{productCountryId}, #{weightMin}, #{weightMax}, #{weightLabel}, #{effectiveDate}, #{chargeWeight}, #{freightRate}, #{baseFreightRate}, #{discountPercent}, #{registrationFee}, - #{freightAmount}, #{surchargeAmount}, #{payableTotal}, #{currency}, #{roundMode}, + #{freightAmount}, #{surchargeAmount}, #{incomeTotal}, #{payTotal}, #{currency}, #{roundMode}, sysdate() ) - - update prc_bill + + update prc_order_bill set bill_key = #{billKey}, tracking_no = #{trackingNo}, customer_id = #{customerId}, @@ -195,17 +196,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" registration_fee = #{registrationFee}, freight_amount = #{freightAmount}, surcharge_amount = #{surchargeAmount}, - payable_total = #{payableTotal}, + income_total = #{incomeTotal}, + pay_total = #{payTotal}, currency = #{currency}, round_mode = #{roundMode}, update_time = sysdate() where bill_id = #{billId} - - update prc_bill + + update prc_order_bill set surcharge_amount = #{surchargeAmount}, - payable_total = #{payableTotal}, + income_total = #{incomeTotal}, + pay_total = #{payTotal}, update_time = sysdate() where bill_id = #{billId} diff --git a/bms-back/ruoyi-system/src/main/resources/mapper/price/PrcBillFeeMapper.xml b/bms-back/ruoyi-system/src/main/resources/mapper/price/PrcPayBillFeeMapper.xml similarity index 83% rename from bms-back/ruoyi-system/src/main/resources/mapper/price/PrcBillFeeMapper.xml rename to bms-back/ruoyi-system/src/main/resources/mapper/price/PrcPayBillFeeMapper.xml index d0dfd4df..79c61fb5 100644 --- a/bms-back/ruoyi-system/src/main/resources/mapper/price/PrcBillFeeMapper.xml +++ b/bms-back/ruoyi-system/src/main/resources/mapper/price/PrcPayBillFeeMapper.xml @@ -2,9 +2,9 @@ - + - + @@ -17,15 +17,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select fee_id, bill_id, fee_type, fee_name, sc_id, amount, currency, round_mode, remark, create_time - from prc_bill_fee + from prc_pay_bill_fee where bill_id = #{billId} order by field(fee_type, 'BASIC_FREIGHT', 'REGISTRATION_FEE', 'SURCHARGE'), fee_id - - insert into prc_bill_fee ( + + insert into prc_pay_bill_fee ( fee_id, bill_id, fee_type, fee_name, sc_id, amount, currency, round_mode, remark, create_time ) values ( #{feeId}, #{billId}, #{feeType}, #{feeName}, #{scId}, #{amount}, #{currency}, #{roundMode}, #{remark}, sysdate() @@ -33,7 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - insert into prc_bill_fee ( + insert into prc_pay_bill_fee ( fee_id, bill_id, fee_type, fee_name, sc_id, amount, currency, round_mode, remark, create_time ) values @@ -43,6 +43,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from prc_bill_fee where bill_id = #{billId} + delete from prc_pay_bill_fee where bill_id = #{billId} diff --git a/bms-back/sql/price/bill.sql b/bms-back/sql/price/bill.sql index 1726663b..6aa9fcf6 100644 --- a/bms-back/sql/price/bill.sql +++ b/bms-back/sql/price/bill.sql @@ -1,8 +1,10 @@ --- prc_bill / prc_bill_fee: receivable billing from synced orders +-- prc_order_bill: order info header +-- prc_income_bill_fee: receivable fee lines +-- prc_pay_bill_fee: payable fee lines -- fields follow prc_quote / prc_quote_fee; extra order_no + customer_code SET NAMES utf8mb4; -CREATE TABLE IF NOT EXISTS prc_bill ( +CREATE TABLE IF NOT EXISTS prc_order_bill ( bill_id VARCHAR(36) NOT NULL COMMENT '计费ID', bill_key CHAR(32) NOT NULL COMMENT 'MD5(order_no)', order_no VARCHAR(64) NOT NULL COMMENT '订单号', @@ -50,7 +52,8 @@ CREATE TABLE IF NOT EXISTS prc_bill ( registration_fee DECIMAL(10,2) DEFAULT NULL COMMENT '挂号费', freight_amount DECIMAL(10,2) DEFAULT NULL COMMENT '运费金额', surcharge_amount DECIMAL(10,2) DEFAULT NULL COMMENT '附加费合计', - payable_total DECIMAL(10,2) DEFAULT NULL COMMENT '应收总额', + income_total DECIMAL(10,2) DEFAULT NULL COMMENT '应收总额', + pay_total DECIMAL(10,2) DEFAULT NULL COMMENT '应付总额', currency VARCHAR(10) NOT NULL DEFAULT 'CNY' COMMENT '币种', round_mode VARCHAR(20) NOT NULL DEFAULT 'HALF_UP' COMMENT '取值方式', created_by VARCHAR(64) DEFAULT '' COMMENT '创建人', @@ -62,9 +65,9 @@ CREATE TABLE IF NOT EXISTS prc_bill ( UNIQUE KEY uk_bill_key (bill_key), INDEX idx_bill_customer (customer_code, biz_date), INDEX idx_bill_product (product_code, country_code) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='计费应收主表-订单同步计费'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单信息主表'; -CREATE TABLE IF NOT EXISTS prc_bill_fee ( +CREATE TABLE IF NOT EXISTS prc_income_bill_fee ( fee_id VARCHAR(36) NOT NULL COMMENT '费用明细ID', bill_id VARCHAR(36) NOT NULL COMMENT '计费ID', fee_type VARCHAR(30) NOT NULL COMMENT '费用类型(字典bms_fee_type)', @@ -76,7 +79,24 @@ CREATE TABLE IF NOT EXISTS prc_bill_fee ( remark VARCHAR(500) DEFAULT NULL COMMENT '备注', create_time DATETIME DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (fee_id), - UNIQUE KEY uk_bill_fee_item (bill_id, fee_type, sc_id), - INDEX idx_bill_fee_type (fee_type), - CONSTRAINT fk_bill_fee_bill FOREIGN KEY (bill_id) REFERENCES prc_bill (bill_id) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='计费应收费用明细'; + UNIQUE KEY uk_income_bill_fee_item (bill_id, fee_type, sc_id), + INDEX idx_income_bill_fee_type (fee_type), + CONSTRAINT fk_income_bill_fee_order FOREIGN KEY (bill_id) REFERENCES prc_order_bill (bill_id) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应收费用明细'; + +CREATE TABLE IF NOT EXISTS prc_pay_bill_fee ( + fee_id VARCHAR(36) NOT NULL COMMENT '费用明细ID', + bill_id VARCHAR(36) NOT NULL COMMENT '计费ID', + fee_type VARCHAR(30) NOT NULL COMMENT '费用类型(字典bms_fee_type)', + fee_name VARCHAR(100) DEFAULT NULL COMMENT '费用名称', + sc_id BIGINT(20) NOT NULL DEFAULT 0 COMMENT '附加费配置ID', + amount DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '金额', + currency VARCHAR(10) NOT NULL DEFAULT 'CNY' COMMENT '币种', + round_mode VARCHAR(20) DEFAULT 'HALF_UP' COMMENT '取值方式', + remark VARCHAR(500) DEFAULT NULL COMMENT '备注', + create_time DATETIME DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (fee_id), + UNIQUE KEY uk_pay_bill_fee_item (bill_id, fee_type, sc_id), + INDEX idx_pay_bill_fee_type (fee_type), + CONSTRAINT fk_pay_bill_fee_order FOREIGN KEY (bill_id) REFERENCES prc_order_bill (bill_id) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应付费用明细'; diff --git a/bms-back/sql/price/order_bill_totals_alter.sql b/bms-back/sql/price/order_bill_totals_alter.sql new file mode 100644 index 00000000..d9157b39 --- /dev/null +++ b/bms-back/sql/price/order_bill_totals_alter.sql @@ -0,0 +1,35 @@ +-- prc_order_bill: income_total + pay_total +SET NAMES utf8mb4; + +SET @db := DATABASE(); + +SET @has_income := ( + SELECT COUNT(*) FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_order_bill' AND COLUMN_NAME = 'income_total' +); +SET @has_payable := ( + SELECT COUNT(*) FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_order_bill' AND COLUMN_NAME = 'payable_total' +); +SET @sql := IF(@has_income = 0 AND @has_payable > 0, + 'ALTER TABLE prc_order_bill CHANGE COLUMN payable_total income_total DECIMAL(10,2) DEFAULT NULL COMMENT \'应收总额\'', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @has_income2 := ( + SELECT COUNT(*) FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_order_bill' AND COLUMN_NAME = 'income_total' +); +SET @sql := IF(@has_income2 = 0, + 'ALTER TABLE prc_order_bill ADD COLUMN income_total DECIMAL(10,2) DEFAULT NULL COMMENT \'应收总额\' AFTER surcharge_amount', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @has_pay := ( + SELECT COUNT(*) FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_order_bill' AND COLUMN_NAME = 'pay_total' +); +SET @sql := IF(@has_pay = 0, + 'ALTER TABLE prc_order_bill ADD COLUMN pay_total DECIMAL(10,2) DEFAULT NULL COMMENT \'应付总额\' AFTER income_total', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; diff --git a/bms-back/sql/price/rename_bill_tables.sql b/bms-back/sql/price/rename_bill_tables.sql new file mode 100644 index 00000000..bc7f7251 --- /dev/null +++ b/bms-back/sql/price/rename_bill_tables.sql @@ -0,0 +1,68 @@ +-- rename prc_bill -> prc_order_bill, prc_bill_fee -> prc_income_bill_fee, add prc_pay_bill_fee +SET NAMES utf8mb4; + +SET @db := DATABASE(); + +SET @fk := ( + SELECT CONSTRAINT_NAME FROM information_schema.TABLE_CONSTRAINTS + WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_bill_fee' AND CONSTRAINT_TYPE = 'FOREIGN KEY' + LIMIT 1 +); +SET @sql := IF(@fk IS NOT NULL, + CONCAT('ALTER TABLE prc_bill_fee DROP FOREIGN KEY `', @fk, '`'), + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @has_old := ( + SELECT COUNT(*) FROM information_schema.TABLES + WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_bill' +); +SET @has_new := ( + SELECT COUNT(*) FROM information_schema.TABLES + WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_order_bill' +); +SET @sql := IF(@has_old > 0 AND @has_new = 0, 'RENAME TABLE prc_bill TO prc_order_bill', 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @has_old_fee := ( + SELECT COUNT(*) FROM information_schema.TABLES + WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_bill_fee' +); +SET @has_new_fee := ( + SELECT COUNT(*) FROM information_schema.TABLES + WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_income_bill_fee' +); +SET @sql := IF(@has_old_fee > 0 AND @has_new_fee = 0, 'RENAME TABLE prc_bill_fee TO prc_income_bill_fee', 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @fk2 := ( + SELECT CONSTRAINT_NAME FROM information_schema.TABLE_CONSTRAINTS + WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_income_bill_fee' + AND CONSTRAINT_TYPE = 'FOREIGN KEY' + LIMIT 1 +); +SET @sql := IF(@fk2 IS NULL, + 'ALTER TABLE prc_income_bill_fee ADD CONSTRAINT fk_income_bill_fee_order 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 COMMENT = '订单信息主表'; +ALTER TABLE prc_income_bill_fee COMMENT = '应收费用明细'; + + +CREATE TABLE IF NOT EXISTS prc_pay_bill_fee ( + fee_id VARCHAR(36) NOT NULL COMMENT '费用明细ID', + bill_id VARCHAR(36) NOT NULL COMMENT '计费ID', + fee_type VARCHAR(30) NOT NULL COMMENT '费用类型(字典bms_fee_type)', + fee_name VARCHAR(100) DEFAULT NULL COMMENT '费用名称', + sc_id BIGINT(20) NOT NULL DEFAULT 0 COMMENT '附加费配置ID', + amount DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '金额', + currency VARCHAR(10) NOT NULL DEFAULT 'CNY' COMMENT '币种', + round_mode VARCHAR(20) DEFAULT 'HALF_UP' COMMENT '取值方式', + remark VARCHAR(500) DEFAULT NULL COMMENT '备注', + create_time DATETIME DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (fee_id), + UNIQUE KEY uk_pay_bill_fee_item (bill_id, fee_type, sc_id), + INDEX idx_pay_bill_fee_type (fee_type), + CONSTRAINT fk_pay_bill_fee_order FOREIGN KEY (bill_id) REFERENCES prc_order_bill (bill_id) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应付费用明细'; diff --git a/bms-front/src/views/price/billing/bill.vue b/bms-front/src/views/price/billing/bill.vue index 6368b727..e6b1986e 100644 --- a/bms-front/src/views/price/billing/bill.vue +++ b/bms-front/src/views/price/billing/bill.vue @@ -16,8 +16,11 @@ -