| | |
| | | import com.ruoyi.cwgl.domain.InvoiceManage; |
| | | import com.ruoyi.cwgl.domain.PayableBillManagement; |
| | | import com.ruoyi.cwgl.domain.PayableInvoiceBusiness; |
| | | import com.ruoyi.cwgl.domain.dto.BillAuditDto; |
| | | import com.ruoyi.cwgl.domain.dto.PayableAuditLog; |
| | | import com.ruoyi.cwgl.service.IInvoiceManageService; |
| | | import com.ruoyi.cwgl.service.IPayableBillManagementService; |
| | | import com.ruoyi.cwgl.service.IPayableInvoiceBusinessService; |
| | | import com.ruoyi.cwgl.service.ITmsAuditLogPushService; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.common.core.page.TableDataInfo; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private IPayableInvoiceBusinessService payableInvoiceBusinessService; |
| | | |
| | | @Autowired |
| | | private ITmsAuditLogPushService tmsAuditLogPushService; |
| | | |
| | | |
| | | |
| | |
| | | |
| | | return AjaxResult.success(invoicedAmount); |
| | | } |
| | | |
| | | /** |
| | | * 应付账单审核接口 |
| | | * @param billAuditDto 审核数据传输对象 |
| | | * @return 审核结果 |
| | | */ |
| | | @PreAuthorize("@ss.hasPermi('cwgl:payableBillManagement:audit')") |
| | | @Log(title = "应付账单管理", businessType = BusinessType.UPDATE) |
| | | @PutMapping("/audit") |
| | | public AjaxResult auditPayableBill(@RequestBody BillAuditDto billAuditDto) { |
| | | try { |
| | | // 1. 查询应付账单 |
| | | PayableBillManagement bill = payableBillManagementService.selectPayableBillManagementById(billAuditDto.getBillId()); |
| | | if (bill == null) { |
| | | return AjaxResult.error("应付账单不存在,ID:" + billAuditDto.getBillId()); |
| | | } |
| | | |
| | | // 2. 记录审核前状态 |
| | | Integer beforeAuditStatus = bill.getAuditStatus(); |
| | | |
| | | // 3. 更新审核状态 |
| | | bill.setAuditStatus(billAuditDto.getAuditResult()); |
| | | bill.setUpdateTime(new java.util.Date()); |
| | | bill.setUpdateBy(getUsername()); |
| | | |
| | | // 4. 更新账单 |
| | | int rows = payableBillManagementService.updatePayableBillManagement(bill); |
| | | if (rows <= 0) { |
| | | return AjaxResult.error("更新应付账单审核状态失败"); |
| | | } |
| | | |
| | | // 5. 记录审核日志 |
| | | savePayableAuditLog(billAuditDto, bill, beforeAuditStatus); |
| | | |
| | | // 6. 如果来源系统是TMS,推送审核日志到TMS |
| | | if (tmsAuditLogPushService.isPayableBillFromTms(bill.getSystemNo())) { |
| | | try { |
| | | PayableAuditLog auditLog = createPayableAuditLog(billAuditDto, bill, beforeAuditStatus); |
| | | tmsAuditLogPushService.pushPayableAuditLog(auditLog); |
| | | } catch (Exception e) { |
| | | logger.error("推送应付账单审核日志到TMS失败,账单ID:{}", bill.getId(), e); |
| | | // 推送失败不影响主流程,只记录日志 |
| | | } |
| | | } |
| | | |
| | | return AjaxResult.success("应付账单审核成功"); |
| | | |
| | | } catch (Exception e) { |
| | | return AjaxResult.error("应付账单审核失败:" + e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 保存应付账单审核日志 |
| | | */ |
| | | private void savePayableAuditLog(BillAuditDto billAuditDto, PayableBillManagement bill, Integer beforeAuditStatus) { |
| | | // 这里需要实现日志记录逻辑 |
| | | // 可以使用原有的日志服务或系统日志 |
| | | logger.info("应付账单审核日志 - 账单ID:{},账单编号:{},审核前状态:{},审核结果:{},审核意见:{}", |
| | | bill.getId(), bill.getSystemNo(), |
| | | getAuditStatusText(beforeAuditStatus), |
| | | getAuditResultText(billAuditDto.getAuditResult()), |
| | | billAuditDto.getAuditComment() != null ? billAuditDto.getAuditComment() : "无"); |
| | | } |
| | | |
| | | /** |
| | | * 获取审核状态文本 |
| | | */ |
| | | private String getAuditStatusText(Integer auditStatus) { |
| | | switch (auditStatus) { |
| | | case 0: return "待审核"; |
| | | case 1: return "审核通过"; |
| | | case 2: return "审核驳回"; |
| | | default: return "未知状态"; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取审核结果文本 |
| | | */ |
| | | private String getAuditResultText(Integer auditResult) { |
| | | switch (auditResult) { |
| | | case 1: return "通过"; |
| | | case 2: return "驳回"; |
| | | default: return "未知结果"; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 创建应付账单审核日志对象 |
| | | */ |
| | | private PayableAuditLog createPayableAuditLog(BillAuditDto billAuditDto, PayableBillManagement bill, Integer beforeAuditStatus) { |
| | | PayableAuditLog auditLog = new PayableAuditLog(); |
| | | auditLog.setBillId(bill.getId()); |
| | | auditLog.setBillNo(bill.getSystemNo()); |
| | | auditLog.setBillName(bill.getBillName()); |
| | | auditLog.setSupplierName(bill.getSupplierName()); |
| | | auditLog.setSourceSystem(tmsAuditLogPushService.getPayableBillSourceSystem(bill.getSystemNo())); |
| | | auditLog.setBeforeAuditStatus(beforeAuditStatus); |
| | | auditLog.setAuditResult(billAuditDto.getAuditResult()); |
| | | auditLog.setAuditComment(billAuditDto.getAuditComment()); |
| | | auditLog.setAuditUser(getUsername()); |
| | | auditLog.setAuditTime(new java.util.Date()); |
| | | auditLog.setTotalAmount(bill.getTotalAmount()); |
| | | return auditLog; |
| | | } |
| | | } |