From 9be3b62aafe333ce2fe2d05771f44856f5d38e2a Mon Sep 17 00:00:00 2001 From: chenhao Date: Thu, 18 Dec 2025 16:13:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(finance):=20=E5=BA=94=E4=BB=98=E5=8D=95?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E6=96=B0=E5=A2=9E=E6=94=B6=E7=A5=A8?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=B1=95=E7=A4=BA=E4=B8=8E=E9=A2=84=E4=BB=98?= =?UTF-8?q?=E9=87=91=E9=A2=9D=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 调整应付单详情页字段布局,新增项目编号、项目名称等显示项 - 新增“该制造商是否有预付单”和“预付金额”字段展示 - 新增“生成付款单”、“生成收票单”状态展示逻辑 - 新增采购收票单表格展示功能,包括发票类型、开票时间、收票状态等 - 新增收票计划和付款计划组件间的数据同步方法 - 扩展字典类型支持,增加收票相关枚举值 - 增加收票明细列表查询接口及附件信息加载逻辑 - Java后端增加预付金额计算逻辑,并在应付单中返回对应数据 - 优化支付明细和收票明细的状态统计逻辑,提升准确性 - 修改数据库映射文件,补充缺失字段如税率、不含税金额等 - 增加核销相关操作接口,支持批量删除和插入收票明细记录 - 修复部分SQL语句条件判断问题,确保查询结果准确无误 --- oms_web/oms_vue/src/api/finance/writeoff.js | 19 ++ .../finance/payable/components/EditForm.vue | 82 +++++++-- .../payable/components/MergeReceiptDialog.vue | 2 + .../src/views/finance/payable/index.vue | 6 +- .../com/ruoyi/sip/domain/OmsPayableBill.java | 3 +- .../sip/domain/OmsPayableTicketDetail.java | 11 +- .../sip/domain/OmsPayableTicketPlan.java | 1 + .../com/ruoyi/sip/domain/OmsTicketBill.java | 1 + .../mapper/OmsPayableTicketDetailMapper.java | 6 +- .../sip/mapper/OmsPaymentBillMapper.java | 2 + .../ruoyi/sip/mapper/OmsTicketBillMapper.java | 5 + .../IOmsPayableTicketDetailService.java | 8 + .../sip/service/IOmsPaymentBillService.java | 2 + .../sip/service/IOmsTicketBillService.java | 5 + .../impl/OmsPayableBillServiceImpl.java | 167 ++++++++++++------ .../OmsPayableTicketDetailServiceImpl.java | 56 +++++- .../impl/OmsPaymentBillServiceImpl.java | 8 + .../impl/OmsTicketBillServiceImpl.java | 107 ++++++++++- .../mapper/finance/OmsPayableBillMapper.xml | 1 + .../finance/OmsPayablePaymentDetailMapper.xml | 4 +- .../mapper/finance/OmsPaymentBillMapper.xml | 12 ++ .../sip/OmsPayableTicketDetailMapper.xml | 103 +++++++++-- .../mapper/sip/OmsTicketBillMapper.xml | 20 +++ 23 files changed, 527 insertions(+), 104 deletions(-) diff --git a/oms_web/oms_vue/src/api/finance/writeoff.js b/oms_web/oms_vue/src/api/finance/writeoff.js index 82dfb83c..7e89b545 100644 --- a/oms_web/oms_vue/src/api/finance/writeoff.js +++ b/oms_web/oms_vue/src/api/finance/writeoff.js @@ -8,6 +8,13 @@ export function listWriteOff(query) { params: query }) } +export function listTicketWriteOff(query) { + return request({ + url: '/finance/ticketWriteoff/list', + method: 'get', + params: query + }) +} // 查询核销详情 export function getWriteOff(id) { @@ -16,6 +23,12 @@ export function getWriteOff(id) { method: 'get' }) } +export function getTicketWriteoff(id) { + return request({ + url: '/finance/ticketWriteoff/' + id, + method: 'get' + }) +} // 删除核销记录 export function delWriteOff(ids) { @@ -24,3 +37,9 @@ export function delWriteOff(ids) { method: 'delete' }) } +export function delTicketWriteoff(ids) { + return request({ + url: '/finance/ticketWriteoff/' + ids, + method: 'delete' + }) +} diff --git a/oms_web/oms_vue/src/views/finance/payable/components/EditForm.vue b/oms_web/oms_vue/src/views/finance/payable/components/EditForm.vue index 35d7019c..bb57ec97 100644 --- a/oms_web/oms_vue/src/views/finance/payable/components/EditForm.vue +++ b/oms_web/oms_vue/src/views/finance/payable/components/EditForm.vue @@ -6,36 +6,38 @@ 采购-应付单
+ +
项目编号: {{ formData.projectCode }}
+
+ +
项目名称: {{ formData.projectName }}
+
应付单编号: {{ formData.payableBillCode }}
- + +
+ +
生成时间: {{ formData.createTime }}
+ +
该制造商是否有预付单: {{ formData.preResidueAmount == 0 ? '否' : '是' }}
+
+ +
预付金额: {{ formData.preResidueAmount }}
+
制造商名称: {{ formData.vendorName }}
- -
项目编号: {{ formData.projectCode }}
-
- -
项目名称: {{ formData.projectName }}
-
-
-
合同编号: {{ formData.orderCode }}
出入库单号: {{ formData.inventoryCode }}
- -
产品类型: - -
-
@@ -70,6 +72,19 @@
收票中金额: {{ this.$calc.sub(this.$calc.sub(formData.totalPriceWithTax,formData.receivedTicketAmount),formData.unreceivedTicketAmount)}}
+ + +
生成付款单: {{ formData.totalPriceWithTax == formData.unpaidPaymentAmount ? '未生成' : formData.unpaidPaymentAmount == 0 ? '已生成' : '部分生成' }}
+
+ +
生成收票单: {{ formData.totalPriceWithTax == formData.unreceivedTicketAmount ? '未生成' : formData.unreceivedTicketAmount == 0 ? '已生成' : '部分生成' }}
+
+ +
产品类型: + +
+
+
@@ -105,12 +120,40 @@ + 采购收票单 + + + + + + + + + + + + + + + + + + - + - + @@ -127,11 +170,13 @@ import PaymentPlan from './PaymentPlan.vue'; import ReceivingTicketPlan from './ReceivingTicketPlan.vue'; import { getPayable } from "@/api/finance/payable"; +import ReceiptPlan from "@/views/finance/receivable/components/ReceiptPlan.vue"; export default { name: "EditForm", - dicts: ['product_type','payment_status','payable_detail_type'], + dicts: ['product_type','payment_status','payable_detail_type', 'ticket_detail_type', 'receipt_status'], components: { + ReceiptPlan, PaymentPlan, ReceivingTicketPlan }, @@ -167,6 +212,9 @@ export default { } }, methods: { + refreshTicketPlan(){ + this.$refs.ticketPlan.fetchTicketPlans(this.formData.id); + }, getDetails() { getPayable(this.data.id).then(res => { this.formData = res.data; diff --git a/oms_web/oms_vue/src/views/finance/payable/components/MergeReceiptDialog.vue b/oms_web/oms_vue/src/views/finance/payable/components/MergeReceiptDialog.vue index 3261b345..17bd97c9 100644 --- a/oms_web/oms_vue/src/views/finance/payable/components/MergeReceiptDialog.vue +++ b/oms_web/oms_vue/src/views/finance/payable/components/MergeReceiptDialog.vue @@ -208,6 +208,7 @@ export default { ticketPlans.push({ id: order.lastTicketPlanId, planAmount: order.planTicketAmount, + taxRate: order.taxRate, planTicketDate: order.planTicketDate, planRate: this.$calc.mul(this.$calc.div(order.planTicketAmount, order.totalPriceWithTax, 4), 100) }); @@ -298,6 +299,7 @@ export default { planTicketDate: plan.planTicketDate, planAmount: plan.planAmount, planRate: plan.planRate, + taxRate: order.taxRate, remark: plan.remark, id: plan.id, })), diff --git a/oms_web/oms_vue/src/views/finance/payable/index.vue b/oms_web/oms_vue/src/views/finance/payable/index.vue index fa45f006..6811f29b 100644 --- a/oms_web/oms_vue/src/views/finance/payable/index.vue +++ b/oms_web/oms_vue/src/views/finance/payable/index.vue @@ -130,7 +130,11 @@ - + + + diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsPayableBill.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsPayableBill.java index 0b9693ec..3233f059 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsPayableBill.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsPayableBill.java @@ -84,7 +84,7 @@ public class OmsPayableBill extends BaseEntity private Date estimatedPaymentTimeEnd; private Date estimatedPaymentTimeStart; - + private BigDecimal preResidueAmount; /** 已付款金额 */ @Excel(name = "已付款金额") private BigDecimal paidPaymentAmount; @@ -114,6 +114,7 @@ public class OmsPayableBill extends BaseEntity private Date planPaymentDateEnd; private List detailList; + private List ticketDetailList; diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsPayableTicketDetail.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsPayableTicketDetail.java index dcc7fe16..ed96b722 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsPayableTicketDetail.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsPayableTicketDetail.java @@ -34,14 +34,23 @@ public class OmsPayableTicketDetail extends BaseEntity { private Long ticketBillId; // 实际收票时间 private Date actualTicketTime; + private Date vendorTicketTime; // 收票状态 private String ticketStatus; - + // 不含税支付金额 + private BigDecimal paymentAmountWithoutTax; + // 核销ID + private Long writeOffId; + private List writeOffIdList; + // 税额 + private BigDecimal paymentAmountTax; + private OmsFinAttachment finAttachment; @Getter public enum PayableDetailTypeEnum { TICKET("1", "收票"), RED_RUSH("2", "红冲"), + TICKET_WRITE_OFF("3", "收票核销"), diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsPayableTicketPlan.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsPayableTicketPlan.java index 49724c54..e6025d4b 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsPayableTicketPlan.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsPayableTicketPlan.java @@ -30,6 +30,7 @@ public class OmsPayableTicketPlan extends BaseEntity { /** 计划收票比例 */ private BigDecimal planRate; + private BigDecimal taxRate; private Long detailId; diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsTicketBill.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsTicketBill.java index 4cc9d143..82cb0b38 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsTicketBill.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsTicketBill.java @@ -31,6 +31,7 @@ public class OmsTicketBill extends BaseEntity /** 收票单编号 */ @Excel(name = "收票单编号") private String ticketBillCode; + private List ticketBillCodeList; /** 票据类型 */ @Excel(name = "票据类型") diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsPayableTicketDetailMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsPayableTicketDetailMapper.java index 7afcd2a5..e9f774d5 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsPayableTicketDetailMapper.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsPayableTicketDetailMapper.java @@ -2,7 +2,6 @@ package com.ruoyi.sip.mapper; import java.util.List; -import com.ruoyi.sip.domain.OmsPayablePaymentDetail; import com.ruoyi.sip.domain.OmsPayableTicketDetail; import com.ruoyi.sip.domain.dto.PaymentBillPayableDetailDTO; @@ -68,8 +67,11 @@ public interface OmsPayableTicketDetailMapper void clearRelationPayable(String ticketBillCode); - List listByPayableBillIdList(List payableBillId); + List list(OmsPayableTicketDetail payableBillId); List selectByTicketPlanIds(List ticketPlanIds); + List listPayableByWriteOffId(List longs); + + void deleteByWriteOffIds(Long[] ids); } \ No newline at end of file diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsPaymentBillMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsPaymentBillMapper.java index b59036cb..0b86293a 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsPaymentBillMapper.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsPaymentBillMapper.java @@ -98,4 +98,6 @@ public interface OmsPaymentBillMapper void updateReturnWriteOffBatch(List updateBills); + List listPreResidueAmountByVendorCodeList(List collect); + } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsTicketBillMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsTicketBillMapper.java index d4209677..9b255bd4 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsTicketBillMapper.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsTicketBillMapper.java @@ -65,4 +65,9 @@ public interface OmsTicketBillMapper void updateOmsTicketBillByCode(OmsTicketBill omsTicketBill); List listApprove(@Param("entity") OmsTicketBill omsTicketBill, @Param("tableName")String buTodo); + + OmsTicketBill selectOmsTicketBillByCode(String ticketBillCode); + + void updateReturnWriteOffBatch(List updateBills); + } \ No newline at end of file diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsPayableTicketDetailService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsPayableTicketDetailService.java index 69855c1f..096f2580 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsPayableTicketDetailService.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsPayableTicketDetailService.java @@ -72,4 +72,12 @@ public interface IOmsPayableTicketDetailService List selectByTicketPlanIds(List ticketPlanIds); List listDetailByTicketCode(String ticketBillCode); + + List listPayableByWriteOffId(List longs); + + List listByWriteOffIds(Long[] ids); + + void deleteByWriteOffIds(Long[] ids); + + void insertBatch(List detailList); } \ No newline at end of file diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsPaymentBillService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsPaymentBillService.java index eb9262f1..d2f6b61b 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsPaymentBillService.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsPaymentBillService.java @@ -110,4 +110,6 @@ public interface IOmsPaymentBillService void returnWriteOff(List collect,List omsPayablePaymentDetails); OmsPaymentBill selectOmsPaymentBillByCode(String paymentBillCode); + + List listPreResidueAmountByVendorCodeList(List collect); } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsTicketBillService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsTicketBillService.java index 9486e3bf..86b48021 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsTicketBillService.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsTicketBillService.java @@ -3,6 +3,7 @@ package com.ruoyi.sip.service; import java.util.List; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.sip.domain.OmsPayableTicketDetail; import com.ruoyi.sip.domain.OmsTicketBill; import org.springframework.web.multipart.MultipartFile; @@ -71,4 +72,8 @@ public interface IOmsTicketBillService List listApprove(OmsTicketBill omsTicketBill); List listApproved(OmsTicketBill omsTicketBill); + + OmsTicketBill selectOmsTicketBillByCode(String ticketBillCode); + + void returnTicketWriteOff(List collect, List omsPayableTicketDetails); } \ No newline at end of file diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsPayableBillServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsPayableBillServiceImpl.java index c0077345..254671fd 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsPayableBillServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsPayableBillServiceImpl.java @@ -24,9 +24,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -81,8 +80,14 @@ public class OmsPayableBillServiceImpl implements IOmsPayableBillService { @Override public List selectOmsPayableBillList(OmsPayableBill omsPayableBill) { List omsPayableBills = omsPayableBillMapper.selectOmsPayableBillList(omsPayableBill); - //todo 是否有预付单信息 - + if (CollUtil.isNotEmpty(omsPayableBills)) { + PageUtils.clearPage(); + List omsPaymentBills = omsPaymentBillService.listPreResidueAmountByVendorCodeList(omsPayableBills.stream().map(OmsPayableBill::getVendorCode).collect(Collectors.toList())); + Map decimalMap = omsPaymentBills.stream().filter(item -> item.getPreResidueAmount() != null).collect(Collectors.toMap(OmsPaymentBill::getVendorCode, OmsPaymentBill::getPreResidueAmount, BigDecimal::add)); + for (OmsPayableBill payableBill : omsPayableBills) { + payableBill.setPreResidueAmount(decimalMap.getOrDefault(payableBill.getVendorCode(), BigDecimal.ZERO)); + } + } return omsPayableBills; } @@ -383,6 +388,8 @@ public class OmsPayableBillServiceImpl implements IOmsPayableBillService { detail.setTicketBillId(ticketBill.getId()); detail.setPaymentAmount(ticketPlanDto.getPlanAmount()); detail.setPaymentRate(ticketPlanDto.getPlanRate()); + detail.setPaymentAmountWithoutTax(detail.getPaymentAmount().divide(BigDecimal.ONE.add(ticketPlanDto.getTaxRate()), 2, java.math.RoundingMode.HALF_UP)); + detail.setPaymentAmountTax(detail.getPaymentAmount().subtract(detail.getPaymentAmountWithoutTax())); detail.setPaymentTime(ticketPlanDto.getPlanTicketDate()); detail.setRemark(ticketPlanDto.getRemark()); detail.setCreateBy(ShiroUtils.getLoginName()); @@ -408,26 +415,59 @@ public class OmsPayableBillServiceImpl implements IOmsPayableBillService { } List omsPayablePaymentDetails = omsPayablePaymentDetailService.listByPayableBillIdList(idList); - Map> planMap = omsPayablePaymentDetails.stream().collect(Collectors.groupingBy(OmsPayablePaymentDetail::getPayableBillId, - Collectors.groupingBy( - item -> item.getPaymentStatus() == null ? OmsPaymentBill.PaymentStatusEnum.WAIT_PAYMENT.getCode() : item.getPaymentStatus(), - Collectors.reducing( - BigDecimal.ZERO, - detail -> (detail.getPaymentAmount() != null) ? detail.getPaymentAmount() : BigDecimal.ZERO, - BigDecimal::add - )))); +// 1. 构建 payableBillId -> (paymentPlanId -> 最新PaymentDetail) 的 Map + Map> planMap = + omsPayablePaymentDetails.stream() + .collect(Collectors.groupingBy( + OmsPayablePaymentDetail::getPayableBillId, + Collectors.toMap( + OmsPayablePaymentDetail::getPaymentPlanId, + Function.identity(), + (d1, d2) -> d1.getCreateTime().after(d2.getCreateTime()) ? d1 : d2 + ) + )); + for (OmsPayableBill payableBill : omsPayableBills) { - Map amountMap = planMap.get(payableBill.getId()); - if (CollUtil.isNotEmpty(amountMap)) { - //已付金额 = 已付款金额-退款金额 - payableBill.setPaidPaymentAmount(amountMap.getOrDefault(OmsPaymentBill.PaymentStatusEnum.PAYMENT.getCode(), BigDecimal.ZERO) - .subtract(amountMap.getOrDefault(OmsPaymentBill.PaymentStatusEnum.REFUNDED.getCode(), BigDecimal.ZERO))); - //未付金额=总金额-已付金额-付款中金额 - payableBill.setUnpaidPaymentAmount(payableBill.getTotalPriceWithTax().subtract(payableBill.getPaidPaymentAmount()) - .subtract(amountMap.getOrDefault(OmsPaymentBill.PaymentStatusEnum.WAIT_PAYMENT.getCode(), BigDecimal.ZERO))); + + // 2. 获取当前账单的支付明细 Map(避免 NPE) + Map paymentDetailMap = + planMap.getOrDefault(payableBill.getId(), Collections.emptyMap()); + + if (CollUtil.isNotEmpty(paymentDetailMap)) { + + // 3. 按支付状态汇总金额 + Map amountMap = + paymentDetailMap.values().stream() + .filter(d -> d.getPaymentAmount() != null) + .collect(Collectors.toMap( + OmsPayablePaymentDetail::getPaymentStatus, + OmsPayablePaymentDetail::getPaymentAmount, + BigDecimal::add + )); + + // 4. 金额计算(集中处理,逻辑更清晰) + BigDecimal paidAmount = amountMap + .getOrDefault(OmsPaymentBill.PaymentStatusEnum.PAYMENT.getCode(), BigDecimal.ZERO) + .add(amountMap.getOrDefault( + OmsPaymentBill.PaymentStatusEnum.REFUNDED.getCode(), BigDecimal.ZERO)); + + BigDecimal waitPayAmount = + amountMap.getOrDefault( + OmsPaymentBill.PaymentStatusEnum.WAIT_PAYMENT.getCode(), BigDecimal.ZERO); + + payableBill.setPaidPaymentAmount(paidAmount); + + payableBill.setUnpaidPaymentAmount( + payableBill.getTotalPriceWithTax() + .subtract(paidAmount) + .subtract(waitPayAmount) + ); } - OmsPayablePaymentPlan payablePaymentPlan = omsPayablePaymentPlanMapper.firstUnPayPlan(payableBill.getId()); - payableBill.setLastPaymentPlanId(payablePaymentPlan == null ? -1 : payablePaymentPlan.getId()); + + // 5. 获取首个未支付计划 + OmsPayablePaymentPlan unpaidPlan = omsPayablePaymentPlanMapper.firstUnPayPlan(payableBill.getId()); + + payableBill.setLastPaymentPlanId(unpaidPlan == null ? -1L : unpaidPlan.getId()); } return omsPayableBillMapper.updateBatchPayableBillPaymentInfo(omsPayableBills); } @@ -444,23 +484,51 @@ public class OmsPayableBillServiceImpl implements IOmsPayableBillService { return 0; } List omsPayableTicketDetails = omsPayableTicketDetailService.listByPayableBillIdList(idList); - Map> planMap = omsPayableTicketDetails.stream().collect(Collectors.groupingBy(OmsPayableTicketDetail::getPayableBillId, - Collectors.groupingBy( - item -> item.getTicketStatus() == null ? OmsTicketBill.TicketStatusEnum.WAIT_TICKET.getCode() : item.getTicketStatus(), - Collectors.reducing( - BigDecimal.ZERO, - detail -> (detail.getPaymentAmount() != null) ? detail.getPaymentAmount() : BigDecimal.ZERO, - BigDecimal::add - )))); + Map> planMap = + omsPayableTicketDetails.stream() + .collect(Collectors.groupingBy( + OmsPayableTicketDetail::getPayableBillId, + Collectors.toMap( + OmsPayableTicketDetail::getTicketPlanId, + Function.identity(), + (d1, d2) -> d1.getCreateTime().after(d2.getCreateTime()) ? d1 : d2 + ) + )); for (OmsPayableBill payableBill : omsPayableBills) { - Map amountMap = planMap.get(payableBill.getId()); - if (CollUtil.isNotEmpty(amountMap)) { - //已付金额 = 已付款金额-退款金额 - payableBill.setReceivedTicketAmount(amountMap.getOrDefault(OmsTicketBill.TicketStatusEnum.TICKET.getCode(), BigDecimal.ZERO) - .subtract(amountMap.getOrDefault(OmsPaymentBill.PaymentStatusEnum.REFUNDED.getCode(), BigDecimal.ZERO))); - //未付金额=总金额-已付金额-付款中金额 - payableBill.setUnreceivedTicketAmount(payableBill.getTotalPriceWithTax().subtract(payableBill.getPaidPaymentAmount() - .subtract(amountMap.getOrDefault(OmsTicketBill.TicketStatusEnum.WAIT_TICKET.getCode(), BigDecimal.ZERO)))); + + // 2. 获取当前账单的支付明细 Map(避免 NPE) + Map paymentDetailMap = + planMap.getOrDefault(payableBill.getId(), Collections.emptyMap()); + + if (CollUtil.isNotEmpty(paymentDetailMap)) { + + // 3. 按支付状态汇总金额 + Map amountMap = + paymentDetailMap.values().stream() + .filter(d -> d.getPaymentAmount() != null) + .collect(Collectors.toMap( + OmsPayableTicketDetail::getTicketStatus, + OmsPayableTicketDetail::getPaymentAmount, + BigDecimal::add + )); + + // 4. 金额计算(集中处理,逻辑更清晰) + BigDecimal paidAmount = amountMap + .getOrDefault(OmsTicketBill.TicketStatusEnum.TICKET.getCode(), BigDecimal.ZERO) + .add(amountMap.getOrDefault( + OmsTicketBill.TicketStatusEnum.RED_RUSH.getCode(), BigDecimal.ZERO)); + + BigDecimal waitPayAmount = + amountMap.getOrDefault( + OmsTicketBill.TicketStatusEnum.WAIT_TICKET.getCode(), BigDecimal.ZERO); + + payableBill.setPaidPaymentAmount(paidAmount); + + payableBill.setUnpaidPaymentAmount( + payableBill.getTotalPriceWithTax() + .subtract(paidAmount) + .subtract(waitPayAmount) + ); } OmsPayableTicketPlan omsPayableTicketPlan = omsPayableTicketPlanMapper.firstUnPayPlan(payableBill.getId()); payableBill.setLastTicketPlanId(omsPayableTicketPlan == null ? -1 : omsPayableTicketPlan.getId()); @@ -473,22 +541,11 @@ public class OmsPayableBillServiceImpl implements IOmsPayableBillService { OmsPayableBill omsPayableBill = selectOmsPayableBillById(id); List omsPayablePaymentDetails = omsPayablePaymentDetailService.listByPayableBillId(id); omsPayableBill.setDetailList(omsPayablePaymentDetails); -// Map decimalMap = omsPayablePaymentDetails.stream() -// .collect(Collectors.groupingBy( -// item->item.getPaymentStatus()==null?OmsPaymentBill.PaymentStatusEnum.WAIT_PAYMENT.getCode(): item.getPaymentStatus(), -// Collectors.reducing( -// BigDecimal.ZERO, -// detail -> (detail.getPaymentAmount() != null) ? detail.getPaymentAmount() : BigDecimal.ZERO, -// BigDecimal::add -// ) -// )); - -// omsPayableBill.setPaidAmount(decimalMap.getOrDefault(OmsPaymentBill.PaymentStatusEnum.PAYMENT.getCode(), BigDecimal.ZERO)); -// omsPayableBill.setPayingAmount(decimalMap.getOrDefault(OmsPaymentBill.PaymentStatusEnum.WAIT_PAYMENT.getCode(), BigDecimal.ZERO)); -// BigDecimal decimal = omsPayableBill.getTotalPriceWithTax().subtract(omsPayableBill.getPaidAmount()).subtract(omsPayableBill.getPayingAmount()); -// omsPayableBill.setUnpaidAmount(decimal); - - + List ticketDetailList = omsPayableTicketDetailService.listByPayableBillIdList(Collections.singletonList(id)); + omsPayableBill.setTicketDetailList(ticketDetailList); + List omsPaymentBills = omsPaymentBillService.listPreResidueAmountByVendorCodeList(Collections.singletonList(omsPayableBill.getVendorCode())); + Map decimalMap = omsPaymentBills.stream().filter(item -> item.getPreResidueAmount() != null).collect(Collectors.toMap(OmsPaymentBill::getVendorCode, OmsPaymentBill::getPreResidueAmount, BigDecimal::add)); + omsPayableBill.setPreResidueAmount(decimalMap.getOrDefault(omsPayableBill.getVendorCode(), BigDecimal.ZERO)); return omsPayableBill; } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsPayableTicketDetailServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsPayableTicketDetailServiceImpl.java index 75dafb18..591ebf54 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsPayableTicketDetailServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsPayableTicketDetailServiceImpl.java @@ -1,17 +1,18 @@ package com.ruoyi.sip.service.impl; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.ShiroUtils; +import com.ruoyi.sip.domain.OmsFinAttachment; import com.ruoyi.sip.domain.OmsPayablePaymentDetail; import com.ruoyi.sip.domain.dto.PaymentBillPayableDetailDTO; -import org.apache.commons.lang3.StringUtils; +import com.ruoyi.sip.service.IOmsFinAttachmentService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.sip.mapper.OmsPayableTicketDetailMapper; @@ -30,6 +31,8 @@ public class OmsPayableTicketDetailServiceImpl implements IOmsPayableTicketDetai @Autowired private OmsPayableTicketDetailMapper omsPayableTicketDetailMapper; + @Autowired + private IOmsFinAttachmentService finAttachmentService; /** * 查询应付单收票明细 * @@ -150,7 +153,22 @@ public class OmsPayableTicketDetailServiceImpl implements IOmsPayableTicketDetai @Override public List listByPayableBillIdList(List payableBillId) { - return omsPayableTicketDetailMapper.listByPayableBillIdList(payableBillId); + OmsPayableTicketDetail omsPayableTicketDetail = new OmsPayableTicketDetail(); + omsPayableTicketDetail.setPayableBillIdList(payableBillId); + List list = omsPayableTicketDetailMapper.list(omsPayableTicketDetail); + if (CollUtil.isNotEmpty(list)){ + OmsFinAttachment omsFinAttachment = new OmsFinAttachment(); + omsFinAttachment.setRelatedBillIdList(list.stream().map(OmsPayableTicketDetail::getTicketBillId).distinct().collect(Collectors.toList())); + omsFinAttachment.setRelatedBillType(OmsFinAttachment.RelatedBillTypeEnum.INVOICE.getCode()); + omsFinAttachment.setDelFlag("0"); + List attachmentList = finAttachmentService.selectOmsFinAttachmentList(omsFinAttachment); + Map collect = attachmentList.stream().collect(Collectors.toMap(OmsFinAttachment::getRelatedBillId, Function.identity())); + for (OmsPayableTicketDetail payableTicketDetail : list) { + payableTicketDetail.setFinAttachment(collect.get(payableTicketDetail.getTicketBillId())); + } + } + + return list; } @Override @@ -164,4 +182,32 @@ public class OmsPayableTicketDetailServiceImpl implements IOmsPayableTicketDetai omsPayableTicketDetail.setTicketBillCode(ticketBillCode); return omsPayableTicketDetailMapper.selectOmsPayableTicketDetailList(omsPayableTicketDetail); } + + @Override + public List listPayableByWriteOffId(List longs) { + return omsPayableTicketDetailMapper.listPayableByWriteOffId(longs); + } + + @Override + public List listByWriteOffIds(Long[] ids) { + if (ids == null || ids.length == 0) { + return new ArrayList<>(); + } + OmsPayableTicketDetail omsPayableTicketDetail = new OmsPayableTicketDetail(); + omsPayableTicketDetail.setWriteOffIdList(Arrays.asList(ids)); + return omsPayableTicketDetailMapper.list(omsPayableTicketDetail); + } + + @Override + public void deleteByWriteOffIds(Long[] ids) { + if (ids == null || ids.length == 0) { + return ; + } + omsPayableTicketDetailMapper.deleteByWriteOffIds(ids); + } + + @Override + public void insertBatch(List detailList) { + omsPayableTicketDetailMapper.insertBatch(detailList); + } } \ No newline at end of file diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsPaymentBillServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsPaymentBillServiceImpl.java index 728dd6a8..e323f85f 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsPaymentBillServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsPaymentBillServiceImpl.java @@ -601,4 +601,12 @@ public class OmsPaymentBillServiceImpl implements IOmsPaymentBillService , TodoC return omsPaymentBillMapper.selectOmsPaymentBillByCode(paymentBillCode); } + + @Override + public List listPreResidueAmountByVendorCodeList(List collect) { + if (CollUtil.isEmpty(collect)){ + return Collections.emptyList(); + } + return omsPaymentBillMapper.listPreResidueAmountByVendorCodeList(collect); + } } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsTicketBillServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsTicketBillServiceImpl.java index 677cbe3b..d18aadc4 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsTicketBillServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsTicketBillServiceImpl.java @@ -1,8 +1,7 @@ package com.ruoyi.sip.service.impl; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; +import java.math.BigDecimal; +import java.util.*; import java.util.stream.Collectors; import cn.hutool.core.collection.CollUtil; @@ -17,17 +16,16 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.sip.domain.*; import com.ruoyi.sip.domain.dto.PaymentBillPayableDetailDTO; +import com.ruoyi.sip.dto.WriteOffTicketRequestDto; import com.ruoyi.sip.flowable.domain.Todo; import com.ruoyi.sip.flowable.service.TodoCommonTemplate; import com.ruoyi.sip.flowable.service.TodoService; -import com.ruoyi.sip.service.IOmsFinAttachmentService; -import com.ruoyi.sip.service.IOmsPayableBillService; -import com.ruoyi.sip.service.IOmsPayableTicketDetailService; +import com.ruoyi.sip.service.*; import org.flowable.engine.runtime.ProcessInstance; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import com.ruoyi.sip.mapper.OmsTicketBillMapper; -import com.ruoyi.sip.service.IOmsTicketBillService; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import org.springframework.transaction.annotation.Transactional; @@ -56,6 +54,9 @@ public class OmsTicketBillServiceImpl implements IOmsTicketBillService, TodoComm @Autowired private ProcessConfig processConfig; + @Autowired + @Lazy + private IOmsPayableTicketWriteOffService writeOffService; /** * 查询采购收票单 * @@ -303,6 +304,90 @@ public class OmsTicketBillServiceImpl implements IOmsTicketBillService, TodoComm return omsTicketBillMapper.listApprove(omsTicketBill, "bu_todo_completed"); } + @Override + public OmsTicketBill selectOmsTicketBillByCode(String ticketBillCode) { + return omsTicketBillMapper.selectOmsTicketBillByCode(ticketBillCode); + } + + @Override + public void returnTicketWriteOff(List collect, List omsPayableTicketDetails) { + OmsTicketBill ticketBill = new OmsTicketBill(); + ticketBill.setTicketBillCodeList(collect); + List omsPaymentBills = selectOmsTicketBillList(ticketBill); + Map> listMap = omsPaymentBills.stream() + .collect(Collectors.groupingBy(OmsTicketBill::getTicketBillType)); + + // 处理预付 + List prePaymentBillList = listMap.remove(OmsPaymentBill.PaymentBillTypeEnum.PRE_PAYMENT.getCode()); + +// // 预付处理逻辑 +// // 1:通过omsPayablePaymentDetailService查询对应的详情,然后根据paymentBillCode分组, +// // 将含税金额总和计算出来,加在预付单的剩余额度上 +// if (CollUtil.isNotEmpty(prePaymentBillList)) { +// // 按付款单code分组核销详情 +// Map> groupedDetails = +// omsPayablePaymentDetails.stream() +// .filter(detail -> detail.getPaymentBillCode() != null) +// .collect(Collectors.groupingBy(OmsPayablePaymentDetail::getPaymentBillCode)); +// +// // 计算每个付款单的核销金额合计 +// Map paymentBillWriteOffAmountMap = groupedDetails.entrySet().stream() +// .collect(Collectors.toMap( +// Map.Entry::getKey, +// entry -> entry.getValue().stream() +// .map(OmsPayablePaymentDetail::getPaymentAmount) +// .reduce(BigDecimal.ZERO, BigDecimal::add) +// )); +// +// // 更新预付单的剩余额度 - 批量操作 +// List updateBills = prePaymentBillList.stream() +// .map(prePaymentBill -> { +// BigDecimal increaseAmount = paymentBillWriteOffAmountMap.getOrDefault( +// prePaymentBill.getPaymentBillCode(), BigDecimal.ZERO); +// +// if (increaseAmount.compareTo(BigDecimal.ZERO) > 0) { +// OmsPaymentBill updateBill = new OmsPaymentBill(); +// updateBill.setId(prePaymentBill.getId()); +// // 在原剩余额度基础上加回本次核销金额 +// BigDecimal newResidueAmount = prePaymentBill.getPreResidueAmount() +// .add(increaseAmount); +// updateBill.setPreResidueAmount(newResidueAmount); +// return updateBill; +// } +// return null; +// }) +// .filter(Objects::nonNull) +// .collect(Collectors.toList()); +// +// if (CollUtil.isNotEmpty(updateBills)) { +// for (OmsPaymentBill bill : updateBills) { +// updateOmsPaymentBill(bill); +// } +// } +// } + //处理其余数据 + if (CollUtil.isNotEmpty(listMap.values())) { + List updateBills = new ArrayList<>(); + + for (List omsPaymentBillList : listMap.values()) { + for (OmsTicketBill tempBill : omsPaymentBillList) { + + OmsTicketBill updateBill = new OmsTicketBill(); + updateBill.setId(tempBill.getId()); + updateBill.setTicketStatus(OmsTicketBill.TicketStatusEnum.WAIT_TICKET.getCode()); + updateBill.setActualTicketTime(null); + updateBills.add(updateBill); + } + } + if (CollUtil.isNotEmpty(updateBills)) { + omsTicketBillMapper.updateReturnWriteOffBatch(updateBills); + omsFinAttachmentService.deleteOmsFinAttachmentByPayment(updateBills.stream().map(OmsTicketBill::getId).collect(Collectors.toList()), + OmsFinAttachment.RelatedBillTypeEnum.INVOICE.getCode()); + } + + } + } + @Override public Object todoDetail(String businessKey, String processKey, String todoId) { @@ -345,8 +430,16 @@ public class OmsTicketBillServiceImpl implements IOmsTicketBillService, TodoComm OmsTicketBill omsTicketBill = new OmsTicketBill(); omsTicketBill.setTicketBillCode(businessKey); omsTicketBill.setApproveStatus(ApproveStatusEnum.APPROVE_COMPLETE.getCode()); + omsTicketBill.setTicketStatus(OmsTicketBill.TicketStatusEnum.TICKET.getCode()); omsTicketBill.setApproveTime(DateUtils.getNowDate()); omsTicketBillMapper.updateOmsTicketBillByCode(omsTicketBill); + OmsTicketBill existBill = selectOmsTicketBillByCode(businessKey); + WriteOffTicketRequestDto writeOffRequestDto = new WriteOffTicketRequestDto(); + writeOffRequestDto.setTicketBillId(existBill.getId()); + writeOffRequestDto.setVendorCode(existBill.getVendorCode()); + List omsPayableTicketDetails = payableTicketDetailService.listDetailByTicketCode(existBill.getTicketBillCode()); + writeOffRequestDto.setDetailList(omsPayableTicketDetails); + writeOffService.autoTicketWriteOff(writeOffRequestDto); } diff --git a/ruoyi-sip/src/main/resources/mapper/finance/OmsPayableBillMapper.xml b/ruoyi-sip/src/main/resources/mapper/finance/OmsPayableBillMapper.xml index ce67ec4e..a8adc7a1 100644 --- a/ruoyi-sip/src/main/resources/mapper/finance/OmsPayableBillMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/finance/OmsPayableBillMapper.xml @@ -76,6 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" t1.create_time, t1.update_by, t1.update_time, + t1.tax_rate, t1.remark, t1.del_flag , t3.project_code, diff --git a/ruoyi-sip/src/main/resources/mapper/finance/OmsPayablePaymentDetailMapper.xml b/ruoyi-sip/src/main/resources/mapper/finance/OmsPayablePaymentDetailMapper.xml index 790e0892..b1c1a138 100644 --- a/ruoyi-sip/src/main/resources/mapper/finance/OmsPayablePaymentDetailMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/finance/OmsPayablePaymentDetailMapper.xml @@ -114,7 +114,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from (SELECT sum(payment_amount) payment_amount, payable_bill_id FROM oms_payable_payment_detail - WHERE payment_bill_code in + WHERE write_off_id is null and payment_bill_code in #{item} @@ -142,7 +142,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" DELETE FROM oms_payable_payment_detail WHERE write_off_id IN - + #{item} diff --git a/ruoyi-sip/src/main/resources/mapper/finance/OmsPaymentBillMapper.xml b/ruoyi-sip/src/main/resources/mapper/finance/OmsPaymentBillMapper.xml index 445ec210..fdce8d5f 100644 --- a/ruoyi-sip/src/main/resources/mapper/finance/OmsPaymentBillMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/finance/OmsPaymentBillMapper.xml @@ -414,6 +414,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and pb.del_flag = '0' + \ No newline at end of file diff --git a/ruoyi-sip/src/main/resources/mapper/sip/OmsPayableTicketDetailMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/OmsPayableTicketDetailMapper.xml index 9ea35ceb..63cac6dd 100644 --- a/ruoyi-sip/src/main/resources/mapper/sip/OmsPayableTicketDetailMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/sip/OmsPayableTicketDetailMapper.xml @@ -8,6 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -19,12 +20,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + - select id, ticket_plan_id, payable_bill_id, payment_time, payment_amount, payment_rate, ticket_bill_code, - create_by, create_time, update_by, update_time, remark - from oms_payable_ticket_detail + select id, ticket_plan_id, payable_bill_id, payable_detail_type, payment_time, payment_amount, payment_rate, ticket_bill_code, + create_by, create_time, update_by, update_time, remark, + payment_amount_without_tax, write_off_id, payment_amount_tax + from oms_payable_ticket_detail t1 - SELECT - t1.*,t2.actual_ticket_time,t2.ticket_status,t2.id as paymentBillId + t1.*,t2.actual_ticket_time,t2.vendor_ticket_time,t2.ticket_status,t2.id as ticketBillId FROM oms_payable_ticket_detail t1 LEFT JOIN oms_ticket_bill t2 ON t1.ticket_bill_code = t2.ticket_bill_code - + and t1.payable_bill_id in - + #{item} + + and t1.write_off_id in + + #{item} + + + + and t1.payable_detail_type = #{payableDetailType} + + + insert into oms_payable_ticket_detail @@ -122,6 +155,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" payable_bill_id, + + payable_detail_type, + payment_time, @@ -149,6 +185,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" remark, + + payment_amount_without_tax, + + + write_off_id, + + + payment_amount_tax, + @@ -157,6 +202,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{payableBillId}, + + #{payableDetailType}, + #{paymentTime}, @@ -184,14 +232,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{remark}, + + #{paymentAmountWithoutTax}, + + + #{writeOffId}, + + + #{paymentAmountTax}, + - insert into oms_payable_ticket_detail (payable_bill_id, ticket_plan_id, payment_time, payment_amount, payment_rate, - ticket_bill_code, create_by, create_time, update_by, update_time, remark) values + insert into oms_payable_ticket_detail (payable_bill_id, ticket_plan_id, payable_detail_type, payment_time, payment_amount, payment_rate, + ticket_bill_code, create_by, create_time, update_by, update_time, remark, + payment_amount_without_tax, write_off_id, payment_amount_tax) values - (#{item.payableBillId}, #{item.ticketPlanId}, #{item.paymentTime}, #{item.paymentAmount}, #{item.paymentRate}, #{item.ticketBillCode}, - #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark}) + (#{item.payableBillId}, #{item.ticketPlanId}, #{item.payableDetailType}, #{item.paymentTime}, #{item.paymentAmount}, #{item.paymentRate}, #{item.ticketBillCode}, + #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark}, + #{item.paymentAmountWithoutTax}, #{item.writeOffId}, #{item.paymentAmountTax}) @@ -204,6 +263,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" payable_bill_id = #{payableBillId}, + + payable_detail_type = #{payableDetailType}, + payment_time = #{paymentTime}, @@ -231,7 +293,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" remark = #{remark}, - + + payment_amount_without_tax = #{paymentAmountWithoutTax}, + + + write_off_id = #{writeOffId}, + + + payment_amount_tax = #{paymentAmountTax}, + where id = #{id} @@ -249,5 +319,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" delete from oms_payable_ticket_detail where ticket_bill_code = #{code} + + DELETE FROM oms_payable_ticket_detail WHERE write_off_id IN + + + #{item} + + \ No newline at end of file diff --git a/ruoyi-sip/src/main/resources/mapper/sip/OmsTicketBillMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/OmsTicketBillMapper.xml index 77a0dad3..341cfc95 100644 --- a/ruoyi-sip/src/main/resources/mapper/sip/OmsTicketBillMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/sip/OmsTicketBillMapper.xml @@ -43,6 +43,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and ticket_bill_code = #{ticketBillCode} + + + and ticket_bill_code in + #{item} + and ticket_type = #{ticketType} @@ -388,6 +393,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where ticket_bill_code = #{ticketBillCode} + + + update oms_ticket_bill + set + ticket_status=#{item.ticketStatus}, + approve_status=#{item.approveStatus}, + approve_time=null, + update_time=now() + where id = #{item.id} + + delete from oms_ticket_bill where id = #{id} @@ -478,5 +494,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + \ No newline at end of file