From 53b84e0c9b6f107e0a51e87d8e0f97349a902c3a Mon Sep 17 00:00:00 2001 From: jiangpeng Date: Tue, 21 Apr 2026 12:32:26 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E5=BC=80=E7=A5=A8=E5=8D=95?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E8=B0=83=E6=95=B4=EF=BC=8C=E5=BC=80=E7=A5=A8?= =?UTF-8?q?=E5=8D=95=E5=AF=BC=E5=87=BAExcel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../approve/finance/invoiceExcelUtils.js | 259 ++++++++++++++++++ .../receivableInvoice/approved/index.vue | 29 +- .../finance/receivableInvoice/index.vue | 29 +- .../invoice/components/ApplyInvoice.vue | 105 ++++++- .../invoice/components/InvoiceInfoView.vue | 26 +- .../com/ruoyi/sip/domain/OmsInvoiceBill.java | 4 +- .../OmsReceivableInvoiceDetailItem.java | 4 + .../sip/domain/dto/InvoiceProductDto.java | 1 + .../impl/OmsInvoiceBillServiceImpl.java | 1 + .../OmsReceivableInvoiceDetailItemMapper.xml | 22 +- .../mapper/sip/OmsInvoiceBillMapper.xml | 18 +- 11 files changed, 479 insertions(+), 19 deletions(-) create mode 100644 oms_web/oms_vue/src/views/approve/finance/invoiceExcelUtils.js diff --git a/oms_web/oms_vue/src/views/approve/finance/invoiceExcelUtils.js b/oms_web/oms_vue/src/views/approve/finance/invoiceExcelUtils.js new file mode 100644 index 00000000..0bded91f --- /dev/null +++ b/oms_web/oms_vue/src/views/approve/finance/invoiceExcelUtils.js @@ -0,0 +1,259 @@ +function escapeHtml(value) { + return String(value == null ? "" : value) + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """) + .replace(/'/g, "'"); +} + +function formatCurrency(value) { + const num = Number(value); + if (Number.isNaN(num)) { + return "0.00"; + } + return num.toFixed(2); +} + +function getProductTypeLabel(value) { + const map = { + "1": "软件", + "2": "电子计算机", + "3": "信息系统服务" + }; + return map[String(value)] || ""; +} + +function convertCurrency(money) { + const cnNums = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"]; + const cnIntRadice = ["", "拾", "佰", "仟"]; + const cnIntUnits = ["", "万", "亿", "兆"]; + const cnDecUnits = ["角", "分", "毫", "厘"]; + const cnInteger = "整"; + const cnIntLast = "元"; + + let integerNum; + let decimalNum; + let chineseStr = ""; + let parts; + + if (money === "") return ""; + money = parseFloat(money); + if (money >= 999999999999) return ""; + if (money === 0) return cnNums[0] + cnIntLast + cnInteger; + + let prefix = ""; + if (money < 0) { + prefix = "(负数)"; + money = Math.abs(money); + } + + money = money.toString(); + if (money.indexOf(".") === -1) { + integerNum = money; + decimalNum = ""; + } else { + parts = money.split("."); + integerNum = parts[0]; + decimalNum = parts[1].substr(0, 4); + } + + if (parseInt(integerNum, 10) > 0) { + let zeroCount = 0; + const intLen = integerNum.length; + for (let i = 0; i < intLen; i++) { + const n = integerNum.substr(i, 1); + const p = intLen - i - 1; + const q = Math.floor(p / 4); + const m = p % 4; + if (n === "0") { + zeroCount++; + } else { + if (zeroCount > 0) chineseStr += cnNums[0]; + zeroCount = 0; + chineseStr += cnNums[parseInt(n, 10)] + cnIntRadice[m]; + } + if (m === 0 && zeroCount < 4) chineseStr += cnIntUnits[q]; + } + chineseStr += cnIntLast; + } + + if (decimalNum !== "") { + const decLen = decimalNum.length; + for (let i = 0; i < decLen; i++) { + const n = decimalNum.substr(i, 1); + if (n !== "0") chineseStr += cnNums[Number(n)] + cnDecUnits[i]; + } + } + + if (chineseStr === "") chineseStr += cnNums[0] + cnIntLast + cnInteger; + else if (decimalNum === "") chineseStr += cnInteger; + return prefix + chineseStr; +} + +function getInvoiceTypeLabel(invoiceType) { + const map = { + "1": "增值税专用发票", + "2": "增值税普通发票", + "3": "电子发票" + }; + return map[String(invoiceType)] || (invoiceType || ""); +} + +function buildItemRows(items) { + if (!items || items.length === 0) { + return ` + + 暂无明细 + + `; + } + + return items.map((item) => ` + + ${escapeHtml(getProductTypeLabel(item.productType))} + ${escapeHtml(item.productName)} + ${escapeHtml(item.productModel)} + ${escapeHtml(item.unit)} + ${escapeHtml(item.quantity)} + ${formatCurrency(item.price)} + ${formatCurrency(item.allPrice)} + ${escapeHtml(item.taxRate)} + ${formatCurrency(item.taxAmount)} + + `).join(""); +} + +function buildSummaryRow(items) { + let allPriceTotal = 0; + let taxTotal = 0; + (items || []).forEach((item) => { + allPriceTotal += Number(item.allPrice) || 0; + taxTotal += Number(item.taxAmount) || 0; + }); + + return ` + + 合计 + ¥${allPriceTotal.toFixed(2)} + - + ¥${taxTotal.toFixed(2)} + + `; +} + +function buildInvoiceExcelHtml(invoice) { + const detailItems = invoice.detailItemList || []; + const totalAmountNumber = detailItems.reduce((sum, item) => sum + (Number(item.allPrice) || 0), 0).toFixed(2); + const totalAmountChinese = convertCurrency(totalAmountNumber); + const invoiceTypeLabel = getInvoiceTypeLabel(invoice.invoiceType); + + return ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${buildItemRows(detailItems)} + ${buildSummaryRow(detailItems)} + + + + + + + + + + + + + + +
电子发票(${escapeHtml(invoiceTypeLabel)}) +
发票号码:----------
+
开票日期:----------
+
购买方信息名称:${escapeHtml(invoice.buyerName)}销售方信息名称:${escapeHtml(invoice.sellerName)}
纳税人识别号:${escapeHtml(invoice.buyerCreditCode)}纳税人识别号:${escapeHtml(invoice.sellerCreditCode)}
税收大类项目名称规格型号单位数量单价金额税率%税额
价税合计(大写)⊗ ${escapeHtml(totalAmountChinese)}(小写)¥${formatCurrency(totalAmountNumber)}
备注${escapeHtml(invoice.remark)}
信息说明${escapeHtml(invoice.informationNote)}
+ +`; +} + +export function exportInvoiceInfoToExcel(invoiceData, fileName) { + const content = buildInvoiceExcelHtml(invoiceData || {}); + const blob = new Blob(["\ufeff", content], { + type: "application/vnd.ms-excel;charset=utf-8;" + }); + const url = URL.createObjectURL(blob); + const link = document.createElement("a"); + link.href = url; + link.download = fileName || "开票单.xls"; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + URL.revokeObjectURL(url); +} diff --git a/oms_web/oms_vue/src/views/approve/finance/receivableInvoice/approved/index.vue b/oms_web/oms_vue/src/views/approve/finance/receivableInvoice/approved/index.vue index f4d9f991..e02454c6 100644 --- a/oms_web/oms_vue/src/views/approve/finance/receivableInvoice/approved/index.vue +++ b/oms_web/oms_vue/src/views/approve/finance/receivableInvoice/approved/index.vue @@ -58,6 +58,14 @@ @click="exportPDF" :loading="pdfExporting" >导出PDF + 导出Excel
@@ -95,6 +103,7 @@ import { listCompletedFlows } from "@/api/flow"; import ReceivableInvoiceDetail from "../components/ReceivableInvoiceDetail"; import ApproveLayout from "@/views/approve/ApproveLayout"; import { exportElementToPDF } from "@/views/approve/finance/pdfUtils"; +import { exportInvoiceInfoToExcel } from "@/views/approve/finance/invoiceExcelUtils"; export default { name: "ReceivableInvoiceApproved", @@ -121,7 +130,8 @@ export default { form: {}, approveLogs: [], currentInvoiceId: null, - pdfExporting: false + pdfExporting: false, + excelExporting: false }; }, created() { @@ -184,6 +194,23 @@ export default { } finally { this.pdfExporting = false; } + }, + exportExcel() { + if (!this.form || !this.form.invoiceBillCode) { + this.$modal.msgWarning("暂无可导出的开票信息"); + return; + } + this.excelExporting = true; + try { + const fileName = `开票单-${this.form.invoiceBillCode || ""}.xls`; + exportInvoiceInfoToExcel(this.form, fileName); + this.$modal.msgSuccess("Excel导出成功"); + } catch (error) { + console.error("Excel导出失败:", error); + this.$modal.msgError("Excel导出失败,请稍后重试"); + } finally { + this.excelExporting = false; + } } } }; diff --git a/oms_web/oms_vue/src/views/approve/finance/receivableInvoice/index.vue b/oms_web/oms_vue/src/views/approve/finance/receivableInvoice/index.vue index 8b3f47c5..5fe5a1e5 100644 --- a/oms_web/oms_vue/src/views/approve/finance/receivableInvoice/index.vue +++ b/oms_web/oms_vue/src/views/approve/finance/receivableInvoice/index.vue @@ -70,6 +70,14 @@ @click="exportPDF" :loading="pdfExporting" >导出PDF + 导出Excel
@@ -122,6 +130,7 @@ import { approveTask, listCompletedFlows } from "@/api/flow"; import ReceivableInvoiceDetail from "./components/ReceivableInvoiceDetail"; import ApproveLayout from "@/views/approve/ApproveLayout"; import { exportElementToPDF } from "@/views/approve/finance/pdfUtils"; +import { exportInvoiceInfoToExcel } from "@/views/approve/finance/invoiceExcelUtils"; export default { name: "ReceivableInvoiceApprove", @@ -159,7 +168,8 @@ export default { processKey: 'finance_invoice_approve', taskId: null, currentInvoiceId: null, - pdfExporting: false + pdfExporting: false, + excelExporting: false }; }, created() { @@ -271,6 +281,23 @@ export default { } finally { this.pdfExporting = false; } + }, + exportExcel() { + if (!this.form || !this.form.invoiceBillCode) { + this.$modal.msgWarning("暂无可导出的开票信息"); + return; + } + this.excelExporting = true; + try { + const fileName = `开票单-${this.form.invoiceBillCode || ""}.xls`; + exportInvoiceInfoToExcel(this.form, fileName); + this.$modal.msgSuccess("Excel导出成功"); + } catch (error) { + console.error("Excel导出失败:", error); + this.$modal.msgError("Excel导出失败,请稍后重试"); + } finally { + this.excelExporting = false; + } } } }; diff --git a/oms_web/oms_vue/src/views/finance/invoice/components/ApplyInvoice.vue b/oms_web/oms_vue/src/views/finance/invoice/components/ApplyInvoice.vue index d3050947..c7f38c1e 100644 --- a/oms_web/oms_vue/src/views/finance/invoice/components/ApplyInvoice.vue +++ b/oms_web/oms_vue/src/views/finance/invoice/components/ApplyInvoice.vue @@ -90,16 +90,31 @@ show-summary :summary-method="getSummaries" > - + + + + @@ -173,6 +188,13 @@ class="no-border-textarea"/>
+
+
信息说明
+
+ +
+
@@ -209,6 +231,11 @@ export default { return { loading: false, companyOptions: [], + productTypeOptions: [ + { value: '1', label: '软件' }, + { value: '2', label: '电子计算机' }, + { value: '3', label: '信息系统服务' } + ], form: { invoiceType: this.rowData.invoiceType || '2', buyerName: undefined, @@ -219,12 +246,15 @@ export default { sellerCreditCode: undefined, sellerBank: undefined, sellerBankAccount: undefined, + informationNote: '默认开票', remark: undefined, invoiceBillCode: this.rowData.invoiceBillCode, id: this.rowData.id, detailItemList: [ { projectName: '', + productType: '', + productDescView: '', productModel: '', unit: '', unitPrice: '', @@ -240,7 +270,8 @@ export default { buyerName: [{required: true, message: "必填", trigger: "blur"}], buyerCreditCode: [{required: true, message: "必填", trigger: "blur"}], sellerName: [{required: true, message: "必填", trigger: "blur"}] - } + }, + originalDetailSignature: '' }; }, created() { @@ -266,6 +297,15 @@ export default { this.reset(); this.initData(); } + }, + 'form.detailItemList': { + handler() { + if (!this.visible || !this.form || !Array.isArray(this.form.detailItemList)) { + return; + } + this.updateInformationNote(); + }, + deep: true } }, methods: { @@ -290,9 +330,11 @@ export default { sellerCreditCode: undefined, sellerBank: undefined, sellerBankAccount: undefined, + informationNote: '默认开票', remark: undefined, detailItemList: [] }; + this.originalDetailSignature = ''; this.resetForm("form"); }, initData() { @@ -337,8 +379,10 @@ export default { id: item.id, orderCode: item.orderCode, productCode: item.productCode, + productType: item.productType != null ? String(item.productType) : '', productModel: item.productModel, // Mapping projectCode to productModel as requested - productName: item.productName, // Mapping projectCode to productModel as requested + productName: item.productName, + productDescView: item.productDesc || item.productName || '', unit: item.unit || '', quantity: quantity, unitPrice: item.price, // Mapping price to unitPrice @@ -350,12 +394,15 @@ export default { // this.calculateAmount(row); return row; }); + this.setOriginalDetailSignature(); } else { this.addDetailRow(); // Default empty row if no data + this.setOriginalDetailSignature(); } }); } else { this.addDetailRow(); + this.setOriginalDetailSignature(); } } }, @@ -381,6 +428,8 @@ export default { addDetailRow() { this.form.detailItemList.push({ projectName: '', + productType: '', + productDescView: '', productModel: '', unit: '', unitPrice: '', @@ -436,6 +485,24 @@ export default { }); return sums; }, + normalizeDetailItem(item) { + return { + productType: item.productType || '', + productDescView: item.productDescView || '', + productModel: item.productModel || '' + }; + }, + buildDetailSignature(list) { + return JSON.stringify((list || []).map(item => this.normalizeDetailItem(item))); + }, + updateInformationNote() { + const currentSignature = this.buildDetailSignature(this.form.detailItemList); + this.form.informationNote = currentSignature !== this.originalDetailSignature ? '手改开票' : '默认开票'; + }, + setOriginalDetailSignature() { + this.originalDetailSignature = this.buildDetailSignature(this.form.detailItemList); + this.form.informationNote = '默认开票'; + }, handleSubmit() { this.$refs["form"].validate(valid => { if (valid) { @@ -446,6 +513,7 @@ export default { } for (let i = 0; i < this.form.detailItemList.length; i++) { const item = this.form.detailItemList[i]; + item.productName = item.productDescView; if (!item.productName || !item.productModel || isNaN(item.quantity) || !item.unit || !item.unitPrice || !item.amount || !item.taxAmount || !item.taxRate) { this.$modal.msgError(`表格第 ${i + 1} 行数据不完整,请填写所有必填字段`); return; @@ -735,6 +803,16 @@ export default { padding: 0 5px; } +.no-border-select { + width: 100%; +} + +.no-border-select ::v-deep .el-input__inner { + border: none; + text-align: center; + padding: 0 5px; +} + .table-icon { cursor: pointer; color: #8B4513; @@ -784,19 +862,26 @@ export default { .remark-row { display: flex; min-height: 60px; - padding: 0 10px; color: #8B4513; + border-top: 1px solid #8B4513; } .remark-label { width: 120px; - padding-top: 10px; + padding: 10px; font-size: 13px; + border-right: 1px solid #8B4513; + box-sizing: border-box; + display: flex; + align-items: center; } .remark-content { flex: 1; - padding: 5px 0; + padding: 5px 10px; + box-sizing: border-box; + display: flex; + align-items: center; } .no-border-textarea ::v-deep .el-textarea__inner { diff --git a/oms_web/oms_vue/src/views/finance/invoice/components/InvoiceInfoView.vue b/oms_web/oms_vue/src/views/finance/invoice/components/InvoiceInfoView.vue index d34db046..88624a28 100644 --- a/oms_web/oms_vue/src/views/finance/invoice/components/InvoiceInfoView.vue +++ b/oms_web/oms_vue/src/views/finance/invoice/components/InvoiceInfoView.vue @@ -54,6 +54,7 @@
+ @@ -82,6 +83,10 @@
备注
{{ data.remark }}
+
+
信息说明
+
{{ data.informationNote }}
+
@@ -114,6 +119,14 @@ export default { } }, methods: { + getProductTypeLabel(value) { + const map = { + '1': '软件', + '2': '电子计算机', + '3': '信息系统服务' + }; + return map[String(value)] || ''; + }, getSummaries(param) { const { columns, data } = param; const sums = []; @@ -356,17 +369,26 @@ export default { } .remark-row { display: flex; - min-height: 40px; - padding: 10px; + min-height: 60px; color: #8B4513; + border-top: 1px solid #8B4513; } .remark-label { width: 120px; + padding: 10px; font-size: 13px; + border-right: 1px solid #8B4513; + box-sizing: border-box; + display: flex; + align-items: center; } .remark-content { flex: 1; + padding: 5px 10px; font-size: 13px; + box-sizing: border-box; + display: flex; + align-items: center; } .invoice-type-select { diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsInvoiceBill.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsInvoiceBill.java index 0f59a5fc..7da16be5 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsInvoiceBill.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsInvoiceBill.java @@ -117,6 +117,8 @@ public class OmsInvoiceBill extends BaseEntity private String sellerCreditCode; private String sellerBank; private String sellerBankAccount; + /** 信息备注 */ + private String informationNote; private String projectCode; @@ -191,4 +193,4 @@ public class OmsInvoiceBill extends BaseEntity this.desc = desc; } } -} \ No newline at end of file +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsReceivableInvoiceDetailItem.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsReceivableInvoiceDetailItem.java index 6c896bd2..6e80efe4 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsReceivableInvoiceDetailItem.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsReceivableInvoiceDetailItem.java @@ -39,6 +39,10 @@ public class OmsReceivableInvoiceDetailItem { * 产品编码 */ private String productCode; + /** + * 产品类型 + */ + private String productType; /** * 产品名称 */ diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/dto/InvoiceProductDto.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/dto/InvoiceProductDto.java index 07e76b67..c2a768f8 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/dto/InvoiceProductDto.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/dto/InvoiceProductDto.java @@ -26,6 +26,7 @@ public class InvoiceProductDto extends BaseEntity { private Long projectId; private String productName; private String productCode; + private String productType; private String orderCode; private String productModel; private String productDesc; diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInvoiceBillServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInvoiceBillServiceImpl.java index 530ffb2d..2eb383cf 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInvoiceBillServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInvoiceBillServiceImpl.java @@ -461,6 +461,7 @@ public class OmsInvoiceBillServiceImpl implements IOmsInvoiceBillService, TodoCo if (productInfo != null){ invoiceProductDto.setProductModel(productInfo.getModel()); invoiceProductDto.setProductName(productInfo.getProductName()); + invoiceProductDto.setProductType(productInfo.getType()); invoiceProductDto.setProductDesc(productInfo.getProductDesc()); invoiceProductDto.setPrice(productInfo.getPrice()); BigDecimal allPriceWithoutTax = invoiceProductDto.getAllPrice().divide( diff --git a/ruoyi-sip/src/main/resources/mapper/OmsReceivableInvoiceDetailItem/OmsReceivableInvoiceDetailItemMapper.xml b/ruoyi-sip/src/main/resources/mapper/OmsReceivableInvoiceDetailItem/OmsReceivableInvoiceDetailItemMapper.xml index 78021ec6..6cc4d960 100644 --- a/ruoyi-sip/src/main/resources/mapper/OmsReceivableInvoiceDetailItem/OmsReceivableInvoiceDetailItemMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/OmsReceivableInvoiceDetailItem/OmsReceivableInvoiceDetailItemMapper.xml @@ -8,6 +8,7 @@ + @@ -19,7 +20,7 @@ - id, invoice_bill_code, project_name, order_code, product_code, product_name, product_model, quantity, price, all_price, tax_amount, tax_rate,unit + id, invoice_bill_code, project_name, order_code, product_code, product_type, product_name, product_model, quantity, price, all_price, tax_amount, tax_rate,unit @@ -43,6 +44,9 @@ and product_code = #{productCode} + + and product_type = #{productType} + and product_name = #{productName} @@ -75,6 +79,7 @@ project_name, order_code, product_code, + product_type, product_name, product_model, quantity, @@ -129,6 +134,9 @@ product_code, + + product_type, + product_name, @@ -167,6 +175,9 @@ #{productCode}, + + #{productType}, + #{productName}, @@ -196,7 +207,7 @@ INSERT INTO oms_receivable_invoice_detail_item ( - invoice_bill_code,project_name,order_code,product_code,product_name,product_model + invoice_bill_code,project_name,order_code,product_code,product_type,product_name,product_model ,quantity,price,all_price,tax_amount,tax_rate,unit) @@ -206,6 +217,7 @@ #{item.projectName}, #{item.orderCode}, #{item.productCode}, + #{item.productType}, #{item.productName}, #{item.productModel}, #{item.quantity}, @@ -234,6 +246,9 @@ product_code = #{productCode}, + + product_type = #{productType}, + product_name = #{productName}, @@ -277,6 +292,9 @@ product_code = #{item.productCode}, + + product_type = #{item.productType}, + product_name = #{item.productName}, diff --git a/ruoyi-sip/src/main/resources/mapper/sip/OmsInvoiceBillMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/OmsInvoiceBillMapper.xml index bc5f5a9a..4c917438 100644 --- a/ruoyi-sip/src/main/resources/mapper/sip/OmsInvoiceBillMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/sip/OmsInvoiceBillMapper.xml @@ -39,6 +39,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -48,7 +49,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" t1.remark, t1.del_flag, t1.actual_invoice_time, t1.invoice_status, t1.approve_status, t1.approve_time, t1.refund_status , t1.original_bill_id, t1.invoice_apply_user, t1.buyer_name, t1.buyer_credit_code, t1.buyer_bank, t1.buyer_bank_account, - t1.seller_name, t1.seller_credit_code, t1.seller_bank, t1.seller_bank_account + t1.seller_name, t1.seller_credit_code, t1.seller_bank, t1.seller_bank_account, t1.information_note from oms_invoice_bill t1 @@ -175,6 +176,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and seller_bank_account = #{sellerBankAccount} + + and information_note = #{informationNote} + @@ -314,6 +318,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" invoice_apply_user, + + information_note, + @@ -416,6 +423,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{invoiceApplyUser}, + + #{informationNote}, + @@ -518,6 +528,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" invoice_apply_user = #{invoiceApplyUser}, + + information_note = #{informationNote}, + update_time = now() @@ -562,6 +575,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" approve_status=#{approveStatus}, invoice_type=#{invoiceType}, remark=#{remark}, + information_note=#{informationNote}, update_time=now() where invoice_bill_code = #{invoiceBillCode} @@ -649,4 +663,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from oms_invoice_bill where invoice_bill_code LIKE CONCAT(#{codePrefix}, '%') - \ No newline at end of file +