From 3416b84125fb2afdfaae1e7a0df9de0afd53f301 Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Thu, 12 Dec 2024 14:30:07 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=E9=87=87=E8=B4=AD=E7=AE=A1=E7=90=86=20?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E8=AE=A2=E5=8D=95=E5=AE=9E=E4=BD=93=E7=B1=BB?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=A1=A8=E5=92=8Cmapper.xml=E5=B1=82?= =?UTF-8?q?=E7=9A=84=E7=9B=B8=E5=85=B3=E6=96=B9=E6=B3=95=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E7=BB=93=E6=A1=88=E5=8E=9F=E5=9B=A0=E5=AD=97=E6=AE=B5=EF=BC=9B?= =?UTF-8?q?=20=E9=87=87=E8=B4=AD=E8=AE=A2=E5=8D=95=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=96=B0=E5=A2=9E=E7=BB=93=E6=A1=88=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=92=8C=E6=96=B9=E6=B3=95=EF=BC=8C=E5=8F=AA=E8=A6=81?= =?UTF-8?q?=E4=B8=8D=E4=B8=BA=E5=B7=B2=E7=BB=93=E6=A1=88=E7=9A=84=E6=97=B6?= =?UTF-8?q?=E5=80=99=E6=89=8D=E5=8F=AF=E4=BB=A5=E7=BB=93=E6=A1=88=EF=BC=9B?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=E7=BB=93=E6=A1=88=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=EF=BC=8C=E7=BB=93=E6=A1=88=E5=8E=9F=E5=9B=A0=E4=B8=BA=E5=BF=85?= =?UTF-8?q?=E5=A1=AB=EF=BC=9B=20=E9=87=87=E8=B4=AD=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E5=8A=A0=E8=BD=BD=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=BB=93=E6=A1=88=E5=BC=B9=E7=AA=97=E5=92=8C?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E8=AE=A2=E5=8D=95=E7=BB=93=E6=A1=88=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E6=8E=A5=E5=8F=A3=EF=BC=9B=20=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=BB=93=E6=A1=88=E6=96=B9=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E5=90=8C=E6=97=B6=E6=9B=B4=E6=96=B0=E9=87=87=E8=B4=AD=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=9A=84=E7=BB=93=E6=A1=88=E7=8A=B6=E6=80=81=E5=92=8C?= =?UTF-8?q?=E5=BA=94=E4=BB=98=E8=B4=A6=E6=AC=BE=E7=9A=84=E7=BB=93=E6=A1=88?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E9=83=BD=E4=B8=BA=E5=B7=B2=E7=BB=93=E6=A1=88?= =?UTF-8?q?=20=E8=B4=A2=E5=8A=A1=E5=BA=94=E4=BB=98=E8=B4=A6=E6=AC=BE?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E6=A0=B9=E6=8D=AE=E5=85=B3=E8=81=94?= =?UTF-8?q?=E7=BC=96=E5=8F=B7=E6=9F=A5=E8=AF=A2=E8=B4=A2=E5=8A=A1=E5=BA=94?= =?UTF-8?q?=E4=BB=98=E8=B4=A6=E6=AC=BE=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/FinancialAccountsPayable.java | 2 +- .../FinancialAccountsPayableMapper.java | 5 ++ .../controller/PurchaseOrderController.java | 25 ++++++++ .../ruoyi/purchase/domain/PurchaseOrder.java | 13 ++++ .../service/IPurchaseOrderService.java | 5 ++ .../impl/PurchaseOrderServiceImpl.java | 36 +++++++++++ .../FinancialAccountsPayableMapper.xml | 7 ++- .../mapper/purchase/PurchaseOrderMapper.xml | 7 ++- .../purchaseOrder/closePurchaseOrder.html | 62 +++++++++++++++++++ .../purchase/purchaseOrder/purchaseOrder.html | 33 +++++++--- 10 files changed, 185 insertions(+), 10 deletions(-) create mode 100644 ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/closePurchaseOrder.html diff --git a/ruoyi-admin/src/main/java/com/ruoyi/financial/domain/FinancialAccountsPayable.java b/ruoyi-admin/src/main/java/com/ruoyi/financial/domain/FinancialAccountsPayable.java index 050137de..4c9d3426 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/financial/domain/FinancialAccountsPayable.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/financial/domain/FinancialAccountsPayable.java @@ -25,7 +25,7 @@ public class FinancialAccountsPayable extends BaseEntity @Excel(name = "应付单号", sort = 1) private String accountsPayableCode; - /** 付款状态 */ + /** 付款状态(0待付款、1部分付款、2已结案) */ @Excel(name = "付款状态", sort = 2,dictType = "accounts_payable_status") private String accountsPayableStatus; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/financial/mapper/FinancialAccountsPayableMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/financial/mapper/FinancialAccountsPayableMapper.java index 7e8ba7a8..9f7e774d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/financial/mapper/FinancialAccountsPayableMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/financial/mapper/FinancialAccountsPayableMapper.java @@ -79,4 +79,9 @@ public interface FinancialAccountsPayableMapper public List selectFinancialAccountsPayableByCodes(String[] accountsPayableCodes); public int updatePayableClosingStatusById(Long accountsPayableId); + + /** + * 根据关联编号查询财务应付账款 + * */ + FinancialAccountsPayable selectFinancialAccountsPayableByRelevanceCode(String relevanceCode); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseOrderController.java index 213a1145..05678330 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseOrderController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseOrderController.java @@ -398,4 +398,29 @@ public class PurchaseOrderController extends BaseController List list = sysUserService.selectRoleToUserList("cgyRole,cgjlRole,cgzgRole"); return getDataTable(list); } + + + + /** + * 加载采购订单结案弹窗 + */ + @GetMapping("/closePurchaseOrder/{purchaseOrderId}") + public String closePurchaseOrder(@PathVariable("purchaseOrderId") Long purchaseOrderId,ModelMap mmap){ + + PurchaseOrder purchaseOrder = purchaseOrderService.selectPurchaseOrderById(purchaseOrderId); + mmap.put("purchaseOrder", purchaseOrder); + return prefix + "/closePurchaseOrder"; + } + + + /** + * 采购订单结案 + * */ + @RequiresPermissions("purchase:purchaseOrder:close") + @Log(title = "采购订单", businessType = BusinessType.UPDATE) + @PostMapping("/closePurchaseOrder") + @ResponseBody + public AjaxResult closePurchaseOrderSave(PurchaseOrder purchaseOrder){ + return toAjax(purchaseOrderService.closePurchaseOrder(purchaseOrder)); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchaseOrder.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchaseOrder.java index fb1e7667..3327d741 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchaseOrder.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchaseOrder.java @@ -138,6 +138,10 @@ public class PurchaseOrder extends BaseEntity /** 申请时间 */ private Date applyTime; + /** 用于应付账款结案的结案原因*/ + private String closedReason; + + private List purchaseOrderChildList; @@ -447,6 +451,14 @@ public class PurchaseOrder extends BaseEntity return applyTime; } + public String getClosedReason() { + return closedReason; + } + + public void setClosedReason(String closedReason) { + this.closedReason = closedReason; + } + public List getPurchaseOrderChildList() { return purchaseOrderChildList; } @@ -496,6 +508,7 @@ public class PurchaseOrder extends BaseEntity .append("applyTitle", getApplyTitle()) .append("applyUser", getApplyUser()) .append("applyTime", getApplyTime()) + .append("closedReason", getClosedReason()) .append("purchaseOrderChildList", getPurchaseOrderChildList()) .toString(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseOrderService.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseOrderService.java index acb4255c..5feb344f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseOrderService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseOrderService.java @@ -130,4 +130,9 @@ public interface IPurchaseOrderService * 通过采购订单号集合查询采购订单集合 * */ List selectPurchaseOrderChildListByPurchaseCodeList(List purchaseCodeList); + + /** + * 采购订单结案 + * */ + int closePurchaseOrder(PurchaseOrder purchaseOrder); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseOrderServiceImpl.java index 869054f1..d2dac28c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseOrderServiceImpl.java @@ -1505,6 +1505,42 @@ public class PurchaseOrderServiceImpl implements IPurchaseOrderService } + /** + * 采购订单结案 + * */ + @Transactional(rollbackFor = Exception.class) + @Override + public int closePurchaseOrder(PurchaseOrder purchaseOrder) { + + String loginName = ShiroUtils.getLoginName(); + String purchaseOrderCode = purchaseOrder.getPurchaseOrderCode(); + FinancialAccountsPayable oldAccountsPayable = financialAccountsPayableMapper.selectFinancialAccountsPayableByRelevanceCode(purchaseOrderCode); + if (oldAccountsPayable == null){ + throw new BusinessException("未查到关联的应付账款记录,请检查"); + } + + oldAccountsPayable.setAccountsPayableStatus("2"); + oldAccountsPayable.setClosedReason(purchaseOrder.getClosedReason()); + oldAccountsPayable.setUpdateBy(loginName); + oldAccountsPayable.setUpdateTime(new Date()); + int updateAccountsPayableResult = financialAccountsPayableMapper.updateFinancialAccountsPayable(oldAccountsPayable); + if (updateAccountsPayableResult <= 0){ + throw new BusinessException("应付账款结案失败"); + } + + + purchaseOrder.setPaymentStatus("4"); + purchaseOrder.setUpdateBy(loginName); + purchaseOrder.setUpdateTime(new Date()); + + int updateResult = purchaseOrderMapper.updatePurchaseOrder(purchaseOrder); + if (updateResult <= 0){ + throw new BusinessException("采购订单结案失败"); + } + + return updateResult; + } + /** * 提交采购订单详情 * */ diff --git a/ruoyi-admin/src/main/resources/mapper/financial/FinancialAccountsPayableMapper.xml b/ruoyi-admin/src/main/resources/mapper/financial/FinancialAccountsPayableMapper.xml index dea673c0..c3e78c00 100644 --- a/ruoyi-admin/src/main/resources/mapper/financial/FinancialAccountsPayableMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/financial/FinancialAccountsPayableMapper.xml @@ -74,7 +74,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where accounts_payable_id = #{accountsPayableId} - + + + insert into financial_accounts_payable diff --git a/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderMapper.xml b/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderMapper.xml index 87ca3b07..ada30bb9 100644 --- a/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderMapper.xml @@ -43,10 +43,11 @@ + - select purchase_order_id, purchase_order_code, purchase_plan_code, warehouse_storage_status, payment_status, supplier_code, supplier_name, material_sum, actual_purchase_sum, shared_inventory_occupancy_sum, refunds_exchanges_sum, storage_sum, notify_has_arrived_sum,noRmb_sum, rmb_sum, eceipt_type, arrived_time, stock_no, stock_name, receive_person, receive_person_phone, receive_address, purchase_buyer, use_status, audit_status, create_by, create_time, update_by, update_time, del_flag, instance_id, instance_type, submit_instance_id, cancel_instance_id, restore_instance_id, apply_title, apply_user, apply_time from purchase_order + select purchase_order_id, purchase_order_code, purchase_plan_code, warehouse_storage_status, payment_status, supplier_code, supplier_name, material_sum, actual_purchase_sum, shared_inventory_occupancy_sum, refunds_exchanges_sum, storage_sum, notify_has_arrived_sum,noRmb_sum, rmb_sum, eceipt_type, arrived_time, stock_no, stock_name, receive_person, receive_person_phone, receive_address, purchase_buyer, use_status, audit_status, create_by, create_time, update_by, update_time, del_flag, instance_id, instance_type, submit_instance_id, cancel_instance_id, restore_instance_id, apply_title, apply_user, apply_time, closed_reason from purchase_order +
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+ + + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/purchaseOrder.html b/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/purchaseOrder.html index 3c35313e..277e69d7 100644 --- a/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/purchaseOrder.html +++ b/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/purchaseOrder.html @@ -59,6 +59,9 @@ 导出 + + 结案 +
@@ -74,6 +77,8 @@ var restoreFlag = [[${@permission.hasPermi('purchase:purchaseOrder:restore')}]]; var addPurchaseStorageFlag = [[${@permission.hasPermi('purchase:purchaseOrder:addPurchaseStorage')}]]; + var closeFlag = [[${@permission.hasPermi('purchase:purchaseOrder:close')}]]; + var warehouseStorageStatusDatas = [[${@dict.getType('warehouse_storage_status')}]]; var paymentStatusDatas = [[${@dict.getType('sys_pay_close')}]]; @@ -231,20 +236,23 @@ var actions = []; if(row.auditStatus=="1" && row.useStatus=="1" && !row.cancelInstanceId) { // 作废 - actions.push(' 作废'); + actions.push('作废'); //入库状态(0待暂收、1已暂收、2待入库、3部分入库、4全部入库) if(row.warehouseStorageStatus=="2" || row.warehouseStorageStatus=="3"){ //入库通知 - actions.push(' 入库通知'); + actions.push('入库通知'); + } + //打款结案状态(0待打款、1部分打款、2全部打款、3部分结案、4已结案) + if(row.paymentStatus != "4"){ + //结案 + actions.push('结案'); } - - // 已作废 } // 有流程实例id if(row.useStatus=="2" && !row.restoreInstanceId){ // 恢复 - actions.push(' 恢复 '); + actions.push('恢复 '); } // 有流程实例id @@ -258,9 +266,9 @@ } } // 审批历史 - actions.push(' 审批历史 '); + actions.push('审批历史 '); // 进度查看 - actions.push(' 进度查看 '); + actions.push('进度查看 '); } actions.push('详情 '); @@ -352,6 +360,17 @@ $.modal.open("详情", url); } + //结案 + function closePurchaseOrder(purchaseOrderId) { + var url = prefix + "/closePurchaseOrder/" + purchaseOrderId; + $.modal.open("结案", url); + } + + + // 显示警告消息的通用函数 + function showWarning(message) { + $.modal.msgWarning(message); + } \ No newline at end of file