diff --git a/youchain-logging/src/main/java/com/youchain/service/LogService.java b/youchain-logging/src/main/java/com/youchain/service/LogService.java index d10ba84..f92915d 100644 --- a/youchain-logging/src/main/java/com/youchain/service/LogService.java +++ b/youchain-logging/src/main/java/com/youchain/service/LogService.java @@ -67,13 +67,11 @@ public interface LogService { * @param joinPoint / * @param log 日志实体 */ - @Async + void save(String url, String returnValue, String username, String browser, String ip, JoinPoint joinPoint, Log log); - @Async void saveLog(Log log); - @Async void saveLogInfo(Object object, String url, String resultJson, String description, long time); /** diff --git a/youchain-logging/src/main/java/com/youchain/service/impl/LogServiceImpl.java b/youchain-logging/src/main/java/com/youchain/service/impl/LogServiceImpl.java index d09b3cf..14f09d9 100644 --- a/youchain-logging/src/main/java/com/youchain/service/impl/LogServiceImpl.java +++ b/youchain-logging/src/main/java/com/youchain/service/impl/LogServiceImpl.java @@ -35,6 +35,8 @@ import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.reflect.MethodSignature; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestBody; @@ -80,8 +82,10 @@ public class LogServiceImpl implements LogService { return PageUtil.toPage(page.map(logSmallMapper::toDto)); } + @Override @Transactional(rollbackFor = Exception.class) + @Async public void save(String url,String returnValue,String username, String browser, String ip, JoinPoint joinPoint, Log log_data) { if (log_data == null) { throw new IllegalArgumentException("Log 不能为 null!"); @@ -115,6 +119,7 @@ public class LogServiceImpl implements LogService { @Override @Transactional(rollbackFor = Exception.class) + @Async public void saveLog(Log log_data) { if (log_data == null) { throw new IllegalArgumentException("Log 不能为 null!"); @@ -124,6 +129,7 @@ public class LogServiceImpl implements LogService { @Override @Transactional(rollbackFor = Exception.class) + @Async public void saveLogInfo(Object object,String url, String resultJson, String description, long time) { // 设置日志信息 Log log_data = new Log(); diff --git a/youchain-logging/target/classes/com/youchain/service/LogService.class b/youchain-logging/target/classes/com/youchain/service/LogService.class index 2812d39..695f3bf 100644 Binary files a/youchain-logging/target/classes/com/youchain/service/LogService.class and b/youchain-logging/target/classes/com/youchain/service/LogService.class differ diff --git a/youchain-logging/target/classes/com/youchain/service/impl/LogServiceImpl.class b/youchain-logging/target/classes/com/youchain/service/impl/LogServiceImpl.class index 2d0bd2b..b7a2be4 100644 Binary files a/youchain-logging/target/classes/com/youchain/service/impl/LogServiceImpl.class and b/youchain-logging/target/classes/com/youchain/service/impl/LogServiceImpl.class differ diff --git a/youchain-logging/target/generated-sources/annotations/com/youchain/service/mapstruct/LogErrorMapperImpl.java b/youchain-logging/target/generated-sources/annotations/com/youchain/service/mapstruct/LogErrorMapperImpl.java index 3c1ebdc..a1ad2c8 100644 --- a/youchain-logging/target/generated-sources/annotations/com/youchain/service/mapstruct/LogErrorMapperImpl.java +++ b/youchain-logging/target/generated-sources/annotations/com/youchain/service/mapstruct/LogErrorMapperImpl.java @@ -9,7 +9,7 @@ import org.springframework.stereotype.Component; @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2024-04-28T13:35:56+0800", + date = "2024-05-07T17:40:17+0800", comments = "version: 1.4.2.Final, compiler: javac, environment: Java 1.8.0_202 (Oracle Corporation)" ) @Component diff --git a/youchain-logging/target/generated-sources/annotations/com/youchain/service/mapstruct/LogSmallMapperImpl.java b/youchain-logging/target/generated-sources/annotations/com/youchain/service/mapstruct/LogSmallMapperImpl.java index b8aba1b..0cfe01d 100644 --- a/youchain-logging/target/generated-sources/annotations/com/youchain/service/mapstruct/LogSmallMapperImpl.java +++ b/youchain-logging/target/generated-sources/annotations/com/youchain/service/mapstruct/LogSmallMapperImpl.java @@ -9,7 +9,7 @@ import org.springframework.stereotype.Component; @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2024-04-28T13:35:56+0800", + date = "2024-05-07T17:40:17+0800", comments = "version: 1.4.2.Final, compiler: javac, environment: Java 1.8.0_202 (Oracle Corporation)" ) @Component diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/KMReSController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/KMReSController.java index 495887a..a768e25 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/rest/KMReSController.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/rest/KMReSController.java @@ -50,7 +50,6 @@ import static org.springframework.http.HttpStatus.OK; @Api(tags = "KMReS") @RequestMapping("/interfaces/api/amr") @Slf4j -@EnableAsync public class KMReSController { private final AgvTaskService agvTaskService; diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MlsServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MlsServiceImpl.java index e7afcc9..f2b98e7 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MlsServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MlsServiceImpl.java @@ -34,7 +34,7 @@ public class MlsServiceImpl implements MlsService { private final MoService moService; private final PointService pointService; private final InventoryService inventoryService; - private final RedisUtils redisUtils; + private final RedisObjectUtils redisObjectUtils; private final BatchCreateOrUpdate batchCreateOrUpdate; @@ -99,6 +99,10 @@ public class MlsServiceImpl implements MlsService { } JSONObject resulObject = JSON.parseObject(resultJson); + if (resulObject == null) { + throw new IllegalArgumentException("获取送货单接口返回数据为空!"); + } + String code = resulObject.getString("code") == null ? "" : resulObject.getString("code"); String msg = resulObject.getString("msg") == null ? "" : resulObject.getString("msg"); //判断接口是否成功 @@ -106,11 +110,12 @@ public class MlsServiceImpl implements MlsService { throw new IllegalArgumentException("获取送货单接口异常信息:" + msg); } - String data = resulObject.getString("data") == null ? "" : resulObject.getString("data"); - if (StringUtils.isEmpty(data)) { + JSONObject dataObject = resulObject.getJSONObject("data"); + if (dataObject == null) { throw new IllegalArgumentException("获取送货单接口返回数据为空!"); } - JSONObject dataObject = JSON.parseObject(data); + + JSONArray details = dataObject.getJSONArray("list"); //判断是否有送货单数据 if (details == null || details.isEmpty()) { @@ -236,6 +241,9 @@ public class MlsServiceImpl implements MlsService { } JSONObject resulObject = JSON.parseObject(resultJson); + if (resulObject == null) { + throw new IllegalArgumentException("MO票接口返回数据为空!"); + } String code = resulObject.getString("code") == null ? "" : resulObject.getString("code"); String msg = resulObject.getString("msg") == null ? "" : resulObject.getString("msg"); @@ -243,12 +251,11 @@ public class MlsServiceImpl implements MlsService { throw new IllegalArgumentException("MO票接口异常: " + msg); } - String data = resulObject.getString("data") == null ? "" : resulObject.getString("data"); - if (StringUtils.isEmpty(data)) { - throw new IllegalArgumentException("获取MO票接口返回数据为空!"); + JSONObject dataObject = resulObject.getJSONObject("data"); + if (dataObject == null) { + throw new IllegalArgumentException("MO票接口返回数据为空!"); } - JSONObject dataObject = JSON.parseObject(data); JSONArray details = dataObject.getJSONArray("list"); //判断是否有MO票数据 if (details == null || details.isEmpty()) { @@ -273,7 +280,7 @@ public class MlsServiceImpl implements MlsService { Map existingMos = moService.findBylabelNos(labelNos); //获取仓库 - Dept dept = getDeptFromCache(); + Dept dept = redisObjectUtils.getObjectFromCache("dept", () -> deptService.toEntity(deptService.findById(7L)), "系统无此仓库!"); //循环处理每个MO票 for (int i = 0; i < details.size(); i++) { @@ -313,22 +320,6 @@ public class MlsServiceImpl implements MlsService { } } - private Dept getDeptFromCache() { - // 从缓存中获取部门信息 - Dept dept = (Dept) redisUtils.get("dept"); - if (dept == null) { - try { - // 缓存中不存在,从数据库中获取 - DeptDto deptDto = deptService.findById(7L); - dept = deptService.toEntity(deptDto); - redisUtils.set("dept", dept); // 存储到缓存,可考虑设置适当的过期时间或不设 - } catch (Exception e) { - e.printStackTrace(); - } - } - return dept; - } - /** * 创建订单 * @@ -412,14 +403,9 @@ public class MlsServiceImpl implements MlsService { } //目标点 - Point endPoint = null; - boolean flag = redisUtils.hasKey("ckjbk"); - if (flag) { - endPoint = (Point) redisUtils.get("ckjbk"); - } else { - endPoint = pointService.findByCode(null, null, null, "出库接驳口", null); - redisUtils.set("ckjbk", endPoint); - } + Point endPoint = redisObjectUtils.getObjectFromCache("ckjbk", () -> pointService.findByCode(null, null, null, "出库接驳口", null), + "系统无此点位!"); + List inventoryToUpdate = new ArrayList<>(); List pickDetailToCreate = new ArrayList<>(); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MoServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MoServiceImpl.java index 9d41383..0cf6707 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MoServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MoServiceImpl.java @@ -64,7 +64,7 @@ public class MoServiceImpl implements MoService { private final TaskService taskService; private final AsnDetailService asnDetailService; private final ItemKeyService itemKeyService; - private final RedisUtils redisUtils; + private final RedisObjectUtils redisObjectUtils; @Override public Map queryAll(MoQueryCriteria criteria, Pageable pageable) { @@ -164,41 +164,23 @@ public class MoServiceImpl implements MoService { String labelNo = arr[2];//标签号 // 验证物料是否存在 - Item item = null; - boolean flagItem = redisUtils.hasKey(itemCode); - if (flagItem) { - item = (Item) redisUtils.get(itemCode); - } else { - item = getOrThrow(Optional.ofNullable(itemService.existItem(itemCode)), itemCode + " 系统无此物料!"); - redisUtils.set(itemCode,item); - } + Item item = redisObjectUtils.getObjectFromCache(itemCode, () -> itemService.existItem(itemCode), itemCode + " 系统无此物料!"); + // 验证容器是否存在 - Stock stock=null; - boolean flagStock = redisUtils.hasKey(stockCode); - if (flagStock) { - stock = (Stock) redisUtils.get(stockCode); - } else { - stock = getOrThrow(Optional.ofNullable(stockService.findByCode(stockCode, null)), stockCode + " 系统无此容器!"); - redisUtils.set(stockCode,stock); - } + Stock stock = redisObjectUtils.getObjectFromCache(stockCode, () -> stockService.findByCode(stockCode, null), stockCode + " 系统无此容器!"); + // 验证容器状态 validateStockStatus(stock); //验证入库接驳口是否存在 - Point srcPoint = null; - boolean flagSrcPoint = redisUtils.hasKey("rkjbk"); - if (flagSrcPoint) { - srcPoint = (Point) redisUtils.get("rkjbk"); - } else { - srcPoint = getOrThrow(Optional.ofNullable(pointService.findByCode(null, null, null, "入库接驳口", null)), "系统无入库接驳口!"); - redisUtils.set("rkjbk", srcPoint, 0); - } + Point srcPoint = redisObjectUtils.getObjectFromCache("rkjbk", () -> pointService.findByCode(null, null, null, "入库接驳口", null), "系统无入库接驳口!"); - Point endPoint = getOrThrow(Optional.ofNullable(pointService.findByCode(null, BaseStatus.FREE, BaseStatus.STORAGE, "存储区", null)), "存储区没有空闲点位!"); - MoDto moDto = getOrThrow(Optional.ofNullable(findByLabelNo(labelNo)), labelNo + " 系统无此标签!"); + Point endPoint = redisObjectUtils.getOrThrow(Optional.ofNullable(pointService.findByCode(null, BaseStatus.FREE, BaseStatus.STORAGE, "存储区", null)), "存储区没有空闲点位!"); + + MoDto moDto = redisObjectUtils.getOrThrow(Optional.ofNullable(findByLabelNo(labelNo)), labelNo + " 系统无此标签!"); // 验证标签状态 validateLabelState(moDto); @@ -207,7 +189,7 @@ public class MoServiceImpl implements MoService { validateTask(moDto); // 验证送货单是否存在 - OrderDto orderDto = getOrThrow(Optional.ofNullable(orderService.findByDeliveryHeaderId(moDto.getDeliveryHeaderId())), moDto.getDeliveryHeaderId() + " 系统无此送货单!"); + OrderDto orderDto = redisObjectUtils.getOrThrow(Optional.ofNullable(orderService.findByDeliveryHeaderId(moDto.getDeliveryHeaderId())), moDto.getDeliveryHeaderId() + " 系统无此送货单!"); // 验证送货单状态 validateOrder(orderDto, moDto); @@ -227,9 +209,7 @@ public class MoServiceImpl implements MoService { } } - private T getOrThrow(Optional optional, String errorMessage) { - return optional.orElseThrow(() -> new RuntimeException(errorMessage)); - } + private void validateStockStatus(Stock stock) { if (stock.getStatus().equals(BaseStatus.USED)) { diff --git a/youchain-system/src/main/java/com/youchain/utils/BatchCreateOrUpdate.java b/youchain-system/src/main/java/com/youchain/utils/BatchCreateOrUpdate.java index bb00274..a64efe1 100644 --- a/youchain-system/src/main/java/com/youchain/utils/BatchCreateOrUpdate.java +++ b/youchain-system/src/main/java/com/youchain/utils/BatchCreateOrUpdate.java @@ -20,8 +20,8 @@ public class BatchCreateOrUpdate { * @param entities 要插入的实体列表 * @param 实体类型 */ - @Async @Transactional + @Async public void batchCreate(List entities) { int batchSize = 100; if (entities == null || entities.isEmpty()) { @@ -52,8 +52,8 @@ public class BatchCreateOrUpdate { * @param entities 要更新的实体列表 * @param 实体类型 */ - @Async @Transactional + @Async public void batchUpdate(List entities) { int batchSize = 100; if (entities == null || entities.isEmpty()) { diff --git a/youchain-system/src/main/java/com/youchain/utils/RedisObjectUtils.java b/youchain-system/src/main/java/com/youchain/utils/RedisObjectUtils.java new file mode 100644 index 0000000..0f0c0e7 --- /dev/null +++ b/youchain-system/src/main/java/com/youchain/utils/RedisObjectUtils.java @@ -0,0 +1,40 @@ +package com.youchain.utils; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Optional; +import java.util.function.Supplier; + + +/** + * 缓存对象通用工具类 + */ +@Component +public class RedisObjectUtils { + + private final RedisUtils redisUtils; + + @Autowired + public RedisObjectUtils(RedisUtils redisUtils) { + this.redisUtils = redisUtils; + } + + + public T getObjectFromCache(String cacheKey, Supplier serviceSupplier, String errorMessage) { + T object = null; + boolean flag = redisUtils.hasKey(cacheKey); + if (flag) { + object = (T) redisUtils.get(cacheKey); + } else { + object = getOrThrow(Optional.ofNullable(serviceSupplier.get()), errorMessage); + redisUtils.set(cacheKey, object); + } + return object; + } + + public static T getOrThrow(Optional optional, String errorMessage) { + return optional.orElseThrow(() -> new IllegalArgumentException(errorMessage)); + } + +} diff --git a/youchain-system/src/main/resources/config/application-dev.yml b/youchain-system/src/main/resources/config/application-dev.yml index b3e9010..8013a7a 100644 --- a/youchain-system/src/main/resources/config/application-dev.yml +++ b/youchain-system/src/main/resources/config/application-dev.yml @@ -94,11 +94,11 @@ jwt: #是否允许生成代码,生产环境设置为false generator: - enabled: true + enabled: false #是否开启 swagger-ui swagger: - enabled: true + enabled: false # IP 本地解析 ip: diff --git a/youchain-system/src/main/resources/config/application-prod.yml b/youchain-system/src/main/resources/config/application-prod.yml index 5a60fa4..3c84274 100644 --- a/youchain-system/src/main/resources/config/application-prod.yml +++ b/youchain-system/src/main/resources/config/application-prod.yml @@ -4,7 +4,7 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:47.100.54.81}:${DB_PORT:53306}/${DB_NAME:jingzhou_xks}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false + url: jdbc:log4jdbc:mysql://${DB_HOST:115.159.67.99}:${DB_PORT:3306}/${DB_NAME:hefeihvac_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false username: ${DB_USER:root} password: ${DB_PWD:Youchain@56} # 初始连接数 @@ -111,7 +111,7 @@ generator: #是否开启 swagger-ui swagger: - enabled: false + enabled: true # 文件存储路径 file: @@ -125,7 +125,7 @@ file: path: C:\eladmin\file\ avatar: C:\eladmin\avatar\ # 文件大小 /M - maxSize: 100 + maxSize: 200 avatarMaxSize: 5 minidao: base-package: org.jeecg.modules.jmreport.desreport.dao* diff --git a/youchain-system/src/main/resources/config/application.yml b/youchain-system/src/main/resources/config/application.yml index 22b12ad..73a158a 100644 --- a/youchain-system/src/main/resources/config/application.yml +++ b/youchain-system/src/main/resources/config/application.yml @@ -29,11 +29,11 @@ spring: redis: #数据库索引 - database: ${REDIS_DB:9} - host: ${REDIS_HOST:127.0.0.1} + database: ${REDIS_DB:0} + host: ${REDIS_HOST:115.159.67.99} port: ${REDIS_PORT:6379} - password: ${REDIS_PWD:} - #password: ${REDIS_PWD:123abc} + #password: ${REDIS_PWD:} + password: ${REDIS_PWD:123456} #连接超时时间 timeout: 5000 diff --git a/youchain-system/src/test/java/com/youchain/EladminSystemApplicationTests.java b/youchain-system/src/test/java/com/youchain/EladminSystemApplicationTests.java index 30d48ac..ca57b82 100644 --- a/youchain-system/src/test/java/com/youchain/EladminSystemApplicationTests.java +++ b/youchain-system/src/test/java/com/youchain/EladminSystemApplicationTests.java @@ -18,6 +18,24 @@ public class EladminSystemApplicationTests { } public static void main(String[] args) { + System.out.println("---"+aa()); + } + + public static int aa(){ + int a=1; + try { + a=2; + System.out.println(a); + return a; + } catch (Exception e) { + a=3; + } finally { + a=4; + System.out.println("TT:"+a); + } + System.out.println(a); + return a; + } private static final int MAX_TASK_COUNT = 4;