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