From 7c46ae5db4d56103a57856720c217101596ab797 Mon Sep 17 00:00:00 2001 From: chenhao Date: Tue, 16 Dec 2025 15:45:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(finance):=20=E6=96=B0=E5=A2=9E=E6=94=B6?= =?UTF-8?q?=E7=A5=A8=E5=AE=A1=E6=89=B9=E5=8A=9F=E8=83=BD=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增收票待审批与已审批列表查询接口 - 实现收票审批与驳回流程处理逻辑 - 添加收票单详情查看及附件预览下载功能 - 配置收票审批相关路由与页面组件 - 完善收票单据明细展示与数据字典支持 - 优化附件查询SQL关联创建人姓名字段 - 修复流程定义中财务票据退款键名拼写错误 - 调整付款单据查询逻辑以适配指定流程KEY筛选 - 更新实体类增加审批相关字段支持动态查询 - 补充Vue页面样式与交互细节提升用户体验 --- .../oms_vue/src/api/finance/invoiceReceipt.js | 36 +++ .../finance/invoiceReceipt/approved/index.vue | 151 +++++++++++ .../components/InvoiceReceiptDetail.vue | 136 ++++++++++ .../approve/finance/invoiceReceipt/index.vue | 238 ++++++++++++++++++ .../payment/components/PaymentDetail.vue | 92 ++++++- .../src/main/resources/application.yml | 3 + .../controller/OmsPaymentBillController.java | 4 +- .../controller/OmsTicketBillController.java | 33 +++ .../ruoyi/sip/domain/OmsFinAttachment.java | 1 + .../com/ruoyi/sip/domain/OmsTicketBill.java | 7 +- .../dto/PaymentBillPayableDetailDTO.java | 1 + .../ruoyi/sip/mapper/OmsTicketBillMapper.java | 2 + .../sip/service/IOmsTicketBillService.java | 4 + .../impl/OmsTicketBillServiceImpl.java | 12 + .../mapper/finance/OmsFinAttachmentMapper.xml | 22 +- .../mapper/finance/OmsPaymentBillMapper.xml | 4 +- .../sip/OmsPayableTicketDetailMapper.xml | 2 +- .../mapper/sip/OmsTicketBillMapper.xml | 72 ++++++ 18 files changed, 801 insertions(+), 19 deletions(-) create mode 100644 oms_web/oms_vue/src/api/finance/invoiceReceipt.js create mode 100644 oms_web/oms_vue/src/views/approve/finance/invoiceReceipt/approved/index.vue create mode 100644 oms_web/oms_vue/src/views/approve/finance/invoiceReceipt/components/InvoiceReceiptDetail.vue create mode 100644 oms_web/oms_vue/src/views/approve/finance/invoiceReceipt/index.vue diff --git a/oms_web/oms_vue/src/api/finance/invoiceReceipt.js b/oms_web/oms_vue/src/api/finance/invoiceReceipt.js new file mode 100644 index 00000000..9bd00ab5 --- /dev/null +++ b/oms_web/oms_vue/src/api/finance/invoiceReceipt.js @@ -0,0 +1,36 @@ +import request from '@/utils/request' + +// 查询收票待审批列表 +export function listInvoiceReceiptApprove(query) { + return request({ + url: '/finance/ticket/approve/list', + method: 'post', + data: query + }) +} + +// 查询收票已审批列表 +export function listInvoiceReceiptApproved(query) { + return request({ + url: '/finance/ticket/approved/list', + method: 'post', + data: query + }) +} + +// 查询收票详情 +export function getInvoiceReceipt(id) { + return request({ + url: '/finance/ticket/' + id, + method: 'get' + }) +} + +// 查询收票附件 +export function getInvoiceReceiptAttachments(id,params) { + return request({ + url: '/finance/ticket/attachment/' + id, + method: 'get', + params + }) +} diff --git a/oms_web/oms_vue/src/views/approve/finance/invoiceReceipt/approved/index.vue b/oms_web/oms_vue/src/views/approve/finance/invoiceReceipt/approved/index.vue new file mode 100644 index 00000000..93440ac3 --- /dev/null +++ b/oms_web/oms_vue/src/views/approve/finance/invoiceReceipt/approved/index.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/oms_web/oms_vue/src/views/approve/finance/invoiceReceipt/components/InvoiceReceiptDetail.vue b/oms_web/oms_vue/src/views/approve/finance/invoiceReceipt/components/InvoiceReceiptDetail.vue new file mode 100644 index 00000000..3cf89d34 --- /dev/null +++ b/oms_web/oms_vue/src/views/approve/finance/invoiceReceipt/components/InvoiceReceiptDetail.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/oms_web/oms_vue/src/views/approve/finance/invoiceReceipt/index.vue b/oms_web/oms_vue/src/views/approve/finance/invoiceReceipt/index.vue new file mode 100644 index 00000000..0049e87e --- /dev/null +++ b/oms_web/oms_vue/src/views/approve/finance/invoiceReceipt/index.vue @@ -0,0 +1,238 @@ + + + + + diff --git a/oms_web/oms_vue/src/views/approve/finance/payment/components/PaymentDetail.vue b/oms_web/oms_vue/src/views/approve/finance/payment/components/PaymentDetail.vue index fe60c0fa..4b0c82da 100644 --- a/oms_web/oms_vue/src/views/approve/finance/payment/components/PaymentDetail.vue +++ b/oms_web/oms_vue/src/views/approve/finance/payment/components/PaymentDetail.vue @@ -25,15 +25,40 @@ - + +
+
附件信息
+ + + + + + + + +
+ + + + + + + + @@ -51,4 +137,4 @@ export default { .payment-detail { margin-bottom: 20px; } - + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 4d3cf0e5..12c5072f 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -148,6 +148,7 @@ process: financePayment: finance_payment financeRefund: finance_refund fiananceTicket: fianance_ticket + financeTicketRefound: finance_ticket_refound #业务执行实例bean name ,可以按审批节点配置 业务审批回调方法处理业务逻辑. key 为流程节点主键ID value 要执行的业务方法名称,不配置则默认调用TodoCommonTemplate.todoApproveCallback instance: @@ -163,6 +164,8 @@ process: beanName: omsPaymentBillServiceImpl fiananceTicket: beanName: omsTicketBillServiceImpl + financeTicketRefound: + beanName: omsTicketBillServiceImpl unis: inventory: allAuthRole: 103,101 diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OmsPaymentBillController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OmsPaymentBillController.java index 38e49b06..497d1e4f 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OmsPaymentBillController.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OmsPaymentBillController.java @@ -78,7 +78,7 @@ public class OmsPaymentBillController extends BaseController List list = omsPaymentBillService.listApprove(omsPaymentBill); clearPage(); todoService.fillApproveNode(list, - Arrays.asList(processConfig.getDefinition().getFinancePayment(), processConfig.getDefinition().getFinanceRefund()) + Collections.singletonList(omsPaymentBill.getProcessKey()) , OmsPaymentBill::getPaymentBillCode, (a, b) -> a.setApproveNode(b.get(a.getPaymentBillCode()))); return getDataTable(list); } @@ -91,7 +91,7 @@ public class OmsPaymentBillController extends BaseController List list = omsPaymentBillService.listApproved(omsPaymentBill); clearPage(); todoService.fillApproveNode(list, - Arrays.asList(processConfig.getDefinition().getFinancePayment(), processConfig.getDefinition().getFinanceRefund()) + Collections.singletonList(omsPaymentBill.getProcessKey()) , OmsPaymentBill::getPaymentBillCode, (a, b) -> a.setApproveNode(b.get(a.getPaymentBillCode()))); return getDataTable(list); } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OmsTicketBillController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OmsTicketBillController.java index b3741b95..d4841e59 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OmsTicketBillController.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OmsTicketBillController.java @@ -1,10 +1,13 @@ package com.ruoyi.sip.controller; +import java.util.Arrays; import java.util.Collections; import java.util.List; import javax.servlet.http.HttpServletResponse; +import com.ruoyi.common.config.flow.ProcessConfig; import com.ruoyi.sip.domain.OmsFinAttachment; +import com.ruoyi.sip.flowable.service.TodoService; import com.ruoyi.sip.service.IOmsFinAttachmentService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; @@ -33,6 +36,10 @@ public class OmsTicketBillController extends BaseController private IOmsTicketBillService omsTicketBillService; @Autowired private IOmsFinAttachmentService omsFinAttachmentService; + @Autowired + private TodoService todoService; + @Autowired + private ProcessConfig processConfig; /** * 查询采购收票单列表 */ @@ -42,6 +49,32 @@ private IOmsFinAttachmentService omsFinAttachmentService; { startPage(); List list = omsTicketBillService.selectOmsTicketBillList(omsTicketBill); + clearPage(); + todoService.fillApproveNode(list, + Arrays.asList(processConfig.getDefinition().getFiananceTicket(), processConfig.getDefinition().getFinanceTicketRefound()) + , OmsTicketBill::getTicketBillCode, (a, b) -> a.setApproveNode(b.get(a.getTicketBillCode()))); + return getDataTable(list); + } + + @PostMapping("/approve/list") + public TableDataInfo listApprove(@RequestBody OmsTicketBill omsTicketBill) { + startPage(); + List list = omsTicketBillService.listApprove(omsTicketBill); + clearPage(); + todoService.fillApproveNode(list, + Arrays.asList(omsTicketBill.getProcessKey()) + , OmsTicketBill::getTicketBillCode, (a, b) -> a.setApproveNode(b.get(a.getTicketBillCode()))); + return getDataTable(list); + } + + @PostMapping("/approved/list") + public TableDataInfo listApproved(@RequestBody OmsTicketBill omsTicketBill) { + startPage(); + List list = omsTicketBillService.listApproved(omsTicketBill); + clearPage(); + todoService.fillApproveNode(list, + Arrays.asList(processConfig.getDefinition().getFiananceTicket(), processConfig.getDefinition().getFinanceTicketRefound()) + , OmsTicketBill::getTicketBillCode, (a, b) -> a.setApproveNode(b.get(a.getTicketBillCode()))); return getDataTable(list); } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsFinAttachment.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsFinAttachment.java index ba6e947d..284c1d98 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsFinAttachment.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsFinAttachment.java @@ -50,6 +50,7 @@ public class OmsFinAttachment extends BaseEntity /** 删除标志(0代表存在 2代表删除) */ private String delFlag; + private String createByName; @Getter public enum RelatedBillTypeEnum { 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 3bcc753c..4cc9d143 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 @@ -108,7 +108,12 @@ public class OmsTicketBill extends BaseEntity /** 关联的原始收票单ID */ private Long originalBillId; private List detailList; - + private Long approveUser; + private Date applyTime; + private Date todoApproveTime; + private String processKey; + private String todoId; + private String taskId; public BigDecimal getTaxAmount() { if (null != totalPriceWithTax && null != totalPriceWithoutTax){ diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/dto/PaymentBillPayableDetailDTO.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/dto/PaymentBillPayableDetailDTO.java index 24872a3d..ecab0f31 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/dto/PaymentBillPayableDetailDTO.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/dto/PaymentBillPayableDetailDTO.java @@ -18,6 +18,7 @@ public class PaymentBillPayableDetailDTO { /** 项目名称 */ private String projectName; + private String productType; /** 采购应付单编号 */ private String payableBillCode; 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 5b3891cc..d4209677 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 @@ -2,6 +2,7 @@ package com.ruoyi.sip.mapper; import java.util.List; import com.ruoyi.sip.domain.OmsTicketBill; +import org.apache.ibatis.annotations.Param; /** * 采购收票单Mapper接口 @@ -63,4 +64,5 @@ public interface OmsTicketBillMapper void updateOmsTicketBillByCode(OmsTicketBill omsTicketBill); + List listApprove(@Param("entity") OmsTicketBill omsTicketBill, @Param("tableName")String buTodo); } \ No newline at end of file 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 6d7f6a63..9486e3bf 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 @@ -67,4 +67,8 @@ public interface IOmsTicketBillService AjaxResult applyRefund(Long id); AjaxResult returnTicket(Long id); + + List listApprove(OmsTicketBill omsTicketBill); + + List listApproved(OmsTicketBill omsTicketBill); } \ No newline at end of file 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 e5c4b426..6c11c363 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 @@ -288,6 +288,18 @@ public class OmsTicketBillServiceImpl implements IOmsTicketBillService, TodoComm } } + @Override + public List listApprove(OmsTicketBill omsTicketBill) { + omsTicketBill.setApproveUser(ShiroUtils.getUserId()); + return omsTicketBillMapper.listApprove(omsTicketBill, "bu_todo"); + } + + @Override + public List listApproved(OmsTicketBill omsTicketBill) { + omsTicketBill.setApproveUser(ShiroUtils.getUserId()); + return omsTicketBillMapper.listApprove(omsTicketBill, "bu_todo_completed"); + } + @Override public Object todoDetail(String businessKey, String processKey, String todoId) { diff --git a/ruoyi-sip/src/main/resources/mapper/finance/OmsFinAttachmentMapper.xml b/ruoyi-sip/src/main/resources/mapper/finance/OmsFinAttachmentMapper.xml index 38ad50ba..2d1c8ca4 100644 --- a/ruoyi-sip/src/main/resources/mapper/finance/OmsFinAttachmentMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/finance/OmsFinAttachmentMapper.xml @@ -21,24 +21,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, related_bill_id, related_bill_type, file_name, file_path, file_size, file_type, create_by, create_time, update_by, update_time, remark, del_flag from oms_fin_attachment + select t1.id, t1.related_bill_id, t1.related_bill_type, t1.file_name, t1.file_path, t1.file_size, t1.file_type, + t1.create_by, t1.create_time, t1.update_by, t1.update_time, t1.remark, t1.del_flag + ,t2.user_name as create_by_name + from oms_fin_attachment t1 + left join sys_user t2 on t1.create_by=t2.user_id diff --git a/ruoyi-sip/src/main/resources/mapper/finance/OmsPaymentBillMapper.xml b/ruoyi-sip/src/main/resources/mapper/finance/OmsPaymentBillMapper.xml index 5cf3c57d..bdf64c65 100644 --- a/ruoyi-sip/src/main/resources/mapper/finance/OmsPaymentBillMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/finance/OmsPaymentBillMapper.xml @@ -342,15 +342,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" pb.bank_number, pb.refund_status, t2.vendor_name - ,t5.user_name as hz_user_name + ,t3.apply_time,t3.process_key,t3.todo_id,t3.task_id ,t3.approve_time as todo_approve_time from oms_payment_bill pb left join oms_vendor_info t2 on pb.vendor_code = t2.vendor_code - left join project_order_info t4 on pb.order_code = t4.order_code - left join sys_user t5 on t5.user_id = t4.duty inner join ${tableName} t3 on (t3.process_key in (#{entity.processKey}) and t3.approve_user=#{entity.approveUser} and t3.task_name!='商务' and t3.business_key=pb.payment_bill_code) and pb.payment_bill_code like concat('%', #{entity.paymentBillCode}, '%') diff --git a/ruoyi-sip/src/main/resources/mapper/sip/OmsPayableTicketDetailMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/OmsPayableTicketDetailMapper.xml index ca30cb1d..9ea35ceb 100644 --- a/ruoyi-sip/src/main/resources/mapper/sip/OmsPayableTicketDetailMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/sip/OmsPayableTicketDetailMapper.xml @@ -83,7 +83,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} + \ No newline at end of file