From 0f994c67ff258fb93aa85ae90200e3db2b5f97f4 Mon Sep 17 00:00:00 2001
From: hongjli <3117313295@qq.com>
Date: 星期三, 21 五月 2025 16:00:34 +0800
Subject: [PATCH] 新增定时任务,获取标准焊缝数据接口数据
---
aps-modules/aps-job/src/main/resources/mapper/job/ApsWeldSeamStandardJobMapper.xml | 64 +++++++
aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsWeldSeamStandardJobMapper.java | 39 ++++
aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsWeldSeamStandardMapper.java | 31 +++
aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java | 10 +
aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWeldSeamStandardJobServiceImpl.java | 215 +++++++++++++++++++++++
aps-modules/aps-job/src/main/resources/mapper/job/ApsWeldSeamStandardMapper.xml | 35 +++
aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsWeldSeamStandardJob.java | 56 ++++++
aps-modules/aps-job/src/main/java/com/aps/job/service/IApsWeldSeamStandardJobService.java | 44 ++++
8 files changed, 494 insertions(+), 0 deletions(-)
diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsWeldSeamStandardJob.java b/aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsWeldSeamStandardJob.java
new file mode 100644
index 0000000..f0c0a45
--- /dev/null
+++ b/aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsWeldSeamStandardJob.java
@@ -0,0 +1,56 @@
+package com.aps.job.domain;
+
+import com.aps.common.core.annotation.Excel;
+import com.aps.common.core.web.domain.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ * 鐒婄紳鏍囧噯瀵硅薄 aps_weld_seam_standard_job
+ *
+ * @author user
+ * @date 2023-11-05
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ApsWeldSeamStandardJob extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 涓婚敭ID */
+ private Long id;
+
+ /** 鏂欏彿锛堟帴鍙d腑瀵瑰簲plantCount鎴杤erId锛� */
+ @Excel(name = "鏂欏彿")
+ private String itemCode;
+
+ /** 鍥惧彿 */
+ @Excel(name = "鍥惧彿")
+ private String itemFigure;
+
+ /** 鐗堟湰鍙� */
+ @Excel(name = "鐗堟湰鍙�")
+ private String itemFigureVersion;
+
+ /** 鍗曚欢鐒婄紳鏁帮紙Hup锛� */
+ @Excel(name = "鍗曚欢鐒婄紳鏁帮紙Hup锛�")
+ private BigDecimal hupQty;
+
+ /** 鍗曚欢鐒婄紳鏁帮紙LOD锛� */
+ @Excel(name = "鍗曚欢鐒婄紳鏁帮紙LOD锛�")
+ private BigDecimal lodQty;
+
+ /** 鐒婃帴褰㈠紡(hup\lod) */
+ @Excel(name = "鐒婃帴褰㈠紡")
+ private String type;
+
+ /** 鏄惁鍒犻櫎(0鍚︼紝1鏄�) */
+ private Integer delFlag;
+}
\ No newline at end of file
diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsWeldSeamStandardJobMapper.java b/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsWeldSeamStandardJobMapper.java
new file mode 100644
index 0000000..02e4612
--- /dev/null
+++ b/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsWeldSeamStandardJobMapper.java
@@ -0,0 +1,39 @@
+package com.aps.job.mapper;
+
+import com.aps.job.domain.ApsWeldSeamStandardJob;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 鐒婄紳鏍囧噯Job Mapper鎺ュ彛
+ *
+ * @author user
+ * @date 2023-11-05
+ */
+@Mapper
+public interface ApsWeldSeamStandardJobMapper
+{
+ /**
+ * 鏌ヨ鐒婄紳鏍囧噯鍒楄〃
+ *
+ * @param apsWeldSeamStandardJob 鐒婄紳鏍囧噯
+ * @return 鐒婄紳鏍囧噯闆嗗悎
+ */
+ public List<ApsWeldSeamStandardJob> selectApsWeldSeamStandardJobList(ApsWeldSeamStandardJob apsWeldSeamStandardJob);
+
+ /**
+ * 鍒犻櫎鎵�鏈夌剨缂濇爣鍑咼ob鏁版嵁
+ *
+ * @return 缁撴灉
+ */
+ public int deleteAllApsWeldSeamStandardJob();
+
+ /**
+ * 鎵归噺鏂板鐒婄紳鏍囧噯Job
+ *
+ * @param list 鐒婄紳鏍囧噯Job鍒楄〃
+ * @return 缁撴灉
+ */
+ public int batchInsertApsWeldSeamStandardJob(List<ApsWeldSeamStandardJob> list);
+}
\ No newline at end of file
diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsWeldSeamStandardMapper.java b/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsWeldSeamStandardMapper.java
new file mode 100644
index 0000000..a4181f5
--- /dev/null
+++ b/aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsWeldSeamStandardMapper.java
@@ -0,0 +1,31 @@
+package com.aps.job.mapper;
+
+import com.aps.job.domain.ApsWeldSeamStandardJob;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 鐒婄紳鏍囧噯涓氬姟琛� Mapper鎺ュ彛
+ *
+ * @author user
+ * @date 2023-11-05
+ */
+@Mapper
+public interface ApsWeldSeamStandardMapper
+{
+ /**
+ * 鍒犻櫎鎵�鏈夌剨缂濇爣鍑嗘暟鎹�
+ *
+ * @return 缁撴灉
+ */
+ public int deleteAllApsWeldSeamStandard();
+
+ /**
+ * 鎵归噺鏂板鐒婄紳鏍囧噯
+ *
+ * @param list 鐒婄紳鏍囧噯Job鍒楄〃
+ * @return 缁撴灉
+ */
+ public int batchInsertApsWeldSeamStandard(List<ApsWeldSeamStandardJob> list);
+}
\ No newline at end of file
diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/service/IApsWeldSeamStandardJobService.java b/aps-modules/aps-job/src/main/java/com/aps/job/service/IApsWeldSeamStandardJobService.java
new file mode 100644
index 0000000..2376959
--- /dev/null
+++ b/aps-modules/aps-job/src/main/java/com/aps/job/service/IApsWeldSeamStandardJobService.java
@@ -0,0 +1,44 @@
+package com.aps.job.service;
+
+import com.aps.job.domain.ApsWeldSeamStandardJob;
+
+import java.util.List;
+
+/**
+ * 鐒婄紳鏍囧噯Job Service鎺ュ彛
+ *
+ * @author user
+ * @date 2023-11-05
+ */
+public interface IApsWeldSeamStandardJobService
+{
+ /**
+ * 鏌ヨ鐒婄紳鏍囧噯鍒楄〃
+ *
+ * @param apsWeldSeamStandardJob 鐒婄紳鏍囧噯
+ * @return 鐒婄紳鏍囧噯闆嗗悎
+ */
+ public List<ApsWeldSeamStandardJob> selectApsWeldSeamStandardJobList(ApsWeldSeamStandardJob apsWeldSeamStandardJob);
+
+ /**
+ * 鍒犻櫎鎵�鏈夌剨缂濇爣鍑咼ob鏁版嵁
+ *
+ * @return 缁撴灉
+ */
+ public int deleteAllApsWeldSeamStandardJob();
+
+ /**
+ * 鎵归噺鏂板鐒婄紳鏍囧噯Job
+ *
+ * @param list 鐒婄紳鏍囧噯Job鍒楄〃
+ * @return 缁撴灉
+ */
+ public int batchInsertApsWeldSeamStandardJob(List<ApsWeldSeamStandardJob> list);
+
+ /**
+ * 鍚屾鐗╂枡鏍囧噯鐒婄紳鏁版嵁
+ *
+ * @return 缁撴灉
+ */
+ public boolean syncWeldSeamStandardData();
+}
\ No newline at end of file
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..3e6c84b
--- /dev/null
+++ b/aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWeldSeamStandardJobServiceImpl.java
@@ -0,0 +1,215 @@
+package com.aps.job.service.impl;
+
+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 {
+ // 浣跨敤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;
+ }
+
+ // 娓呯┖鏃ф暟鎹�
+ deleteAllApsWeldSeamStandardJob();
+
+ // 鎵归噺鎻掑叆鏂版暟鎹�
+ batchInsertApsWeldSeamStandardJob(jobList);
+
+ // 鍚屾鏁版嵁鍒颁笟鍔¤〃
+ syncToBizTable(jobList);
+
+ return true;
+ } catch (Exception e) {
+ log.error("鍚屾鐗╂枡鏍囧噯鐒婄紳鏁版嵁寮傚父", e);
+ throw e;
+ }
+ }
+
+ /**
+ * 鍚屾鏁版嵁鍒颁笟鍔¤〃
+ *
+ * @param jobList 鐒婄紳鏍囧噯Job鏁版嵁鍒楄〃
+ */
+ private void syncToBizTable(List<ApsWeldSeamStandardJob> jobList) {
+ try {
+ // 鍒犻櫎涓氬姟琛ㄦ暟鎹紙鍏ㄩ噺瑕嗙洊锛�
+ apsWeldSeamStandardMapper.deleteAllApsWeldSeamStandard();
+
+ if (jobList == null || jobList.isEmpty()) {
+ return;
+ }
+
+ // 鎵归噺鎻掑叆鏁版嵁鍒颁笟鍔¤〃
+ apsWeldSeamStandardMapper.batchInsertApsWeldSeamStandard(jobList);
+ } catch (Exception e) {
+ log.error("鍚屾鐗╂枡鏍囧噯鐒婄紳鏁版嵁鍒颁笟鍔¤〃寮傚父", e);
+ throw e;
+ }
+ }
+}
\ No newline at end of file
diff --git a/aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java b/aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java
index 5a7a1f2..432b58e 100644
--- a/aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java
+++ b/aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java
@@ -43,6 +43,9 @@
@Autowired
private IApsMaterialManagementJobService apsMaterialManagementJobService;
+
+ @Autowired
+ private IApsWeldSeamStandardJobService apsWeldSeamStandardJobService;
public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
{
@@ -202,5 +205,12 @@
public void setPlateSubPlansToRedis(){
remoteCoreService.setPlateSubPlansToRedis(SecurityConstants.INNER);
}
+
+ /**
+ * 鍚屾鐗╂枡鏍囧噯鐒婄紳鏁版嵁
+ */
+ public void syncWeldSeamStandardData() {
+ apsWeldSeamStandardJobService.syncWeldSeamStandardData();
+ }
}
diff --git a/aps-modules/aps-job/src/main/resources/mapper/job/ApsWeldSeamStandardJobMapper.xml b/aps-modules/aps-job/src/main/resources/mapper/job/ApsWeldSeamStandardJobMapper.xml
new file mode 100644
index 0000000..d2d2a3e
--- /dev/null
+++ b/aps-modules/aps-job/src/main/resources/mapper/job/ApsWeldSeamStandardJobMapper.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.aps.job.mapper.ApsWeldSeamStandardJobMapper">
+
+ <resultMap type="com.aps.job.domain.ApsWeldSeamStandardJob" id="ApsWeldSeamStandardJobResult">
+ <result property="id" column="id" />
+ <result property="itemCode" column="item_code" />
+ <result property="itemFigure" column="item_figure" />
+ <result property="itemFigureVersion" column="item_figure_version" />
+ <result property="hupQty" column="hup_qty" />
+ <result property="lodQty" column="lod_qty" />
+ <result property="type" column="type" />
+ <result property="delFlag" column="del_flag" />
+ </resultMap>
+
+ <sql id="selectApsWeldSeamStandardJobVo">
+ select id, item_code, item_figure, item_figure_version, hup_qty, lod_qty, type, del_flag from aps_weld_seam_standard_job
+ </sql>
+
+ <select id="selectApsWeldSeamStandardJobList" parameterType="com.aps.job.domain.ApsWeldSeamStandardJob" resultMap="ApsWeldSeamStandardJobResult">
+ <include refid="selectApsWeldSeamStandardJobVo"/>
+ <where>
+ <if test="itemCode != null and itemCode != ''"> and item_code LIKE '%' || #{itemCode} || '%'</if>
+ <if test="itemFigure != null and itemFigure != ''"> and item_figure = #{itemFigure}</if>
+ <if test="itemFigureVersion != null and itemFigureVersion != ''"> and item_figure_version = #{itemFigureVersion}</if>
+ <if test="hupQty != null "> and hup_qty = #{hupQty}</if>
+ <if test="lodQty != null "> and lod_qty = #{lodQty}</if>
+ <if test="type != null and type != ''"> and type = #{type}</if>
+ and del_flag = 0
+ </where>
+ </select>
+
+ <delete id="deleteAllApsWeldSeamStandardJob">
+ delete from aps_weld_seam_standard_job
+ </delete>
+
+ <insert id="batchInsertApsWeldSeamStandardJob" parameterType="java.util.List">
+ insert into aps_weld_seam_standard_job(
+ id,
+ item_code,
+ item_figure,
+ item_figure_version,
+ hup_qty,
+ lod_qty,
+ type,
+ del_flag)
+ values
+ <foreach collection="list" item="item" index="index" separator=",">
+ (
+ #{item.id},
+ #{item.itemCode},
+ #{item.itemFigure},
+ #{item.itemFigureVersion},
+ #{item.hupQty},
+ #{item.lodQty},
+ #{item.type},
+ 0
+ )
+ </foreach>
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/aps-modules/aps-job/src/main/resources/mapper/job/ApsWeldSeamStandardMapper.xml b/aps-modules/aps-job/src/main/resources/mapper/job/ApsWeldSeamStandardMapper.xml
new file mode 100644
index 0000000..7c0ab25
--- /dev/null
+++ b/aps-modules/aps-job/src/main/resources/mapper/job/ApsWeldSeamStandardMapper.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.aps.job.mapper.ApsWeldSeamStandardMapper">
+
+ <delete id="deleteAllApsWeldSeamStandard">
+ delete from aps_weld_seam_standard
+ </delete>
+
+ <insert id="batchInsertApsWeldSeamStandard" parameterType="java.util.List">
+ insert into aps_weld_seam_standard(
+ id,
+ item_code,
+ item_figure,
+ item_figure_version,
+ hup_qty,
+ lod_qty,
+ type,
+ del_flag)
+ values
+ <foreach collection="list" item="item" index="index" separator=",">
+ (
+ #{item.id},
+ #{item.itemCode},
+ #{item.itemFigure},
+ #{item.itemFigureVersion},
+ #{item.hupQty},
+ #{item.lodQty},
+ #{item.type},
+ 0
+ )
+ </foreach>
+ </insert>
+</mapper>
\ No newline at end of file
--
Gitblit v1.9.3