From b991ccbe475c50390eebd4a3253162fc6b4a9b2c Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期四, 15 一月 2026 10:26:36 +0800
Subject: [PATCH] 新增日志

---
 service/src/main/java/com/ruoyi/cwgl/service/impl/InvoiceManageServiceImpl.java |  324 ++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 266 insertions(+), 58 deletions(-)

diff --git a/service/src/main/java/com/ruoyi/cwgl/service/impl/InvoiceManageServiceImpl.java b/service/src/main/java/com/ruoyi/cwgl/service/impl/InvoiceManageServiceImpl.java
index 15a08ad..68258df 100644
--- a/service/src/main/java/com/ruoyi/cwgl/service/impl/InvoiceManageServiceImpl.java
+++ b/service/src/main/java/com/ruoyi/cwgl/service/impl/InvoiceManageServiceImpl.java
@@ -1,13 +1,25 @@
 package com.ruoyi.cwgl.service.impl;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
 
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson2.JSONObject;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.SystemDataNoEnum;
+import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.DateUtils;
 import javax.annotation.Resource;
 
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.cwgl.domain.InvoiceDetail;
+import com.ruoyi.cwgl.domain.*;
+import com.ruoyi.cwgl.domain.dto.CallbackReceiptDto;
+import com.ruoyi.cwgl.service.IInvoiceBillDetailService;
+import com.ruoyi.cwgl.service.IInvoiceBusinessService;
+import com.ruoyi.system.service.ISystemDataNoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.stereotype.Service;
 import org.springframework.scheduling.annotation.Async;
@@ -20,8 +32,7 @@
 import com.ruoyi.common.core.service.BaseService;
 
 import com.ruoyi.cwgl.mapper.InvoiceManageMapper;
-import com.ruoyi.cwgl.domain.InvoiceManage;
-import com.ruoyi.cwgl.domain.InvoiceManageLog;
+import com.ruoyi.cwgl.mapper.InvoiceBillDetailMapper;
 import com.ruoyi.cwgl.service.IInvoiceManageService;
 import com.ruoyi.cwgl.service.IInvoiceManageLogService;
 import com.ruoyi.common.core.text.Convert;
@@ -34,16 +45,36 @@
  */
 @Service
 @Transactional(rollbackFor = Exception.class)
-public class InvoiceManageServiceImpl  extends BaseService<InvoiceManageMapper, InvoiceManage> implements IInvoiceManageService
-{
+public class InvoiceManageServiceImpl  extends BaseService<InvoiceManageMapper, InvoiceManage> implements IInvoiceManageService {
     protected final Logger logger = LoggerFactory.getLogger(getClass());
     @Resource
     private InvoiceManageMapper invoiceManageMapper;
-    
+
+    @Resource
+    private InvoiceBillDetailMapper invoiceBillDetailMapper;
+
+    @Resource
+    private IInvoiceBillDetailService invoiceBillDetailService;
+
     @Resource
     private IInvoiceManageLogService invoiceManageLogService;
 
+    @Autowired
+    private ISystemDataNoService systemDataNoService;
+    @Autowired
+    private IInvoiceBusinessService businessService;
+    @Value("${custom.gdpaasApi.extensionNumber}")
+    private String extensionNumber;
 
+
+    @Value("${custom.gdpaasApi.clerk}")
+    private String clerk;
+    @Value("${custom.gdpaasApi.invoicingAddress}")
+    private String invoicingAddress;
+    @Value("${custom.gdpaasApi.returnAddress}")
+    private String returnAddress;
+    @Autowired
+    private IInvoiceBusinessService invoiceBusinessService;
     /**
      * 鏌ヨ鍙戠エ绠$悊
      *
@@ -52,8 +83,7 @@
      */
     @DataSource(DataSourceType.SLAVE)
     @Override
-    public InvoiceManage selectInvoiceManageById(Integer id)
-    {
+    public InvoiceManage selectInvoiceManageById(Integer id) {
         return invoiceManageMapper.selectInvoiceManageById(id);
     }
 
@@ -65,8 +95,7 @@
      */
     @DataSource(DataSourceType.SLAVE)
     @Override
-    public int selectInvoiceManageCount(InvoiceManage invoiceManage)
-    {
+    public int selectInvoiceManageCount(InvoiceManage invoiceManage) {
         return invoiceManageMapper.selectInvoiceManageCount(invoiceManage);
     }
 
@@ -78,8 +107,7 @@
      */
     @DataSource(DataSourceType.SLAVE)
     @Override
-    public List<InvoiceManage> selectInvoiceManageList(InvoiceManage invoiceManage)
-    {
+    public List<InvoiceManage> selectInvoiceManageList(InvoiceManage invoiceManage) {
         return invoiceManageMapper.selectInvoiceManageList(invoiceManage);
     }
 
@@ -87,15 +115,15 @@
      * 鏌ヨ鍙戠エ绠$悊鍒楄〃 寮傛 瀵煎嚭
      *
      * @param invoiceManage 鍙戠エ绠$悊
-     * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+     * @param exportKey     瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
      * @return 鍙戠エ绠$悊闆嗗悎
      */
     @DataSource(DataSourceType.SLAVE)
     @Async
     @Override
-    public void export(InvoiceManage invoiceManage,String exportKey) {
+    public void export(InvoiceManage invoiceManage, String exportKey) {
 
-        super.export(InvoiceManage.class,exportKey,"invoiceManageData",(pageNum)->{
+        super.export(InvoiceManage.class, exportKey, "invoiceManageData", (pageNum) -> {
             PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE);
             return selectInvoiceManageList(invoiceManage);
         });
@@ -108,19 +136,18 @@
      * @param invoiceManage 鍙戠エ绠$悊
      * @return 缁撴灉
      */
-    @Transactional
     @Override
-    public int insertInvoiceManage(InvoiceManage invoiceManage)
-    {
+    public int insertInvoiceManage(InvoiceManage invoiceManage) {
         invoiceManage.setCreateTime(DateUtils.getNowDate());
+        invoiceManage.setOrderNo(systemDataNoService.getNoByKey(SystemDataNoEnum.FP));
         int rows = invoiceManageMapper.insertInvoiceManage(invoiceManage);
         insertInvoiceDetail(invoiceManage);
-        
+
         // 璁板綍鏂板鍙戠エ绠$悊鏃ュ織
         if (rows > 0) {
             recordInvoiceManageLog(invoiceManage, "鏂板鍙戠エ绠$悊");
         }
-        
+
         return rows;
     }
 
@@ -131,17 +158,16 @@
      * @return 缁撴灉
      */
     @Override
-    public int insertInvoiceManageBatch(List<InvoiceManage> invoiceManages)
-    {
+    public int insertInvoiceManageBatch(List<InvoiceManage> invoiceManages) {
         int rows = invoiceManageMapper.insertInvoiceManageBatch(invoiceManages);
-        
+
         // 璁板綍鎵归噺鏂板鍙戠エ绠$悊鏃ュ織
         if (rows > 0 && invoiceManages != null && !invoiceManages.isEmpty()) {
             for (InvoiceManage invoiceManage : invoiceManages) {
                 recordInvoiceManageLog(invoiceManage, "鎵归噺鏂板鍙戠エ绠$悊");
             }
         }
-        
+
         return rows;
     }
 
@@ -153,18 +179,21 @@
      */
     @Transactional
     @Override
-    public int updateInvoiceManage(InvoiceManage invoiceManage)
-    {
+    public int updateInvoiceManage(InvoiceManage invoiceManage) {
         invoiceManage.setUpdateTime(DateUtils.getNowDate());
-//        invoiceManageMapper.deleteInvoiceDetailByInvoiceManageId(invoiceManage.getId());
-//        insertInvoiceDetail(invoiceManage);
+        // 鍒犻櫎鍘熸湁鐨勫彂绁ㄦ槑缁�
+        invoiceManageMapper.deleteInvoiceDetailByInvoiceManageId(invoiceManage.getId());
+        // 鍒犻櫎鍘熸湁鐨勫彂绁ㄤ笟鍔″晢鍝佹槑缁�
+        invoiceBillDetailService.deleteInvoiceBillDetailByInvoiceManageId(invoiceManage.getId());
+        // 鎻掑叆鏂扮殑鏄庣粏璁板綍
+        insertInvoiceDetail(invoiceManage);
         int rows = invoiceManageMapper.updateInvoiceManage(invoiceManage);
-        
+
         // 璁板綍淇敼鍙戠エ绠$悊鏃ュ織
         if (rows > 0) {
             recordInvoiceManageLog(invoiceManage, "淇敼鍙戠エ绠$悊");
         }
-        
+
         return rows;
     }
 
@@ -175,16 +204,16 @@
      * @return 缁撴灉
      */
     @Override
-    public int updateInvoiceManageBatch(List<InvoiceManage> invoiceManages){
+    public int updateInvoiceManageBatch(List<InvoiceManage> invoiceManages) {
         int rows = invoiceManageMapper.updateInvoiceManageBatch(invoiceManages);
-        
+
         // 璁板綍鎵归噺淇敼鍙戠エ绠$悊鏃ュ織
         if (rows > 0 && invoiceManages != null && !invoiceManages.isEmpty()) {
             for (InvoiceManage invoiceManage : invoiceManages) {
                 recordInvoiceManageLog(invoiceManage, "鎵归噺淇敼鍙戠エ绠$悊");
             }
         }
-        
+
         return rows;
     }
 
@@ -196,22 +225,19 @@
      */
     @Transactional
     @Override
-    public int deleteInvoiceManageByIds(String ids)
-    {
+    public int deleteInvoiceManageByIds(String ids) {
         return deleteInvoiceManageByIds(Convert.toIntArray(ids));
     }
 
     /**
      * 鍒犻櫎鍙戠エ绠$悊瀵硅薄
      *
-     *
      * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
      * @return 缁撴灉
      */
     @Transactional
     @Override
-    public int deleteInvoiceManageByIds(Integer[] ids)
-    {
+    public int deleteInvoiceManageByIds(Integer[] ids) {
         invoiceManageMapper.deleteInvoiceDetailByInvoiceManageIds(ids);
         return invoiceManageMapper.deleteInvoiceManageByIds(ids);
     }
@@ -223,8 +249,7 @@
      * @return 缁撴灉
      */
     @Override
-    public int deleteInvoiceManageById(Integer id)
-    {
+    public int deleteInvoiceManageById(Integer id) {
         invoiceManageMapper.deleteInvoiceDetailByInvoiceManageId(id);
         return invoiceManageMapper.deleteInvoiceManageById(id);
     }
@@ -235,21 +260,32 @@
      * @param invoiceManage 鍙戠エ绠$悊瀵硅薄
      */
     @Override
-    public void insertInvoiceDetail(InvoiceManage invoiceManage)
-    {
+    public void insertInvoiceDetail(InvoiceManage invoiceManage) {
         List<InvoiceDetail> invoiceDetailList = invoiceManage.getInvoiceDetailList();
         Integer id = invoiceManage.getId();
-        if (StringUtils.isNotNull(invoiceDetailList))
-        {
+        if (StringUtils.isNotNull(invoiceDetailList)) {
             List<InvoiceDetail> list = new ArrayList<InvoiceDetail>();
-            for (InvoiceDetail invoiceDetail : invoiceDetailList)
-            {
+            for (InvoiceDetail invoiceDetail : invoiceDetailList) {
                 invoiceDetail.setInvoiceManageId(id);
+                invoiceDetail.setCreateTime(new Date());
                 list.add(invoiceDetail);
             }
-            if (list.size() > 0)
-            {
+            if (list.size() > 0) {
                 invoiceManageMapper.batchInvoiceDetail(list);
+            }
+        }
+        
+        // 鏂板鍙戠エ涓氬姟鍟嗗搧鏄庣粏淇℃伅
+        List<InvoiceBillDetail> invoiceBillDetails = invoiceManage.getInvoiceBillDetails();
+        if (StringUtils.isNotNull(invoiceBillDetails)) {
+            List<InvoiceBillDetail> billDetailList = new ArrayList<InvoiceBillDetail>();
+            for (InvoiceBillDetail invoiceBillDetail : invoiceBillDetails) {
+                invoiceBillDetail.setInvoiceManageId(id);
+                invoiceBillDetail.setCreateTime(new Date());
+                billDetailList.add(invoiceBillDetail);
+            }
+            if (billDetailList.size() > 0) {
+                invoiceBillDetailMapper.insertInvoiceBillDetailBatch(billDetailList);
             }
         }
     }
@@ -260,22 +296,21 @@
      * @param invoiceManage 鍙戠エ绠$悊瀵硅薄
      * @param operationType 鎿嶄綔绫诲瀷
      */
-    private void recordInvoiceManageLog(InvoiceManage invoiceManage, String operationType)
-    {
+    private void recordInvoiceManageLog(InvoiceManage invoiceManage, String operationType) {
         try {
             InvoiceManageLog log = new InvoiceManageLog();
             log.setInvoiceManageId(invoiceManage.getId());
-            log.setOperator(invoiceManage.getCreateBy());
+            log.setOperator(SecurityUtils.getUsername());
             log.setOperationTime(DateUtils.getNowDate());
-            
+
             // 鏋勫缓鎿嶄綔鎻忚堪锛屽寘鍚紑绁ㄩ噾棰濄�佸叧鑱旇处鍗曠紪鍙峰拰瀵瑰簲寮�绁ㄩ噾棰�
             StringBuilder descBuilder = new StringBuilder();
             descBuilder.append(operationType).append(": ");
-            
+
             if (invoiceManage.getInvoiceAmount() != null) {
                 descBuilder.append("寮�绁ㄩ噾棰�=").append(invoiceManage.getInvoiceAmount()).append("; ");
             }
-            
+
             // 鑾峰彇鍏宠仈璐﹀崟淇℃伅
             if (invoiceManage.getInvoiceDetailList() != null && !invoiceManage.getInvoiceDetailList().isEmpty()) {
                 descBuilder.append("鍏宠仈璐﹀崟淇℃伅: ");
@@ -289,13 +324,186 @@
                     descBuilder.append("; ");
                 }
             }
-            
+
             log.setOperationDesc(descBuilder.toString());
             log.setCreateTime(DateUtils.getNowDate());
-            
+
             invoiceManageLogService.insertInvoiceManageLog(log);
         } catch (Exception e) {
             logger.error("璁板綍鍙戠エ绠$悊鎿嶄綔鏃ュ織澶辫触: {}", e.getMessage());
         }
     }
+
+    @Override
+    public AjaxResult applyInvoice(Integer id) {
+        InvoiceManage invoiceManage = selectInvoiceManageById(id);
+        if (invoiceManage == null) {
+            throw new ServiceException("鍙戠エ璁板綍涓嶅瓨鍦�");
+        }
+        if (invoiceManage.getStatus().equals(1)) {
+            throw new ServiceException("璇峰嬁閲嶅寮�绁�");
+
+        }
+        List<InvoiceBillDetail> invoiceBillDetails = invoiceManage.getInvoiceBillDetails();
+        if (CollectionUtil.isEmpty(invoiceBillDetails)) {
+            throw new ServiceException("鍟嗗搧鏄庣粏鏃犳暟鎹棤娉曞紑鍙戠エ");
+
+        }
+
+        // 璁板綍鐢宠寮�绁ㄦ棩蹇�
+        recordApplyInvoiceLog(invoiceManage);
+
+        return  componentInvoice(invoiceManage.getInvoiceNo(),"FP",invoiceManage,invoiceBillDetails);
+    }
+
+    public AjaxResult componentInvoice(String orderNo, String businessType, InvoiceManage invoiceManage, List<InvoiceBillDetail> invoiceBillDetails) {
+
+        InvoicingVo invoicingVo = new InvoicingVo();
+        Order order = new Order();
+        order.setSalerTaxNum(invoiceManage.getInvoiceSellerCreditCode());
+        order.setSalerTel(invoiceManage.getInvoiceSellerPhone());
+        order.setSalerAddress(invoiceManage.getInvoiceSellerAddress());
+        order.setInvoiceDate(DateUtils.dateTimeNow(DateUtils.YYYY_MM_DD_HH_MM_SS));
+        order.setClerk(clerk);
+        order.setInvoiceType("1");
+        order.setPushMode("0");
+        order.setExtensionNumber(extensionNumber);
+
+        order.setOrderNo(orderNo);
+        order.setEmail(invoiceManage.getInvoiceOperatingLicenseEmail());
+        order.setBuyerName(invoiceManage.getInvoiceCompanyName());
+        order.setInvoiceLine(invoiceManage.getInvoiceType());
+        order.setBuyerPhone(invoiceManage.getInvoiceOperatingLicensePhone());
+        order.setBuyerTaxNum(invoiceManage.getInvoiceCreditCode());
+        order.setBuyerTel(invoiceManage.getInvoiceOperatingLicensePhone());
+        if (StringUtils.isNotBlank(invoiceManage.getInvoiceBankNo()) &&
+                StringUtils.isNotBlank(invoiceManage.getInvoiceBankName())) {
+            order.setBuyerAccount(invoiceManage.getInvoiceBankName() + " " + invoiceManage.getInvoiceBankNo());
+        }
+
+        List<InvoiceDetailApi> invoiceDetailList = new ArrayList<>();
+        //鍟嗗搧鏄庣粏
+        for (InvoiceBillDetail billingDetail : invoiceBillDetails) {
+            InvoiceDetailApi invoiceDetail = new InvoiceDetailApi();
+
+            invoiceDetail.setGoodsCode(billingDetail.getGoodsCode());
+            invoiceDetail.setGoodsName(billingDetail.getGoodsName());
+
+            invoiceDetail.setWithTaxFlag(billingDetail.getWithTaxFlag().toString());
+            invoiceDetail.setTaxRate("0.06");
+            invoiceDetail.setUnit("椤�");
+            invoiceDetail.setNum("1");
+            invoiceDetail.setPrice(billingDetail.getPrice().toString()); // 鍒濆浠锋牸涓�0
+            invoiceDetailList.add(invoiceDetail);
+        }
+
+
+        order.setInvoiceDetail(invoiceDetailList);
+        invoicingVo.setOrder(order);
+        String body = JSONObject.toJSONString(invoicingVo);
+        String urlString = invoicingAddress + "?businessType=" + businessType + "&returnUrl=" + returnAddress;
+        logger.info("璇锋眰body{}",body);
+        logger.info("璇锋眰鍦板潃{}",urlString);
+        String json = HttpUtil.post(urlString, body);
+
+        if (json == null) {
+            logger.info("寮�绁ㄥけ璐�");
+            return AjaxResult.error("寮�绁ㄥけ璐�");
+        }
+        JSONObject jsonObject = JSONObject.parseObject(json);
+        String code = jsonObject.getString("code");
+        logger.info("寮�绁ㄨ繑鍥瀧}",jsonObject);
+        String invoiceSerialNum = null;
+        InvoiceBusiness record = new InvoiceBusiness();
+        record.setReqData(JSONObject.toJSONString(invoicingVo));
+        record.setResData(json);
+        record.setCreateTime(new Date());
+        if ("0".equals(code)) {
+            String data = jsonObject.getString("data");
+
+            JSONObject dataJson = JSONObject.parseObject(data);
+            invoiceSerialNum = dataJson.getString("invoiceSerialNum");
+            logger.info("寮�绁ㄦ垚鍔熷彂绁ㄥ簭鍒楀彿涓簕}", invoiceSerialNum);
+            record.setInvoiceSerialNum(invoiceSerialNum);
+            record.setInvoiceManageId(invoiceManage.getId());
+            invoiceBusinessService.insertInvoiceBusiness(record);
+            return AjaxResult.success();
+        }
+
+
+        return AjaxResult.error("寮�绁ㄥけ璐�");
+    }
+
+    /**
+     * 璁板綍鐢宠寮�绁ㄦ棩蹇�
+     *
+     * @param invoiceManage 鍙戠エ绠$悊瀵硅薄
+     */
+    private void recordApplyInvoiceLog(InvoiceManage invoiceManage) {
+        try {
+            InvoiceManageLog log = new InvoiceManageLog();
+            log.setInvoiceManageId(invoiceManage.getId());
+            log.setOperator(SecurityUtils.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());
+        }
+    }
+
+    @Override
+    public void invoicingSuccess(CallbackReceiptDto callbackReceiptDto) {
+        InvoiceManage invoiceBusiness = invoiceManageMapper.selectInvoiceManageLogByOrderNo(callbackReceiptDto.getOrderno());
+        if (invoiceBusiness == null) {
+            return;
+        }
+        String content = callbackReceiptDto.getContent();
+        if (StringUtils.isEmpty(content)) {
+            return;
+        }
+        JSONObject jsonObject = JSONObject.parseObject(content);
+
+        int c_status = Integer.parseInt(jsonObject.getString("c_status"));
+        invoiceBusiness.setStatus(c_status);
+        if (c_status == 1) {
+
+
+            String invoiceNumStr = jsonObject.getString("c_fphm");
+
+            InvoiceManage invoiceManageUpdate = new InvoiceManage();
+            invoiceManageUpdate.setInvoiceNo(invoiceNumStr);
+            invoiceManageUpdate.setId(invoiceBusiness.getId());
+            invoiceManageUpdate.setStatus(2);
+            invoiceManageMapper.updateById(invoiceBusiness);
+        }
+    }
 }
+
+
+

--
Gitblit v1.8.0