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