From 2a64b537e8e3bce9ce030585a3da17d48379c0ad Mon Sep 17 00:00:00 2001
From: sfd <sun.sunshine@163.com>
Date: 星期一, 26 五月 2025 15:04:45 +0800
Subject: [PATCH] 修改json类型转换错误

---
 aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWeldSeamStandardJobServiceImpl.java |  223 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 223 insertions(+), 0 deletions(-)

diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWeldSeamStandardJobServiceImpl.java b/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWeldSeamStandardJobServiceImpl.java
new file mode 100644
index 0000000..99f01a4
--- /dev/null
+++ b/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWeldSeamStandardJobServiceImpl.java
@@ -0,0 +1,223 @@
+package com.aps.job.service.impl;
+
+import cn.hutool.core.collection.ListUtil;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.aps.common.core.utils.StringUtils;
+import com.aps.common.security.utils.SecurityUtils;
+import com.aps.job.domain.ApsWeldSeamStandardJob;
+import com.aps.job.mapper.ApsWeldSeamStandardMapper;
+import com.aps.job.mapper.ApsWeldSeamStandardJobMapper;
+import com.aps.job.service.IApsWeldSeamStandardJobService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.client.RestTemplate;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * 鐒婄紳鏍囧噯Job Service涓氬姟灞傚鐞�
+ * 
+ * @author user
+ * @date 2023-11-05
+ */
+@Slf4j
+@Service
+public class ApsWeldSeamStandardJobServiceImpl implements IApsWeldSeamStandardJobService 
+{
+    @Autowired
+    private ApsWeldSeamStandardJobMapper apsWeldSeamStandardJobMapper;
+    
+    @Autowired
+    private ApsWeldSeamStandardMapper apsWeldSeamStandardMapper;
+    
+    @Autowired
+    private RestTemplate restTemplate;
+    
+    @Value("${pipingIntegrationplatform.apsWeldSeamStandard}")
+    private String apsWeldSeamStandardUrl;
+
+    /**
+     * 鏌ヨ鐒婄紳鏍囧噯鍒楄〃
+     * 
+     * @param apsWeldSeamStandardJob 鐒婄紳鏍囧噯
+     * @return 鐒婄紳鏍囧噯闆嗗悎
+     */
+    @Override
+    public List<ApsWeldSeamStandardJob> selectApsWeldSeamStandardJobList(ApsWeldSeamStandardJob apsWeldSeamStandardJob)
+    {
+        return apsWeldSeamStandardJobMapper.selectApsWeldSeamStandardJobList(apsWeldSeamStandardJob);
+    }
+
+    /**
+     * 鍒犻櫎鎵�鏈夌剨缂濇爣鍑咼ob鏁版嵁
+     * 
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteAllApsWeldSeamStandardJob()
+    {
+        return apsWeldSeamStandardJobMapper.deleteAllApsWeldSeamStandardJob();
+    }
+    
+    /**
+     * 鎵归噺鏂板鐒婄紳鏍囧噯Job
+     * 
+     * @param list 鐒婄紳鏍囧噯Job鍒楄〃
+     * @return 缁撴灉
+     */
+    @Override
+    public int batchInsertApsWeldSeamStandardJob(List<ApsWeldSeamStandardJob> list)
+    {
+        return apsWeldSeamStandardJobMapper.batchInsertApsWeldSeamStandardJob(list);
+    }
+    
+    /**
+     * 鍚屾鐗╂枡鏍囧噯鐒婄紳鏁版嵁
+     * 
+     * @return 缁撴灉
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean syncWeldSeamStandardData()
+    {
+        try {
+            log.info("寮�濮嬪悓姝ョ墿鏂欐爣鍑嗙剨缂濇暟鎹�");
+            // 浣跨敤POST鏂规硶璋冪敤鎺ュ彛
+            HttpHeaders headers = new HttpHeaders();
+            headers.setContentType(MediaType.APPLICATION_JSON);
+            
+            // 鍑嗗璇锋眰鍙傛暟 - 浼犻�掑伐鍘備唬鐮佸瓧绗︿覆鏁扮粍锛岃缃负绌烘暟缁�
+            String[] plantCodeArray = new String[0];
+            
+            // 鐩存帴浣跨敤瀛楃涓叉暟缁勪綔涓鸿姹備綋
+            HttpEntity<String[]> requestEntity = new HttpEntity<>(plantCodeArray, headers);
+            
+            ResponseEntity<String> responseEntity = restTemplate.postForEntity(apsWeldSeamStandardUrl, requestEntity, String.class);
+            if (!responseEntity.getStatusCode().is2xxSuccessful()) {
+                log.error("鑾峰彇鐗╂枡鏍囧噯鐒婄紳鏁版嵁澶辫触");
+                return false;
+            }
+            
+            String responseBody = responseEntity.getBody();
+            if (StringUtils.isEmpty(responseBody)) {
+                return false;
+            }
+            
+            JSONObject responseJson = JSON.parseObject(responseBody);
+            
+            // 妫�鏌ヨ繑鍥炵爜
+            if (responseJson.getIntValue("code") != 0) {
+                return false;
+            }
+            
+            // 鑾峰彇鎺ュ彛杩斿洖鐨勬暟鎹�
+            JSONArray weldSeamList = responseJson.getJSONArray("ok");
+            if (weldSeamList == null || weldSeamList.isEmpty()) {
+                return false;
+            }
+            
+            // 瑙f瀽鏁版嵁骞惰浆鎹负瀹炰綋瀵硅薄
+            List<ApsWeldSeamStandardJob> jobList = new ArrayList<>();
+            AtomicLong idCounter = new AtomicLong(System.currentTimeMillis()); // 浣跨敤褰撳墠鏃堕棿鎴充綔涓鸿捣濮婭D
+            
+            for (int i = 0; i < weldSeamList.size(); i++) {
+                JSONObject item = weldSeamList.getJSONObject(i);
+                
+                // 浣跨敤姝g‘鐨勫瓧娈靛悕绉� plantCode
+                String plantCode = item.getString("plantCode");
+                
+                // 鑾峰彇UHP鍜孡OD鏁伴噺
+                BigDecimal uhpCount = null;
+                BigDecimal lodCount = null;
+                
+                try {
+                    uhpCount = item.getBigDecimal("uhpCount");
+                } catch (Exception e) {
+                    // 蹇界暐寮傚父
+                }
+                
+                try {
+                    lodCount = item.getBigDecimal("lodCount");
+                } catch (Exception e) {
+                    // 蹇界暐寮傚父
+                }
+                
+                // 鍒ゆ柇鏁版嵁鏄惁瀹屾暣
+                if (StringUtils.isEmpty(plantCode)) {
+                    continue;
+                }
+                
+                ApsWeldSeamStandardJob job = new ApsWeldSeamStandardJob();
+                // 涓篿d璧嬪�硷紝浣跨敤鑷闀挎暣鍨�
+                job.setId(idCounter.incrementAndGet());
+                job.setItemCode(plantCode);  // 鏄犲皠鍏崇郴: plantCode -> itemCode
+                job.setHupQty(uhpCount);     // 鏄犲皠鍏崇郴: uhpCount -> hupQty
+                job.setLodQty(lodCount);     // 鏄犲皠鍏崇郴: lodCount -> lodQty
+                job.setDelFlag(0);
+                // 涓嶅啀璁剧疆createBy鍜宑reateTime
+                jobList.add(job);
+            }
+            
+            if (jobList.isEmpty()) {
+                return false;
+            }
+            log.info("娓呯┖鏃ф暟鎹� deleteAllApsWeldSeamStandardJob");
+            // 娓呯┖鏃ф暟鎹�
+            deleteAllApsWeldSeamStandardJob();
+            
+            // 鎵归噺鎻掑叆鏂版暟鎹�
+            List<List<ApsWeldSeamStandardJob>> dataGroup = ListUtil.split(jobList, 1000);
+            for (List<ApsWeldSeamStandardJob> data : dataGroup) {
+                batchInsertApsWeldSeamStandardJob(data);
+            }
+
+            // 鍒犻櫎涓氬姟琛ㄦ暟鎹紙鍏ㄩ噺瑕嗙洊锛�
+            deleteAllApsWeldSeamStandard();
+            // 鍚屾鏁版嵁鍒颁笟鍔¤〃
+            for (List<ApsWeldSeamStandardJob> data : dataGroup) {
+                syncToBizTable(data);
+            }
+            return true;
+        } catch (Exception e) {
+            log.error("鍚屾鐗╂枡鏍囧噯鐒婄紳鏁版嵁寮傚父", e);
+            throw e;
+        }
+    }
+
+    private void deleteAllApsWeldSeamStandard() {
+        apsWeldSeamStandardMapper.deleteAllApsWeldSeamStandard();
+    }
+    /**
+     * 鍚屾鏁版嵁鍒颁笟鍔¤〃
+     * 
+     * @param jobList 鐒婄紳鏍囧噯Job鏁版嵁鍒楄〃
+     */
+    private void syncToBizTable(List<ApsWeldSeamStandardJob> jobList) {
+        try {
+            if (jobList == null || jobList.isEmpty()) {
+                return;
+            }
+            
+            // 鎵归噺鎻掑叆鏁版嵁鍒颁笟鍔¤〃
+            apsWeldSeamStandardMapper.batchInsertApsWeldSeamStandard(jobList);
+        } catch (Exception e) {
+            log.error("鍚屾鐗╂枡鏍囧噯鐒婄紳鏁版嵁鍒颁笟鍔¤〃寮傚父", e);
+            throw e;
+        }
+    }
+} 
\ No newline at end of file

--
Gitblit v1.9.3