From 6b29bd596f8b48485d3506bfba4a1e0ea6c7df99 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期二, 14 四月 2026 22:45:40 +0800
Subject: [PATCH] feat: 优化统计及告急处理

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysInvoiceServiceImpl.java |   84 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 84 insertions(+), 0 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysInvoiceServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysInvoiceServiceImpl.java
index ee2c483..d655552 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysInvoiceServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysInvoiceServiceImpl.java
@@ -4,6 +4,10 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+
+import com.ruoyi.common.utils.LongUtil;
+import com.ruoyi.system.domain.SysTaskEmergency;
+import com.ruoyi.system.mapper.SysTaskEmergencyMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,6 +41,9 @@
     
     @Autowired
     private SysUserMapper sysUserMapper;
+
+    @Autowired
+    private SysTaskEmergencyMapper sysTaskEmergencyMapper;
 
     /**
      * 鏌ヨ鍙戠エ鐢宠
@@ -83,6 +90,16 @@
     @Override
     public int insertSysInvoice(SysInvoice sysInvoice)
     {
+        Long taskId = sysInvoice.getServiceOrderId();
+        Long legacyServiceOrdId = sysInvoice.getLegacyServiceOrderId();
+        if(LongUtil.isNotEmpty(taskId) && LongUtil.isEmpty(legacyServiceOrdId)){
+            SysTaskEmergency taskEmergency= sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
+            if(taskEmergency!=null){
+                legacyServiceOrdId=taskEmergency.getLegacyServiceOrdId();
+            }
+
+        }
+        sysInvoice.setLegacyServiceOrderId(legacyServiceOrdId);
         sysInvoice.setApplyTime(DateUtils.getNowDate());
         sysInvoice.setStatus(0); // 寰呭鏍�
         sysInvoice.setSyncStatus(0); // 鏈悓姝�
@@ -191,6 +208,73 @@
     }
 
     /**
+     * 缂栬緫鍚庡悓姝ユ洿鏂板埌鏃х郴缁�
+     * - 宸叉湁 legacyInvoiceId锛氱洿鎺� UPDATE 鏃х郴缁熻褰�
+     * - 鏃� legacyInvoiceId锛堝巻鍙插悓姝ュけ璐ワ級锛氶噸鏂� INSERT
+     */
+    @Override
+    public void syncUpdateToLegacySystem(Long invoiceId) {
+        SysInvoice invoice = sysInvoiceMapper.selectSysInvoiceByInvoiceId(invoiceId);
+        if (invoice == null) return;
+
+        Map<String, Object> params = new HashMap<>();
+        params.put("InvoiceType",         invoice.getInvoiceType());
+        params.put("InvoiceName",         invoice.getInvoiceName());
+        params.put("InvoiceMakeout",      invoice.getInvoiceRemarks());
+        params.put("InvoiceCompanyPhone", invoice.getContactPhone());
+        params.put("InvoiceCompanyID",    "");
+        params.put("InvoiceCompanyAdd",   invoice.getCompanyAddress());
+        params.put("InvoiceCompanyBank",  invoice.getCompanyBank());
+        params.put("InvoiceCompanyBankNo",invoice.getCompanyBankNo());
+        params.put("InvoiceZipCode",      invoice.getZipCode());
+        params.put("Invoice_strAdd",      invoice.getMailAddress());
+        params.put("Invoice_strName",     invoice.getContactName());
+        params.put("Invoice_strPhone",    invoice.getContactPhone());
+        params.put("Invoice_strEmail",    invoice.getContactEmail());
+        params.put("ServiceOrderIDPK",   invoice.getLegacyServiceOrderId());
+        params.put("InvoiceMoney",        invoice.getInvoiceMoney());
+
+        Integer oaUserId = 0;
+        if (invoice.getApplyUserId() != null) {
+            SysUser user = sysUserMapper.selectUserById(invoice.getApplyUserId());
+            if (user != null && user.getOaUserId() != null) {
+                oaUserId = user.getOaUserId();
+            }
+        }
+        params.put("ApplyOAID", oaUserId);
+
+        try {
+            if (invoice.getLegacyInvoiceId() != null && invoice.getLegacyInvoiceId() > 0) {
+                // 鏃х郴缁熷凡鏈夎褰曪紝UPDATE
+                params.put("InvoiceID", invoice.getLegacyInvoiceId());
+                int rows = legacyInvoiceMapper.updateLegacyInvoice(params);
+                if (rows > 0) {
+                    invoice.setSyncStatus(1);
+                    sysInvoiceMapper.updateSysInvoice(invoice);
+                    log.info("鍙戠エ缂栬緫鍚屾鏃х郴缁熸垚鍔�(UPDATE), invoiceId={}, legacyId={}", invoiceId, invoice.getLegacyInvoiceId());
+                }
+            } else {
+                // 鏃х郴缁熸棤璁板綍锛岄噸鏂� INSERT
+                params.put("ServiceOrderIDPK", invoice.getLegacyServiceOrderId());
+                int rows = legacyInvoiceMapper.insertLegacyInvoice(params);
+                if (rows > 0) {
+                    Object legacyId = params.get("InvoiceID");
+                    if (legacyId != null) {
+                        invoice.setLegacyInvoiceId(Integer.valueOf(legacyId.toString()));
+                    }
+                    invoice.setSyncStatus(1);
+                    sysInvoiceMapper.updateSysInvoice(invoice);
+                    log.info("鍙戠エ缂栬緫鍚屾鏃х郴缁熸垚鍔�(INSERT), invoiceId={}", invoiceId);
+                }
+            }
+        } catch (Exception e) {
+            log.error("鍙戠エ缂栬緫鍚屾鏃х郴缁熷紓甯�, invoiceId={}: {}", invoiceId, e.getMessage());
+            invoice.setSyncStatus(2);
+            sysInvoiceMapper.updateSysInvoice(invoice);
+        }
+    }
+
+    /**
      * 浠庢棫绯荤粺鍚屾鍙戠エ鐘舵�佸彉鍖�
      */
     @Override

--
Gitblit v1.9.1