wujianwei
2026-01-05 23bd50fb3957688de0c12abc73b6ca939b1d1f7b
service/src/main/java/com/ruoyi/cwgl/controller/InvoiceManageController.java
@@ -13,11 +13,15 @@
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.utils.file.DownloadExportUtil;
import com.ruoyi.common.annotation.Log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.cwgl.domain.InvoiceManage;
import com.ruoyi.cwgl.domain.InvoiceManageLog;
import com.ruoyi.cwgl.service.IInvoiceManageService;
import com.ruoyi.cwgl.service.IInvoiceManageLogService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
@@ -31,8 +35,13 @@
@RequestMapping("/cwgl/invoiceManage")
public class InvoiceManageController extends BaseController
{
    protected final Logger logger = LoggerFactory.getLogger(getClass());
    @Autowired
    private IInvoiceManageService invoiceManageService;
    @Autowired
    private IInvoiceManageLogService invoiceManageLogService;
@@ -85,6 +94,30 @@
    }
    /**
     * 申请开票
     */
    @PreAuthorize("@ss.hasPermi('cwgl:invoiceManage:apply')")
    @Log(title = "发票管理", businessType = BusinessType.UPDATE)
    @PostMapping("/apply")
    public AjaxResult applyInvoice(@RequestBody InvoiceManage invoiceManage)
    {
        try {
            // 调用服务层方法处理申请开票逻辑
            int result = invoiceManageService.updateInvoiceManage(invoiceManage);
            if (result > 0) {
                // 记录申请开票日志
                recordApplyInvoiceLog(invoiceManage);
                return AjaxResult.success("申请开票成功");
            } else {
                return AjaxResult.error("申请开票失败");
            }
        } catch (Exception e) {
            return AjaxResult.error("申请开票异常:" + e.getMessage());
        }
    }
    /**
     * 修改发票管理
     */
    @PreAuthorize("@ss.hasPermi('cwgl:invoiceManage:edit')")
@@ -105,4 +138,48 @@
    {
        return toAjax(invoiceManageService.deleteInvoiceManageByIds(ids));
    }
    /**
     * 记录申请开票日志
     *
     * @param invoiceManage 发票管理对象
     */
    private void recordApplyInvoiceLog(InvoiceManage invoiceManage)
    {
        try {
            InvoiceManageLog log = new InvoiceManageLog();
            log.setInvoiceManageId(invoiceManage.getId());
            log.setOperator(getUsername());
            log.setOperationTime(new java.util.Date());
            // 构建操作描述,包含开票金额、关联账单编号和对应开票金额
            StringBuilder descBuilder = new StringBuilder();
            descBuilder.append("申请开票: ");
            if (invoiceManage.getInvoiceAmount() != null) {
                descBuilder.append("开票金额=").append(invoiceManage.getInvoiceAmount()).append("; ");
            }
            // 获取关联账单信息
            if (invoiceManage.getInvoiceDetailList() != null && !invoiceManage.getInvoiceDetailList().isEmpty()) {
                descBuilder.append("关联账单信息: ");
                for (com.ruoyi.cwgl.domain.InvoiceDetail detail : invoiceManage.getInvoiceDetailList()) {
                    if (detail.getReceivableBillNo() != null) {
                        descBuilder.append("账单编号=").append(detail.getReceivableBillNo());
                    }
                    if (detail.getCurrentBilledAmount() != null) {
                        descBuilder.append(", 本次开票金额=").append(detail.getCurrentBilledAmount());
                    }
                    descBuilder.append("; ");
                }
            }
            log.setOperationDesc(descBuilder.toString());
            log.setCreateTime(new java.util.Date());
            invoiceManageLogService.insertInvoiceManageLog(log);
        } catch (Exception e) {
            logger.error("记录申请开票日志失败: {}", e.getMessage());
        }
    }
}