From 45073a3cbc4e9a10707ebd8bd687e9db780a434b Mon Sep 17 00:00:00 2001 From: anthonywj Date: Fri, 21 Jul 2023 16:58:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E4=BF=A1=E6=81=AF=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E7=9B=B8=E5=85=B3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/glxp/api/config/ReplaceBatch.java | 3 + .../basic/UdiProductController.java | 12 +++- .../controller/basic/UdiRelController.java | 15 +++++ .../java/com/glxp/api/dao/BaseMapperPlus.java | 67 +++++++++++++++++-- .../api/dao/basic/BasicUdiProductMapper.java | 3 +- .../entity/basic/BasicUdiProductEntity.java | 3 +- .../com/glxp/api/service/CustomService.java | 12 ++++ .../glxp/api/service/CustomServiceImpl.java | 29 ++++++++ .../service/basic/BasicUdiProductService.java | 3 +- .../impl/BasicUdiProductServiceImpl.java | 3 +- src/main/resources/application-dev.yml | 7 +- src/main/resources/application.yml | 2 +- .../mapper/basic/BasicUdiRelMapper.xml | 1 + .../mybatis/mapper/basic/ProductInfoDao.xml | 4 +- src/main/resources/schemas/schema_v2.1.sql | 1 + 15 files changed, 147 insertions(+), 18 deletions(-) create mode 100644 src/main/java/com/glxp/api/service/CustomService.java create mode 100644 src/main/java/com/glxp/api/service/CustomServiceImpl.java diff --git a/src/main/java/com/glxp/api/config/ReplaceBatch.java b/src/main/java/com/glxp/api/config/ReplaceBatch.java index 20194c6..2c03d5c 100644 --- a/src/main/java/com/glxp/api/config/ReplaceBatch.java +++ b/src/main/java/com/glxp/api/config/ReplaceBatch.java @@ -39,6 +39,9 @@ public class ReplaceBatch extends AbstractMethod { KeyGenerator keyGenerator = new NoKeyGenerator(); CustomerSqlMethod sqlMethod = CustomerSqlMethod.REPLACE_ONE; List fieldList = tableInfo.getFieldList(); + +// String columnScript = SqlScriptUtils.convertTrim(tableInfo.getAllInsertSqlColumnMaybeIf(null), +// LEFT_BRACKET, RIGHT_BRACKET, null, COMMA); String insertSqlColumn = tableInfo.getKeyInsertSqlColumn(true, true) + this.filterTableFieldInfo(fieldList, predicate, TableFieldInfo::getInsertSqlColumn, EMPTY); String columnScript = LEFT_BRACKET + insertSqlColumn.substring(0, insertSqlColumn.length() - 1) + RIGHT_BRACKET; diff --git a/src/main/java/com/glxp/api/controller/basic/UdiProductController.java b/src/main/java/com/glxp/api/controller/basic/UdiProductController.java index 3756101..0c7953e 100644 --- a/src/main/java/com/glxp/api/controller/basic/UdiProductController.java +++ b/src/main/java/com/glxp/api/controller/basic/UdiProductController.java @@ -219,20 +219,26 @@ public class UdiProductController extends BaseController { List udiInfoEntities = udiDlHttpClient.getUdiByUuid(udiCombineRequest.getUuid()); if (CollUtil.isNotEmpty(udiInfoEntities)) { BaseResponse> listBaseResponse = asyncDiDlHelper.dlLastVersionByDi(udiInfoEntities.get(0).getNameCode()); + String newUuid; if (listBaseResponse.getCode() == 20000) { List productInfoEntityList = listBaseResponse.getData(); if (CollUtil.isNotEmpty(productInfoEntityList)) { productInfoService.insertProductInfos(productInfoEntityList); + newUuid = productInfoEntityList.get(0).getUuid(); + } else { + return ResultVOUtils.error(500, "更新失败!"); } + } else { + return ResultVOUtils.error(500, "更新失败!"); } - udiInfoEntities = udiDlHttpClient.getUdiByUuid(udiCombineRequest.getUuid()); + udiInfoEntities = udiDlHttpClient.getUdiByUuid(newUuid); basicUdiProductService.deleteByUuid(udiCombineRequest.getUuid()); for (BasicUdiProductEntity udiProductEntity : udiInfoEntities) { - udiProductEntity.setUuid(udiCombineRequest.getUuid()); + udiProductEntity.setUuid(newUuid); udiProductEntity.setUpdateTime(new Date()); udiProductEntity.setId(IdUtil.getSnowflakeNextId()); } - basicUdiProductService.saveBatch(UdiInfoUtil.initUdiInfoEntitys(udiInfoEntities)); + basicUdiProductService.replaceBatch(UdiInfoUtil.initUdiInfoEntitys(udiInfoEntities)); return ResultVOUtils.success("更新成功!"); } else { return ResultVOUtils.error(500, "更新失败!"); diff --git a/src/main/java/com/glxp/api/controller/basic/UdiRelController.java b/src/main/java/com/glxp/api/controller/basic/UdiRelController.java index bc33bae..4916cda 100644 --- a/src/main/java/com/glxp/api/controller/basic/UdiRelController.java +++ b/src/main/java/com/glxp/api/controller/basic/UdiRelController.java @@ -3,6 +3,7 @@ package com.glxp.api.controller.basic; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; import com.glxp.api.common.res.BaseResponse; @@ -83,6 +84,8 @@ public class UdiRelController extends BaseController { @ApiOperation(value = "获取企业产品信息", response = BasicUdiRelResponse.class) @GetMapping("udi/basic/rel/company/filter") public BaseResponse filterRelByCompany(FilterUdiRelRequest filterUdiRelRequest) { + if (StrUtil.isEmpty(filterUdiRelRequest.getCompanyIdFk())) + return ResultVOUtils.error(500, "企业ID不能为空!"); System.out.println(filterUdiRelRequest.toString()); String nameCode; if (StrUtil.isNotEmpty(filterUdiRelRequest.getUdiCode())) { @@ -107,6 +110,18 @@ public class UdiRelController extends BaseController { return ResultVOUtils.success(basicUdiRelResponsePageSimpleResponse); } + //获取同步库UDI信息 + @ApiIgnore + @AuthRuleAnnotation("") + @ApiOperation(value = "获取企业产品信息数量", response = BasicUdiRelResponse.class) + @GetMapping("udi/basic/rel/company/count") + public BaseResponse countRelByCompany(FilterUdiRelRequest filterUdiRelRequest) { + if (StrUtil.isEmpty(filterUdiRelRequest.getCompanyIdFk())) + return ResultVOUtils.error(500, "企业ID不能为空!"); + long count = basicUdiRelService.count(new QueryWrapper().eq("companyIdFk", filterUdiRelRequest.getCompanyIdFk())); + return ResultVOUtils.success(count); + } + //产品信息关联新增 @ApiIgnore diff --git a/src/main/java/com/glxp/api/dao/BaseMapperPlus.java b/src/main/java/com/glxp/api/dao/BaseMapperPlus.java index 59eb52b..3d3a64b 100644 --- a/src/main/java/com/glxp/api/dao/BaseMapperPlus.java +++ b/src/main/java/com/glxp/api/dao/BaseMapperPlus.java @@ -18,10 +18,7 @@ import org.apache.ibatis.logging.Log; import org.apache.ibatis.logging.LogFactory; import java.io.Serializable; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; /** * 自定义 Mapper 接口, 实现 自定义扩展 @@ -242,8 +239,39 @@ public interface BaseMapperPlus extends BaseMapper { * @param entityList 实体类列表 * @return 影响条数 */ + default boolean insertIgnoreBatchs(List entityList) { + return insertIgnoreBatchs(entityList, DEFAULT_BATCH_SIZE); + } + + default boolean insertIgnoreBatchs(List entityList, int batchSize) { + + try { + int size = entityList.size(); + int idxLimit = Math.min(DEFAULT_BATCH_SIZE, size); + int i = 1; + //保存单批提交的数据集合 + List oneBatchList = new ArrayList<>(); + for (Iterator var7 = entityList.iterator(); var7.hasNext(); ++i) { + T element = var7.next(); + oneBatchList.add(element); + if (i == idxLimit) { + + this.insertIgnoreBatch(oneBatchList); + //每次提交后需要清空集合数据 + oneBatchList.clear(); + idxLimit = Math.min(idxLimit + batchSize, size); + } + } + } catch (Exception e) { + log.error("insertIgnoreBatch fail", e); + return false; + } + return true; + } + int insertIgnoreBatch(List entityList); + /** * 替换数据 * replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样; @@ -262,5 +290,36 @@ public interface BaseMapperPlus extends BaseMapper { * @param entityList 实体类列表 * @return 影响条数 */ + default boolean replaceBatchs(List entityList) { + return this.replaceBatchs(entityList, DEFAULT_BATCH_SIZE); + } + + default boolean replaceBatchs(List entityList, int batchSize) { + + try { + int size = entityList.size(); + int idxLimit = Math.min(DEFAULT_BATCH_SIZE, size); + int i = 1; + //保存单批提交的数据集合 + List oneBatchList = new ArrayList<>(); + for (Iterator var7 = entityList.iterator(); var7.hasNext(); ++i) { + T element = var7.next(); + oneBatchList.add(element); + if (i == idxLimit) { + + this.replaceBatch(oneBatchList); + //每次提交后需要清空集合数据 + oneBatchList.clear(); + idxLimit = Math.min(idxLimit + batchSize, size); + } + } + } catch (Exception e) { + log.error("insertIgnoreBatch fail", e); + return false; + } + return true; + } + int replaceBatch(List entityList); + } diff --git a/src/main/java/com/glxp/api/dao/basic/BasicUdiProductMapper.java b/src/main/java/com/glxp/api/dao/basic/BasicUdiProductMapper.java index f481c53..22c09d1 100644 --- a/src/main/java/com/glxp/api/dao/basic/BasicUdiProductMapper.java +++ b/src/main/java/com/glxp/api/dao/basic/BasicUdiProductMapper.java @@ -1,6 +1,7 @@ package com.glxp.api.dao.basic; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.glxp.api.dao.BaseMapperPlus; import com.glxp.api.entity.basic.BasicUdiProductEntity; import com.glxp.api.entity.basic.ProductInfoEntity; import com.glxp.api.req.basic.BasicUdiProductRequest; @@ -12,7 +13,7 @@ import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper -public interface BasicUdiProductMapper extends BaseMapper { +public interface BasicUdiProductMapper extends BaseMapperPlus { List filterList(FilterUdiRelRequest filterUdiRelRequest); diff --git a/src/main/java/com/glxp/api/entity/basic/BasicUdiProductEntity.java b/src/main/java/com/glxp/api/entity/basic/BasicUdiProductEntity.java index a98c35e..eb5826b 100644 --- a/src/main/java/com/glxp/api/entity/basic/BasicUdiProductEntity.java +++ b/src/main/java/com/glxp/api/entity/basic/BasicUdiProductEntity.java @@ -273,7 +273,6 @@ public class BasicUdiProductEntity implements Serializable { private Boolean isNewest; /** - * * 更新时间 */ @ApiModelProperty(value = "更新时间") @@ -375,6 +374,8 @@ public class BasicUdiProductEntity implements Serializable { * 生产数据对接方(1.生产企业/2.代理商/3.购买方) */ @ApiModelProperty(value = "生产数据对接方(1.生产企业/2.代理商/3.购买方)") + + @TableField(exist = false) private Integer companyType; private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/glxp/api/service/CustomService.java b/src/main/java/com/glxp/api/service/CustomService.java new file mode 100644 index 0000000..f7e0cfe --- /dev/null +++ b/src/main/java/com/glxp/api/service/CustomService.java @@ -0,0 +1,12 @@ +package com.glxp.api.service; + +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +public interface CustomService extends IService { + int insertIgnore(T entity); + boolean insertIgnoreBatch(List entityList); + int replace(T entity); + boolean replaceBatch(List entityList); +} diff --git a/src/main/java/com/glxp/api/service/CustomServiceImpl.java b/src/main/java/com/glxp/api/service/CustomServiceImpl.java new file mode 100644 index 0000000..e180c90 --- /dev/null +++ b/src/main/java/com/glxp/api/service/CustomServiceImpl.java @@ -0,0 +1,29 @@ +package com.glxp.api.service; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.glxp.api.dao.BaseMapperPlus; + +import java.util.List; + +public class CustomServiceImpl, T> extends ServiceImpl, T> implements CustomService{ + @Override + public int insertIgnore(T entity) { + return baseMapper.insertIgnore(entity); + } + + @Override + public boolean insertIgnoreBatch(List entityList) { + return baseMapper.insertIgnoreBatchs(entityList); + } + + @Override + public int replace(T entity) { + return baseMapper.replace(entity); + } + + @Override + public boolean replaceBatch(List entityList) { + return baseMapper.replaceBatchs(entityList); + } +} diff --git a/src/main/java/com/glxp/api/service/basic/BasicUdiProductService.java b/src/main/java/com/glxp/api/service/basic/BasicUdiProductService.java index 4c24a1f..22c2ebf 100644 --- a/src/main/java/com/glxp/api/service/basic/BasicUdiProductService.java +++ b/src/main/java/com/glxp/api/service/basic/BasicUdiProductService.java @@ -10,11 +10,12 @@ import com.glxp.api.req.basic.BasicUdiProductRequest; import com.glxp.api.req.basic.FilterUdiRelRequest; import com.glxp.api.req.basic.ProductInfoFilterRequest; import com.glxp.api.req.basic.UdiCompanyRequest; +import com.glxp.api.service.CustomService; import javax.validation.Valid; import java.util.List; -public interface BasicUdiProductService extends IService { +public interface BasicUdiProductService extends CustomService { public boolean isExit(String uuid); diff --git a/src/main/java/com/glxp/api/service/basic/impl/BasicUdiProductServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/BasicUdiProductServiceImpl.java index dfe4b4d..4f1f053 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/BasicUdiProductServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/BasicUdiProductServiceImpl.java @@ -7,6 +7,7 @@ import com.glxp.api.entity.basic.ProductInfoEntity; import com.glxp.api.req.basic.BasicUdiProductRequest; import com.glxp.api.req.basic.FilterUdiRelRequest; import com.glxp.api.req.basic.ProductInfoFilterRequest; +import com.glxp.api.service.CustomServiceImpl; import com.glxp.api.service.basic.BasicUdiProductService; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -18,7 +19,7 @@ import java.util.Collections; import java.util.List; @Service -public class BasicUdiProductServiceImpl extends ServiceImpl implements BasicUdiProductService { +public class BasicUdiProductServiceImpl extends CustomServiceImpl implements BasicUdiProductService { @Resource BasicUdiProductMapper basicUdiProductMapper; diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 36de819..68d8160 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -4,9 +4,9 @@ server: spring: datasource: driver-class-name: com.p6spy.engine.spy.P6SpyDriver - jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_cpt?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + jdbc-url: jdbc:p6spy:mysql://192.168.0.66:3364/udi_cpt?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true username: root - password: 123456 + password: Glxp@6066 hikari: connection-timeout: 60000 maximum-pool-size: 20 @@ -76,7 +76,8 @@ logging: file_path: D:/udi/inUdiwms/udiwmsfile/ UDI_KEY: 6b137c66-6286-46c6-8efa-c2f5dd9237df -UDI_SERVER_URL: https://www.udims.com/UDI_DL_Server_test +#UDI_SERVER_URL: https://www.udims.com/UDI_DL_Server_test +UDI_SERVER_URL: http://127.0.0.1:9994 SPMS_KEY: lCOdWCBKS6Kw45wdnnqUTELXyuSKnXEs back_file_path: D:/share/udisps/back/ diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index a97493f..80e18f1 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: profiles: - active: pro + active: dev jmx: enabled: false servlet: diff --git a/src/main/resources/mybatis/mapper/basic/BasicUdiRelMapper.xml b/src/main/resources/mybatis/mapper/basic/BasicUdiRelMapper.xml index ed2bb25..1a0a2f3 100644 --- a/src/main/resources/mybatis/mapper/basic/BasicUdiRelMapper.xml +++ b/src/main/resources/mybatis/mapper/basic/BasicUdiRelMapper.xml @@ -285,6 +285,7 @@ + - -