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