From d15216828c3d4fe0192b5136bdc9da1b74670b72 Mon Sep 17 00:00:00 2001 From: eric <465889110@qq.com> Date: Tue, 23 Sep 2025 12:59:10 +0800 Subject: [PATCH] no message --- .../com/sczx/sync/config/AsyncConfig.java | 30 +--- .../controller/ReceiveBatteryController.java | 145 +++++++++++++++++- .../com/sczx/sync/dto/BatteryCategory.java | 24 +++ .../sync/mapper/BatteryCategoryMapper.java | 31 ++++ .../com/sczx/sync/service/ReceiveService.java | 2 + .../sync/service/impl/ReceiveServiceImpl.java | 26 ++++ .../mapper/BatteryCategoryMapper.xml | 121 +++++++++++++++ 7 files changed, 342 insertions(+), 37 deletions(-) create mode 100644 src/main/java/com/sczx/sync/dto/BatteryCategory.java create mode 100644 src/main/java/com/sczx/sync/mapper/BatteryCategoryMapper.java create mode 100644 src/main/resources/mapper/BatteryCategoryMapper.xml diff --git a/src/main/java/com/sczx/sync/config/AsyncConfig.java b/src/main/java/com/sczx/sync/config/AsyncConfig.java index 3821d74..321c630 100644 --- a/src/main/java/com/sczx/sync/config/AsyncConfig.java +++ b/src/main/java/com/sczx/sync/config/AsyncConfig.java @@ -8,46 +8,18 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import java.util.concurrent.Executor; import java.util.concurrent.ThreadPoolExecutor; -/** - * 异步配置类 - * - * @author sczx - */ @Configuration @EnableAsync public class AsyncConfig { - /** - * 异步任务执行器 - */ @Bean("taskExecutor") public Executor taskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - - // 核心线程数 executor.setCorePoolSize(10); - - // 最大线程数 executor.setMaxPoolSize(20); - - // 队列容量 executor.setQueueCapacity(500); - - // 线程空闲时间 - executor.setKeepAliveSeconds(60); - - // 线程名前缀 - executor.setThreadNamePrefix("async-task-"); - - // 拒绝策略 + executor.setThreadNamePrefix("data-sync-async-"); executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - - // 等待所有任务结束后再关闭线程池 - executor.setWaitForTasksToCompleteOnShutdown(true); - - // 等待时间 - executor.setAwaitTerminationSeconds(60); - executor.initialize(); return executor; } diff --git a/src/main/java/com/sczx/sync/controller/ReceiveBatteryController.java b/src/main/java/com/sczx/sync/controller/ReceiveBatteryController.java index 5049b57..7ee9f60 100644 --- a/src/main/java/com/sczx/sync/controller/ReceiveBatteryController.java +++ b/src/main/java/com/sczx/sync/controller/ReceiveBatteryController.java @@ -12,12 +12,20 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Lazy; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.HashMap; import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; import static com.sczx.sync.common.enums.ApiErrorCode.NOT_PERMISSION; @@ -30,36 +38,157 @@ import static com.sczx.sync.common.enums.ApiErrorCode.NOT_PERMISSION; @Slf4j @RestController @RequestMapping("/b2c") +@EnableAsync public class ReceiveBatteryController { @Autowired private ReceiveService receiveService; + @Autowired + @Lazy + @Qualifier("taskExecutor") + private Executor taskExecutor; + @ApiOperation(value = "接收租电数据接口") @PostMapping("/batterymeal") - public Map batteryMeal(@RequestBody String receiveMealReq) { - return receiveService.recceiveMeals(receiveMealReq); + public CompletableFuture>> batteryMeal(@RequestBody String receive) { + return CompletableFuture + .supplyAsync(() -> { + try { + return receiveService.recceiveMeals(receive); + } catch (Exception e) { + log.error("处理电池类型数据时发生异常", e); + Map errorResponse = new HashMap<>(); + errorResponse.put("code", "9999"); + errorResponse.put("msg", "处理失败: " + e.getMessage()); + return errorResponse; + } + }, taskExecutor) + .thenApply(result -> { + log.info("电池类型数据处理完成,返回结果: {}", result); + return ResponseEntity.ok(result); + }) + .exceptionally(throwable -> { + log.error("异步处理电池类型数据时发生异常", throwable); + Map errorResponse = new HashMap<>(); + errorResponse.put("code", "9999"); + errorResponse.put("msg", "系统异常"); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorResponse); + }); } @ApiOperation(value = "接收用户数据接口") @PostMapping("/userinfo") - public Map userInfo(@RequestBody String receiveMealReq){ - return receiveService.recceiveUserInfo(receiveMealReq); + public CompletableFuture>> userInfo(@RequestBody String receive){ + return CompletableFuture + .supplyAsync(() -> { + try { + return receiveService.recceiveUserInfo(receive); + } catch (Exception e) { + log.error("处理电池类型数据时发生异常", e); + Map errorResponse = new HashMap<>(); + errorResponse.put("code", "9999"); + errorResponse.put("msg", "处理失败: " + e.getMessage()); + return errorResponse; + } + }, taskExecutor) + .thenApply(result -> { + log.info("电池类型数据处理完成,返回结果: {}", result); + return ResponseEntity.ok(result); + }) + .exceptionally(throwable -> { + log.error("异步处理电池类型数据时发生异常", throwable); + Map errorResponse = new HashMap<>(); + errorResponse.put("code", "9999"); + errorResponse.put("msg", "系统异常"); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorResponse); + }); } @ApiOperation(value = "接收运营商数据接口") @PostMapping("/companyinfo") - public Map companyInfo(@RequestBody String receiveMealReq){ - return receiveService.recceiveCompanyInfo(receiveMealReq); + public CompletableFuture>> companyInfo(@RequestBody String receive){ + return CompletableFuture + .supplyAsync(() -> { + try { + return receiveService.recceiveCompanyInfo(receive); + } catch (Exception e) { + log.error("处理电池类型数据时发生异常", e); + Map errorResponse = new HashMap<>(); + errorResponse.put("code", "9999"); + errorResponse.put("msg", "处理失败: " + e.getMessage()); + return errorResponse; + } + }, taskExecutor) + .thenApply(result -> { + log.info("电池类型数据处理完成,返回结果: {}", result); + return ResponseEntity.ok(result); + }) + .exceptionally(throwable -> { + log.error("异步处理电池类型数据时发生异常", throwable); + Map errorResponse = new HashMap<>(); + errorResponse.put("code", "9999"); + errorResponse.put("msg", "系统异常"); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorResponse); + }); } @ApiOperation(value = "接收门店数据接口") @PostMapping("/storeinfo") - public Map storeInfo(@RequestBody String receiveMealReq){ - return receiveService.recceiveStoreInfo(receiveMealReq); + public CompletableFuture>> storeInfo(@RequestBody String receive){ + return CompletableFuture + .supplyAsync(() -> { + try { + return receiveService.recceiveStoreInfo(receive); + } catch (Exception e) { + log.error("处理电池类型数据时发生异常", e); + Map errorResponse = new HashMap<>(); + errorResponse.put("code", "9999"); + errorResponse.put("msg", "处理失败: " + e.getMessage()); + return errorResponse; + } + }, taskExecutor) + .thenApply(result -> { + log.info("电池类型数据处理完成,返回结果: {}", result); + return ResponseEntity.ok(result); + }) + .exceptionally(throwable -> { + log.error("异步处理电池类型数据时发生异常", throwable); + Map errorResponse = new HashMap<>(); + errorResponse.put("code", "9999"); + errorResponse.put("msg", "系统异常"); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorResponse); + }); } + @ApiOperation(value = "接收电池类型数据接口") + @PostMapping("/categoryinfo") + public CompletableFuture>> categoryInfo(@RequestBody String receive) { + return CompletableFuture + .supplyAsync(() -> { + try { + return receiveService.recceiveCategoryInfo(receive); + } catch (Exception e) { + log.error("处理电池类型数据时发生异常", e); + Map errorResponse = new HashMap<>(); + errorResponse.put("code", "9999"); + errorResponse.put("msg", "处理失败: " + e.getMessage()); + return errorResponse; + } + }, taskExecutor) + .thenApply(result -> { + log.info("电池类型数据处理完成,返回结果: {}", result); + return ResponseEntity.ok(result); + }) + .exceptionally(throwable -> { + log.error("异步处理电池类型数据时发生异常", throwable); + Map errorResponse = new HashMap<>(); + errorResponse.put("code", "9999"); + errorResponse.put("msg", "系统异常"); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorResponse); + }); + } } diff --git a/src/main/java/com/sczx/sync/dto/BatteryCategory.java b/src/main/java/com/sczx/sync/dto/BatteryCategory.java new file mode 100644 index 0000000..e4f6766 --- /dev/null +++ b/src/main/java/com/sczx/sync/dto/BatteryCategory.java @@ -0,0 +1,24 @@ +package com.sczx.sync.dto; + +import lombok.Data; + +@Data +public class BatteryCategory { + + private Integer id; + private String category_name; + private String product; + private String icon; + private Integer is_delete; + private String voltage; + private String ah; + private String max_voltage; + private String max_charge; + private Integer batch; + private Integer cell_id; + private Integer charge_id; + private Integer operator_id; + private Integer protect_id; + private Integer supplier_id; + +} diff --git a/src/main/java/com/sczx/sync/mapper/BatteryCategoryMapper.java b/src/main/java/com/sczx/sync/mapper/BatteryCategoryMapper.java new file mode 100644 index 0000000..5a72a46 --- /dev/null +++ b/src/main/java/com/sczx/sync/mapper/BatteryCategoryMapper.java @@ -0,0 +1,31 @@ +package com.sczx.sync.mapper; + +import com.sczx.sync.dto.BatteryCategory; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface BatteryCategoryMapper { + + + + /** + * 根据ID查询电池类别 + * @param id 主键ID + * @return 电池类别对象 + */ + BatteryCategory selectById(@Param("id") Integer id); + + /** + * 插入电池类别 + * @param batteryCategory 电池类别对象 + * @return 影响行数 + */ + int insert(BatteryCategory batteryCategory); + + + int update(BatteryCategory batteryCategory); + +} diff --git a/src/main/java/com/sczx/sync/service/ReceiveService.java b/src/main/java/com/sczx/sync/service/ReceiveService.java index d3ffa99..775b5d4 100644 --- a/src/main/java/com/sczx/sync/service/ReceiveService.java +++ b/src/main/java/com/sczx/sync/service/ReceiveService.java @@ -11,4 +11,6 @@ public interface ReceiveService { Map recceiveCompanyInfo(String request); Map recceiveStoreInfo(String request); + + Map recceiveCategoryInfo(String request); } diff --git a/src/main/java/com/sczx/sync/service/impl/ReceiveServiceImpl.java b/src/main/java/com/sczx/sync/service/impl/ReceiveServiceImpl.java index 31308f6..ce8a87c 100644 --- a/src/main/java/com/sczx/sync/service/impl/ReceiveServiceImpl.java +++ b/src/main/java/com/sczx/sync/service/impl/ReceiveServiceImpl.java @@ -3,6 +3,7 @@ package com.sczx.sync.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.nacos.common.utils.MD5Utils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.sczx.sync.dto.BatteryCategory; import com.sczx.sync.dto.NoticeReq; import com.sczx.sync.entity.UserInfo; import com.sczx.sync.mapper.*; @@ -38,6 +39,8 @@ public class ReceiveServiceImpl implements ReceiveService { private CompanyStoreMapper companyStoreMapper; @Autowired private NoticeMapper noticeMapper; + @Autowired + private BatteryCategoryMapper batteryCategoryMapper; @Value("${battery-platform.appid}") private String appId; @@ -428,4 +431,27 @@ public class ReceiveServiceImpl implements ReceiveService { return map; } + @Override + public Map recceiveCategoryInfo(String request) { + log.info("接收电池类型数据:{}", JSON.toJSONString(request)); + SyncRequest syncRequest = JSON.parseObject(request, SyncRequest.class); + Map map = new HashMap<>(); + if (!syncRequest.getAppid().equals(appId) || !syncRequest.getAccessToken().equals(accessToken)) { + map.put("msg", "没有权限"); + map.put("code", "500"); + return map; + } + BatteryCategory batteryCategory = JSON.parseObject(String.valueOf(syncRequest.getData()), BatteryCategory.class); + + BatteryCategory Bc = batteryCategoryMapper.selectById(batteryCategory.getId()); + if (Bc != null){ + batteryCategoryMapper.update(batteryCategory); + }else{ + batteryCategoryMapper.insert(batteryCategory); + } + map.put("msg", "成功"); + map.put("code", "200"); + return map; + } + } diff --git a/src/main/resources/mapper/BatteryCategoryMapper.xml b/src/main/resources/mapper/BatteryCategoryMapper.xml new file mode 100644 index 0000000..439a706 --- /dev/null +++ b/src/main/resources/mapper/BatteryCategoryMapper.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + zc_battery_category + + + + id, category_name, product, icon, is_delete, voltage, ah, max_voltage, + max_charge, batch, cell_id, charge_id, operator_id, protect_id, supplier_id + + + + + UPDATE + + + + category_name = #{category_name}, + + + product = #{product}, + + + icon = #{icon}, + + + is_delete = #{is_delete}, + + + voltage = #{voltage}, + + + ah = #{ah}, + + + max_voltage = #{max_voltage}, + + + max_charge = #{max_charge}, + + + batch = #{batch}, + + + cell_id = #{cell_id}, + + + charge_id = #{charge_id}, + + + operator_id = #{operator_id}, + + + protect_id = #{protect_id}, + + + supplier_id = #{supplier_id}, + + + WHERE id = #{id} + + + + + + + + INSERT INTO + + ( + + ) + VALUES ( + #{id}, + #{category_name}, + #{product}, + #{icon}, + #{is_delete}, + #{voltage}, + #{ah}, + #{max_voltage}, + #{max_charge}, + #{batch}, + #{cell_id}, + #{charge_id}, + #{operator_id}, + #{protect_id}, + #{supplier_id} + ) + + +